1

Googleのクラウドml-engineで非常に大きなTensorflowモデルを実行しています。 (batch_size=1付き)規模階層basic_gpuを使用している場合、私のようなエラーが出る:モデルが収まるように大きすぎるため形状[1,155,240,240,16]Tensorflow。 GPU間でopsを配布する方法

とテンソルを割り当てるときOOM:

排出リソースを1つのGPUで

4つのGPUを提供する階層comple_model_m_gpuを使用して、4つのGPU間で操作を分散できます。

しかし、私はGPU間の通信が遅いことを覚えており、トレーニングでボトルネックが発生する可能性があります。これは本当ですか?

もしそうなら、この問題を防ぐGPU間で操作を広げることをお勧めしますか?ガイドから

Optimizing for GPU

答えて

3

は、私は、次のガイドをお勧めします

変数の更新を処理する最善のアプローチは、ハードウェアを持っていてもどのようにモデル、 ハードウェア、および依存する

設定されました。

ガイドに基づいていくつかの提案:

  • は(K80s上の12と比較して)16 GBのRAMを有するP100sを使用してみてください。 tf.train.replica_device_setter(worker_device=worker, ps_device='/cpu:0', ps_tasks=1)
+0

ガイドで使用されている手法は、GPU間でモデルのコピーを作成し、それぞれ異なるデータを処理します。私のモデルは1つのGPUに収まらないので、1つのバッチを処理するために複数のGPUを使用する必要があります。私はK80を使用しています。モデルは[VNet](https://arxiv.org/abs/1606.04797)と呼ばれています – Miguel

+0

いくつかの具体的な提案で答えを更新 – rhaertel80

+0

ありがとう、私はすでにPSとCPUに変数を配置しています、私はより強力なGPU。私は最終的な解決策は入力をより小さなテンソルに分割しなければならないと思う。 – Miguel

0

テスラP100のGPUを使用する代わりにP100sがPage Migration Engineと呼ばれるものを持っているので、テスラK80 GPUは、この問題が修正されています。彼らはまた、CPU上の変数がより

  • 場所の費用が、それらは、大幅に高速化もされています。

    Page Migration Engineを使用すると、パフォーマンスの計算には、 のパフォーマンスの調整に集中し、データの移動の管理は、より多くの開発者に集中できます。アプリケーション は、GPUの物理メモリサイズを超えて実質的に という量のメモリにスケールアップできるようになりました。

  • 関連する問題