本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 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 检测到模型部署代码发生更改时,这些步骤就会开始。
总之,这些步骤将引导您完成以下任务:
-
在您 AWS 和 GitHub 账户之间建立联系。
-
创建 Jenkins 账户并导入所需的插件。
-
创建 Jenkins IAM 用户和权限策略。
-
在 Jenkins 服务器上为 Jenkins IAM 用户设置 AWS 凭证。
-
创建用于与 Jenkins 服务器通信的API令牌。
-
使用 CloudFormation 模板设置 EventBridge 规则,以监控新批准的模型的模型注册表。
-
创建 SageMaker AI 项目,该项目使用模型构建和部署代码为您的 GitHub 存储库播种。
-
使用模型构建种子代码创建 Jenkins 建模管线。
-
使用模型部署种子代码创建 Jenkins 模型部署管道。
此模板是 MLOps使用第三方 Git 进行模型构建、训练和部署的模板 CodePipeline 的扩展。它包括该模板的模型构建、训练和部署组件以及以下选项:
-
包括处理映像 - 构建管道
-
包括训练映像 - 构建管道
-
包括推理映像 - 构建管道
对于在项目创建期间选择的每个组件,使用模板创建以下组件:
-
亚马逊ECR存储库
-
包含您可以自定义的 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)设置
-
在IAM控制台中,删除
AmazonSageMakerServiceCatalogProductsUseRole
。 -
在 Studio(或 Studio Classic)控制面板中,选择编辑设置。
-
切换两个设置,然后选择提交。
-
-
在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-*" ] }