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

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

自定义 SageMaker 图像规格

重要

截至 2023 年 11 月 30 日,之前的亚马逊 SageMaker Studio 体验现在被命名为 Amazon St SageMaker udio Classic。以下部分专门介绍如何使用 Studio Classic 应用程序。有关使用更新后的 Studio 体验的信息,请参阅亚马逊 SageMaker Studio

以下规范适用于由镜像版本表示的容器 SageMaker镜像。

运行映像

ENTRYPOINT并覆盖CMD指令以使图像能够作为 KernelGateway 应用程序运行。

镜像中的端口 8888 保留用于运行 KernelGateway Web 服务器。

停止映像

DeleteApp API 发出等同于 docker stop 命令的指令。容器中的其他进程不会获得 SIGKILL/SIGTERM 信号。

内核发现

SageMaker 识别由 Jupyter 内核规范定义的内核。

您可以指定运行映像前要显示的内核列表。如果未指定,则显示 python3。使用 DescribeAppImageConfigAPI 查看内核列表。

默认情况下,Conda 环境被识别为内核规范。

文件系统

/opt/.sagemakerinternal/opt/ml 目录是保留的目录。这些目录中的任何数据在运行时可能不可见。

用户数据

域中的每个用户都会在映像中的共享 Amazon Elastic File System 卷上获得一个用户目录。当前用户的目录在 Amazon EFS 卷上的位置是可配置的。默认情况下,目录位置为 /home/sagemaker-user

SageMaker 在图像和主机之间配置 POSIX UID/GID 映射。默认情况下,这会将根用户的 UID/GID (0/0) 映射到主机上的 UID/GID。

您可以使用 CreateAppImageConfigAPI 指定这些值。

GID/UID 限制

Amazon SageMaker Studio Classic 仅支持以下DefaultUIDDefaultGID组合:

  • DefaultUID: 1000 和 DefaultGID: 100,对应的是非特权用户。

  • DefaultUID: 0 和 DefaultGID: 0,对应的是根访问权限。

元数据

元数据文件位于 /opt/ml/metadata/resource-metadata.json 中。除了映像中定义的变量,不会添加额外的环境变量。有关更多信息,请参阅 获取应用程序元数据

GPU

在 GPU 实例上,使用 --gpus 选项运行映像。CUDA 工具包应当仅包含在映像中,而不是 NVIDIA 驱动程序中。有关更多信息,请参阅《NVIDIA 用户指南》https://docs.nvidia.com/datacenter/cloud-native/container-toolkit/user-guide.html

指标和日志记录

该 KernelGateway 流程的日志将通过客户的账户发送到亚马逊 CloudWatch 。日志组的名称为 /aws/sagemaker/studio。日志流的名称为 $domainID/$userProfileName/KernelGateway/$appName

映像大小

限制为 25 GB。要查看映像的大小,请运行 docker image ls

示例 Dockerfile

下面的示例 Dockerfile 基于 Amazon Linux 2 创建了一个映像,安装了第三方软件包和 python3 内核,并将作用域设置为非特权用户。

FROM public.ecr.aws/amazonlinux/amazonlinux:2 ARG NB_USER="sagemaker-user" ARG NB_UID="1000" ARG NB_GID="100" RUN \ yum install --assumeyes python3 shadow-utils && \ useradd --create-home --shell /bin/bash --gid "${NB_GID}" --uid ${NB_UID} ${NB_USER} && \ yum clean all && \ python3 -m pip install ipykernel && \ python3 -m ipykernel install USER ${NB_UID}