将模型部署到端点 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

将模型部署到端点

在 Amazon SageMaker Canvas 中,您可以将模型部署到终端节点以进行预测。 SageMaker 提供机器学习基础架构,供您在带有您选择的计算实例的终端节点上托管模型。然后,您可以调用端点(发送预测请求)并从模型中获取实时预测。借助此功能,您可以在生产环境中使用模型来响应传入的请求,还可以将模型与现有应用程序和工作流集成。

首先,你应该有一个要部署的模型。您可以部署自己构建的自定义模型版本,也可以部署 Amazon SageMaker JumpStart 基础模型。有关在 Canvas 中构建模型的更多信息,请参阅构建自定义模型。有关 Canvas 中 JumpStart基础模型的更多信息,请参阅在根基模型中使用生成式人工智能

重要

您可以在 C SageMaker anvas 中部署任何自定义模型类型,但时间序列预测模型除外。

查看以下权限管理部分,然后在部署模型部分开始创建新部署。

权限管理

默认情况下,您有权将模型部署到 SageMaker 托管终端节点。 SageMaker 通过策略为所有新的和现有的 Canvas 用户配置文件授予这些权限,该AmazonSageMakerCanvasFullAccess策略附加到托管 Canvas 应用程序的 SageMaker 域的 Amazon IAM 执行角色。

如果您的 Canvas 管理员正在设置新的域或用户配置文件,则在设置域并按照中的先决条件说明进行操作时设置 Amazon C SageMaker anvas 的先决条件, SageMaker会通过 “启用直接部署 Canvas 模型” 选项开启模型部署权限,该选项默认处于启用状态。

Canvas 管理员还可以在用户配置文件级别管理模型部署权限。例如,如果管理员不想在设置域时向所有用户配置文件授予模型部署权限,则可以在创建域后向特定用户授予权限。

以下过程说明如何修改特定用户配置文件的模型部署权限:

  1. 打开 SageMaker 控制台,网址为 https://console.aws.amazon.com/sagemaker/

  2. 在左侧导航窗格中,选择管理员配置

  3. 管理员配置下,选择

  4. 从域名列表中,选择用户配置文件的域。

  5. 域名详细信息页面上,选择要编辑其权限的用户个人资料

  6. 用户详细信息页面上,选择编辑

  7. 在左侧导航窗格中,选择 Canvas 设置

  8. ML Ops 权限配置部分,打开启用直接部署 Canvas 模型开关以启用部署权限。

  9. 选择提交以保存对您的域名设置的更改。

用户配置文件现在应该具有模型部署权限。

部署模型

要开始部署模型,您可以在 Canvas 中创建一个新的部署,并指定要部署的模型版本以及 ML 基础设施,例如要用于托管模型的计算实例的类型和数量。

Canvas 会根据您的模型类型建议默认类型和实例数量,或者您可以在 Amazon SageMaker 定价页面上详细了解各种 SageMaker 实例类型。您的终端节点处于活动状态时,将根据 SageMaker 实例定价向您收费。

部署 JumpStart 基础模型时,您还可以选择指定部署时间的长度。您可以无限期地将模型部署到终端节点(这意味着终端节点在您关闭之前一直处于活动状态)。或者,如果您只需要在短时间内使用终端节点并希望降低成本,则可以在指定的时间段内将模型部署到终端节点,之后将为您 SageMaker 关闭终端节点。

注意

如果您在指定的时间内部署模型,请在终端节点的持续时间内保持 Canvas 应用程序的登录状态。如果您注销或删除应用程序,则 Canvas 无法在指定时间关闭终端节点。

将模型部署到 SageMaker 托管实时推理端点后,您可以通过调用该终端节点开始进行预测。

您可以通过多种不同的方式从 Canvas 应用程序部署模型。您可以通过以下任一方法访问模型部署选项:

  • 在 Canvas 应用程序的我的模型页面上,选择要部署的模型。然后,在模型的版本页面中,选择模型版本旁边的更多选项图标 ( More options icon for the output CSV file. ),然后选择部署

  • 在模型版本的详细信息页面上,在分析选项卡上,选择部署选项。

  • 在模型版本的详细信息页面上,在预测选项卡上,选择页面顶部的更多选项图标 ( More options icon for the output CSV file. ),然后选择部署

  • 在 Canva s 应用程序的 ML Ops 页面上,选择部署选项卡,然后选择创建部署

  • 对于 JumpStart 基础模型,请转到 Canvas 应用程序的 R eady-to-use 模型页面。选择生成、提取和汇总内容。然后,找到要部署 JumpStart 的基础模型。选择模特,然后在模特的聊天页面上,选择部署按钮。

