トレーニングや推論のためにカスタムコンテナを Amazon SageMaker に持ち込む際の問題のトラブルシューティングをしたいと考えています。
簡単な説明
次のいずれかの方法を使用して、SageMaker のコンテナイメージをカスタマイズします。
- ビルド済みの SageMaker コンテナを拡張する。
- 自分のコンテナを使用する。
- コンテナイメージをゼロから構築する。
これらの方法では、コンテナイメージの誤ったビルドに関連するエラーが発生します。必ずコンテナを正しく設定してください。
解決策
ビルド済みの SageMaker コンテナを拡張する
この方法を使用して、機能を追加して環境またはフレームワークをカスタマイズします。この方法では、深層学習ライブラリが事前定義されているため、コンテナイメージをゼロから構築する必要はありません。
環境変数 SAGEMAKER_SUBMIT_DIRECTORY と SAGEMAKER_PROGRAM が Dockerfile に設定されていることを確認してください。次に、必要な追加のライブラリを 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
イメージのビルドが成功したら、コンテナをローカルモードで実行します。イメージが正常に動作することを確認してください。
詳細については、「Extend a pre-built container」(ビルド済みコンテナを拡張する) を参照してください。
自分のコンテナを使用する
この方法は、データ処理、モデルトレーニング、またはビルド済みの SageMaker イメージではサポートされていない機能や安全要件を含むリアルタイム推論用のイメージがある場合に使用します。
トレーニングまたは推論用にそれぞれの SageMaker Toolkit ライブラリがインストールされていることを確認してください。これらのツールキットは、コードやその他のリソースの場所を定義します。また、コンテナの起動時に実行するコードを含むエントリポイントも定義します。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 に保存されます。
詳細については、「Adapting your own Docker container to work with SageMaker」(独自の Docker コンテナを SageMaker と連携するように調整する) を参照してください。
コンテナをゼロから構築する
カスタムアルゴリズムがあって、カスタムコンテナイメージがない場合は、この方法を使用するのがベストプラクティスです。
コンテナが実行可能ファイルとして実行されることを確認するには、Dockerfile で exec 形式の ENTRYPOINT 命令を使用します。
ENTRYPOINT ["python", "cifar10.py"]
トレーニングジョブが成功した場合、トレーニングスクリプトは 0 で終了しているはずです。トレーニングが失敗した場合は、終了コードが 0 以外になっています。
最終モデルが /opt/ml/model に書き込まれ、すべての依存関係とアーティファクトが /opt/ml/output に保存されていることを確認してください。トレーニングジョブが失敗した場合、スクリプトは失敗情報を /opt/ml/output/failure に書き込みます。
推論エンドポイントを作成するときに、モデルを FILENAME.tar.gz 形式で保存します。コンテナは、推論用に HTTP POST リクエストを /invocations に実装し、エンドポイントのヘルスチェック用に HTTP GET リクエストを /ping に実装する必要があります。詳細については、「Create a container with your own algorithms and models」(独自のアルゴリズムとモデルを使用してコンテナを作成する) を参照してください。
関連情報
Use the Amazon SageMaker local mode to train on your notebook instance (Amazon SageMaker ローカルモードを使用してノートブックインスタンスでトレーニングする)