创建自定义 SageMaker 映像
本主题介绍如何使用 SageMaker 控制台或 Amazon CLI 创建自定义 SageMaker 映像。
从控制台创建映像时,SageMaker 也会创建一个初始映像版本。映像版本代表 Amazon Elastic Container Registry (ECR)
创建自定义 SageMaker 映像后,必须将其附加到域或共享空间,才能在 Studio 中使用。有关更多信息,请参阅 附加自定义 SageMaker 映像。
从控制台创建 SageMaker 映像
以下部分演示如何从 SageMaker 控制台创建自定义 SageMaker 映像。
创建映像
-
通过 https://console.aws.amazon.com/sagemaker/
打开 Amazon SageMaker 控制台。 -
在左侧导航窗格中,选择管理员配置。
-
在管理员配置下,选择映像。
-
在自定义映像页面上,选择创建映像。
-
对于映像源,请输入 Amazon ECR 中容器映像的注册表路径。路径格式如下:
acct-id
.dkr.ecr.region
.amazonaws.com/repo-name[:tag] or [@digest]
-
选择下一步。
-
在映像属性下,输入以下内容:
-
映像名称 - 该名称必须是您的账户在当前 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 搜索标签。
-
-
选择提交。
新映像将显示在自定义映像列表中,并短暂高亮显示。成功创建映像后,您可以选择映像名称来查看其属性,或选择创建版本来创建另一个版本。
创建另一个映像版本
-
在映像所在行选择创建版本。
-
对于映像源,请输入 Amazon ECR 容器映像的注册表路径。容器映像不应该与以前版本的 SageMaker 映像中使用的映像相同。
从 Amazon CLI 创建 SageMaker 映像
您可以执行以下步骤,使用 Amazon CLI 从容器映像创建 SageMaker 映像。
创建
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
的配置文件。KernelSpecs
的Name
值必须与此AppImageConfig
关联的映像中可用的 kernelSpec 名称相匹配。此值区分大小写。您可以通过在容器内从 Shell 运行jupyter-kernelspec list
来查找映像中可用的 kernelSpec。MountPath
是映像中挂载 Amazon Elastic File System (Amazon EFS) 主目录的路径。该路径必须与容器内使用的路径不同,因为在挂载 Amazon EFS 主目录时,该路径将被覆盖。注意
以下
DefaultUID
和DefaultGID
组合是唯一可接受的值: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 } } }
-
使用上一步创建的文件创建 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" }