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

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

调用实时端节点

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

使用 Amazon SageMaker Studio 测试您的终端节点

将模型部署到终端节点后(请参阅创建终端节点并部署模型) 您可以使用 Amazon SageMaker Studio 检查该终端节点。

注意

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

  1. 启动 Amazon SageMaker Studio。

  2. SelectSageMaker 组件和注册表左侧栏上的图标。

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

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

    • SageMaker Python SDK 模型类sagemaker.model.Model.deploy.

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

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

  5. (可选)您可以选择提供自定义 URL 以将请求发送到。在配置终端节点 URL 和标头字段提供模型托管位置的 URL。如果您使用的是 SageMaker 终端节点,请将此字段留空。您还可以选择添加多个键值标头以将其他信息传递给推理请求。

  6. Studio 工作区中将填充一个新的选项卡。Select测试推理选项卡。

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

  8. Select发送请求.

  9. 当你发送请求时推理输出卡将显示在控制台的右侧。

卡片顶部将显示发送到终端节点的请求类型(目前只接受 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.

在 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 \ --body fileb://$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