为 PyTorch 模型调用 SageMaker 端点

我正在尝试从 Postman 和 AWS CLI 调用我的 SageMaker 模型终端节点。端点的状态是“服务中”,但每当我尝试调用它时,它都会给我一个错误。当我尝试在 SageMaker notebook 中使用预测函数并为其提供一个 numpy 数组(例如np.array([1,2,3,4]))时,它成功地为我提供了一个输出。我不确定我做错了什么。


$ aws2 sagemaker-runtime invoke-endpoint \

$ --endpoint-name=pytorch-model \

$ --body=1,2 \

$ --content-type=text/csv \

$ --cli-binary-format=raw-in-base64-out \

$ output.json


An error occurred (ModelError) when calling the InvokeEndpoint operation: Received server error (500) from model with message "tensors used as indices must be long, byte or bool tensors

Traceback (most recent call last):

  File "/opt/conda/lib/python3.6/site-packages/sagemaker_inference/transformer.py", line 125, in transform

    result = self._transform_fn(self._model, input_data, content_type, accept)

  File "/opt/conda/lib/python3.6/site-packages/sagemaker_inference/transformer.py", line 215, in _default_transform_fn

    prediction = self._predict_fn(data, model)

  File "/opt/ml/model/code/pytorch-model-reco.py", line 268, in predict_fn

    return torch.argsort(- final_matrix[input_data, :], dim = 1)

IndexError: tensors used as indices must be long, byte or bool tensors


慕的地8271018
浏览 133回答 1
1回答

萧十郎

线索在堆栈跟踪的最后几行中:  File "/opt/ml/model/code/pytorch-model-reco.py", line 268, in predict_fn    return torch.argsort(- final_matrix[input_data, :], dim = 1)IndexError: tensors used as indices must be long, byte or bool tensors在第 268predict_fn行中pytorch-model-reco.py,您尝试将 用作input_data的索引final_matrix,但input_data类型错误。我猜想当predict_fn输入类型为 时,您应该进行一些类型转换text/csv。当您的输入类型是 numpy 数据时,这种类型转换发生在外部predict_fn。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python