使用 SageMaker AI 提供的项目模板 - 亚马逊 SageMaker AI

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

使用 SageMaker AI 提供的项目模板

重要

自 2024 年 10 月 28 日起,这些 AWS CodeCommit 模板已被移除。对于新项目,可从使用第三方 Git 存储库的可用项目模板中进行选择。

Amazon SageMaker AI 提供项目模板,用于创建机器学习模型持续集成和持续部署 (CI/CD) MLOps 解决方案所需的基础设施。使用这些模板来处理数据、提取特征、训练和测试模型、在模型注册表中注册 SageMaker 模型以及部署模型进行推理。您可以根据自己的要求自定义种子代码和配置文件。

注意

需要其他角色才能使用项目模板。有关所需角色的完整列表以及如何创建这些角色的说明,请参阅授予使用项目所需的 SageMaker Studio 权限。如果你没有新角色,当你尝试创建新项目但无法继续role/service-role/AmazonSageMakerServiceCatalogProductsCodePipelineRole时,你会收到一条错误消息CodePipeline :arn: aws: iam:: xxx: 无权 AssumeRole 在角色 arn: aws:: xxx 上执行

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

  • 代码存储库:第三方 Git 存储库,例如 GitHub 和 Bitbucket

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

  • 管道阶段:模型构建与训练和/或模型部署

以下讨论概述了您在创建 SageMaker AI 项目时可以选择的每个模板。您还可以按照创建项目进行操作,查看 Studio(或 Studio Classic)中的可用模板。

有关如何创建真实项目的 step-by-step说明,您可以按照其中一个项目演练进行操作:

