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

创建自定义 SageMaker 映像

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

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

创建自定义 SageMaker 映像后,必须将其附加到域或共享空间,才能在 Studio 中使用。有关更多信息,请参阅 附加自定义 SageMaker 映像

从控制台创建 SageMaker 映像

以下部分演示如何从 SageMaker 控制台创建自定义 SageMaker 映像。

创建映像
  1. 通过 https://console.aws.amazon.com/sagemaker/ 打开 Amazon 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 用户界面中显示的名称。如果未提供,则显示 Image name

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

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

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

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

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

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

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

  8. 选择提交

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

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

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

从 Amazon CLI 创建 SageMaker 映像

您可以执行以下步骤,使用 Amazon CLI 从容器映像创建 SageMaker 映像。

  • 创建 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" }