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

附加自定义 SageMaker 映像

要使用自定义 SageMaker 映像,必须将映像的一个版本附加到您的域或共享空间。当您附加一个映像版本时,该版本将出现在 SageMaker Studio 启动程序中,并在选择映像下拉列表中可用,用户可以使用该列表启动活动或更改笔记本使用的映像。

要使自定义 SageMaker 映像可供域中的所有用户使用,需要将该映像附加到域。要使一个映像可供共享空间中的所有用户使用,可以将该映像附加到共享空间。要使一个映像可供单个用户使用,需要将该映像附加到该用户的配置文件中。当您附加映像时,SageMaker 默认使用最新的映像版本。您也可以附加特定的映像版本。在附加了版本之后,您可以在启动笔记本时从 SageMaker 启动程序或映像选择器中选择版本。

在任何给定时间可以附加的映像版本的数量是有限的。达到限制后,必须分离一个版本才能附加映像的另一个版本。

以下各部分演示如何使用 SageMaker 控制台或 Amazon CLI 将自定义 SageMaker 映像附加到域。您只能使用 Amazon CLI 将自定义映像附加到共享空间。

将 SageMaker 映像附加到域

使用控制台附加 SageMaker 映像

本主题介绍如何使用 SageMaker 控制面板将现有的自定义 SageMaker 映像版本附加到域。您还可以创建自定义 SageMaker 映像和映像版本,然后将该版本附加到您的域。有关创建映像和映像版本的过程,请参阅创建自定义 SageMaker 映像

附加现有映像
  1. 通过 https://console.aws.amazon.com/sagemaker/ 打开 Amazon SageMaker 控制台。

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

  3. 管理员配置下,选择

  4. 页面上,选择要将映像附加到的域。

  5. 域详细信息页面上,选择环境选项卡。

  6. 环境选项卡上,在附加到域的自定义 SageMaker Studio 映像下,选择附加映像

  7. 对于映像源,选择现有映像

  8. 从列表中选择现有映像。

  9. 从列表中选择映像的版本。

  10. 选择下一步

  11. 验证映像名称映像显示名称描述的值。

  12. 选择 IAM 角色。有关更多信息,请参阅 创建自定义 SageMaker 映像

  13. (可选)为映像添加标签。

  14. 指定 EFS 挂载路径。这是映像中挂载用户的 Amazon Elastic File System (EFS) 主目录的路径。

  15. 对于映像类型,选择 SageMaker Studio 映像

  16. 对于内核名称中,输入映像中现有内核的名称。有关如何从映像中获取内核信息的信息,请参阅 SageMaker Studio 自定义映像示例存储库中的 DEVELOPMENT。有关更多信息,请参阅 自定义 SageMaker 映像规范内核发现用户数据部分。

  17. (可选)对于内核显示名称,输入内核的显示名称。

  18. 选择添加内核

  19. 选择提交

    1. 等待映像版本附加到域。附加后,该版本将显示在自定义映像列表中,并短暂高亮显示。

使用 Amazon CLI 附加 SageMaker 映像

以下各部分演示如何在创建新域或更新现有域时使用 Amazon CLI 附加自定义 SageMaker 映像。

将 SageMaker 映像附加到新域

以下部分演示如何创建附有版本的新域。这些步骤要求您指定创建域所需的 Amazon Virtual Private Cloud (VPC) 信息和执行角色。可以执行以下步骤来创建域并附加自定义 SageMaker 映像:

  • 获取默认 VPC ID 和子网 ID。

  • 为域创建配置文件,该文件指定映像。

  • 使用配置文件创建域。

将自定义 SageMaker 映像添加到域
  1. 获取默认 VPC ID。

    aws ec2 describe-vpcs \ --filters Name=isDefault,Values=true \ --query "Vpcs[0].VpcId" --output text

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

    vpc-xxxxxxxx
  2. 使用上一步中的 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" ]
  3. 创建一个名为 create-domain-input.json 的配置文件。插入前面步骤中的 VPC ID、子网 ID、ImageNameAppImageConfigName。因为没有指定 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" }
  4. 使用附加的自定义 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

  • ImageNameAppImageConfig 作为 CustomImage 添加到 DefaultUserSettings

  • 更新域以包含自定义映像。

将自定义 SageMaker 映像添加到域
  1. 通过 https://console.aws.amazon.com/sagemaker/ 打开 Amazon SageMaker 控制台。

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

  3. 管理员配置下,选择

  4. 页面上,选择要将映像附加到的域。

  5. 域详细信息页面上,选择域设置选项卡。

  6. 域设置选项卡的常规设置下,找到 DomainId。ID 的格式如下:d-xxxxxxxxxxxx

  7. 使用域 ID 获取域的描述。

    aws sagemaker describe-domain \ --domain-id <d-xxxxxxxxxxxx>

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

    { "DomainId": "d-xxxxxxxxxxxx", "DefaultUserSettings": { "KernelGatewayAppSettings": { "CustomImages": [ ], ... } } }
  8. 将响应的默认用户设置部分保存到名为 default-user-settings.json 的文件中。

  9. 插入前面步骤中的 ImageNameAppImageConfigName 作为自定义映像。因为没有指定 ImageVersionNumber,所以使用映像的最新版本,这是本例中唯一的版本。

    { "DefaultUserSettings": { "KernelGatewayAppSettings": { "CustomImages": [ { "ImageName": "string", "AppImageConfigName": "string" } ], ... } } }
  10. 使用域 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

  • ImageNameAppImageConfig 作为 CustomImage 添加到 DefaultSpaceSettings

  • 更新域以包含共享空间的自定义映像。

将自定义 SageMaker 映像添加到共享空间
  1. 通过 https://console.aws.amazon.com/sagemaker/ 打开 Amazon SageMaker 控制台。

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

  3. 管理员配置下,选择

  4. 页面上,选择要将映像附加到的域。

  5. 域详细信息页面上,选择域设置选项卡。

  6. 域设置选项卡的常规设置下,找到 DomainId。ID 的格式如下:d-xxxxxxxxxxxx

  7. 使用域 ID 获取域的描述。

    aws sagemaker describe-domain \ --domain-id <d-xxxxxxxxxxxx>

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

    { "DomainId": "d-xxxxxxxxxxxx", ... "DefaultSpaceSettings": { "KernelGatewayAppSettings": { "CustomImages": [ ], ... } } }
  8. 将响应的默认空间设置部分保存到名为 default-space-settings.json 的文件中。

  9. 插入前面步骤中的 ImageNameAppImageConfigName 作为自定义映像。因为没有指定 ImageVersionNumber,所以使用映像的最新版本,这是本例中唯一的版本。

    { "DefaultSpaceSettings": { "KernelGatewayAppSettings": { "CustomImages": [ { "ImageName": "string", "AppImageConfigName": "string" } ], ... } } }
  10. 使用域 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>