跳至內容

如何疑難排解將自訂容器帶入 SageMaker 進行訓練或推論時發生的問題?

2 分的閱讀內容
0

我想疑難排解將自訂容器帶入 Amazon SageMaker 進行訓練或推論時發生的問題。

簡短說明

您可以採用以下任一方式,自訂 SageMaker 的容器映像:

  • 擴充 SageMaker 的預先建置容器。
  • 使用自備容器。
  • 自行從零建置容器映像。

採用這些方式時,如果容器映像建置不正確,便會發生相關錯誤。務必確認容器設定正確。

解決方法

擴充 SageMaker 的預先建置容器

若要加入其他功能以自訂您的環境或架構,請採用此方式。此方式已預先指定深度學習程式庫,因此您無須自行從零建置容器映像。

確認 Dockerfile 已設定環境變數 SAGEMAKER_SUBMIT_DIRECTORYSAGEMAKER_PROGRAM。接著在 Dockerfile 內安裝必要的額外程式庫。

如需安裝所需的其他程式庫,請執行以下命令:

# SageMaker PyTorch imageFROM 763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-training:1.5.1-cpu-py36-ubuntu16.04
ENV PATH="/opt/ml/code:${PATH}"

# this environment variable is used by the SageMaker PyTorch container to determine our user code directory.
ENV SAGEMAKER_SUBMIT_DIRECTORY /opt/ml/code

# install the libraries using pip
COPY requirements.txt./requirements.txt
RUN pip install requirements.txt

# /opt/ml and all subdirectories are utilized by SageMaker, use the /code subdirectory to store your user code.
COPY cifar10.py /opt/ml/code/cifar10.py
# Defines cifar10.py as script
entrypoint
ENV SAGEMAKER_PROGRAM cifar10.py

容器映像建置完成後,請以本機模式啟動容器。確認映像的運作結果符合預期。

相關內容請見擴充預先建置的容器

使用自備容器

如果現有 SageMaker 映像無法滿足資料處理、模型訓練或即時推論所需的功能與安全要求,且您已有適用映像,請選擇此方式。

確認您已安裝對應的 SageMaker 訓練或推論工具套件程式庫。這些工具套件會指定程式碼及其他資源的存放位置。此外,工具套件也會指定進入點,其中包含容器啟動時要執行的程式碼。建立 SageMaker 訓練任務或推論端點時,SageMaker 會產生以下目錄:

/opt/ml  
    ├── input
    │
    ├── model
    │
    ├── code
    │
    ├── output
    │
    └── failure

執行訓練任務期間,/opt/ml/input 目錄會存放資料通道的資訊;該通道可存取 Amazon Simple Storage Service (Amazon S3) 中的資料。訓練指令碼 (train.py) 及其相依項目儲存在 opt/ml/code 中。訓練任務完成後,確認指令碼將最終模型寫入 /opt/ml/model 目錄。

當您在 SageMaker 上託管訓練完成的模型以執行推論時,/opt/ml/model 會儲存該模型。/opt/ml/code 會存放推論程式碼 (inference.py)。

相關內容請見調整自有 Docker 容器以搭配 SageMaker 使用

自行從零建置容器

如果您已有自訂演算法,但尚未建立自訂容器映像,最佳實務是採用此方式。

若要確保容器能以可執行檔方式運作,請在 Dockerfile 中使用 exec 格式的 ENTRYPOINT 指示詞:

ENTRYPOINT ["python", "cifar10.py"]

訓練任務順利完成時,訓練指令碼的結束代碼必須為 0。訓練未成功時,結束代碼必須是非零值。

請將最終模型寫入 /opt/ml/model,並把所有相依項目與成品存放在 /opt/ml/output。若訓練任務未能完成,指令碼必須在 /opt/ml/output/failure 中記錄失敗資訊。

建立推論端點時,請將模型儲存為 FILENAME.tar.gz 格式。容器必須實作 HTTP POST 請求,並透過 /invocations 執行推論;同時還必須實作 HTTP GET 請求,透過 /ping 執行端點運作狀態檢查。相關說明請見使用自有演算法和模型建立容器

相關內容

使用 Amazon SageMaker 本機模式,在筆記本執行個體上執行訓練

AWS 官方已更新 2 年前