我想疑難排解將自訂容器帶入 Amazon SageMaker 進行訓練或推論時發生的問題。
簡短說明
您可以採用以下任一方式,自訂 SageMaker 的容器映像:
- 擴充 SageMaker 的預先建置容器。
- 使用自備容器。
- 自行從零建置容器映像。
採用這些方式時,如果容器映像建置不正確,便會發生相關錯誤。務必確認容器設定正確。
解決方法
擴充 SageMaker 的預先建置容器
若要加入其他功能以自訂您的環境或架構,請採用此方式。此方式已預先指定深度學習程式庫,因此您無須自行從零建置容器映像。
確認 Dockerfile 已設定環境變數 SAGEMAKER_SUBMIT_DIRECTORY 和 SAGEMAKER_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 本機模式,在筆記本執行個體上執行訓練