本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
创建自定义 SageMaker 镜像
重要
允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义IAM策略还必须授予向这些资源添加标签的权限。需要向资源添加标签的权限,因为 Studio 和 Studio Classic 会自动标记他们创建的任何资源。如果IAM策略允许 Studio 和 Studio Classic 创建资源但不允许标记,则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息,请参阅 提供为资源添加标签 SageMaker的权限。
AWS Amazon 托管政策 SageMaker授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。
重要
截至 2023 年 11 月 30 日,之前的亚马逊 SageMaker Studio 体验现在被命名为 Amazon St SageMaker udio Classic。以下部分专门介绍如何使用 Studio Classic 应用程序。有关使用更新后的 Studio 体验的信息,请参阅亚马逊 SageMaker Studio。
本主题介绍如何使用 SageMaker 控制台或创建自定义 SageMaker 镜像 AWS CLI。
当您从控制台创建映像时, SageMaker 还会创建初始映像版本。图片版本代表亚马逊弹性容器注册表 (ECR) 中的容器
创建自定义 SageMaker 映像后,必须将其附加到您的域名或共享空间,才能将其与 Studio Classic 一起使用。有关更多信息,请参阅 附上自定义 SageMaker 图片。
从控制台创建 SageMaker 镜像
以下部分演示如何通过 SageMaker控制台创建自定义 SageMaker 镜像。
创建映像
-
打开亚马逊 SageMaker 控制台,网址为https://console.aws.amazon.com/sagemaker/
。 -
在左侧导航窗格中,选择管理员配置。
-
在管理员配置下,选择映像。
-
在自定义映像页面上,选择创建映像。
-
对于图片来源,输入 Amazon 中容器映像的注册路径ECR。路径格式如下:
acct-id
.dkr.ecr.region
.amazonaws.com/repo-name[:tag] or [@digest]
-
选择下一步。
-
在映像属性下,输入以下内容:
-
映像名称 - 该名称必须是您的账户在当前 AWS 区域中的唯一名称。
-
(可选)显示名称-Studio Classic 用户界面中显示的名称。如果未提供,则显示
Image name
。 -
(可选)描述 – 对映像的描述。
-
IAM角色-角色必须附加AmazonSageMakerFullAccess
策略。使用下拉菜单选择以下选项之一: -
创建新角色 – 指定您希望笔记本用户有权访问的任何其他 Amazon Simple Storage Service (Amazon S3) 存储桶。如果您不希望允许访问其他存储桶,请选择无。
SageMaker 将
AmazonSageMakerFullAccess
策略附加到该角色。该角色允许笔记本用户访问复选标记旁边列出的 S3 存储桶。 -
输入自定义IAM角色 ARN-输入IAM角色的 Amazon 资源名称 (ARN)。
-
使用现有角色 – 从列表中选择一个现有角色。
-
-
(可选)映像标签 – 选择添加新标签。最多可以添加 50 个标签。可以使用 Studio Classic 用户界面、 SageMaker控制台或。 SageMaker
Search
API
-
-
选择提交。
新映像将显示在自定义映像列表中,并短暂高亮显示。成功创建映像后,您可以选择映像名称查看其属性,或选择创建版本创建另一个版本。
创建另一个映像版本
-
在映像所在行选择创建版本。
-
对于图片来源,输入 Amazon ECR 容器镜像的注册路径。容器镜像不应与先前版本的镜像中使用的 SageMaker 镜像相同。
从中创建 SageMaker 图像 AWS CLI
要使用容器 SageMaker 映像创建镜像,请执行以下步骤 AWS CLI。
创建
Image
。创建
ImageVersion
。创建配置文件。
创建
AppImageConfig
。
创建 SageMaker 图像实体
-
创建 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" }
-
根据容器 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" }
-
检查映像版本是否创建成功。
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
。 -
创建一个名为
app-image-config-input.json
的配置文件。的Name
值KernelSpecs
必须与与此关联的图像中 kernelSpec 可用的名称相匹配AppImageConfig
。此值区分大小写。你可以通过jupyter-kernelspec list
从容器内的 shell 运行来 kernelSpecs 在镜像中找到可用的内容。MountPath
是镜像中挂载您的亚马逊 Elastic File System(亚马逊EFS)主目录的路径。它必须与您在容器内使用的路径不同,因为在挂载 Amazon EFS 主目录时,该路径将被覆盖。注意
以下
DefaultUID
和DefaultGID
组合是唯一可接受的值:默认值UID:1000,默认值GID:100
默认值UID:0,默认值GID:0
{ "AppImageConfigName": "custom-image-config", "KernelGatewayImageConfig": { "KernelSpecs": [ { "Name": "python3", "DisplayName": "Python 3 (ipykernel)" } ], "FileSystemConfig": { "MountPath": "/home/sagemaker-user", "DefaultUid": 1000, "DefaultGid": 100 } } }
-
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" }