如何用AWS CLI调用SageMaker端点?调用示例异常排查
问题描述
我尝试通过AWS CLI调用SageMaker示例笔记本中的iris端点,使用了以下命令:
!aws sagemaker-runtime invoke-endpoint \ --endpoint-name sagemaker-tensorflow-py2-cpu-2018-03-19-21-27-52-956 \ --body "[6.4, 3.2, 4.5, 1.5]" \ --content-type "application/json" \ output.json
得到如下响应:
{ "InvokedProductionVariant": "AllTraffic", "ContentType": "*/*" }
请问我哪里操作出错了?
解答
别担心,你看到的这个响应其实不是错误——aws sagemaker-runtime invoke-endpoint命令已经成功调用了你的SageMaker端点!
你疑惑的点应该是没直接看到预测结果对吧?这是因为这个命令的设计逻辑是把模型返回的预测结果写入你指定的output.json文件中,而不是直接输出到控制台。你只需要查看这个文件的内容,就能得到iris样本的分类结果了。
不过这里还有几个需要注意的细节,帮你确保整个流程没问题:
- 检查端点状态:先确认你的端点
sagemaker-tensorflow-py2-cpu-2018-03-19-21-27-52-956处于InService状态,执行这条命令验证:aws sagemaker describe-endpoint --endpoint-name sagemaker-tensorflow-py2-cpu-2018-03-19-21-27-52-956 - 输入格式匹配:如果你的模型是SageMaker官方的TensorFlow iris示例,它通常期望接收二维数组格式的输入(比如
[[6.4, 3.2, 4.5, 1.5]],注意外层多了一层括号),因为这类模型默认支持批量预测。如果用一维数组,可能会导致模型处理失败,这种情况下output.json里会包含错误信息,你可以打开文件查看具体问题。 - 查看输出文件:如果
output.json是空的或者有错误内容,那大概率是输入格式和模型的预期不匹配,或者模型本身有异常,你可以根据文件里的提示调整请求参数。
内容的提问来源于stack exchange,提问作者tlanigan
相关产品推荐
相关产品推荐

