本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
调用实时端点
使用 SageMaker 托管服务部署模型后,您可以通过向该终端节点发送测试数据来测试您的模型。您可以使用 Amazon SageMaker StudioAmazon CLI、或Amazon软件开发工具包测试您的终端节点。
使用亚马逊 SageMaker 工作室测试您的终端节点
将模型部署到终端节点(参见创建您的终端节点并部署您的模型)后,您可以使用 Amazon SageMaker Studio 检查该终端节点。
注意
注意: SageMaker 仅支持使用 Amazon SageMaker Studio 对实时终端节点进行终端节点测试。
启动亚马逊 SageMaker 工作室。
选择左侧边栏上的SageMaker 组件和注册表图标。
从下拉列表中选择终端节点。
按名称搜索端点的并双击端点的名称。SageMaker 资源面板中列出的端点名称是在部署模型时定义的。可以通过多种方式部署模型:
SageMaker Python 开发工具包模型类
sagemaker.model.Model.deploy
。 Amazon SDK for Python (Boto3) SageMaker 服务客户端 API CreateEndpoint。
控制 SageMaker 台。在左侧面板中选择推理,然后选择端点配置。在 “端点名称” 字段中提供端点名称。
-
(可选)您可以选择提供要将请求发送到的自定义 URL。在配置端点 URL 和标头字段中,提供托管模型的 URL。如果您使用 SageMaker 终端节点,请将此字段留空。您也可以选择添加多个键值标头,以将其他信息传递给推理请求。
Studio 工作区中将填充一个新选项卡。选择 “测试推理” 选项卡。
通过提供 JSON 格式的示例数据,向您的终端节点发送请求。使用 JSON 编辑器向您的终端节点提交请求。
选择 “发送请求”。
当您发送请求时,控制台右侧会出现 Inference 输出卡。
卡片顶部将显示发送到终端节点的请求类型(目前仅接受 JSON)。卡片中有四个主要字段:Status
Execution Length
、Request Time
、和Result Time
。
状态:显示请求状态。状态有三种类型:
Complete
-如果请求成功,将显示状态Complete
,执行时长将通过跟踪请求时间来计算。Failed
-如果请求因任何原因失败。失败响应将出现在 “失败原因” 手风琴中。Pending
-推理请求待处理时,将出现一个旋转的圆形图标。
执行长度:调用所花费的时间(结束时间减去开始时间),以毫秒为单位。
请求时间:自发送请求以来已经过去了多少分钟。
结果时间:自返回结果以来已经过去了多少分钟。
使用Amazon SDK 测试您的终端节点
将模型部署到终端节点(参见创建您的终端节点并部署您的模型)后,您可以使用其中一个Amazon SDKInvokeEndpoint
通过 API 检查您的终端节点。如果调用成功, SageMaker 将返回 HTTP 200 响应。您可以索引返回的响应字典对象,以了解有关响应标头的更多信息。有关更多信息,请参阅InvokeEndpoint
:
以下内容演示了InvokeEndpoint
如何使用来检查终端节点的状态Amazon SDK for Python (Boto3)。输入端点的名称。这是您在创建终端节点EndpointName
时指定的名称CreateEndpoint
。
在 Body 字段中提供 SageMaker 要传递给模型的输入数据。数据的格式必须与用于训练的格式相同。
import boto3 # Create a low-level client representing Amazon SageMaker Runtime sagemaker_runtime = boto3.client("sagemaker-runtime", region_name=
<aws_region>
) # The name of the endpoint. The name must be unique within an Amazon Region in your Amazon account. endpoint_name='<endpoint-name>'
# After you deploy a model into production using SageMaker hosting # services, your client applications use this API to get inferences # from the model hosted at the specified endpoint. response = sagemaker_runtime.invoke_endpoint( EndpointName=endpoint_name, Body=bytes('{"features": ["This is great!"]}', 'utf-8'
) # Replace with your own data. ) # Optional - Print the response body and decode it so it is human read-able. print(response['Body'].read().decode('utf-8'))
获得响应对象(在上述示例中,它存储在名为的变量中response
)后,就可以对其进行索引以检查 HTTP 状态、已部署模型的名称 (InvokedProductionVariant
) 和其他字段。
后续代码片段打印出HTTPStatusCode
存储在response
变量中的内容:
print(response["HTTPStatusCode"])
有关更多信息,请参见InvokeEndpoint
《 SageMaker API 参考指南》。
使用测试您的终端节点Amazon CLI
以下内容演示了InvokeEndpoint
如何使用来检查终端节点的状态Amazon CLI。输入端点的名称。这是您在创建终端节点EndpointName
时指定的名称CreateEndpoint
。
在 Body 字段中提供 SageMaker 要传递给模型的输入数据。数据的格式必须与用于训练的格式相同。示例代码模板显示如何向您的终端节点发送二进制数据。
aws sagemaker-runtime invoke-endpoint \ --endpoint-name
endpoint_name
\ --bodyfileb://$file_name
\output_file.txt
有关在将文件内容传递给的参数fileb://
时何时使用file://
over 的更多信息Amazon CLI,请参阅本地文件参数的最佳实践
有关可以传递的其他参数的更多信息,请参阅invoke-endpoint
《Amazon CLI命令参考指南》。
如果上面的调用显示了如下代码片段,则表示命令已成功执行。否则,请检查输入负载的格式是否正确。
{ "ContentType": "<content_type>; charset=utf-8", "InvokedProductionVariant": "<Variant>" }
通过检查文件输出文件来查看调用的输出(在本示例output_file.txt
中)。
more output_file.txt