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

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

使用 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 存储库

  • SageMaker 映像

  • 一个 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 检测到模型部署代码的更改。

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

  1. 在你的之间建立连接Amazon和 Github 账户。

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

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

  4. 设置AmazonJenkins 服务器上 Jenkins IAM 用户的凭证。

  5. 创建 API 令牌以便与 Jenkins 服务器进行通信。

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

  7. 创建 SageMaker 项目,它使用模型构建和部署代码为 Github 仓库种子。

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

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

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

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

  • 删除角色并切换 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-*" ] }