在 SageMaker 托管服务上部署模型 - 亚马逊 SageMaker
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

如果我们为英文版本指南提供翻译,那么如果存在任何冲突,将以英文版本指南为准。在提供翻译时使用机器翻译。

在 SageMaker 托管服务上部署模型

有关如何将模型部署到 SageMaker 托管服务的示例,请参阅步骤6.1: 将模型部署到 SageMaker 托管服务

或者,如果您愿意,请观看以下视频教程:

SageMaker 提供了模型托管服务以部署模型,如下图中所示。SageMaker 提供一个 HTTPS 终端节点,将在其中运行机器学习模型以提供推理。

使用 SageMaker 托管服务部署模型有三个步骤:

  1. 在 SageMaker 中创建模型 — 通过创建模型,您告诉 SageMaker 在何处查找模型组件。这包括存储模型构件的 S3 路径和包含推理代码的映像的 Docker 注册表路径。在后续部署步骤中,您按名称指定模型。有关更多信息,请参阅 CreateModel API。

  2. 为 HTTPS 终端节点创建终端节点配置 — 指定生产变体中一个或多个模型的名称以及您希望 SageMaker 启动以托管各个生产变体的 ML 计算实例。

    在生产环境中托管模型时,您可以将终端节点配置为弹性扩展部署的 ML 计算实例。对于每个生产变体,您指定所要部署的 ML 计算实例数量。当您指定两个或更多实例时,SageMaker 会在多个可用区中启动它们。这可确保连续可用性。SageMaker 管理实例的部署。有关更多信息,请参阅 CreateEndpointConfig API。

  3. 创建 HTTPS 终端节点 — 为 SageMaker 提供终端节点配置。该服务会启动 ML 计算实例,并按照配置中的规定部署一个或多个模型。有关更多信息,请参阅 CreateEndpoint API。要从模型中获取推理,客户端应用程序应向 SageMaker 运行时 HTTPS 终端节点发送请求。有关 API 的更多信息,请参阅 InvokeEndpoint API。

    注意

    终端节点的作用域限于单个 AWS 账户,并且终端节点不是公有的。URL 不包含账户 ID,但 SageMaker 从调用者提供的身份验证令牌中确定账户 ID。

    有关如何使用 Amazon API Gateway 和 AWS Lambda 设置和部署可以从不在您的账户范围的客户端应用程序调用的 Web 服务的示例,请参阅 AWS 机器学习博客 中的使用 Amazon API Gateway 和 AWS Lambda 调用 SageMaker 模型终端节点

注意

在创建一个终端节点时,SageMaker 将 Amazon EBS 存储卷附加到托管该终端节点的每个 ML 计算实例。存储卷的大小取决于实例类型。有关 SageMaker 托管服务支持的实例类型列表,请参阅 AWS 服务限制。有关 SageMaker 附加到每个实例的存储卷的大小列表,请参阅托管实例存储卷

要提高模型的准确性,您可以选择保存用户的输入数据和基本实际情况 (如果可用) 作为训练数据的一部分。然后,您可以使用更大且经过改进的训练数据集定期重新训练模型。

使用 SageMaker 托管服务托管模型时,请考虑以下事项:

  • 通常,客户端应用程序会向 SageMaker HTTPS 终端节点发送请求,以从部署的模型中获取推理。您也可以在测试期间从 Jupyter 笔记本向此终端节点发送请求。

     

  • 您可以将使用 SageMaker 训练的模型部署到您自己的部署目标。为此,您需要知道模型训练生成的模型构件的特定于算法的格式。有关输出格式的更多信息,请参阅 训练数据格式 中与要使用的算法对应的章节。

     

  • 您可以将模型的多个变体部署到同一 SageMaker HTTPS 终端节点。这对于测试生产环境中模型的变体非常有用。例如,假设您已在生产环境中部署了模型。您想通过将少量流量(比如 5%)定向到新模型来测试模型的变体。为此,请创建描述模型的两个变体的终端节点配置。您在向 ProductionVariant 发送的请求中指定 CreateEndPointConfig。有关更多信息,请参阅 ProductionVariant

     

  • 您可以配置 ProductionVariant 以使用 Application Auto Scaling。有关配置自动扩展的信息,请参阅自动扩展 Amazon SageMaker 模型

     

  • 您可以修改终端节点,而不用让已部署到生产环境中的模型停止服务。例如,您可以添加新的模型变体,更新现有模型变体的 ML 计算实例配置,或者更改模型变体之间的流量分配。要修改终端节点,请提供新的终端节点配置。SageMaker 实施更改,而不会造成任何停机。有关更多信息,请参阅 UpdateEndpointUpdateEndpointWeightsAndCapacities

     

  • 在部署模型后更改或删除模型构件或者更改推理代码会产生不可预测的结果。如果您需要更改或删除模型构件或者更改推理代码,则通过提供新的终端节点配置来修改终端节点。一旦提供新的终端节点配置,您便可更改或删除对应于旧终端节点配置的模型构件。

     

  • 如果您希望在整个数据集上获取推理,请考虑使用批量转换作为托管服务的替代。有关信息,请参阅使用批量转换获取整个数据集的推理