开始使用本地模式 - 亚马逊 SageMaker AI
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

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

开始使用本地模式

以下各节概述了在 Amazon SageMaker Studio 中开始使用本地模式所需的步骤,包括:

  • 满足先决条件

  • 设置 EnableDockerAccess

  • Docker安装

先决条件

要在 Studio 应用程序中使用本地模式,请完成以下先决条件:

  • 要从 Amazon Elastic Container Registry 存储库中提取映像,托管 Amazon ECR 映像的账户必须为用户的执行角色提供访问权限。此域的执行角色也必须允许 Amazon ECR 访问。

  • 使用以下命令验证您使用的是最新版本的 Studio Python SDK: 

    pip install -U sagemaker
  • 要使用本地模式和Docker功能,请DockerSettings使用 Amazon Command Line Interface (Amazon CLI) 设置域的以下参数: 

    EnableDockerAccess : ENABLED
  • 使用 EnableDockerAccess,您还可以控制域中的用户是否可以使用本地模式。默认情况下,Studio 应用程序不允许使用本地模式和 Docker 功能。有关更多信息,请参阅 设置 EnableDockerAccess

  • 按照 Docker安装 中的步骤在 Studio 应用程序中安装 Docker CLI。

设置 EnableDockerAccess

以下各节将介绍如何在域可访问公共互联网或处于 VPC-only 模式时设置 EnableDockerAccess

注意

EnableDockerAccess 的更改仅适用于域更新后创建的应用程序。您必须在更新域后创建新的应用程序。

公共互联网访问

以下示例命令显示了在可以访问公共互联网的情况下创建新域或更新现有域时如何设置 EnableDockerAccess

# create new domain aws --region region \ sagemaker create-domain --domain-name domain-name \ --vpc-id vpc-id \ --subnet-ids subnet-ids \ --auth-mode IAM \ --default-user-settings "ExecutionRole=execution-role" \ --domain-settings '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}' \ --query DomainArn \ --output text # update domain aws --region region \ sagemaker update-domain --domain-id domain-id \ --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}'

VPC-only 模式

VPC-only 模式下使用域时,Docker 映像推送和拉取请求将通过服务 VPC 而不是客户配置的 VPC 进行路由。由于此功能,管理员可以配置用户可以向其中发出 Amazon ECR Docker 拉取和推送操作请求的受信任 Amazon Web Services 账户 列表。

如果向不在可信列表中的用户发出Docker Amazon Web Services 账户 图像推送或拉取请求 Amazon Web Services 账户,则请求将失败。 Docker模式下不支持亚马逊弹性容器注册表 (Amazon ECR) Container Registry 之外的拉取和推送操作。VPC-only

默认情况下,以下内容 Amazon Web Services 账户 是可信的:

  • 托管 SageMaker AI 域的账户。

  • SageMaker 托管以下 SageMaker 图片的 AI 账户:

    • DLC 框架映像

    • sklearnSpark, XGBoost 处理图像

要配置其他可信列表 Amazon Web Services 账户,请按以下方式指定VpcOnlyTrustedAccounts值:

aws --region region \ sagemaker update-domain --domain-id domain-id \ --domain-settings-for-update '{"DockerSettings": {"EnableDockerAccess": "ENABLED", "VpcOnlyTrustedAccounts": ["account-list"]}}'

Docker安装

要使用 Docker,您必须在 Studio 应用程序的终端手动安装 Docker。如果域可以访问互联网,安装 Docker 的步骤则有所不同。

互联网访问

如果域是在可以访问公共互联网或在访问互联网受限的 VPC-only 模式下创建的,请使用以下步骤安装 Docker。

  1. (可选)如果您的域是在互联网访问受限的 VPC-only 模式下创建的,请创建一个可访问 Docker 网站的公共 NAT 网关。有关说明,请参阅 NAT 网关

  2. 导航到要安装 Docker 的 Studio 应用程序的终端。

  3. 要返回应用程序的操作系统,请在终端运行以下命令:

    cat /etc/os-release
  4. Docker按照 Amazon A SageMaker I 本地模式示例存储库中应用程序操作系统的说明进行安装。

    例如,Docker按Ubuntu照 https://github.com/aws-samples/amazon-sagemaker-local-mode/blob/main/sagemaker_studio_docker_cli_install/sagemaker-ubuntu-focal-docker-cli-install.sh 的脚本进行安装,注意以下几点:

    • 如果链接命令失败,请逐个运行命令。

    • Studio 仅支持 Docker 版本 20.10.X. 和 Docker Engine API 版本 1.41

    • 在 Studio 中使用 Docker CLI 不需要安装下列软件包,因此可以跳过它们的安装:

      • containerd.io

      • docker-ce

      • docker-buildx-plugin

    注意

    您无需在应用程序中启动 Docker 服务。托管 Studio 应用程序的实例默认运行 Docker 服务。所有 Docker API 调用都会自动通过 Docker 服务进行路由。

  5. 在 Studio 应用程序中使用公开的 Docker 套接字进行 Docker 交互。默认情况下,以下套接字处于公开状态:

    unix:///docker/proxy.sock

    以下 Studio 应用程序环境变量默认 USER 使用此公开的套接字:

    DOCKER_HOST

无法访问互联网

如果域是在无法访问互联网的 VPC-only 模式下创建的,请使用以下步骤安装 Docker。

  1. 导航到要安装 Docker 的 Studio 应用程序的终端。

  2. 从终端运行以下命令,返回应用程序的操作系统:

    cat /etc/os-release
  3. 将所需的 Docker .deb 文件下载到本地计算机。有关为 Studio 应用程序的操作系统下载所需文件的说明,请参阅安装 Docker 引擎

    例如,在 Ubuntu 上按照从软件包安装中的第 1-4 步安装 Docker,并注意以下事项:

    • 从软件包安装 Docker。使用其他方法安装 Docker 会失败。

    • 安装与 Docker 版本 20.10.X 相对应的最新软件包。

    • 在 Studio 中使用 Docker CLI 不需要下列软件包。您无需安装以下程序:

      • containerd.io

      • docker-ce

      • docker-buildx-plugin

    注意

    您无需在应用程序中启动 Docker 服务。托管 Studio 应用程序的实例默认运行 Docker 服务。所有 Docker API 调用都会自动通过 Docker 服务进行路由。

  4. .deb 文件上传到应用程序的 Amazon EFS 文件系统或 Amazon EBS 文件系统。

  5. 从 Studio 应用程序终端手动安装 docker-ce-clidocker-compose-plugin .deb 软件包。有关更多信息和说明,请参阅 Docker 文档网站上的从软件包安装中的第 5 步。

  6. 在 Studio 应用程序中使用公开的 Docker 套接字进行 Docker 交互。默认情况下,以下套接字处于公开状态:

    unix:///docker/proxy.sock

    以下 Studio 应用程序环境变量默认 USER 使用此公开的套接字:

    DOCKER_HOST