所有这些方法都会打开部署模型侧面板,您可在此指定模型的部署配置。要通过此面板部署模型,请执行以下操作:

  1. (可选)如果您从 ML Ops 页面创建部署,则可以选择选择模型和版本。使用下拉菜单选择要部署的模型和模型版本。

  2. 部署名称字段中输入名称。

  3. (仅适用于 JumpStart 基础模型)选择部署长度。选择 “不确定” 以使端点保持活动状态,直到将其关闭,或者选择 “指定长度”,然后输入您希望端点保持活动状态的时间段。

  4. 对于实例类型, SageMaker 检测适合您的模型的默认实例类型和编号。不过,您可以更改要用于托管模型的实例类型。

    注意

    如果您的 Amazon 账户上所选实例类型的实例配额已用完,则可以申请增加配额。有关默认配额以及如何申请增加配额的更多信息,请参阅《Amazon 通用参考指南》中的 Amazon SageMaker 终端节点和配额

  5. 对于实例计数,您可以设置用于终端节点的活跃实例数量。 SageMaker 检测到适合您的型号的默认数字,但您可以更改此数字。

  6. 如果您已准备好部署模型,请选择部署

现在,您的模型应该已部署到端点。有关如何查看部署详细信息或执行各种操作的信息,请参阅以下几节。

查看部署

您可能想检查 Canvas 中模型部署的状态或详细信息。例如,如果部署失败,您可能需要查看详细信息以排查问题。

您可以通过 Canvas 应用程序或亚马逊 SageMaker 控制台查看您的 Canvas 模型部署。

要从 Canvas 查看部署详细信息,请选择以下过程之一:

要从 ML Ops 页面查看您的部署详细信息,请执行以下操作:

  1. 打开 SageMaker 画布应用程序。

  2. 在左侧导航窗格中,选择 ML Ops

  3. 选择部署选项卡。

  4. 从列表中按名称选择您的部署。

要从模型版本页面查看部署详细信息,请执行以下操作:

  1. 在 SageMaker Canvas 应用程序中,转到模型版本的详细信息页面。

  2. 选择部署选项卡。

  3. 在列出与该模型版本关联的所有部署配置的部署部分,找到您的部署。

  4. 选择更多选项图标 ( More options icon for the output CSV file. ),然后选择查看详细信息以打开详细信息页面。

此时会打开部署的详细信息页面,您可以查看最近一次预测的时间、端点的状态和配置以及当前部署到端点的模型版本等信息。

您还可以在SageMaker 控制台的控制SageMaker 面板中查看当前处于活动状态的 Canvas 工作空间实例和活动终端节点。您的 Canvas 端点与您创建的任何其他 SageMaker 托管终端节点一起列出,您可以通过搜索带有 Canvas 标签的端点来筛选它们。

以下屏幕截图显示了 SageMaker 仪表板。在 Canvas 部分,您可以看到一个工作区实例正在运行,四个端点处于活动状态。

显示活动的 Canvas 工作区实例和端点的 SageMaker 仪表板屏幕截图。

更新部署配置

您也可以更新部署配置。例如,可以向端点部署更新的模型版本,也可以根据容量需求更新端点后面的实例类型或实例数量。

您可以通过几种不同的方式从 Canvas 应用程序更新部署。您可以使用以下任何一种方法:

  • 在 Canva s 应用程序的 ML Ops 页面上,您可以选择 “部署” 选项卡,然后选择要更新的部署。然后,选择更新配置

  • 在模型版本的详细信息页面的部署选项卡上,您可以查看该版本的部署。在部署旁边,选择更多选项图标 ( More options icon for the output CSV file. ),然后选择更新配置

上述两种方法都会打开更新配置侧面板,您可以在其中更改部署配置。要更新配置,请执行以下操作:

  1. 选择版本下拉菜单中,您可以选择要部署到端点的不同模型版本。

    注意

    更新部署配置时,只能选择不同的模型版本进行部署。要部署不同的模型,请创建新的部署。

  2. 对于实例类型,您可以选择不同的实例类型来托管您的模型。

  3. 对于实例计数,您可以更改端点使用的活动实例数量。

  4. 选择保存

您的部署配置现在应该已更新。

测试部署

您可以通过 Canvas 应用程序调用端点或发出单一预测请求来测试您的部署。在生产环境中以编程方式调用端点之前,您可以使用此功能确认端点是否响应请求。

测试自定义模型部署

您可以通过 ML Ops 页面访问自定义模型部署,然后进行一次调用,这将返回预测以及预测正确的概率,从而对其进行测试。

注意

执行长度是调用 Canvas 中的端点并从端点获取响应所需的估计时间。有关详细的延迟指标,请参阅SageMaker 端点调用指标

要通过 Canvas 应用程序测试您的端点,请执行以下操作:

  1. 打开 SageMaker 画布应用程序。

  2. 在左侧导航面板中,选择 ML Ops

  3. 选择部署选项卡。

  4. 从部署列表中,选择带有要调用的端点的部署。

  5. 在部署的详细信息页面上,选择测试部署选项卡。

  6. 在部署测试页面上,您可以修改字段以指定新的数据点。

  7. 修改值后,选择更新以获取预测结果。

