如何在单次调用时将多个请求发送到AWS Sagemaker Endpoint?

时间:2019-01-17 10:26:48

标签: python-3.x amazon-web-services amazon-sagemaker

我已经在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

2 个答案:

答案 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