本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
调用实时端节点
使用 SageMaker 托管服务部署模型后,可以通过发送测试数据在该端点上测试模型。您可以使用 Amazon SageMaker Studio 测试终端节点,Amazon CLI,或者Amazon开发工具包。
使用 Amazon SageMaker Studio 测试您的终端节点
将模型部署到终端节点后(请参阅创建终端节点并部署模型) 您可以使用 Amazon SageMaker Studio 检查该终端节点。
注意:SageMaker 仅支持使用 Amazon SageMaker Studio 进行实时终端节点的端点测试。
启动 Amazon SageMaker Studio。
SelectSageMaker 组件和注册表左侧栏上的图标。
从下拉列表中,选择终端节点.
按名称搜索终端节点,然后双击终端节点的名称。中列出的终端节点名称SageMaker 资源在您部署模型时定义了面板。您可以通过多种方式部署模型:
SageMaker Python SDK 模型类
sagemaker.model.Model.deploy. 这些区域有:Amazon SDK for Python (Boto3)SageMaker 服务客户端 APICreateEndpoint.
SageMaker 控制台。Select推理在左侧面板中,然后选择端节点配置. 在中提供终端节点名称终端节点名称字段中返回的子位置类型。
-
(可选)您可以选择提供自定义 URL 以将请求发送到。在配置终端节点 URL 和标头字段提供模型托管位置的 URL。如果您使用的是 SageMaker 终端节点,请将此字段留空。您还可以选择添加多个键值标头以将其他信息传递给推理请求。
Studio 工作区中将填充一个新的选项卡。Select测试推理选项卡。
通过提供 JSON 格式的示例数据,向终端节点发送请求。使用 JSON 编辑器向终端节点提交请求。
Select发送请求.
当你发送请求时推理输出卡将显示在控制台的右侧。
卡片顶部将显示发送到终端节点的请求类型(目前只接受 JSON)。卡片中有四个主要领域:Status、Execution Length、Request Time, 和Result Time.
状态:显示请求状态。有三种类型的状态:
Complete-如果请求成功,状态将显示Complete执行时间将通过跟踪请求时间来计算。Failed-如果由于任何原因请求失败。失败响应将显示在失败原因手风琴。Pending-推理请求待处理期间,将出现旋转的圆形图标。
执行长度:调用需要多长时间(结束时间减去开始时间),以毫秒为单位。
请求时间:自请求发送以来已经过去了多少分钟。
结果时间:自结果返回以来已经过去了多少分钟。
使用测试终端节点Amazon软件开发工具包
将模型部署到终端节点后(请参阅创建终端节点并部署模型) 你可以使用InvokeEndpointAPI 使用其中一个Amazon开发工具包。如果成功的调用,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-nameendpoint_name\ --bodyfileb://$file_name\output_file.txt
有关何时使用的更多信息file://结束了fileb://将文件的内容传递给的参数时Amazon CLI,请参阅本地文件参数的最佳实践
请参阅invoke-endpoint中的Amazon CLI命令参考有关可以传递的其他参数的更多信息的指南。
如果上面的调用显示如下的片段,则表示命令已成功执行。否则,请检查输入有效负载格式是否正确。
{ "ContentType": "<content_type>; charset=utf-8", "InvokedProductionVariant": "<Variant>" }
通过检查文件输出文件查看调用的输出 (output_file.txt在这个例子中)。
more output_file.txt