使用 SageMaker 提供的项目模板 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

使用 SageMaker 提供的项目模板

Amazon SageMaker 提供了项目模板,用于创建创建 MLOP 解决方案所需的基础设施,以实现 ML 模型的持续集成和持续部署 (CI/CD)。使用这些模板处理数据、提取功能、训练和测试模型、在 SageMaker 模型注册表中注册模型以及部署模型以进行推理。您可以自定义种子代码和配置文件以满足您的要求。

重要

截至 2021 年 7 月 27 日,SageMaker 项目可以使用第三方 Git 存储库。有关更多信息,请参阅更新 SageMaker 项目以使用第三方 Git 存储库

SageMaker 项目模板为您提供以下代码存储库、工作流自动化工具和工作流阶段的选择:

  • 代码存储库:Amazon CodeCommit或第三方 Git 存储库(如 GitHub 和比特桶)

  • CI/CD 工作流程自动化:Amazon CodePipeline或 Jenkins

  • 管道阶段:模型构建和培训、模型部署或两者兼有

用于模型构建、培训和部署的 MLOP 模板

此模板是以下两个模板的组合,每个模板都可以独立使用,并且包含这些模板中提供的所有资源。

  • 代码存储库:Amazon CodeCommit

  • CI/CD 工作流程自动化:Amazon CodePipeline

用于模型构建和培训的 MLOP 模板

如果您希望 MLOP 解决方案处理数据、提取特征、训练和测试模型以及在 SageMaker 模型注册表中注册模型,请使用此模板。

此模板提供以下资源:

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodeCommit存储库,其中包含用于在 Python 代码中创建 Amazon SageMaker 模型构建管道管道的示例代码,并演示如何创建和更新 SageMaker 管道。此存储库还有一个 Python Jupyter 笔记本,您可以在 Studio 中打开并运行该笔记本。

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodePipeline管道具有源代码和构建步骤。源步骤指向 CodeCommit 存储库。构建步骤从该存储库中获取代码,创建和更新 SageMaker 管道,启动管道执行,并等待管道执行完成。

  • 用于存储工件(包括 CodePipeline 和 CodeBuild 工件)以及从 SageMaker 管道生成的任何工件)的 Amazon S3 存储桶正在运行。

用于模型部署的 MLOP 模板

使用此模板可以自动将 SageMaker 模型注册表中的模型部署到 SageMaker 终端节点以进行实时推断。此模板可识别模型注册表中的更改。注册并批准新模型版本后,它会自动启动部署。

该模板配置一个带有配置文件的 CodeCommit 存储库,以指定模型部署步骤,Amazon CloudFormation模板将终端定义为基础结构,以及用于测试端点的种子代码。

此模板提供以下资源:

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodeCommit存储库,其中包含将模型部署到临时和生产环境中的端点的示例代码。

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodePipeline管道,其中包含源步骤、构建步骤、部署到暂存步骤和部署到生产步骤。源步骤指向 CodeCommit 存储库,生成步骤从该存储库获取代码并生成要部署的 CloudFormation 堆栈。部署到暂存和部署到生产的步骤将 CloudFormation 堆栈部署到各自的环境。在临时和生产构建步骤之间有一个手动批准步骤,因此,在将模型部署到生产环境之前,MLOP 工程师必须批准该模型。

    在 CodeCommit 存储库中的示例代码中还有一个包含占位符测试的编程批准步骤。您可以添加其他测试来替换占位符测试。

  • 用于存储工件(包括 CodePipeline 和 CodeBuild 工件)以及从 SageMaker 管道生成的任何工件)的 Amazon S3 存储桶正在运行。

  • CloudWatch 事件,用于在模型包版本被批准或拒绝时启动管道。

用于映像构建、模型构建和模型部署的 MLOPS 模板

此模板是用于模型构建、培训和部署的 MLOP 模板. 它包括该模板的模型构建、培训和部署组件以及以下选项:

  • 包括处理图像构建管道

  • 包括培训图像构建管道

  • 包括推理图像构建管道

