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

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

Amazon SageMaker Studio 支持本地模式

重要

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

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

Amazon SageMaker Studio 应用程序支持使用本地模式创建估算器、处理器和管道,然后将其部署到本地环境。在本地模式下,您可以先测试机器学习脚本,然后再在 Amazon 托 SageMaker 管培训或托管环境中运行它们。Studio 在以下应用程序中支持本地模式:

  • 亚马逊 SageMaker Studio 经典版

  • JupyterLab

  • 代码编辑器,基于 Code-OSS,Visual Studio Code-开源

Studio 应用程序中的本地模式是使用 SageMaker Python 软件开发工具包调用的。在 Studio 应用程序中,本地模式的功能与其在 Amazon SageMaker 笔记本实例中的功能类似,但有一些区别。有关在 SageMaker Python SDK 中使用本地模式的更多信息,请参阅本地模式

注意

Studio 应用程序不支持本地模式下的多容器作业。本地模式作业仅限于训练、推理和处理作业的单个实例。创建本地模式作业时,实例计数配置必须为1。 

作为本地模式支持的一部分,Studio 应用程序支持有限的Docker访问功能。有了这种支持,用户就可以通过 Jupyter 笔记本或应用程序的图像终端与 Docker API 进行交互。客户可以使用以下方式之一进行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

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

设置 EnableDockerAccess

以下各节介绍如何设置域名EnableDockerAccess何时可以访问公共 Internet 或处于VPC-only模式。

注意

更改为EnableDockerAccess仅适用于域更新后创建的应用程序。更新域名后,必须创建新的应用程序。

公共互联网接入

以下示例命令显示了在创建新域名或使用公共 Internet 访问权限更新现有域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 Web Services 账户 该列表发出 Amazon ECR Docker 拉取和推送操作请求。

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

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

  • 托管 SageMaker 域名的账户。

  • SageMaker 托管以下 SageMaker 图像的帐户:

    • DLC 框架图片

    • sklearn Spark、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 支持

Studio 还支持有限Docker访问功能,但有以下限制:

  • 不支持使用Docker网络。

  • Docker器运行期间不支持使用容量。在容器编排期间,只允许使用卷绑定挂载输入。卷绑定挂载输入必须位于 Studio Classic 的亚马逊弹性文件系统(亚马逊 EFS)卷上。对于 JupyterLab 和代码编辑器应用程序,它必须位于亚马逊 Elastic Block Store (Amazon EBS) 卷上。

  • 允许进行集装箱检查操作。

  • 不允许将容器端口映射到主机。但是,您可以指定托管端口。然后,可以使用以下 URL 从 Studio 访问终端节点:

    http://localhost:port

Docker支持的操作

下表列出了 Studio 中支持的所有 Docker API 端点,包括所有支持限制。如果表格中缺少 API 端点,Studio 将不支持该端点。

API 文档 限制
SystemAuth
SystemEvents
SystemVersion
SystemPing
SystemPingHead
ContainerCreate
  • 容器不能在Docker默认网桥或自定义Docker网络中运行。容器与 Studio 应用程序容器在同一个网络中运行。

  • 用户只能使用以下值作为网络名称:sagemaker。例如:

    docker run --net sagemaker parameter-values
  • 仅允许使用绑定挂载以使用音量。对于应用程序,主机目录应存在于 Amazon EFS 上,对于其他 KernelGateway 应用程序,主机目录应存在于 Amazon EBS 上。

  • 容器不能在特权模式下运行,也不能以更高的安全计算权限运行。

ContainerStart
ContainerStop
ContainerKill
ContainerDelete
ContainerList
ContainerLogs
ContainerInspect
ContainerWait
ContainerAttach
ContainerPrune
ContainerResize
ImageCreate VPC-only模式支持仅限于允许名单账户中的 Amazon ECR 图像。
ImagePrune
ImagePush VPC-only模式支持仅限于允许名单账户中的 Amazon ECR 图像。
ImageList
ImageInspect
ImageGet
ImageDelete
ImageBuild
  • VPC-only模式支持仅限于允许名单账户中的 Amazon ECR 图像。

  • 用户只能使用以下值作为网络名称:sagemaker。例如:

    docker build --network sagemaker parameter-values

Docker安装

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

互联网访问

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

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

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

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

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

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

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

    • 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. 使用暴露的Docker插槽在 Studio 应用程序中进行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 Engin e。

    例如,按照Docker从软件包安装中的步骤 1—4 在 Ubuntu 上使用软件包进行安装,但要注意以下几点:

    • 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 文件系统或亚马逊 EBS 文件系统。

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

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

    unix:///docker/proxy.sock

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

    DOCKER_HOST