测试终端节点 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

测试终端节点

使用 SageMaker 托管服务部署模型后,您可以通过发送测试数据在该端点上测试模型。您可以使用 Amazon SageMaker 工作室、Amazon CLI,或者Amazon开发工具包。

使用 Amazon SageMaker 工作室测试终端节点

将模型部署到端点后(请参阅部署您的模型),您可以通过 Amazon SageMaker 工作室检查该终端节点。

注意

注意:SageMaker 仅支持使用 Amazon SageMaker 工作室进行实时终端节点测试。

  1. 启动 Amazon SageMaker Studio。

  2. 选择SageMaker 组件和注册表左侧边栏上的图标。

  3. 从下拉列表中,选择终端节点.

  4. 按名称搜索终端节点,然后双击终端节点的名称。列出的终端节点名称SageMaker 资源面板是在部署模型时定义的。您可以通过多种方式部署模型:

    • SageMaker Python 软件开发工具包模型类sagemaker.model.Model.deploy.

    • 这些区域有:Amazon SDK for Python (Boto3)SageMaker 服务客户端 APICreateEndpoint.

    • SageMaker 控制台。Select推理,然后从左侧面板中选择终端节点配置. 提供一个终端节点名称终端节点名称字段中返回的子位置类型。

  5. 将在 Studio 工作区中填充一个新选项卡。选择測試推理选项卡。

  6. 通过以 JSON 格式提供示例数据,向终端节点发送请求。使用 JSON 编辑器向终端节点提交请求。

  7. Select发送请求.

  8. 当您发送请求时,推理输出卡将出现在控制台的右侧。

卡片顶部将显示发送到终端节点的请求类型(目前仅接受 JSON)。卡内有四个主要领域:StatusExecution LengthRequest Time, 和Result Time.

  • 状态:显示请求状态。状态有三种类型:

    • Complete-如果请求成功,状态将显示Complete,执行长度将通过跟踪请求时间来计算。

    • Failed-如果请求因任何原因失败。故障响应将显示在故障原因手风琴。

    • Pending-当推断请求处于挂起状态时,将出现旋转的圆形图标。

  • 执行长度:调用所需的时间(结束时间减去开始时间),以毫秒为单位。

  • 请求时间:发送请求后已过去多少分钟。

  • 结果时间:自返回结果以来已经过去了多少分钟。

使用测试终端节点Amazon软件开发工具包

将模型部署到端点后(请参阅部署您的模型),您可以使用InvokeEndpointAPI 使用其中一个Amazon开发工具包。如果调用成功,SageMaker 将返回 HTTP 200 响应。您可以对返回的响应字典对象进行索引,以了解有关响应标头的更多信息。有关更多信息,请参阅InvokeEndpoint

以下内容演示了如何使用InvokeEndpoint检查您的终端节点的状态,使用Amazon SDK for Python (Boto3). 提供终端节点的名称。这是您指定的名称EndpointName当你创建你的终端节点时CreateEndpoint.

在 “正文” 字段中提供输入数据,以便 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.

在 “正文” 字段中提供输入数据,以便 SageMaker 传递给模型。数据必须采用与训练相同的格式。示例代码模板显示如何将二进制数据发送到终端节点。

aws sagemaker-runtime invoke-endpoint \ --endpoint-name endpoint_name \ --body fileb://$file_name \ output_file.txt

有关何时使用的更多信息file://OVERfileb://将文件的内容传递给Amazon CLI,请参阅针对本地文件参数的最佳实践.

请参阅invoke-endpoint中的Amazon CLI命令参考指南,了解有关您可以传递的其他参数的详细信息。

如果上面的调用显示了如下所示的代码片段,则表示命令已成功执行。否则,请检查输入有效载荷格式是否正确。

{ "ContentType": "<content_type>; charset=utf-8", "InvokedProductionVariant": "<Variant>" }

查看调用的输出,方法是检查文件输出文件 (output_file.txt)。

more output_file.txt