创建自定义 SageMaker 镜像 - Amazon SageMaker
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

创建自定义 SageMaker 镜像

重要

允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。需要向资源添加标签的权限,因为 Studio 和 Studio Classic 会自动标记他们创建的任何资源。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记,则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息,请参阅 提供为资源添加标签 SageMaker的权限

Amazon 适用于亚马逊的托管政策 SageMaker授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。

重要

截至 2023 年 11 月 30 日,之前的亚马逊 SageMaker Studio 体验现在被命名为 Amazon St SageMaker udio Classic。以下部分专门介绍如何使用 Studio Classic 应用程序。有关使用更新后的 Studio 体验的信息,请参阅亚马逊 SageMaker Studio

本主题介绍如何使用 SageMaker 控制台或创建自定义 SageMaker 镜像 Amazon CLI。

当您从控制台创建映像时, SageMaker 还会创建初始映像版本。映像版本代表 Amazon Elastic Container Registry (ECR) 中的容器映像。容器图片必须满足要求才能在 Amazon SageMaker Studio Classic 中使用。有关更多信息,请参阅 自定义 SageMaker 图像规格。有关在本地测试图像和解决常见问题的信息,请参阅 SageMaker Studio Classic 自定义图像样本存储库

创建自定义 SageMaker 映像后,必须将其附加到您的域名或共享空间,才能将其与 Studio Classic 一起使用。有关更多信息,请参阅 附上自定义 SageMaker 图片

从控制台创建 SageMaker 镜像

以下部分演示如何通过 SageMaker控制台创建自定义 SageMaker 镜像。

创建映像
  1. 打开亚马逊 SageMaker 控制台,网址为 https://console.aws.amazon.com/sagemaker/

  2. 在左侧导航窗格中,选择管理员配置

  3. 管理员配置下,选择映像

  4. 自定义映像页面上,选择创建映像

  5. 对于映像源,请输入 Amazon ECR 中容器映像的注册表路径。路径格式如下:

    acct-id.dkr.ecr.region.amazonaws.com/repo-name[:tag] or [@digest]

  6. 选择下一步

  7. 映像属性下,输入以下内容:

    • 映像名称 - 该名称必须是您的账户在当前 Amazon Web Services 区域中的唯一名称。

    • (可选)显示名称-Studio Classic 用户界面中显示的名称。如果未提供,则显示 Image name

    • (可选)描述 – 对映像的描述。

    • IAM 角色-该角色必须附加AmazonSageMakerFull访问策略。使用下拉菜单选择以下选项之一:

      • 创建新角色 – 指定您希望笔记本用户有权访问的任何其他 Amazon Simple Storage Service (Amazon S3) 存储桶。如果您不希望允许访问其他存储桶,请选择

        SageMaker 将AmazonSageMakerFullAccess策略附加到该角色。该角色允许笔记本用户访问复选标记旁边列出的 S3 存储桶。

      • 输入自定义 IAM 角色 ARN - 输入 IAM 角色的 Amazon 资源名称 (ARN)。

      • 使用现有角色 – 从列表中选择一个现有角色。

    • (可选)映像标签 – 选择添加新标签。最多可以添加 50 个标签。可以使用 Studio Classic 用户界面、 SageMaker控制台或 SageMaker Search API 搜索标签。

  8. 选择提交

新映像将显示在自定义映像列表中,并短暂高亮显示。成功创建映像后,您可以选择映像名称查看其属性,或选择创建版本创建另一个版本。

创建另一个映像版本
  1. 在映像所在行选择创建版本

  2. 对于映像源,请输入 Amazon ECR 容器映像的注册表路径。容器镜像不应与先前版本的镜像中使用的 SageMaker 镜像相同。

从中创建 SageMaker 图像 Amazon CLI

要使用容器 SageMaker 映像创建镜像,请执行以下步骤 Amazon CLI。

  • 创建Image

  • 创建ImageVersion

  • 创建配置文件。

  • 创建AppImageConfig

创建 SageMaker 图像实体
  1. 创建 SageMaker 镜像。

    aws sagemaker create-image \ --image-name custom-image \ --role-arn arn:aws:iam::<acct-id>:role/service-role/<execution-role>

    响应内容应该类似于以下内容。

    { "ImageArn": "arn:aws:sagemaker:us-east-2:acct-id:image/custom-image" }
  2. 根据容器 SageMaker 镜像创建镜像版本。

    aws sagemaker create-image-version \ --image-name custom-image \ --base-image <acct-id>.dkr.ecr.<region>.amazonaws.com/smstudio-custom:custom-image

    响应内容应该类似于以下内容。

    { "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/custom-image/1" }
  3. 检查映像版本是否创建成功。

    aws sagemaker describe-image-version \ --image-name custom-image \ --version-number 1

    响应内容应该类似于以下内容。

    { "ImageVersionArn": "arn:aws:sagemaker:us-east-2:acct-id:image-version/custom-image/1", "ImageVersionStatus": "CREATED" }
    注意

    如果响应为 "ImageVersionStatus": "CREATED_FAILED",则响应还包括失败原因。权限问题是导致失败的常见原因。如果您在启动或运行自定义图像的 KernelGateway 应用程序时遇到故障,也可以查看您的 Amazon CloudWatch 日志。日志组的名称为 /aws/sagemaker/studio。日志流的名称为 $domainID/$userProfileName/KernelGateway/$appName

  4. 创建一个名为 app-image-config-input.json 的配置文件。KernelSpecsName 值必须与此 AppImageConfig 关联的映像中可用的 kernelSpec 名称相匹配。此值区分大小写。您可以通过在容器内从 Shell 运行 jupyter-kernelspec list 来查找映像中可用的 kernelSpec。MountPath 是映像中挂载 Amazon Elastic File System (Amazon EFS) 主目录的路径。该路径必须与容器内使用的路径不同,因为在挂载 Amazon EFS 主目录时,该路径将被覆盖。

    注意

    以下 DefaultUIDDefaultGID 组合是唯一可接受的值:

    • DefaultUID: 1000 和 DefaultGID: 100

    • DefaultUID: 0 和 DefaultGID: 0

    { "AppImageConfigName": "custom-image-config", "KernelGatewayImageConfig": { "KernelSpecs": [ { "Name": "python3", "DisplayName": "Python 3 (ipykernel)" } ], "FileSystemConfig": { "MountPath": "/home/sagemaker-user", "DefaultUid": 1000, "DefaultGid": 100 } } }
  5. AppImageConfig 使用在上一步中创建的文件创建。

    aws sagemaker create-app-image-config \ --cli-input-json file://app-image-config-input.json

    响应内容应该类似于以下内容。

    { "AppImageConfigArn": "arn:aws:sagemaker:us-east-2:acct-id:app-image-config/custom-image-config" }