

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

# 亚马逊 SageMaker Studio 经典版的自定义 SageMaker 图片规格
<a name="studio-byoi-specs"></a>

**重要**  
截至 2023 年 11 月 30 日，之前的亚马逊 SageMaker Studio 体验现在被命名为 Amazon St SageMaker udio Classic。以下部分专门介绍如何使用 Studio Classic 应用程序。有关使用更新的 Studio 体验的信息，请参阅 [亚马逊 SageMaker Studio](studio-updated.md)。  
Studio Classic 仍针对现有工作负载进行维护，但不再可供入门使用。您只能停止或删除现有的 Studio Classic 应用程序，不能创建新的应用程序。我们建议您将[工作负载迁移到全新 Studio 体验](studio-updated-migrate.md)。

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

**运行映像**  
`ENTRYPOINT`并覆盖`CMD`指令以使图像能够作为 KernelGateway 应用程序运行。  
镜像中的端口 8888 保留用于运行 KernelGateway Web 服务器。

**停止映像**  
`DeleteApp` API 发出等同于 `docker stop` 命令的指令。容器中的其他进程无法获得信 SIGKILL/SIGTERM 号。

**内核发现**  
SageMaker [人工智能可以识别由 Jupyter 内核规范定义的内核。](https://jupyter-client.readthedocs.io/en/latest/kernels.html#kernelspecs)  
您可以指定运行映像前要显示的内核列表。如果未指定，则显示 python3。使用 [DescribeAppImageConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_DescribeAppImageConfig.html)API 查看内核列表。  
默认情况下，Conda 环境被识别为内核规范。

**文件系统**  
`/opt/.sagemakerinternal` 和 `/opt/ml` 目录是保留的目录。这些目录中的任何数据在运行时可能不可见。

**用户数据**  
域中的每个用户都会在映像中的共享 Amazon Elastic File System 卷上获得一个用户目录。当前用户的目录在 Amazon EFS 卷上的位置是可配置的。默认情况下，目录位置为 `/home/sagemaker-user`。  
SageMaker AI 在图像和主机之间配置 POSIX UID/GID 映射。这默认为将 root 用户的 UID/GID (0/0) 映射到主机 UID/GID 上的。  
您可以使用 [CreateAppImageConfig](https://docs.aws.amazon.com/sagemaker/latest/APIReference/API_CreateAppImageConfig.html)API 指定这些值。

**GID/UID 限制**  
Amazon SageMaker Studio Classic 仅支持以下`DefaultUID`和`DefaultGID`组合：  
+  DefaultUID: 1000 和 DefaultGID: 100，对应的是非特权用户。
+  DefaultUID: 0 和 DefaultGID: 0，对应的是根访问权限。

**元数据**  
元数据文件位于 `/opt/ml/metadata/resource-metadata.json` 中。除了映像中定义的变量，不会添加额外的环境变量。有关更多信息，请参阅 [获取应用程序元数据](notebooks-run-and-manage-metadata.md#notebooks-run-and-manage-metadata-app)。

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

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

**映像大小**  
限制为 35 GB。要查看映像的大小，请运行 `docker image ls`。  


## 示例 Dockerfile
<a name="studio-byoi-specs-sample"></a>

下面的示例 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 && \
    jupyter-activity-monitor-extension \
    python3 -m pip install ipykernel && \
    python3 -m ipykernel install

USER ${NB_UID}
```