2016-07-11 55 views
3

我必須測試跨多個gpus的tensorflow的分佈式版本。Tensorflow。 Cifar10多gpu示例在更多gpus中表現更差

我在AWS g2.8x EC2實例上運行Cifar-10多gpu示例。

cifar10_multi_gpu_train.py(代碼here)的2000步的運行時間爲427秒,1 gpu(flag num_gpu=1)。之後,eval.py腳本返回精度@ 1 = 0.537。

在相同的實施例也使用相同的數目的步驟(其中一個步驟中在並行地在所有的GPU執行),但使用4個GPU(flag num_gpu=4)運行時間爲約530秒和eval.py腳本返回只略高精度@ 0.552(可能是由於計算中的隨機性)。

爲什麼這個例子在更高的gpus數量下表現更差?爲了測試目的,我使用了很少的步驟,並且期望使用4 gpus的精度獲得更高的增益。 我錯過了什麼或者犯了一些基本錯誤? 有人試過上面的例子嗎?

非常感謝。

回答

0

cifar10示例默認使用CPU上的變量,這是多GPU架構所需的。與具有2個GPU的單個GPU設置相比,您可以實現約1.5倍的加速。

您的問題與Nvidia Tesla K80的雙GPU架構有關。它有一個PCIe交換機可以在內部與兩個GPU卡進行通信。它會引起溝通的開銷。見框圖: enter image description here

+0

我在GCP上遇到了與2個Nvidia Tesla K80相同的問題。我看到雙重架構如何給內部GK210 GPU帶來很多開銷。然而,我的印象是,我們有兩個獨立的K80(見下面的打印屏幕):https://postimg.org/image/pitpneai9/,你認爲我們的設置只是一個K80與GK210s? – Fematich