モデルのトレーニングとデプロイのための Docker コンテナ - Amazon SageMaker AI

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

モデルのトレーニングとデプロイのための Docker コンテナ

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

SageMaker AI を使用してスクリプト、トレーニングアルゴリズム、またはモデルのデプロイを実行するシナリオ

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

次の決定木は、SageMaker AI で構築済みの Docker コンテナを使用するユースケース構築済みの Docker コンテナを拡張するユースケース独自のコンテナを構築するためのユースケースの 3 つの主なシナリオを示しています。

コンテナユースケースのデシジョンツリー。

SageMaker AI で構築済みの Docker コンテナを使用するユースケース

SageMaker AI でコンテナを使用する場合は、次のユースケースを検討してください。

  • 構築済みの SageMaker AI アルゴリズム – 組み込みアルゴリズムに付属するイメージを使用します。詳細については、Amazon SageMaker AI 組み込みアルゴリズムまたは事前トレーニング済みモデルを使用する」を参照してください。

  • 構築済みの SageMaker AI コンテナを使用したカスタムモデル – カスタムモデルをトレーニングまたはデプロイするが、TensorFlow や PyTorch などの構築済みの SageMaker AI コンテナを持つフレームワークを使用する場合は、次のいずれかのオプションを選択します。

    • カスタムパッケージが不要で、必要なパッケージがコンテナに既にすべて含まれている場合、フレームワークに関連する構築済み Docker イメージを使用してください。詳細については、「構築済みの SageMaker AI Docker イメージ」を参照してください。

    • 構築済みコンテナのいずれかにカスタムパッケージをインストールする必要がある場合、構築済みの Docker イメージで requirements.txt ファイルが許可されていることを確認するか、以下のユースケースに基づいて構築済みコンテナを拡張してください。

構築済みの Docker コンテナを拡張するユースケース

構築済みの Docker コンテナを拡張するユースケースは次のとおりです。

  • 依存関係をインポートできない場合 — フレームワークに関連する構築済みの Docker イメージを拡張してください。詳細については、「構築済みコンテナを拡張する」を参照してください。

  • 構築済みコンテナの依存関係をインポートすることができず、構築済みコンテナが requirements.txt をサポートする場合 — 必要な依存関係はすべて requirements.txt に追加してください。以下のフレームワークは requirements.txt の使用をサポートしています。

独自のコンテナを構築するためのユースケース

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

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

TensorFlow モデルのトレーニングとデプロイに、以下の要件があると仮定します。

必要なコンテナの種類を決定すると、以下のリストに前述のオプションの詳細が表示されます。

  • 組み込みの SageMaker AI アルゴリズムまたはフレームワークを使用します。ほとんどのユースケースでは、コンテナを気にすることなく、組み込みのアルゴリズムとフレームワークを使用できます。これらのアルゴリズムは、SageMaker AI コンソール、 AWS Command Line Interface (AWS CLI)、Python ノートブック、または Amazon SageMaker Python SDK からトレーニングおよびデプロイできます。そのためには、Estimator の作成時にアルゴリズムまたはフレームワークのバージョンを指定してください。使用可能な組み込みアルゴリズムは、「Amazon SageMaker の組み込みアルゴリズムと事前トレーニング済みモデル」トピックで項目別に説明しています。使用可能なフレームワークの詳細については、「ML のフレームワークと言語」を参照してください。SageMaker ノートブックインスタンスで実行されている Jupyter ノートブックを使用して、組み込みアルゴリズムをトレーニングおよびデプロイする方法の例については、「Amazon SageMaker AI のセットアップガイド」のトピックを参照してください。

  • 構築済みの SageMaker AI コンテナイメージを使用します。別の方法として、Docker コンテナを使用して組み込みのアルゴリズムとフレームワークを使用することもできます。SageMaker AI は、Apache MXNet、TensorFlow、PyTorch、Chainer など、最も一般的な機械学習フレームワークの一部に、組み込みアルゴリズムと構築済みの Docker イメージ用のコンテナを提供します。利用可能な SageMaker AI イメージの完全なリストについては、「利用可能な深層学習コンテナイメージ」を参照してください。また、scikit-learn や SparkML などの機械学習ライブラリもサポートしています。Amazon SageMaker Python SDK を使用する場合は、完全なコンテナ URI をそれぞれの SageMaker AI SDK Estimator クラスに渡すことで、コンテナをデプロイできます。SageMaker AI で現在サポートされている深層学習フレームワークの完全なリストについては、「」を参照してください深層学習用の構築済みの SageMaker AI Docker イメージ。scikit-learn および SparkML の構築済みコンテナイメージの詳細については、「Scikit-learn および Spark ML 用 Docker イメージへのアクセス」を参照してください。Amazon SageMaker Python SDK でのフレームワークの使用の詳細については、「機械学習フレームワークと言語」でそれぞれのトピックを参照してください。

  • 構築済みの SageMaker AI コンテナイメージを拡張します。構築済みの SageMaker AI アルゴリズムまたはモデル Docker イメージを拡張する場合は、ニーズに合わせて SageMaker AI イメージを変更できます。例については、「PyTorch コンテナの拡張」を参照してください。

  • 既存のコンテナイメージを適応させる: 既存のコンテナイメージを SageMaker AI と連携させる場合は、SageMaker トレーニングツールキットまたは推論ツールキットを有効にするように Docker コンテナを変更する必要があります。独自のコンテナを構築してアルゴリズムをトレーニングまたはホストする方法を示す例については、「Bring Your Own R Algorithm」を参照してください。

Docker コンテナとデプロイのトラブルシューティング

以下は、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