附上自定义 SageMaker 图片 - Amazon SageMaker

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

附上自定义 SageMaker 图片

重要

允许 Amazon SageMaker Studio 或 Amazon SageMaker Studio Classic 创建亚马逊 SageMaker资源的自定义 IAM 策略还必须授予向这些资源添加标签的权限。需要向资源添加标签的权限,因为 Studio 和 Studio Classic 会自动标记他们创建的任何资源。如果 IAM 策略允许 Studio 和 Studio Classic 创建资源但不允许标记,则在尝试创建资源时可能会出现 AccessDenied “” 错误。有关更多信息,请参阅 提供标记 SageMaker资源的权限

AWS Amazon 托管政策 SageMaker授予创建 SageMaker 资源的权限已经包括在创建这些资源时添加标签的权限。

本指南介绍如何使用 SageMaker控制台或 AWS Command Line Interface (AWS CLI) 将自定义 RStudio 映像附加到您的 Amazon SageMaker 域名。

要使用自定义 SageMaker 镜像,您必须将自定义 RStudio 镜像附加到您的网域。附加映像版本时,它会显示在 RStudio Launcher 中,并可以在选择映像下拉列表中找到。您可以使用下拉列表更改 RStudio 所用的映像。

可以附加的映像版本数量是有限的。达到限制后,必须先分离一个版本才能附加映像的另一个版本。

使用控制台将图像版本附加到您的网域

您可以使用控制台的 SageMaker 控制面板将自定义 SageMaker 图像版本附加到您的域中。您也可以创建自定义 SageMaker 映像和图像版本,然后将该版本附加到您的域中。

附加现有映像
  1. 打开亚马逊 SageMaker 控制台,网址为 https://console.aws.amazon.com/sagemaker/

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

  3. 管理员配置下,选择

  4. 选择所需的域。

  5. 选择环境

  6. 附加到域名的自定义 SageMaker Studio Classic 图像下,选择附加图片

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

    如果您选择 “现有图片”,请从 Amazon SageMaker 图片库中选择一张图片。

    如果选择新映像,请提供 Docker 映像的 Amazon ECR 注册表路径。路径必须与域 AWS 区域 相同。Amazon ECR 存储库必须与您的域名位于同一个账户中,或者 SageMaker 必须启用跨账户权限。

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

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

  10. 选择下一步

  11. 输入映像名称映像显示名称描述的值。

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

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

  14. (可选)选择添加新标签,然后添加配置标签。

  15. 对于映像类型,选择 RStudio 映像

  16. 选择提交

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

使用将现有图像版本附加到您的网域 AWS CLI

提供了两种使用将图像版本附加到您的域名的方法 AWS CLI。在第一种方法中,您创建一个附加版本的新域。此方法更简单,但您必须指定创建域所需的亚马逊虚拟私有云(Amazon VPC)信息和执行角色。

如果您已经加入域名,则可以使用第二种方法将图像版本附加到当前域中。在这种情况下,您无需指定 Amazon VPC 信息和执行角色。附加版本后,删除您域中的所有应用程序并重新启动 RStudio。

将 SageMaker 图像附加到新域名

要使用此方法,必须指定附加了AmazonSageMakerFullAccess策略的执行角色。

使用以下步骤创建域并附加自定义 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-r-image", "VpcId": "<vpc-id>", "SubnetIds": [ "<subnet-ids>" ], "DomainSettings": { "RStudioServerProDomainSettings": { "DomainExecutionRoleArn": "<execution-role>" } }, "DefaultUserSettings": { "ExecutionRole": "<execution-role>", "RSessionAppSettings": { "CustomImages": [ { "AppImageConfigName": "rstudio-custom-config", "ImageName": "rstudio-custom-image" } ] } }, "AuthMode": "IAM" }
  4. 使用所附的自定义 SageMaker 图片创建域名。

    aws sagemaker create-domain \ --cli-input-json file://create-domain-input.json

    响应:

    { "DomainArn": "arn:aws:sagemaker:region:acct-id:domain/domain-id", "Url": "https://domain-id.studio.region.sagemaker.aws/..." }

将 SageMaker 图像附加到现有网域

此方法假设您已经注册了域名。有关更多信息,请参阅 Amazon SageMaker 域名概述

注意

您必须删除域中的所有应用程序,才能使用新的映像版本更新域名。有关删除应用程序的信息,请参阅删除亚马逊 SageMaker 域名

使用以下步骤将 SageMaker 图片添加到您当前的域名。

  • DomainID从 SageMaker 主机上获取。

  • 使用 DomainID 获取域的 DefaultUserSettings

  • ImageNameAppImageConfig 作为 CustomImage 添加到 DefaultUserSettings

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

将自定义 SageMaker 图片添加到您的网域
  1. 打开亚马逊 SageMaker 控制台,网址为 https://console.aws.amazon.com/sagemaker/

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

  3. 管理员配置下,选择

  4. 选择所需的域。

  5. 选择域设置

  6. “常规设置” 下,找到域 ID。ID 的格式如下:d-xxxxxxxxxxxx

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

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

    响应:

    { "DomainId": "d-xxxxxxxxxxxx", "DefaultUserSettings": { "KernelGatewayAppSettings": { "CustomImages": [ ], ... } } }
  8. 将响应的 DefaultUserSettings 部分保存到名为 update-domain-input.json 的文件中。

  9. 插入在前面的步骤中获取的 ImageNameAppImageConfigName 作为自定义映像。由于未指定 ImageVersionNumber,因此将使用映像的最新版本,也是本例中唯一的版本。

    { "DefaultUserSettings": { "RSessionAppSettings": { "CustomImages": [ { "ImageName": "rstudio-custom-image", "AppImageConfigName": "rstudio-custom-config" } ] } } }
  10. 使用域 ID 和默认用户设置文件更新域。

    aws sagemaker update-domain \ --domain-id <d-xxxxxxxxxxxx> \ --cli-input-json file://update-domain-input.json

    响应:

    { "DomainArn": "arn:aws:sagemaker:region:acct-id:domain/domain-id" }
  11. 删除 RStudioServerPro 应用程序。必须重新启动 RStudioServerPro 域共享应用程序,RStudio Launcher 用户界面才能获得最新的更改。

    aws sagemaker delete-app \ --domain-id <d-xxxxxxxxxxxx> --user-profile-name domain-shared \ --app-type RStudioServerPro --app-name default
  12. 创建新的 RStudioServerPro 应用程序。必须使用 AWS CLI创建此应用程序。

    aws sagemaker create-app \ --domain-id <d-xxxxxxxxxxxx> --user-profile-name domain-shared \ --app-type RStudioServerPro --app-name default