本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
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互动:
-
特定语言的 Docker SDK 客户端
先决条件
要在 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-namedomain-name
\ --vpc-idvpc-id
\ --subnet-idssubnet-ids
\ --auth-mode IAM \ --default-user-settings "ExecutionRole=execution-role
" \ --domain-settings '{"DockerSettings": {"EnableDockerAccess": "ENABLED"}}' \ --query DomainArn \ --output text # update domain aws --regionregion
\ sagemaker update-domain --domain-iddomain-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-iddomain-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 |
|
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 |
|
Docker安装
要使用Docker,必须Docker从 Studio 应用程序的终端手动安装。如果域名是否Docker可以访问互联网,则安装步骤会有所不同。
互联网访问
如果域名是使用公共互联网访问权限创建的,或者是在互联网访问受限的VPC-only
模式下创建的,请使用以下步骤进行安装Docker。
-
(可选)如果您的域名是在互联网访问受限的
VPC-only
模式下创建的,请创建一个可以访问该Docker网站的公有 NAT 网关。有关说明,请参阅 NAT 网关。 -
导航到要安装Docker的 Studio 应用程序的终端。
-
要返回应用程序的操作系统,请从终端运行以下命令:
cat /etc/os-release
-
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服务进行路由。
-
-
使用暴露的Docker插槽在 Studio 应用程序中进行Docker交互。默认情况下,以下套接字处于公开状态:
unix:///docker/proxy.sock
以下 Studio 应用程序的默认环境变量
USER
使用此公开的套接字:DOCKER_HOST
无法上网
如果域是在无法访问互联网的VPC-only
模式下创建的,请使用以下步骤进行安装Docker。
-
导航到要安装Docker的 Studio 应用程序的终端。
-
从终端运行以下命令以返回应用程序的操作系统:
cat /etc/os-release
-
将所需Docker
.deb
文件下载到本地计算机。有关下载 Studio 应用程序操作系统所需文件的说明,请参阅安装 Docker Engine。 例如,按照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服务进行路由。
-
-
将
.deb
文件上传到应用程序的 Amazon EFS 文件系统或亚马逊 EBS 文件系统。 -
从 Studio 应用程序终端手动安装
docker-ce-cli
和docker-compose-plugin
.deb
软件包。有关更多信息和说明,请参阅Docker文档网站上从软件包安装中的步骤 5。 -
使用暴露的Docker插槽在 Studio 应用程序中进行Docker交互。默认情况下,以下套接字处于公开状态:
unix:///docker/proxy.sock
以下 Studio 应用程序的默认环境变量
USER
使用此公开的套接字:DOCKER_HOST