主题
    • 代码存储库:第三方 Git。

      注意

      建立从您的 AWS 账户到您的 GitHub 用户或组织的 AWS CodeStar 连接。向此 AWS CodeStar 连接添加包含密钥sagemaker和值true的标签。

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

    模型构建和训练

    此模板提供以下资源:

    • 与一个客户指定的 Git 存储库关联。存储库包含使用 Python 代码创建 Amazon SageMaker AI 管道的示例代码,并演示如何创建和更新 SageMaker AI 管道。该存储库还有一个 Python 笔记本示例,可以在 Studio(或 Studio Classic)中打开并运行。

    • 包含源代码和生成步骤的 AWS CodePipeline 管道。源代码步骤指向第三方 Git 存储库。构建步骤从该存储库获取代码,创建和更新 SageMaker AI 管道,启动管道执行,然后等待管道执行完成。

    • 一个用种子代码信息填充 Git 存储库的 AWS CodeBuild 项目。这需要您 AWS 账户 与 Git 存储库主机上的帐户 AWS CodeStar 建立连接。

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

    模型部署

    此模板提供以下资源:

    • 与一个客户指定的 Git 存储库关联。存储库包含将模型部署到暂存和生产环境中的端点的示例代码。

    • 包含源代码 deploy-to-staging、版本和 deploy-to-production步骤的 AWS CodePipeline 管道。源代码步骤指向第三方 Git 存储库,构建步骤从该存储库获取代码并生成 AWS CloudFormation 堆栈进行部署。 deploy-to-staging和 deploy-to-production步骤将 AWS CloudFormation 堆栈部署到各自的环境中。在试运行和生产构建步骤之间有一个手动批准步骤,因此在将模型部署到生产环境之前,必须由MLOps工程师批准该模型。

    • 一个用种子代码信息填充 Git 存储库的 AWS CodeBuild 项目。这需要您 AWS 账户 与 Git 存储库主机上的帐户 AWS CodeStar 建立连接。

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

    模型构建、训练和部署

    此模板提供以下资源:

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

    • 包含源代码 deploy-to-staging、版本和 deploy-to-production步骤的 AWS CodePipeline 管道。源代码步骤指向第三方 Git 存储库,构建步骤从该存储库获取代码并生成 CloudFormation堆栈进行部署。 deploy-to-staging和 deploy-to-production步骤将 CloudFormation 堆栈部署到各自的环境中。在试运行和生产构建步骤之间有一个手动批准步骤,因此在将模型部署到生产环境之前,必须由MLOps工程师批准该模型。

    • 一个用种子代码信息填充 Git 存储库的 AWS CodeBuild 项目。这需要将您的 AWS 帐户 AWS CodeStar 连接到 Git 仓库主机上的帐户。

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

    如前所述,有关使用此模板创建真实项目的演示,请参阅使用第三方 Git 存储库进行项目演练

    • 代码存储库:第三方 Git。

      注意

      建立从您的 AWS 账户到您的 GitHub 用户或组织的 AWS CodeStar 连接。向此 AWS CodeStar 连接添加包含密钥sagemaker和值true的标签。

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

    以下模板包括额外的 Amazon SageMaker 模型监控器模板,该模板提供以下类型的监控:

    模型构建、训练、部署和 Amazon SageMaker 模型监控器

    此模板是模板的扩展,MLOps用于构建、训练和使用 Git 存储库进行部署 CodePipeline。它包括模板的模型构建、训练和部署组件,以及提供以下类型监控的附加 Amazon SageMaker 模型监控器模板:

    监控已部署的模型

    您可以使用此模板作为MLOps解决方案,部署一个或多个 Amazon A SageMaker I 数据质量、模型质量、模型偏差和模型可解释性监控器,以监控 SageMaker AI 推理终端节点上已部署的模型。此模板提供以下资源:

    • 与一个或多个客户指定的 Git 存储库的关联。存储库包含示例 Python 代码,用于从 Amazon SageMaker 模型注册表中获取监控器使用的基准,并更新暂存和生产环境的模板参数。它还包含一个用于创建 Amazon SageMaker 模型监视器的 AWS CloudFormation 模板。

    • 包含源代码、生成和部署步骤的 AWS CodePipeline 管道。源步骤指向 CodePipeline 存储库。构建步骤从该存储库获取代码,从模型注册表中获取基准,并更新暂存和生产环境的模板参数。部署步骤将配置的监控器部署到暂存和生产环境中。阶段内的手动批准步骤要求您在批准并DeployStaging进入该阶段InService之前验证生产 SageMaker AI 端点是否DeployProd存在。

    • 一个用种子代码信息填充 Git 存储库的 AWS CodeBuild 项目。这需要您 AWS 账户 与 Git 存储库主机上的帐户 AWS CodeStar 建立连接。

    • 该模板使用由MLOps模板创建的相同的 Amazon S3 存储桶来存储监控器的输出,用于模型构建、训练和部署。

    • AWS CodePipeline 每次更新暂存 A SageMaker I 终端节点时,有两个 Amazon EventBridge 事件规则会启动 Amazon SageMaker 模型监控器。

    • 代码存储库:第三方 Git。

      注意

      建立从您的 AWS 账户到您的 GitHub 用户或组织的 AWS CodeStar 连接。向此 AWS CodeStar 连接添加包含密钥sagemaker和值true的标签。

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

    模型构建、训练和部署

    此模板提供以下资源:

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

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

    • 一个用种子代码信息填充 Git 存储库的 AWS CodeBuild 项目。这需要将您的 AWS 帐户 AWS CodeStar 连接到 Git 仓库主机上的帐户。

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

    该模板在您的项目和源代码管理存储库之间创建关联,但是您需要执行其他手动步骤才能在您的 AWS 帐户与 Jenkins 之间建立通信。有关详细步骤,请参阅使用第三方源代码控制和 Jenkins 创建 Amazon SageMaker 项目

    这些说明可帮助您构建下图所示的架构,在本示例中 GitHub 作为源代码控制存储库。如图所示,您正在将 Git 存储库附加到项目中,以签入和管理代码版本。当 Jenkins 检测到 Git 存储库中模型构建代码发生更改时,就会启动建模管线。您还将项目连接到 Jenkins 以编排模型部署步骤,当您批准在模型注册表中注册的模型或当 Jenkins 检测到模型部署代码发生更改时,这些步骤就会开始。

    使用项目模板构建的管道工作流程。

    总之,这些步骤将引导您完成以下任务:

    1. 在您 AWS 和 GitHub 账户之间建立联系。

    2. 创建 Jenkins 账户并导入所需的插件。

    3. 创建 Jenkins IAM 用户和权限策略。

    4. 在 Jenkins 服务器上为 Jenkins IAM 用户设置 AWS 凭证。

    5. 创建用于与 Jenkins 服务器通信的API令牌。

    6. 使用 CloudFormation 模板设置 EventBridge 规则,以监控新批准的模型的模型注册表。

    7. 创建 SageMaker AI 项目,该项目使用模型构建和部署代码为您的 GitHub 存储库播种。

    8. 使用模型构建种子代码创建 Jenkins 建模管线。

    9. 使用模型部署种子代码创建 Jenkins 模型部署管道。

    此模板是 MLOps使用第三方 Git 进行模型构建、训练和部署的模板 CodePipeline 的扩展。它包括该模板的模型构建、训练和部署组件以及以下选项:

    • 包括处理映像 - 构建管道

    • 包括训练映像 - 构建管道

    • 包括推理映像 - 构建管道

    对于在项目创建期间选择的每个组件,使用模板创建以下组件:

    • 亚马逊ECR存储库

    • 一张 SageMaker AI 图片

    • 包含您可以自定义的 Dockerfile 的 CodeCommit 存储库

    • 由 CodePipeline 对 CodePipeline 存储库的更改启动的

    • 一个构建 Docker 镜像并将其注册到亚马逊ECR存储库的 CodeBuild 项目

    • 按计划启动 CodePipeline 的 EventBridge 规则

    启动后, CodePipeline 它会生成一个新的 Docker 容器并将其注册到 Amazon ECR 存储库。在 Amazon ECR 存储库中注册新容器后,会在 A SageMaker I 映像中添加一个新ImageVersion容器。这将启动建模管线,进而启动部署管道。

    新创建的映像将酌情用于工作流的模型构建、训练和部署部分。

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

    • 删除角色并切换 Studio(或 Studio Classic)设置

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

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

      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-*" ] }