本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
使用 SageMaker 提供的项目模板
亚马逊 SageMaker 提供项目模板,用于创建 MLOPS 解决方案以便为 ML 模型的连续集成和连续部署 (CI/CD) 创建 MLOPS 解决方案所需的基础设施。使用这些模板处理数据、提取要素、训练和测试模型、在 SageMaker 模型注册表,然后部署模型进行推理。您可以自定义种子代码和配置文件以满足自己的要求。
截至 2021 年 7 月 27 日, SageMaker 项目可以使用第三方 Git 存储库。有关更多信息,请参阅 更新 SageMaker 要使用第三方 Git 存储库的项目。
SageMaker 项目模板为您提供以下代码存储库、工作流自动化工具和管道阶段的选择:
-
代码存储库:Amazon CodeCommit或者第三方 Git 存储库,例如 GitHub 和 Bitbucket
-
CI/CD 工作流程自动化:Amazon CodePipeline或 Jenkins
-
管道阶段:模型构建和培训、模型部署或两者兼而有
以下每个主题都对应于创建时可以选择的模板 SageMaker 项目。您可以在中查看可用的模板第 1 步:创建项目的项目演练.
主题
用于模型构建、培训和部署的 mLOPS 模板
此模板是以下两个模板的组合,每个模板都可以独立使用,并包含这些模板中提供的所有资源。
-
代码存储库:Amazon CodeCommit
-
CI/CD 工作流程自动化:Amazon CodePipeline
- 用于模型构建和培训的 mLOPS 模板
-
当您希望使用 mLOP 解决方案来处理数据、提取要素、训练和测试模型以及在 SageMaker 模型注册表。
此模板提供以下资源:
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodeCommit包含创建亚马逊的示例代码的存储库 SageMaker 在 Python 代码中对构建管道管道进行模型并演示如何创建和更新 SageMaker 管道。此存储库还有一个 Python Jupyter 笔记本,您可以在 Studio 中打开和运行该笔记本。
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodePipeline具有源代码和构建步骤的管道。源步骤指向 CodeCommit 存储库。构建步骤从该存储库中获取代码,创建并更新 SageMaker 管道,启动管道执行,然后等待管道执行完成。
-
用于存储项的 Amazon S3 存储段,其中包括 CodePipeline 和 CodeBuild 工件,以及从 SageMaker 管道运行。
下列示意图说明了该工作流程和Amazon此模板用于帮助您构建和训练模型的资源。
-
- 模型部署的 mLOPS 模板
-
使用此模板在中自动部署模型 SageMaker 模型注册表 SageMaker 用于实时推理的终端节点。此模板可识别模型注册表中的更改。注册并批准新模型版本后,它会自动启动部署。
该模板规定了 CodeCommit 具有配置文件的存储库以指定模型部署步骤,Amazon CloudFormation将终端定义为基础设施的模板,以及用于测试终端节点的种子代码
此模板提供以下资源:
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodeCommit存储库,其中包含将模型部署到暂存和生产环境中的终端节点的示例代码。
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodePipeline具有源代码、构建、部署到暂存的管道 deploy-to-production 步骤。源步骤指向 CodeCommit 存储库,构建步骤从该存储库中获取代码并生成 CloudFormation 要部署的堆栈。这些区域有: deploy-to-staging 和 deploy-to-production 步骤部署 CloudFormation 堆叠到各自的环境中。在暂存步骤和生产构建步骤之间有一个手动审批步骤,因此,在将模型部署到生产之前,必须先获得 MPLOP 工程师批准该模型。
中的示例代码中还有一个程序化批准步骤,其中包含占位符测试 CodeCommit 存储库。您可以添加其他测试来替换占位符测试。
-
用于存储项的 Amazon S3 存储段,其中包括 CodePipeline 和 CodeBuild 工件,以及从 SageMaker 管道运行。
-
一个 CloudWatch 事件,当模型包版本被批准或拒绝时启动管道。
以下示意图说明了该工作流程和Amazon此模板用于帮助您部署模型的资源。
-
用于模型构建、培训、部署和亚马逊的 mLOP 模板 SageMaker 模型监控器
此模板是用于模型构建、培训和部署的 mLOPS 模板的扩展。它包括模板的模型构建、培训和部署组件,以及额外的亚马逊 SageMaker 模型监视器模板,提供以下类型的监控:
数据质量— 监控数据质量的漂移。
模型质量— 监控模型质量指标的偏移,例如准确性。
生产中模型的偏差漂移— 监控模型预测中的偏差。
-
代码存储库:AmazonCodeCommit
-
CI/CD 工作流程自动化:AmazonCodePipeline
亚马逊的 mLOPS 模板 SageMaker 模型监控器
您可以将此模板用于 mLOPS 解决方案来部署一个或多个亚马逊 SageMaker 数据质量、模型质量、模型偏差和模型可解释性监视器,用于监控 SageMaker 推理端点。
此模板提供以下资源:
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodeCommit 包含获取基线由来自 SageMaker 模型注册表,并更新模板的临时环境和生产环境的参数。它还包含Amazon CloudFormation用于创建亚马逊的模板 SageMaker 模型监控器。
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodePipeline 具有源代码、构建和部署步骤的管道。源步骤指向 CodePipeline 存储库。构建步骤从该存储库获取代码,从模型注册表获取基准,然后更新暂存和生产环境的模板参数。部署步骤会将配置的监视器部署到暂存环境和生产环境中。手动批准步骤,在
DeployStaging阶段,要求你验证生产 SageMaker 终端节点是InService在批准并移动到DeployProd阶段。该模板使用由 mLOPS 模板创建的相同 S3 存储桶进行模型构建、培训和部署来存储监视器的输出。
两个亚马逊 EventBridge 活动规则启动亚马逊 SageMaker 模型监控器Amazon CodePipeline每次分期 SageMaker 终端节点已更新,或者将代码更改提交到 CodePipeline 存储库。
用于映像构建、模型构建和模型部署的 mLOPS 模板
此模板是用于模型构建、培训和部署的 mLOPS 模板. 它包括该模板的模型构建、培训和部署组件以及以下选项:
包括处理图像 — 构建管道
包括培训图像 — 构建管道
包括推理图像 — 构建管道
对于在项目创建过程中选择的每个组件,使用模板创建以下组件:
Amazon ECR 存储库
一个 CodeCommit 存储库中包含您可以自定义的 Dockerfile
一个 CodePipeline 这是由更改启动的 CodePipeline 知识库
一个 CodeBuild 构建 Docker 映像并将其注册到 Amazon ECR 存储库的项目
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的 EventBridge 启动 CodePipeline 按计划
当 CodePipeline 已启动,它会构建一个新的 Docker 容器并将其注册到 Amazon ECR 存储库中。在 Amazon ECR 存储库中注册新容器时,一个新的容器ImageVersion被添加到 SageMaker 映像。这将启动模型构建管道,而模型构建管道又启动了部署管道。
新创建的映像将在工作流的模型构建、培训和部署部分中使用(如果适用)。
使用 CodePipeline 使用第三方 Git 仓库进行模型构建、培训和部署的 mLOPS 模板
-
代码存储库:第三方 Git。建立 AWS CodeStar 从您的连接Amazon您的账户 GitHub 用户或组织。用钥匙添加标签
sagemaker和值true加入此 AWS CodeStar 连接。 -
CI/CD 工作流程自动化:Amazon CodePipeline
此模板提供以下资源:
-
与一个或多个客户指定的 Git 仓库关联。
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodePipeline具有源代码、构建、部署到暂存的管道 deploy-to-production 步骤。源步骤指向第三方 Git 存储库,构建步骤从该存储库中获取代码并生成 CloudFormation 要部署的堆栈。这些区域有: deploy-to-staging 和 deploy-to-production 步骤将 CloudFormation 堆栈部署到各自的环境中。在暂存步骤和生产构建步骤之间有一个手动审批步骤,因此,在将模型部署到生产之前,必须先获得 MPLOP 工程师批准该模型。
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodeBuild项目以使用种子代码信息填充 Git 仓库。这需要 AWS CodeStar 从您的连接Amazon账户转到 Git 仓库主机上的账户。
-
用于存储项的 Amazon S3 存储段,其中包括 CodePipeline 和 CodeBuild 工件,以及从 SageMaker 管道运行。
使用 Jenkins 使用第三方 Git 仓库进行模型构建、培训和部署的 mLOPS 模板
-
代码存储库:第三方 Git。建立 AWS CodeStar 从您的连接Amazon您的账户 GitHub 用户或组织。用钥匙添加标签
sagemaker和价值true加入此 AWS CodeStar 连接。 -
CI/CD 工作流程自动化:Jenkins
此模板提供以下资源:
-
与一个或多个客户指定的 Git 仓库关联。
-
用于生成具有源代码、构建、部署到暂存和的 Jenkins 管道的种子代码 deploy-to-production 步骤。源步骤指向客户指定的 Git 存储库。构建步骤从该存储库中获取代码并生成两个 CloudFormation 堆栈。部署步骤部署 CloudFormation 堆叠到各自的环境中。分段步骤和生产步骤之间有一个批准步骤。
-
网络 ACL 和安全组都允许 (因此可到达您的实例) 的发起 ping 的Amazon CodeBuild项目以使用种子代码信息填充 Git 仓库。这需要 AWS CodeStar 从您的连接Amazon账户转到 Git 仓库主机上的账户。
-
用于存储对象的 Amazon S3 存储段 SageMaker 项目和 SageMaker 管道。
模板在项目和源代码管理存储库之间创建关联,但是您需要执行额外的手动步骤才能在您的Amazon账户和 Jenkins。有关详细步骤,请参阅博客文章。创建 Amazon SageMaker 使用第三方源码控制和 Jenkins 的项目
这些说明可帮助您构建下图所示的体系结构,在本示例中,Github 作为源代码管理存储库。如图所示,您正在将 Git 存储库附加到项目以签入和管理代码版本。Jenkins 在检测到 Git 存储库中模型构建代码的更改时启动模型构建管道。您还要将项目连接到 Jenkins 以编排模型部署步骤,这些步骤从您批准在模型注册表中注册的模型时开始,或者 Jenkins 检测到模型部署代码的更改。
总之,这些步骤将引导您完成以下任务:
-
在你的之间建立连接Amazon和 Github 账户。
-
创建 Jenkins 帐户并导入所需的插件。
-
创建 Jenkins IAM 用户和权限策略。
-
设置AmazonJenkins 服务器上 Jenkins IAM 用户的凭证。
-
创建 API 令牌以便与 Jenkins 服务器进行通信。
-
使用 CloudFormation 用于设置的模板 EventBridge 规则以监控模型注册表中是否有新批准的模型。
-
创建 SageMaker 项目,它使用模型构建和部署代码为 Github 仓库种子。
-
使用模型构建种子代码创建 Jenkins 模型构建管道。
-
使用模型部署种子代码创建 Jenkins 模型部署管道。
更新 SageMaker 要使用第三方 Git 存储库的项目
附加到的托管策略AmazonSageMakerServiceCatalogProductsUseRole角色于 2021 年 7 月 27 日更新,以便与第三方 Git 模板一起使用。加入亚马逊的用户 SageMaker 此日期之后的 Studio 并启用项目模板使用新策略。在此日期之前加入的用户必须更新策略才能使用这些模板。使用以下选项之一更新策略:
-
删除角色并切换 Studio 设置
-
在 IAM 控制台中,删除
AmazonSageMakerServiceCatalogProductsUseRole. -
在 Studio 控制面板中,选择编辑设置.
-
切换两个设置然后选择提交.
-
-
在 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-*" ] }