當我將自訂容器帶到 Amazon SageMaker 進行訓練或推論時,如何針對問題進行疑難排解?

2 分的閱讀內容
0

當我將自訂容器帶到 Amazon SageMaker 進行訓練或推論時,我想要對出現的問題進行疑難排解。

簡短描述

您可使用以下其中一種方法在 SageMaker 自訂容器映像檔:

擴充預先建置的 SageMaker 容器:如果您需要新增其他功能來自訂環境或架構,請採用此方法。透過此方法,您不必從頭開始建立容器映像檔,因為已經預先定義了深度學習程式庫。

**使用自有容器:**當您擁有用於處理資料、模型訓練或即時推論的映像檔,而預先建置的 SageMaker 映像檔目前並不支援其中的額外功能及安全要求時,請採用此方法。

**從頭開始建立容器映像檔:**如果您有自訂演算法,但還沒有自訂容器映像檔,則最佳做法是使用此方法。

藉由此方法的任何一種,您所獲得的錯誤可能主要跟未正確建立容器映像檔有關。因此,請確定已正確設定容器。

解決方案

擴充預先建置的 SageMaker 容器

  • 請確定在 Dockerfile 設定了 SAGEMAKER_SUBMIT_DIRECTORYSAGEMAKER_PROGRAM 環境變數。
  • 請確定您已在 Dockerfile 安裝所需的其他程式庫。您可以執行以下命令來執行這項操作:
# SageMaker PyTorch image
FROM 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 會建立下列目錄:

/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,而推論程式碼 (inference.py) 會存放於 /opt/ml/code

如需深入瞭解,請參閱調整您自己的 Docker 容器以使用 SageMaker

從頭開始建立容器

  • 為了確保容器以執行檔的形式執行,請在 Dockerfile 使用 exec 格式的 ENTRYPOINT 指令:
ENTRYPOINT ["python", "cifar10.py"]
  • 對於訓練任務,如果訓練成功,則訓練指令碼必須以 0 結束;如果訓練不成功,則結束代碼必須為零以外的內容。
  • 請確保將最終模型寫入 /opt/ml/model,並且所有相依性及成品都存放於 /opt/ml/output。如果訓練任務失敗,指令碼必須將失敗資訊寫入 /opt/ml/output/failure
  • 當建立推論端點時,請確定以 FILENAME.tar.gz 格式儲存模型。容器必須在 /invocations 實施 HTTP POST 請求才能進行推論,並在 /ping 實施 HTTP GET 請求才能進行端點運作狀態檢查。

如需深入瞭解,請參閱使用您自己的演算法和模型建立容器


相關資訊

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

AWS 官方
AWS 官方已更新 2 年前