

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 容器映像相容性
<a name="train-remote-decorator-container"></a>

下表顯示相容 @remote 裝飾項目的 SageMaker 訓練映像清單。


| 名稱 | Python 版本 | 映像 URI - CPU | 映像 URI - GPU | 
| --- | --- | --- | --- | 
|  資料科學  |  3.7(py37)  |  僅適用 SageMaker Studio Classic 筆記本。當作為 SageMaker Studio Classic 筆記本核心映像使用時，Python SDK 會自動選取映像 URI。  |  僅適用 SageMaker Studio Classic 筆記本。當作為 SageMaker Studio Classic 筆記本核心映像使用時，Python SDK 會自動選取映像 URI。  | 
|  資料科學 2.0  |  3.8(py38)  |  僅適用 SageMaker Studio Classic 筆記本。當作為 SageMaker Studio Classic 筆記本核心映像使用時，Python SDK 會自動選取映像 URI。  |  僅適用 SageMaker Studio Classic 筆記本。當作為 SageMaker Studio Classic 筆記本核心映像使用時，Python SDK 會自動選取映像 URI。  | 
|  資料科學 3.0  |  3.10(py310)  |  僅適用 SageMaker Studio Classic 筆記本。當作為 SageMaker Studio Classic 筆記本核心映像使用時，Python SDK 會自動選取映像 URI。  |  僅適用 SageMaker Studio Classic 筆記本。當作為 SageMaker Studio Classic 筆記本核心映像使用時，Python SDK 會自動選取映像 URI。  | 
|  基本 Python 2.0  |  3.8(py38)  |  當 Python SDK 偵測到開發環境正在使用 Python 3.8 執行期時，其會選擇此映像。否則，Python SDK 會在用作 SageMaker Studio Classic 筆記本核心映像時，自動選擇此映像  |  僅適用 SageMaker Studio Classic 筆記本。當作為 SageMaker Studio Classic 筆記本核心映像使用時，Python SDK 會自動選取映像 URI。  | 
|  基本 Python 3.0  |  3.10(py310)  |  當 Python SDK 偵測到開發環境正在使用 Python 3.8 執行期時，其會選擇此映像。否則，Python SDK 會在用作 SageMaker Studio Classic 筆記本核心映像時，自動選擇此映像  |  僅適用 SageMaker Studio Classic 筆記本。Python SDK 會在用作 Studio Classic 筆記本核心映像時，自動選擇此映像 URI。  | 
|  DLC-TensorFlow 2.12.0 用於 SageMaker 訓練  |  3.10(py310)  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.12.0-cpu-py310-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.12.0-gpu-py310-cu118-ubuntu20.04-sagemaker  | 
|  DLC-Tensorflow 2.11.0 用於 SageMaker 訓練  |  3.9(py39)  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.11.0-cpu-py39-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.11.0-gpu-py39-cu112-ubuntu20.04-sagemaker  | 
|  DLC-TensorFlow 2.10.1 用於 SageMaker 訓練  |  3.9(py39)  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.10.1-cpu-py39-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.10.1-gpu-py39-cu112-ubuntu20.04-sagemaker  | 
|  DLC-TensorFlow 2.9.2 用於 SageMaker 訓練  |  3.9(py39)  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.9.2-cpu-py39-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.9.2-gpu-py39-cu112-ubuntu20.04-sagemaker  | 
|  DLC-TensorFlow 2.8.3 用於 SageMaker 訓練  |  3.9(py39)  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.8.3-cpu-py39-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/tensorflow-training:2.8.3-gpu-py39-cu112-ubuntu20.04-sagemaker  | 
|  DLC-PyTorch 2.0.0 用於 SageMaker 訓練  |  3.10(py310)  |  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.0-cpu-py310-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:2.0.0-gpu-py310-cu118-ubuntu20.04-sagemaker  | 
|  DLC-PyTorch 1.13.1 用於 SageMaker 訓練  |  3.9(py39)  |  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.13.1-cpu-py39-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.13.1-gpu-py39-cu117-ubuntu20.04-sagemaker  | 
|  DLC-PyTorch 1.12.1 用於 SageMaker 訓練  |  3.8(py38)  |  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.12.1-cpu-py38-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.12.1-gpu-py38-cu113-ubuntu20.04-sagemaker  | 
|  DLC-PyTorch 1.11.0 用於 SageMaker 訓練  |  3.8(py38)  |  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.11.0-cpu-py38-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/pytorch-training:1.11.0-gpu-py38-cu113-ubuntu20.04-sagemaker  | 
|  DLC-MXNet 1.9.0 用於 SageMaker 訓練  |  3.8(py38)  |  763104351884.dkr.ecr.<region>.amazonaws.com/mxnet-training:1.9.0-cpu-py38-ubuntu20.04-sagemaker  |  763104351884.dkr.ecr.<region>.amazonaws.com/mxnet-training:1.9.0-gpu-py38-cu112-ubuntu20.04-sagemaker  | 

