У меня развернута модель TensorFlow с открытой конечной точкой AWS SageMaker.
Из Lambda Python я использую клиент Boto3 для вызова конечной точки.
Модель TensorFlow принимает 3 входа следующим образом
{'input1' : numpy array , 'input2' : integer ,'input3' :numpy array }
Из Lambda, используя runtime.invoke_endpoint для вызова конечной точки SageMaker.
Получение ошибки как Parse Error при вызове API из boto3client
Я попытался сериализовать данные в формат csv перед вызовом конечной точки API
Ниже код, написанный на лямбда
payload = {'input1': encoded_enc_inputstanza_in_batch,
'input2' : encoded_enc_inputstanza_in_batch.shape[1],
'input3' : np.reshape([[15]*20],20) }
infer_file = io.StringIO()
writer = csv.writer(infer_file)
for key, value in payload.items():
writer.writerow([key, value])
response = runtime.invoke_endpoint(EndpointName=ENDPOINT_NAME,
ContentType='text/csv',
Body=infer_file.getvalue())
Дополнительные детали
Это дополнительные детали
- Модель Sagemaker ожидает 3 поля в качестве входных данных - 'input1' - Массив Numpy
'input2' - тип данных Int,
'input3' - массив numpy
Фактический результат -
Traceback (most recent call last):
File "/var/task/lambda_function.py", line 143, in lambda_handler
Body=infer_file.getvalue())
File "/var/runtime/botocore/client.py", line 320, in _api_call
return self._make_api_call(operation_name, kwargs)
File "/var/runtime/botocore/client.py", line 623, in _make_api_call
raise error_class(parsed_response, operation_name)
END RequestId: fa70e1f3-763b-41be-ad2d-76ae80aefcd0
Ожидаемый результат - успешный вызов конечной точки API.