pytorch中,相同的batchsize,多GPU會比單GPU快多少?雙路能是單路的兩倍嗎?

時間 2021-05-06 18:34:19

1樓:張懷文

相同的batchsize, 多gpu會不會比單卡快都是個問題。

我遇到過多卡時候,每個卡頻率撞牆的問題,甚至比單卡慢。

就是快的時候,也不會有N張卡,提速N倍的能力。

多卡並行相關程式的開銷、多卡策略的開銷都不小。

2樓:勒布朗詹姆斯哈登

不會,pytorch有很多計算都是只在第一塊卡上進行的。

而且如果雙卡散熱不好,顯示卡無法在最高頻率執行,甚至速度比單卡快不了多少。

3樓:eric

基本不可能,光資料通訊和計算路徑依賴都一堆開銷,

把計算圖畫一下,看看計算開銷權重和依賴就很直觀了。

ps:還要考慮是計算瓶頸還是io瓶頸,話說,你只要調整bs,還真能調出兩倍的情況。

4樓:

肯定低於單卡兩倍,比較好的版本可能達到3.2x+/4卡的提速。具體要你實測,下面是一些想到的變數:

並行方式為資料並行,同時bs不變意味著單卡的bs變小,GPU利用率可能會下降。

多個GPU之間是需要通訊/計算/回傳梯度的,此時不同硬體、不同互動方式(蝶式,環式?)的IO開銷是不同的。

多GPU可能涉及某些操作(sysc BN?)更改,效率也會影響。

5樓:YJCCC

一般低於兩倍 1. gradient的communication有開銷 2. weights的update有開銷

具體的速度提公升要根據model的性質,如果weight reuse比較大,一般速度提公升會大一些

PyTorch 中,nn 與 nn functional 有什麼區別?

老實人 上面使用者有糖吃可好 講的已經挺好了,我再插兩句 在建圖過程中,往往有兩種層,一種含引數 有Variable,如全連線層,卷積層 Batch Normlization層等 另一種不含引數 無Variable,如Pooling層,Relu層,損失函式層等。閱讀原始碼發現 nn.裡面的是繼承自n...

pytorch 中的Dataset這個類為什麼可以呼叫 getitem ?

王小山 在DataLoder的iter中,會觸發子類Dataset中的getiterm函式讀取資料,並拼接成乙個batch返回,作為模型真正的輸入 操作符過載 如果乙個類定義了名為 getitem 的方法,x為該類的乙個例項 x i 可是為x.getitem x,i Goodbye響 我覺得題主你想...

pytorch 發現反向函式中的grad variables引數是什麼意思?

蕊寒香冷蝶難來 如果反向傳播的張量y是非標量的話,該項引數需要設定乙個與y的shape相同的初值,一般可以直接設定為y.backward torch.ones y.shape 其實如果再令z y.sum 再直接用z.backward 也是一樣的效果。 學到這裡我也很疑惑,於是剛寫了一篇文章 PyTo...