自定义 SageMaker 图像规格 - Amazon SageMaker

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

自定义 SageMaker 图像规格

重要

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

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

运行映像

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

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

停止映像

发出DeleteAppAPI相当于docker stop命令的命令。容器中的其他进程将无法获得SIGKILL/SIGTERM信号。

内核发现

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

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

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

文件系统

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

用户数据

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

SageMaker 在GID映像和主机之间配置 POSIXUID/映射。这默认为将 root 用户的UID/GID(0/0) 映射到主机GID上的UID/。

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

GID/UID限制

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

  • 默认值UID:1000,默认值GID:100,对应于非特权用户。

  • 默认值UID:0,默认值GID:0,对应于根访问权限。

元数据

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

GPU

在GPU实例上,使用--gpus选项运行映像。镜像中应该只包含CUDA工具包,而不是NVIDIA驱动程序。有关更多信息,请参阅《NVIDIA用户指南》

指标和日志记录

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

映像大小

限制在 35 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}