对于在项目创建过程中选择的每个组件,都会创建以下内容:

  • Amazon ECR 存储库

  • SageMaker 映像

  • 包含可自定义的 Docker 文件的 CodeCommit 存储库

  • 由对 CodeCommit 存储库的更改启动的代码匹配行

  • 一个 CodeBuild 项目,用于构建 Docker 映像并在 Amazon ECR 存储库中注册该映像

  • 根据计划启动代码匹配行的 EventBridge 梁规则

当 CodePipeline 启动时,它会生成一个新的 Docker 容器,并将其注册到 Amazon ECR 存储库。在亚马逊 ECR 存储库中注册新容器时,将向 SageMaker 映像添加一个新的图像。这将启动模型构建管道,从而启动部署管道。

新创建的映像用于工作流的模型构建、培训和部署部分(如果适用)。

MLOPS 模板,用于使用 CodePipeline 与第三方 Git 存储库一起构建、培训和部署模型

  • 代码存储库:第三方 Git

  • CI/CD 工作流程自动化:Amazon CodePipeline

此模板提供以下资源:

  • 与一个或多个客户指定的 Git 存储库相关联。

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodePipeline管道,其中包含源步骤、构建步骤、部署到暂存步骤和部署到生产步骤。源步骤指向第三方 Git 存储库,构建步骤从该存储库中获取代码并生成要部署的 CloudFormation 堆栈。部署到暂存和部署到生产的步骤将 CloudFormation 堆栈部署到各自的环境。在临时和生产构建步骤之间有一个手动批准步骤,因此,在将模型部署到生产环境之前,MLOP 工程师必须批准该模型。

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodeBuild项目使用种子代码信息填充 Git 存储库。这需要一个 AWS CodeStar 连接,从Amazon帐户添加到 Git 存储库主机上的帐户。

  • 用于存储工件(包括 CodePipeline 和 CodeBuild 工件)以及从 SageMaker 管道生成的任何工件)的 Amazon S3 存储桶正在运行。

MLOPS 模板,用于使用詹金斯的第三方 Git 存储库构建、培训和部署模型

将您自己的 Git 存储库附加到项目中,以便检入和管理代码版本。将项目 Connect 到 Jenkins 以协调模型部署步骤。通过批准在模型注册表中注册的模型以便手动或自动进行部署,启动模型部署工作流。

  • 代码存储库:第三方 Git

  • CI/CD 工作流程自动化:Jenkins

此模板提供以下资源:

  • 与一个或多个客户指定的 Git 存储库相关联。

  • 用于生成具有源代码、构建、部署到暂存和部署到生产步骤的 Jenkins 管道的种子代码。源步骤指向客户指定的 Git 存储库。构建步骤从该存储库中获取代码并生成两个 CloudFormation 堆栈。部署步骤将 CloudFormation 堆栈部署到各自的环境中。暂存步骤和生产步骤之间有一个审批步骤。

  • 网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodeBuild项目使用种子代码信息填充 Git 存储库。这需要一个 AWS CodeStar 连接,从Amazon帐户添加到 Git 存储库主机上的帐户。

  • 一个 Amazon S3 存储桶,用于存储 SageMaker 项目和 SageMaker 管道的工件。

更新 SageMaker 项目以使用第三方 Git 存储库

附加到的托管策略AmazonSageMakerServiceCatalogProductsUseRole角色已于 2021 年 7 月 27 日更新,以便与第三方 Git 模板一起使用。在此日期之后加入 Amazon SageMaker Studio 并启用项目模板的用户使用新策略。在此日期之前加入的用户必须更新策略才能使用这些模板。使用以下选项之一更新策略:

  • 删除角色并切换工作室设置

    1. 在 IAM 控制台中,删除AmazonSageMakerServiceCatalogProductsUseRole.

    2. 在 Studio 控制面板中,选择编辑设置.

    3. 切换这两个设置,然后选择提交.

  • 在 IAM 控制台中,将以下许可添加到AmazonSageMakerServiceCatalogProductsUseRole

    { "Effect": "Allow", "Action": [ "codestar-connections:UseConnection" ], "Resource": "arn:aws:codestar-connections:*:*:connection/*", "Condition": { "StringEqualsIgnoreCase": { "aws:ResourceTag/sagemaker": "true" } } }, { "Effect": "Allow", "Action": [ "s3:PutObjectAcl" ], "Resource": [ "arn:aws:s3:::sagemaker-*" ] }