我已经在SageMaker端点上部署了深度学习模型,可以使用sagemaker_client.invoke_endpoint
请求/获取答案。但是每个invoke_endpoint
都接受单个主体。如何在一次请求中发送多个正文以获得多个结果?
我尝试设置body='{"instances": [myData1, myData2]}'
,但是它可以识别为单个字符串。
def sagemaker_handler(doc):
data = doc.encode("UTF-8")
response = sagemaker_client.invoke_endpoint(EndpointName='myEndpoint',
ContentType='application/json',
Accept='application/json', Body=data)
return response
答案 0 :(得分:0)
根据文档,invoke_endpoint()支持正文中的多个实例
https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/sagemaker-runtime.html#SageMakerRuntime.Client.invoke_endpoint https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html
我一次又一次地将其用于内置算法。您可以看一下此笔记本的示例:https://github.com/awslabs/amazon-sagemaker-examples/blob/master/introduction_to_amazon_algorithms/blazingtext_text_classification_dbpedia/blazingtext_text_classification_dbpedia.ipynb
我想知道深度学习容器的行为是否有所不同。我会尝试找出答案。您能否告诉我更多有关您的用例的信息,以及为什么要一次预测多个实例?很高兴阅读您的反馈并将其传递给SageMaker团队。
或者,如果您实际上不需要HTTPS端点(即不需要实时预测),则批量转换可以解决您的问题:
https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-batch-transform.html
答案 1 :(得分:0)
目前无法使用invoke_endpoint传递多个请求。 invoke_endpoint仅在主体中接受一个请求并返回一个预测。 https://docs.aws.amazon.com/sagemaker/latest/dg/API_runtime_InvokeEndpoint.html
SageMaker支持批处理,该批处理可用于多个请求,但这不是通过端点进行的。 https://docs.aws.amazon.com/sagemaker/latest/dg/ex1-batch-transform.html
Amazon具有用于传递多个请求和格式的文档,但这仅用于批量转换。 https://docs.aws.amazon.com/sagemaker/latest/dg/cdf-inference.html