创建自定义项目模板 - 亚马逊 SageMaker AI

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

创建自定义项目模板

重要

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

如果 SageMaker AI 提供的模板不能满足您的需求(例如,您想在多个阶段或自定义批准步骤中 CodePipeline 进行更复杂的编排),请创建自己的模板。

我们建议首先使用 SageMaker AI 提供的模板来了解如何组织代码和资源,并在此基础上进行构建。为此,在启用管理员对 SageMaker AI 模板的访问权限后,请登录,选择 Portf https://console.aws.amazon.com/servicecatalog/olio s,然后选择已导入。有关 Service Catalog 的信息,请参阅《Service Catalog 用户指南》中的 Service Catalog 概述

创建您自己的项目模板来自定义您的 MLOps 项目。 SageMaker AI 项目模板是服务目录预配置的产品,用于为您的项目配置资源。 MLOps

要创建自定义项目模板,请完成以下步骤。

  1. 创建产品组合。有关信息,请参阅步骤 3:创建 Service Catalog 产品组合

  2. 创建产品。产品就是 CloudFormation 模板。您可以创建多个版本的产品。有关信息,请参阅步骤 4:创建 Service Catalog 产品

    要使产品与 Pro SageMaker jects 配合使用,请在产品模板中添加以下参数。

    SageMakerProjectName: Type: String Description: Name of the project SageMakerProjectId: Type: String Description: Service generated Id of the project.
    重要

    我们建议您将 CodeCommit 存储库打包到 SageMaker AI 代码存储库中,这样项目的存储库才能在 VPC 模式下可见。示例模板和所需的附加内容如以下代码示例所示。

    原始(示例)模板:

    ModelBuildCodeCommitRepository: Type: AWS::CodeCommit::Repository Properties: # Max allowed length: 100 chars RepositoryName: !Sub sagemaker-${SageMakerProjectName}-${SageMakerProjectId}-modelbuild # max: 10+33+15+10=68 RepositoryDescription: !Sub SageMaker Model building workflow infrastructure as code for the Project ${SageMakerProjectName} Code: S3: Bucket: SEEDCODE_BUCKETNAME Key: toolchain/model-building-workflow-v1.0.zip BranchName: main

    要在 VPC 模式下添加的附加内容:

    SageMakerRepository: Type: AWS::SageMaker::CodeRepository Properties: GitConfig: RepositoryUrl: !GetAtt ModelBuildCodeCommitRepository.CloneUrlHttp Branch: main
  3. 添加启动约束。启动约束指定 IAM 角色,用户启动产品时 Service Catalog 将代入此角色。有关信息,请参阅步骤 6:添加启动约束以分配 IAM 角色

  4. 开启产品https://console.aws.amazon.com/servicecatalog/以测试模板。如果对模板满意,请继续下一步,在 Studio(或 Studio Classic)中启用模板。

  5. 授予您的 Studio(或 Studio Classic)执行角色访问步骤 1 中创建的服务目录组合的权限。使用域执行角色或具有 Studio(或 Studio Classic)访问权限的用户角色。有关向产品组合添加角色的信息,请参阅步骤 7:向最终用户授予产品组合的访问权限

  6. 要在 Studio(或 Studio Classic)的组织模板列表中使用项目模板,请为步骤 2 中创建的服务目录产品创建一个具有以下键和值的标记。

    • sagemaker:studio-visibility

    • true

完成这些步骤后,您组织中的 Studio(或 Studio Classic)用户就可以使用您创建的模板创建项目,方法是按照 使用 Amazon SageMaker Studio 或 Studio 经典版创建 MLOps 项目 中的步骤操作,并在选择模板时选择组织模板

使用 Amazon S3 存储桶中的模板

您也可以使用存储在 Amazon S3 中的模板创建 SageMaker 项目。

注意

虽然您可以使用中的模板AWS Service Catalog,但我们建议您将模板存储在 S3 存储桶中,并使用这些模板创建项目。

管理员设置

在使用 S3 存储桶中的模板创建项目之前,请执行以下步骤。

  1. 创建 S3 存储桶,并将您的模板上传到该存储桶。

  2. 在您的 S3 存储桶上设置 CORS 策略以配置访问权限

  3. 将以下键值标签添加到模板中,以便 AI 可以看到它们。 SageMaker

    sagemaker:studio-visibility : true
  4. 创建域

  5. SageMaker AI 完成您的域名创建后,向该域添加以下键值标签:

    sagemaker:projectS3TemplatesLocation : s3://<amzn-s3-demo-bucket>

然后使用AWS控制台、Python 或CreateProjectUpdateProjectAPI 操作从 S3 存储桶内的模板创建或更新 SageMaker 项目。

Studio

创建项目

  1. 打开 Amazon A SageMaker I 控制台,网址为https://console.aws.amazon.com/sagemaker/

  2. 按照启动 Amazon SageMaker Studio 中的说明打开 SageMaker Studio 控制台。

  3. 在左侧导航窗格中,选择 “部署”、“项目”、“创建项目”。

  4. 选择 “组织模板”,然后选择 “S3 模板”,查看可供您使用的模板。如果您没有看到预期的模板,请通知您的管理员。

  5. 选择要使用的模板,然后选择 “下一步”。

  6. 输入项目名称、可选描述和其他必填字段。完成后,选择创建

更新项目

  1. 打开 Amazon A SageMaker I 控制台,网址为https://console.aws.amazon.com/sagemaker/

  2. 按照启动 Amazon SageMaker Studio 中的说明打开 SageMaker Studio 控制台。

  3. 选择要更新的项目。选择 “操作”,然后选择 “更新项目”。

  4. 更新项目时,您可以更新模板参数或模板 URL。完成此操作后,选择下一步

  5. 查看汇总表中的项目更新,然后选择更新

Python Boto3

创建 S3 存储桶并上传模板后,您可以使用以下示例创建 SageMaker 项目。

sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') response = sagemaker_client.create_project( ProjectName='my-custom-project', ProjectDescription='SageMaker project with custom CFN template stored in S3', TemplateProviders=[{ 'CfnTemplateProvider': { 'TemplateName': 'CustomProjectTemplate', 'TemplateURL': f'https://<bucket_name>.s3.us-west-2.amazonaws.com/custom-project-template.yml', 'Parameters': [ {'Key': 'ParameterKey', 'Value': 'ParameterValue'} ] } }] ) print(f"Project ARN: {response['ProjectArn']}")

要更新 SageMaker 项目,请参阅以下示例。

sagemaker_client = boto3.client('sagemaker', region_name='us-west-2') response = sagemaker_client.update_project( ProjectName='my-custom-project', ProjectDescription='SageMaker project with custom CFN template stored in S3', TemplateProvidersToUpdate=[{ 'CfnTemplateProvider': { 'TemplateName': 'CustomProjectTemplate', 'TemplateURL': f'https://<bucket_name>.s3.us-west-2.amazonaws.com/custom-project-template.yml', 'Parameters': [ {'Key': 'ParameterKey', 'Value': 'ParameterValue'} ] } }] ) print(f"Project ARN: {response['ProjectArn']}")