**注意**  
若要使用 AWS 深度學習容器 (DLC) 映像在本機執行任務，請使用 [DLC 文件](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)中找到的映像 URIs。DLC 映像不支援相依性的 `auto_capture` 值。  
[SageMaker Studio 中具有 SageMaker AI Distribution](https://github.com/aws/sagemaker-distribution#amazon-sagemaker-studio) 的任務會以名為 `sagemaker-user` 的非根使用者身分在容器中執行。此使用者需要 `/opt/ml` 和 `/tmp` 的完整存取權限。將 `sudo chmod -R 777 /opt/ml /tmp` 新增至 `pre_execution_commands` 清單以授予此權限，如下程式碼片段所示：  

```
@remote(pre_execution_commands=["sudo chmod -R 777 /opt/ml /tmp"])
def func():
    pass
```

您還可以使用自訂映像執行遠端函式。為相容遠端函式，自訂映像應採用 Python 版本 3.7.x-3.10.x 構建。以下最小 Dockerfile 範例顯示如何運用 Python 3.10 來使用 Docker 映像。

```
FROM python:3.10

#... Rest of the Dockerfile
```

若要在映像建立 `conda` 環境並用以執行工作，請設定環境變數 `SAGEMAKER_JOB_CONDA_ENV` 為 `conda` 環境名稱。如果映像已設定為 `SAGEMAKER_JOB_CONDA_ENV` 值，則在訓練工作執行期期間遠端函式無法建立新 conda 環境。請參閱以下 Dockerfile 範例，其使用 Python 版本 3.10 的 `conda` 環境。

```
FROM continuumio/miniconda3:4.12.0  

ENV SHELL=/bin/bash \
    CONDA_DIR=/opt/conda \
    SAGEMAKER_JOB_CONDA_ENV=sagemaker-job-env

RUN conda create -n $SAGEMAKER_JOB_CONDA_ENV \
   && conda install -n $SAGEMAKER_JOB_CONDA_ENV python=3.10 -y \
   && conda clean --all -f -y \
```

若要讓 SageMaker AI 使用 [mamba](https://mamba.readthedocs.io/en/latest/user_guide/mamba.html) 來管理容器映像的 Python 虛擬環境，請安裝[微型鑄造的 mamba 工具組](https://github.com/conda-forge/miniforge)。若要使用 mamba，請新增以下代碼範例至 Dockerfile。然後，SageMaker AI 將在執行期偵測 `mamba` 的可用性，並用其代替 `conda`。

```
#Mamba Installation
RUN curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh" \
    && bash Mambaforge-Linux-x86_64.sh -b -p "/opt/conda"  \
    && /opt/conda/bin/conda init bash
```

當使用遠端函式時，在 Amazon S3 儲存貯體使用自訂 conda 頻道與 mamba 不相容。如果您選擇使用 mamba，請確保您未在 Amazon S3 使用自訂 conda 頻道。如需更多資訊，請參閱**使用 Amazon S3 自訂 conda 儲存庫**的**先決條件**區段。

以下是完整 Docerfile 範例，顯示如何建立相容 Docker 映像。

```
FROM python:3.10

RUN apt-get update -y \
    # Needed for awscli to work
    # See: https://github.com/aws/aws-cli/issues/1957#issuecomment-687455928
    && apt-get install -y groff unzip curl \
    && pip install --upgrade \
        'boto3>1.0<2' \
        'awscli>1.0<2' \
        'ipykernel>6.0.0<7.0.0' \
#Use ipykernel with --sys-prefix flag, so that the absolute path to 
    #/usr/local/share/jupyter/kernels/python3/kernel.json python is used
    # in kernelspec.json file
    && python -m ipykernel install --sys-prefix

#Install Mamba
RUN curl -L -O "https://github.com/conda-forge/miniforge/releases/latest/download/Mambaforge-Linux-x86_64.sh" \
    && bash Mambaforge-Linux-x86_64.sh -b -p "/opt/conda"  \
    && /opt/conda/bin/conda init bash

#cleanup
RUN apt-get clean \
    && rm -rf /var/lib/apt/lists/* \
    && rm -rf ${HOME}/.cache/pip \
    && rm Mambaforge-Linux-x86_64.sh

ENV SHELL=/bin/bash \
    PATH=$PATH:/opt/conda/bin
```

 執行前述 Dockerfile 範例所產生的映像也可以用作 [SageMaker Studio Classic 核心映像](https://docs.aws.amazon.com/sagemaker/latest/dg/studio-byoi.html)。