此时将加载预测,同时加载的还有调用结果字段,这些字段指示调用是否成功以及处理请求所需的时间。

以下屏幕截图显示了在 Canvas 应用程序的测试部署选项卡上执行的预测。

Canvas 应用程序的屏幕截图,显示了已部署模型的测试预测。

对于除数值预测之外的所有模型类型,预测将返回以下字段:

  • predicted_label – 预测的输出

  • probability – 预测的标签正确的概率

  • labels – 所有可能的标签的列表

  • probabilities – 每个标签对应的概率(该列表的顺序与标签的顺序一致)

对于数值预测模型,预测结果只包含分数字段,即模型的预测输出,如预测的房屋价格。

您可以继续通过部署测试页面进行单一预测,也可以查看以下调用端点部分,了解如何从应用程序中以编程方式调用端点。

测试 JumpStart 基础模型部署

您可以通过 Canvas 应用程序与已部署 JumpStart 的基础模型交谈,以测试其功能,然后再通过代码调用该模型。

要与已部署 JumpStart 的基础模型交谈,请执行以下操作:

  1. 打开 SageMaker 画布应用程序。

  2. 在左侧导航面板中,选择 ML Ops

  3. 选择部署选项卡。

  4. 从部署列表中,找到要调用的部署,然后选择其更多选项图标 ( More options icon for a model deployment. )。

  5. 从上下文菜单中,选择测试部署

  6. JumpStart 基础模型将打开一个新的 “生成、提取和汇总内容” 聊天,你可以开始键入提示了。请注意,来自此聊天的提示将作为请求发送到您的 SageMaker 托管终端节点。

调用端点

测试部署后,您可以像调用任何其他SageMaker 实时端点一样以编程方式调用终端节点,从而在生产环境中使用终端节点。以编程方式调用端点会返回一个响应对象,其中包含的字段与上一节测试部署 中提到的相同。

有关如何以编程方式调用端点的更多详细信息,请参阅调用模型进行实时推理

下面的 Python 示例向您展示了如何根据模型类型调用端点。

以下示例说明如何调用已部署到终端节点 JumpStart 的基础模型。

import boto3 import pandas as pd client = boto3.client("runtime.sagemaker") body = pd.DataFrame( [['feature_column1', 'feature_column2'], ['feature_column1', 'feature_column2']] ).to_csv(header=False, index=False).encode("utf-8") response = client.invoke_endpoint( EndpointName="endpoint_name", ContentType="text/csv", Body=body, Accept="application/json" )

下面的示例展示了如何调用数值或分类预测模型。

import boto3 import pandas as pd client = boto3.client("runtime.sagemaker") body = pd.DataFrame(['feature_column1', 'feature_column2'], ['feature_column1', 'feature_column2']).to_csv(header=False, index=False).encode("utf-8") response = client.invoke_endpoint( EndpointName="endpoint_name", ContentType="text/csv", Body=body, Accept="application/json" )

下面的示例展示了如何调用图像预测模型。

import boto3 client = boto3.client("runtime.sagemaker") with open("example_image.jpg", "rb") as file: body = file.read() response = client.invoke_endpoint( EndpointName="endpoint_name", ContentType="application/x-image", Body=body, Accept="application/json" )

下面的示例展示了如何调用文本预测模型。

import boto3 import pandas as pd client = boto3.client("runtime.sagemaker") body = pd.DataFrame([["Example text 1"], ["Example text 2"]]).to_csv(header=False, index=False).encode("utf-8") response = client.invoke_endpoint( EndpointName="endpoint_name", ContentType="text/csv", Body=body, Accept="application/json" )

删除模型部署

可以从 Canvas 应用程序中删除您的模型部署。此操作还会从 SageMaker 控制台中删除终端节点并关闭所有与端点相关的资源。

注意

或者,您可以通过SageMaker 控制台或使用 SageMaker DeleteEndpoint API 删除您的终端节点。有关更多信息,请参阅 删除端点和资源。但是,当您通过 SageMaker 控制台或 API 而不是 Canvas 应用程序删除终端节点时,Canvas 中的部署列表不会自动更新。您还必须从 Canvas 应用程序中删除部署,才能将其从列表中移除。

要在 Canvas 中删除部署,请执行以下操作:

  1. 打开 SageMaker 画布应用程序。

  2. 在左侧导航面板中,选择 ML Ops

  3. 选择部署选项卡。

  4. 从部署列表中,选择要删除的部署。

  5. 在部署详细信息页面顶部,选择更多选项图标 ( More options icon for the output CSV file. )。

  6. 选择删除部署

  7. 删除部署对话框中,选择删除

现在应该从 Canvas 和 SageMaker 控制台中删除您的部署和 SageMaker 托管终端节点。