コンテナの概要

AI Platform Training 上のコンテナは、Docker イメージ内でアプリケーションを実行可能にする機能です。独自のカスタム コンテナを作成し、そのコンテナを使用して AI Platform Training 上でジョブを実行できます。カスタム コンテナを作成する場合、さまざまな ML フレームワークと複数のバージョンだけでなく、AI Platform Training では通常サポートされていない ML 以外の依存関係、ライブラリ、バイナリも使用できます。

コンテナを使用したトレーニングの仕組み

任意の ML フレームワークで実装したトレーニング アプリケーションが、トレーニング プロセスの中核となります。

  1. 任意の ML フレームワークを使用して、モデルをトレーニングするアプリケーションを作成します。
  2. カスタム コンテナを使用するかどうかを決定します。使用する依存関係をすでにサポートしているランタイム バージョンが存在する場合もありますが、そうでなければ、トレーニング ジョブ用のカスタム コンテナを作成する必要があります。カスタム コンテナ内で、トレーニング アプリケーションとそのすべての依存関係をイメージにプリインストールします。このイメージを使用して、トレーニング ジョブを実行します。
  3. トレーニングと検証データを、AI Platform Training がアクセスできるソースに格納します。格納先は通常、Cloud Storage、Cloud Bigtable、または AI Platform Training で使用しているのと同じ Google Cloud プロジェクトに関連付けられている、別の Google Cloud ストレージ サービスです。
  4. アプリケーションを実行する準備が整ったら、Docker イメージをビルドして Container Registry に push し、AI Platform Training サービスがレジストリにアクセスできることを確認します。
  5. gcloud ai-platform jobs submit training を使用してジョブを送信します。その際、引数を config.yaml ファイル内で指定するか、対応する gcloud フラグを指定します。
  6. AI Platform Training のトレーニング サービスにより、ジョブのリソースが設定されます。さらに、ジョブの構成に基づいて 1 つ以上の仮想マシン(「トレーニング インスタンス」と呼ばれます)が割り当てられます。トレーニング インスタンスを設定するには、トレーニング ジョブの送信時に TrainingInput オブジェクトの一部として指定したカスタム コンテナを使用します。
  7. トレーニング サービスで Docker イメージを実行します。その際、トレーニング ジョブの作成時に指定したコマンドライン引数が渡されます。
  8. 実行中のジョブに関する情報を取得するには、次の方法があります。
  9. トレーニング ジョブが正常に終了するか、回復不能なエラーが発生すると、AI Platform Training はすべてのジョブプロセスを停止してリソースをクリーンアップします。

カスタム コンテナの利点

カスタム コンテナを使用すると、アプリケーションに必要なすべての依存関係を指定してプリインストールできます。

  • 起動時間が短縮されます。依存関係がプリインストールされたカスタム コンテナを使用すれば、トレーニング アプリケーションが起動時に依存関係をインストールする必要がなくなるため、その分の時間を節約できます。
  • 任意の ML フレームワークを使用できます。使用する ML フレームワークをサポートしている AI Platform Training ランタイム バージョンが見つからなければ、そのフレームワークをインストールするカスタム コンテナを作成し、それを使用して AI Platform Training 上でジョブを実行できます。たとえば、PyTorch を使用してトレーニングできます。
  • 分散トレーニングがサポートされます。カスタム コンテナでは、任意の ML フレームワークを使用して分散トレーニングを行うことができます。
  • 最新バージョンを使用してください。ML フレームワークの最新ビルドやマイナー バージョンを使用することもできます。たとえば、tf-nightly やプレビュー版 TensorFlow 2.0 を使用してトレーニングするためのカスタム コンテナを作成できます。

カスタム コンテナでのハイパーパラメータ調整

AI Platform Training 上でハイパーパラメータ調整を行うには、目標指標を指定し、その指標を最小化または最大化するかどうかを指定します。たとえば、モデルの精度を最大化する必要がある場合もあれば、モデルの損失を最小化しなければならない場合もあります。また、調整するハイパーパラメータと各ハイパーパラメータの目標値のリストも指定します。AI Platform Training ではトレーニング アプリケーションのトライアルを複数回行い、トライアルが完了するたびにハイパーパラメータを追跡して調整します。ハイパーパラメータ調整ジョブが完了すると、AI Platform Training は、ハイパーパラメータを最も効果的に構成するための値と、各トライアルのサマリーを報告します。

カスタム コンテナのハイパーパラメータ調整を行うには、次の手順に従ってください。

  • Dockerfile: cloudml-hypertune をインストールします。
  • トレーニング コード:
    • cloudml-hypertune を使用し、そのヘルパー関数 report_hyperparameter_tuning_metric を呼び出して各トライアルの結果を報告します。
    • 各ハイパーパラメータのコマンドライン引数を追加し、パーサー(argparse など)を使用して引数を解析します。
  • ジョブ リクエスト: TrainingInput オブジェクトに HyperparameterSpec を追加します。

カスタム コンテナでのハイパーパラメータ調整を使用したトレーニングの例、または AI Platform Training でのハイパーパラメータ調整の仕組みをご覧ください。

カスタム コンテナでの GPU の使用

カスタム コンテナで GPU を使用してトレーニングする場合、いくつかの特殊な要件を満たす必要があります。CPU を使用したトレーニングに使用するものとは異なる Docker イメージをビルドする必要があります。

  • Docker イメージに CUDA ツールキットと cuDNN をプリインストールします。この要件に対処する方法としては、ベースイメージとして nvidia/cuda イメージを使用することをおすすめします。このイメージには、バージョンが一致する CUDA ツールキットと cuDNN がプリインストールされているため、関連する環境変数を正しく設定するのに役立ちます。
  • Docker イメージに、トレーニング アプリケーションと必須の ML フレームワークおよびその他の依存関係をインストールします。

GPU を使用してトレーニングする場合の Dockerfile の例をご覧ください。

次のステップ