

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# モデルのトレーニングとデプロイのための Docker コンテナ
<a name="docker-containers"></a>

Amazon SageMaker AI は、構築およびランタイムタスク用に Docker コンテナを広範に使用します。**SageMaker AI は、組み込みアルゴリズム用に構築済み Docker イメージを提供し、トレーニングと推論に使用される深層学習フレームワークをサポートします。コンテナを使用することで、機械学習アルゴリズムをトレーニングし、規模を問わずモデルを迅速かつ確実にデプロイできます。このセクションの各トピックでは、独自のユースケース用にこれらのコンテナをデプロイする方法について説明します。Amazon SageMaker Studio Classic で使用する独自のコンテナを取り込む方法については、「[Amazon SageMaker Studio Classic でのカスタムイメージ](studio-byoi.md)」を参照してください。

**Topics**
+ [SageMaker AI を使用したスクリプトの実行、アルゴリズムのトレーニング、またはモデルのデプロイのシナリオ](#container-scenarios)
+ [Docker コンテナの基本](docker-basics.md)
+ [構築済みの SageMaker AI Docker イメージ](docker-containers-prebuilt.md)
+ [SageMaker AI で使用するカスタム Docker コンテナ](docker-containers-adapt-your-own.md)
+ [独自のアルゴリズムとモデルを使用したコンテナの作成](docker-containers-create.md)
+ [例と詳細: 独自のアルゴリズムまたはモデルを使用する](docker-containers-notebooks.md)
+ [Docker コンテナとデプロイのトラブルシューティング](#docker-containers-troubleshooting)

## SageMaker AI を使用したスクリプトの実行、アルゴリズムのトレーニング、またはモデルのデプロイのシナリオ
<a name="container-scenarios"></a>

Amazon SageMaker AI は、スクリプトの実行、アルゴリズムのトレーニング、モデルのデプロイに、常に Docker コンテナを使用します。コンテナとのエンゲージメントのレベルは、ユースケースによって異なります。

以下のデシジョンツリーは、3 つの主なシナリオを示しています。**SageMaker AI で構築済み Docker コンテナを使用する場合のユースケース**、**構築済み Docker コンテナを拡張するユースケース**、**独自のコンテナを構築する場合のユースケース**です。

![\[コンテナユースケースのデシジョンツリー。\]](http://docs.aws.amazon.com/ja_jp/sagemaker/latest/dg/images/your-algorithm-containers-flowchart-diagram.png)


**Topics**
+ [SageMaker AI で構築済みの Docker コンテナを使用する場合のユースケース](#container-scenarios-use-prebuilt)
+ [構築済みの Docker コンテナを拡張するユースケース](#container-scenarios-extend-prebuilt)
+ [独自のコンテナを構築するためのユースケース](#container-scenarios-byoc)

### SageMaker AI で構築済みの Docker コンテナを使用する場合のユースケース
<a name="container-scenarios-use-prebuilt"></a>

SageMaker AI でコンテナを使用する場合は、次のユースケースを検討してください。
+ **構築済みの SageMaker AI アルゴリズム** — 組み込みアルゴリズムに付属するイメージを使用してください。詳細については、「[Use Amazon SageMaker AI Built-in Algorithms or Pre-trained Models](https://docs.aws.amazon.com//sagemaker/latest/dg/algos.html)」を参照してください。
+ **構築済み SageMaker AI コンテナを使用したカスタムモデル** — カスタムモデルをトレーニングまたはデプロイするが、TensorFlow や PyTorch などの構築済み SageMaker AI コンテナを含むフレームワークを使用する場合は、以下のオプションのいずれかを選択します。
  + カスタムパッケージが不要で、必要なパッケージがコンテナに既にすべて含まれている場合、フレームワークに関連する構築済み Docker イメージを使用してください。詳細については、「[構築済みの SageMaker AI Docker イメージ](docker-containers-prebuilt.md)」を参照してください。
  + 構築済みコンテナのいずれかにカスタムパッケージをインストールする必要がある場合、構築済みの Docker イメージで requirements.txt ファイルが許可されていることを確認するか、以下のユースケースに基づいて構築済みコンテナを拡張してください。

### 構築済みの Docker コンテナを拡張するユースケース
<a name="container-scenarios-extend-prebuilt"></a>

構築済みの Docker コンテナを拡張するユースケースは次のとおりです。
+ **依存関係をインポートできない場合** — フレームワークに関連する構築済みの Docker イメージを拡張してください。詳細については「[構築済みコンテナを拡張する](prebuilt-containers-extend.md)」を参照してください。
+ **構築済みコンテナの依存関係をインポートすることができず、構築済みコンテナが requirements.txt をサポートする場合** — 必要な依存関係はすべて requirements.txt に追加してください。以下のフレームワークは requirements.txt の使用をサポートしています。
  + [TensorFlow](https://sagemaker.readthedocs.io/en/v2.18.0/frameworks/tensorflow/using_tf.html)
  + [Chainer](https://sagemaker.readthedocs.io/en/v2.18.0/frameworks/chainer/using_chainer.html?highlight=requirements.txt)
  + [Scikit-learn](https://sagemaker.readthedocs.io/en/stable/frameworks/sklearn/using_sklearn.html?highlight=requirements.txt)
  + [PyTorch](https://sagemaker.readthedocs.io/en/v2.18.0/frameworks/pytorch/using_pytorch.html?highlight=requirements.txt)
  + [Apache MXNet](https://sagemaker.readthedocs.io/en/v2.18.0/frameworks/mxnet/using_mxnet.html?highlight=requirements.txt)

### 独自のコンテナを構築するためのユースケース
<a name="container-scenarios-byoc"></a>

カスタムモデルを構築またはトレーニングしていて、構築済みのイメージがないカスタムフレームワークが必要な場合は、カスタムコンテナを構築してください。

TensorFlow モデルのトレーニングとデプロイのユースケースの例として、次のガイドでは、**ユースケース**の前のセクションのどのオプションがケースに適合するかを判断する方法を示します。

TensorFlow モデルのトレーニングとデプロイに、以下の要件があると仮定します。
+ TensorFlow モデルはカスタムモデルです。
+ TensorFlow モデルは TensorFlow フレームワークで構築されるため、TensorFlow の構築済みフレームワークコンテナを使用してモデルのトレーニングとホストを行います。
+ [エントリポイント](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/using_tf.html#train-a-model-with-tensorflow)スクリプトまたは[推論スクリプトでカスタムパッケージが必要な場合は、構築済みのコンテナを拡張するか、requirements.txt ファイルを使用してランタイム時に依存関係をインストールしてください](https://sagemaker.readthedocs.io/en/stable/frameworks/tensorflow/deploying_tensorflow_serving.html#how-to-implement-the-pre-and-or-post-processing-handler-s)。

必要なコンテナの種類を決定すると、以下のリストに前述のオプションの詳細が表示されます。
+ **組み込みの SageMaker AI アルゴリズムまたはフレームワークを使用する**。ほとんどのユースケースでは、コンテナを気にすることなく、組み込みのアルゴリズムとフレームワークを使用できます。これらのアルゴリズムは、SageMaker AI コンソール、 AWS Command Line Interface (AWS CLI)、Python ノートブック、または [Amazon SageMaker Python SDK ](https://sagemaker.readthedocs.io/en/stable)からトレーニングおよびデプロイできます。そのためには、Estimator の作成時にアルゴリズムまたはフレームワークのバージョンを指定してください。使用可能な組み込みアルゴリズムは、「[Amazon SageMaker の組み込みアルゴリズムと事前トレーニング済みモデル](algos.md)」トピックで項目別に説明しています。使用可能なフレームワークの詳細については、「[ML のフレームワークと言語](frameworks.md)」を参照してください。SageMaker ノートブックインスタンスで実行されている Jupyter ノートブックを使用して、組み込みアルゴリズムをトレーニングおよびデプロイする方法の例については、「[Amazon SageMaker AI のセットアップガイド](gs.md)」のトピックを参照してください。
+ **構築済みの SageMaker AI コンテナイメージを使用する**。別の方法として、Docker コンテナを使用して組み込みのアルゴリズムとフレームワークを使用することもできます。SageMaker AI は、Apache MXNet、TensorFlow、PyTorch、Chainer など、いくつかの最も一般的な機械学習フレームワーク用に、組み込みアルゴリズムおよび構築済みの Docker イメージのコンテナを提供しています。使用可能な SageMaker イメージの完全なリストについては、「[使用可能な Deep Learning Containers イメージ](https://github.com/aws/deep-learning-containers/blob/master/available_images.md)」を参照してください。また、scikit-learn や SparkML などの機械学習ライブラリもサポートしています。[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) を使用すると、完全なコンテナ URI をそれぞれの SageMaker SDK `Estimator`クラスに渡すことで、コンテナをデプロイできます。SageMaker AI で現在サポートされている深層学習フレームワークの完全なリストについては、「[深層学習用の構築済み SageMaker AI Docker イメージ](pre-built-containers-frameworks-deep-learning.md)」を参照してください。scikit-learn および SparkML の構築済みコンテナイメージの詳細については、「[Scikit-learn および Spark ML 用 Docker イメージへのアクセス](pre-built-docker-containers-scikit-learn-spark.md)」を参照してください。[Amazon SageMaker Python SDK](https://sagemaker.readthedocs.io/en/stable) でのフレームワークの使用の詳細については、「[機械学習フレームワークと言語](frameworks.md)」でそれぞれのトピックを参照してください。
+ **構築済みの SageMaker AI コンテナイメージを拡張する**。構築済みの SageMaker AI アルゴリズムまたはモデルの Docker イメージを拡張する場合は、SageMaker イメージをニーズに合わせて変更できます。例については、「[PyTorch コンテナの拡張](https://github.com/aws/amazon-sagemaker-examples-community/blob/215215eb25b40eadaf126d055dbb718a245d7603/bring-your-own-container/pytorch_extending_our_containers/pytorch_extending_our_containers.ipynb)」を参照してください。
+ **既存のコンテナイメージを適応させる**: 既存のコンテナイメージを SageMaker AI に適応させて連携させる場合は、SageMaker トレーニングツールキットまたは推論ツールキットを有効化するよう Docker コンテナを変更する必要があります。独自のコンテナを構築してアルゴリズムをトレーニングまたはホストする方法を示す例については、「[Bring Your Own R Algorithm](https://github.com/aws/amazon-sagemaker-examples/blob/main/advanced_functionality/scikit_bring_your_own/scikit_bring_your_own.ipynb)」を参照してください。

## Docker コンテナとデプロイのトラブルシューティング
<a name="docker-containers-troubleshooting"></a>

以下は、SageMaker AI で Docker コンテナを使うときに発生する一般的な問題です。各問題の後に、問題の解決策が説明されています。
+ **エラー: SageMaker AI に Docker デーモンがなくなりました。**

   このエラーを修正するには、次のコマンドを使用して Docker を再起動します。

  ```
  sudo service docker restart
  ```
+ **エラー: Docker コンテナの `/tmp` ディレクトリで容量不足が発生しました。**

  Docker コンテナは `/` および `/tmp` のパーティションを使用してコードを保存します。ローカルモードで大きなコードモジュールを使用すると、これらのパーティションはすぐにいっぱいになります。SageMaker AI Python SDK では、この問題を回避するために、ローカルモードのルートディレクトリ用のカスタム一時ディレクトリを指定できます。

  Amazon Elastic Block Store ボリュームストレージでカスタム一時ディレクトリを指定するには、次のパス `~/.sagemaker/config.yaml` にファイルを作成し、次の設定を追加します。`container_root` として指定するディレクトリは既存であることが必要です。SageMaker AI Python SDK が作成することはありません。

  ```
  local:
    container_root: /home/ec2-user/SageMaker/temp
  ```

  この設定では、ローカルモードが使用するのは `/temp` ディレクトリで、デフォルトの `/tmp` ディレクトリではありません。
+ **SageMaker ノートブックインスタンスのスペース不足エラー**

  SageMaker ノートブックインスタンスで実行される Docker コンテナは、デフォルトでノートブックインスタンスのルート Amazon EBS ボリュームを使用します。スペース不足エラーを解決するには、Docker コマンドのボリュームパラメータの一部として、ノートブックインスタンスにアタッチされた Amazon EBS ボリュームのパスを指定します。

  ```
  docker run -v EBS-volume-path:container-path
  ```