附加自定义 SageMaker 映像
要使用自定义 SageMaker 映像,必须将映像的一个版本附加到您的域或共享空间。当您附加一个映像版本时,该版本将出现在 SageMaker Studio 启动程序中,并在选择映像下拉列表中可用,用户可以使用该列表启动活动或更改笔记本使用的映像。
要使自定义 SageMaker 映像可供域中的所有用户使用,需要将该映像附加到域。要使一个映像可供共享空间中的所有用户使用,可以将该映像附加到共享空间。要使一个映像可供单个用户使用,需要将该映像附加到该用户的配置文件中。当您附加映像时,SageMaker 默认使用最新的映像版本。您也可以附加特定的映像版本。在附加了版本之后,您可以在启动笔记本时从 SageMaker 启动程序或映像选择器中选择版本。
在任何给定时间可以附加的映像版本的数量是有限的。达到限制后,必须分离一个版本才能附加映像的另一个版本。
以下各部分演示如何使用 SageMaker 控制台或 Amazon CLI 将自定义 SageMaker 映像附加到域。您只能使用 Amazon CLI 将自定义映像附加到共享空间。
将 SageMaker 映像附加到域
使用控制台附加 SageMaker 映像
本主题介绍如何使用 SageMaker 控制面板将现有的自定义 SageMaker 映像版本附加到域。您还可以创建自定义 SageMaker 映像和映像版本,然后将该版本附加到您的域。有关创建映像和映像版本的过程,请参阅创建自定义 SageMaker 映像。
附加现有映像
-
通过 https://console.aws.amazon.com/sagemaker/
打开 Amazon SageMaker 控制台。 -
在左侧导航窗格中,选择管理员配置。
-
在管理员配置下,选择域。
-
在域页面上,选择要将映像附加到的域。
-
在域详细信息页面上,选择环境选项卡。
-
在环境选项卡上,在附加到域的自定义 SageMaker Studio 映像下,选择附加映像。
-
对于映像源,选择现有映像。
-
从列表中选择现有映像。
-
从列表中选择映像的版本。
-
选择下一步。
-
验证映像名称、映像显示名称和描述的值。
-
选择 IAM 角色。有关更多信息,请参阅 创建自定义 SageMaker 映像。
-
(可选)为映像添加标签。
-
指定 EFS 挂载路径。这是映像中挂载用户的 Amazon Elastic File System (EFS) 主目录的路径。
-
对于映像类型,选择 SageMaker Studio 映像
-
对于内核名称中,输入映像中现有内核的名称。有关如何从映像中获取内核信息的信息,请参阅 SageMaker Studio 自定义映像示例存储库中的 DEVELOPMENT
。有关更多信息,请参阅 自定义 SageMaker 映像规范 的内核发现和用户数据部分。 -
(可选)对于内核显示名称,输入内核的显示名称。
-
选择添加内核。
-
选择提交。
等待映像版本附加到域。附加后,该版本将显示在自定义映像列表中,并短暂高亮显示。
使用 Amazon CLI 附加 SageMaker 映像
以下各部分演示如何在创建新域或更新现有域时使用 Amazon CLI 附加自定义 SageMaker 映像。
将 SageMaker 映像附加到新域
以下部分演示如何创建附有版本的新域。这些步骤要求您指定创建域所需的 Amazon Virtual Private Cloud (VPC) 信息和执行角色。可以执行以下步骤来创建域并附加自定义 SageMaker 映像:
获取默认 VPC ID 和子网 ID。
为域创建配置文件,该文件指定映像。
使用配置文件创建域。
将自定义 SageMaker 映像添加到域
-
获取默认 VPC ID。
aws ec2 describe-vpcs \ --filters Name=isDefault,Values=true \ --query "Vpcs[0].VpcId" --output text
响应内容应该类似于以下内容。
vpc-xxxxxxxx
-
使用上一步中的 VPC ID 获取默认子网 ID。
aws ec2 describe-subnets \ --filters Name=vpc-id,Values=
<vpc-id>
\ --query "Subnets[*].SubnetId" --output json响应内容应该类似于以下内容。
[ "subnet-b55171dd", "subnet-8a5f99c6", "subnet-e88d1392" ]
-
创建一个名为
create-domain-input.json
的配置文件。插入前面步骤中的 VPC ID、子网 ID、ImageName
和AppImageConfigName
。因为没有指定ImageVersionNumber
,所以使用映像的最新版本,这是本例中唯一的版本。{ "DomainName": "domain-with-custom-image", "VpcId": "
<vpc-id>
", "SubnetIds": [ "<subnet-ids>
" ], "DefaultUserSettings": { "ExecutionRole": "<execution-role>
", "KernelGatewayAppSettings": { "CustomImages": [ { "ImageName": "custom-image", "AppImageConfigName": "custom-image-config" } ] } }, "AuthMode": "IAM" } -
使用附加的自定义 SageMaker 映像创建域。
aws sagemaker create-domain \ --cli-input-json file://create-domain-input.json
响应内容应该类似于以下内容。
{ "DomainArn": "arn:aws:sagemaker:us-east-2:acct-id:domain/d-xxxxxxxxxxxx", "Url": "https://d-xxxxxxxxxxxx.studio.us-east-2.sagemaker.aws/..." }
将 SageMaker 映像附加到当前域
如果您已加入 SageMaker 域,则可以将自定义映像附加到当前域。有关加入 SageMaker 域的更多信息,请参阅 加入 Amazon SageMaker 域。将自定义映像附加到当前域时,无需指定 VPC 信息和执行角色。附加版本后,必须删除域中的所有应用程序并重新打开 Studio。有关删除应用程序的信息,请参阅 删除 Amazon SageMaker 域。
可以执行以下步骤将 SageMaker 映像添加到当前域中。
从 SageMaker 控制面板中获取
DomainID
。使用
DomainID
获取域的DefaultUserSettings
。将
ImageName
和AppImageConfig
作为CustomImage
添加到DefaultUserSettings
。更新域以包含自定义映像。
将自定义 SageMaker 映像添加到域
-
通过 https://console.aws.amazon.com/sagemaker/
打开 Amazon SageMaker 控制台。 -
在左侧导航窗格中,选择管理员配置。
-
在管理员配置下,选择域。
-
在域页面上,选择要将映像附加到的域。
-
在域详细信息页面上,选择域设置选项卡。
-
在域设置选项卡的常规设置下,找到
DomainId
。ID 的格式如下:d-xxxxxxxxxxxx
。 -
使用域 ID 获取域的描述。
aws sagemaker describe-domain \ --domain-id
<d-xxxxxxxxxxxx>
响应内容应该类似于以下内容。
{ "DomainId": "d-xxxxxxxxxxxx", "DefaultUserSettings": { "KernelGatewayAppSettings": { "CustomImages": [ ], ... } } }
-
将响应的默认用户设置部分保存到名为
default-user-settings.json
的文件中。 -
插入前面步骤中的
ImageName
和AppImageConfigName
作为自定义映像。因为没有指定ImageVersionNumber
,所以使用映像的最新版本,这是本例中唯一的版本。{ "DefaultUserSettings": { "KernelGatewayAppSettings": { "CustomImages": [ { "ImageName": "string", "AppImageConfigName": "string" } ], ... } } }
-
使用域 ID 和默认用户设置文件更新域。
aws sagemaker update-domain \ --domain-id
<d-xxxxxxxxxxxx>
\ --cli-input-json file://default-user-settings.json响应内容应该类似于以下内容。
{ "DomainArn": "arn:aws:sagemaker:us-east-2:acct-id:domain/d-xxxxxxxxxxxx" }
将 SageMaker 映像附加到共享空间
您只能使用 Amazon CLI 将 SageMaker 映像附加到共享空间。附加版本后,必须删除共享空间中的所有应用程序并重新打开 Studio。有关删除应用程序的信息,请参阅 删除 Amazon SageMaker 域。
可以执行以下步骤将 SageMaker 映像添加到共享空间。
从 SageMaker 控制面板中获取
DomainID
。使用
DomainID
获取域的DefaultSpaceSettings
。将
ImageName
和AppImageConfig
作为CustomImage
添加到DefaultSpaceSettings
。更新域以包含共享空间的自定义映像。
将自定义 SageMaker 映像添加到共享空间
-
通过 https://console.aws.amazon.com/sagemaker/
打开 Amazon SageMaker 控制台。 -
在左侧导航窗格中,选择管理员配置。
-
在管理员配置下,选择域。
-
在域页面上,选择要将映像附加到的域。
-
在域详细信息页面上,选择域设置选项卡。
-
在域设置选项卡的常规设置下,找到
DomainId
。ID 的格式如下:d-xxxxxxxxxxxx
。 -
使用域 ID 获取域的描述。
aws sagemaker describe-domain \ --domain-id
<d-xxxxxxxxxxxx>
响应内容应该类似于以下内容。
{ "DomainId": "d-xxxxxxxxxxxx", ... "DefaultSpaceSettings": { "KernelGatewayAppSettings": { "CustomImages": [ ], ... } } }
-
将响应的默认空间设置部分保存到名为
default-space-settings.json
的文件中。 -
插入前面步骤中的
ImageName
和AppImageConfigName
作为自定义映像。因为没有指定ImageVersionNumber
,所以使用映像的最新版本,这是本例中唯一的版本。{ "DefaultSpaceSettings": { "KernelGatewayAppSettings": { "CustomImages": [ { "ImageName": "string", "AppImageConfigName": "string" } ], ... } } }
-
使用域 ID 和默认空间设置文件更新您的域。
aws sagemaker update-domain \ --domain-id
<d-xxxxxxxxxxxx>
\ --cli-input-json file://default-space-settings.json响应内容应该类似于以下内容。
{ "DomainArn": "arn:aws:sagemaker:us-east-2:acct-id:domain/d-xxxxxxxxxxxx" }
在 SageMaker 中查看附加的映像
创建自定义 SageMaker 映像并将其附加到域后,该映像就会出现在域的环境选项卡中。您只能通过 Amazon CLI 使用以下命令查看共享空间的附加映像。
aws sagemaker describe-domain \ --domain-id
<d-xxxxxxxxxxxx>