2016-07-11 7 views
3

複数のgpusに渡ってテンソルフローの分散バージョンをテストする必要があります。Tensorflow。 Cifar10 Multi-gpuの例がより多くのgpusで悪化する

私はAWS g2.8x EC2インスタンスでCifar-10マルチ-gpuの例を実行します。

cifar10_multi_gpu_train.py(コードhere)の2000ステップの実行時間は、1 gpu(flag num_gpu=1)で427秒でした。その後、eval.pyスクリプトは精度@ 1 = 0.537を返しました。同じ例では、(一の段階で全てのGPUに並列に実行される)工程の同じ数のために実行されているが、4つのGPUを使用して

は( flag num_gpu=4)実行時間は約 530秒であり、 eval.pyスクリプトがわずかに高いだけ返さ0.552の精度@ 1(おそらく計算上のランダム性によるものでしょうか?)

gpusの数が多いほど、パフォーマンスが悪化するのはなぜですか?私は、テスト目的で非常に少数のステップを使用しており、4つのgpusを使用して、精度がはるかに高いことを期待していました。 私は何かを見逃したり、いくつかの基本的な間違いを犯しましたか? 他の人が上記の例を試しましたか?

ありがとうございました。

答えて

0

cifar10の例では、デフォルトでCPU上に変数が使用されています。これは、マルチGPUアーキテクチャに必要なものです。 2つのGPUを使用する単一のGPUセットアップと比較して、約1.5倍のスピードアップを実現できます。

問題はNvidia Tesla K80のデュアルGPUアーキテクチャと関係があります。両方のGPUカードを内部的に通信するPCIeスイッチを備えています。通信上のオーバーヘッドを導入するものとする。ブロックダイアグラムを参照してください。 enter image description here

+0

GCPで2つのNvidia Tesla K80で同じ問題が発生しました。デュアルアーキテクチャーが内部GK210 GPUにどのようなオーバーヘッドをもたらすのかを見ています。しかし、私は2つの別個のK80があるという印象を受けていました(下記の印刷画面参照):https://postimg.org/image/pitpneai9/、私たちの設定はGK210を持つ単なるK80ですと思いますか? – Fematich

関連する問題