Вызов конечной точки SageMaker для модели PyTorch - PullRequest
0 голосов
/ 04 августа 2020

Я пытаюсь вызвать конечную точку моей модели SageMaker как из Postman, так и из AWS CLI. Конечная точка находится в состоянии «в обслуживании», но всякий раз, когда я пытаюсь ее вызвать, возникает ошибка. Когда я пытаюсь использовать функцию прогнозирования в записной книжке SageMaker и предоставить ему массив 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

1 Ответ

0 голосов
/ 04 августа 2020

Подсказка находится в последних нескольких строках вашей трассировки стека:

  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

В вашем predict_fn в pytorch-model-reco.py в строке 268 вы пытаетесь использовать input_data в качестве индексов для final_matrix, но input_data - неправильный тип.

Я предполагаю, что есть какое-то приведение типов, которое ваш predict_fn должен выполнять, когда тип ввода text/csv. Это приведение типа происходит за пределами predict_fn, когда ваш тип ввода - numpy data. Взглянув на исходный код sagemaker_inference, можно узнать больше.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...