クラウド中のトレーニング モデルに GPU を使用

グラフィック プロセッシング ユニット(GPU)は、多くのディープ ラーニング モデルのトレーニング プロセスを大幅に高速化します。GPU によるトレーニング プロセスの高速化の例としては、画像分類、動画分析、自然言語処理などのディープ ラーニング モデルがあります。これらのモデルのトレーニング プロセスでは、行列乗算などの演算に大量の計算を必要としますが、GPU の超並列アーキテクチャはこのような場合に有利です。このアーキテクチャは、驚異的並列(embarrassingly parallel)ワークロードに対処するために設計されたアルゴリズムに適しています。

極端に大きなデータセットに対して大量のコンピューティング タスクを必要とするディープ ラーニング モデルをトレーニングする場合に、プロセッサが 1 つだけでは実行に何日もかかることがあります。しかし、このようなタスクを 1 つまたは複数の GPU にオフロードするようにプログラムを設計すれば、トレーニングに要する時間を日単位から時間単位に短縮できます。

GPU を使用したコンピューティング高速化の全般的な情報については、NVIDIA の加速化したコンピューティングに関するページをご覧ください。GPU を TensorFlow とともに使用する方法の詳細については、TensorFlow のドキュメントの GPU の使用法をご覧ください。

GPU が有効なマシンをリクエストする

クラウドで GPU を使用するには、GPU が有効なマシンにアクセスするようにジョブを設定します。

  • スケール階層を CUSTOM に設定する。
  • GPU が有効なマシンタイプの 1 つを使用するように各タスク(マスター、ワーカー、パラメータ サーバー)を設定する。
    • standard_gpu を使用して、単一の GPU へのアクセス権をタスクに付与する。
    • complex_model_m_gpu を使用して、4 つの GPU へのアクセス権をタスクに付与する。
    • complex_model_l_gpu を使用して、8 つの GPU へのアクセス権をタスクに付与する。

Cloud ML Engine の使い方を学習している場合や、GPU が有効なマシンを試してみる場合に、スケール階層を BASIC_GPU に設定して、GPU が 1 つのワーカー インスタンスを 1 つだけ取得することもできます。

これに加えて、ジョブを実行するリージョンが GPU をサポートしている必要があります。次のリージョンは現在 GPU へのアクセス権を提供します。

  • us-east1
  • us-central1
  • asia-east1
  • europe-west1

GPU に op を割り当てる

マシン上で GPU を利用するには、それに応じた変更を TensorFlow トレーナー アプリケーションに加えます。

  • High-Level Estimator API: ClusterSpec が正しく設定されていれば、コードの変更は必要ありません。1 つのクラスタで CPU と GPU が混在している場合は、ps ジョブ名を CPU にマッピングし、worker ジョブ名を GPU にマッピングしてください。

  • Core Tensorflow API: GPU が有効なマシンで実行するには、op を割り当てる必要があります。このプロセスは、ローカルで GPU を TensorFlow とともに使用する場合と同じです。tf.train.replica_device_setter を使用してデバイスに op を割り当てることができます。

GPU が有効なマシンを Cloud ML Engine プロセスに割り当てると、そのプロセスにそのマシンの GPU への排他的アクセス権が付与されます。クラスタ内の単一マシンの GPU を複数のプロセスで共有することはできません。プロセスは、クラスタ仕様の分散 TensorFlow タスクに対応します。分散 TensorFlow のドキュメントで、クラスタ仕様とタスクについて説明しています。

GPU デバイス文字列

standard_gpu マシンの単一の GPU は "/gpu:0" として識別されます。複数の GPU を持つマシンは、"/gpu:0" から "/gpu:<var>n</var>" の範囲の ID を使用します。たとえば、complex_model_m_gpu のマシンには GPU が 4 個あり、ID は "/gpu:0" から "/gpu:3" までとなります。

次のステップ

フィードバックを送信...

Cloud Machine Learning Engine(Cloud ML Engine)