pytorch多GPU加速出錯

2021-09-28 18:32:05 字數 672 閱讀 5773

runtimeerror: cuda out of memory. tried to allocate 46.00 mib (gpu 0; 10.76 gib total capacity; 839.60 mib already allocated; 24.56 mib free; 44.40 mib cached)
這個錯誤花費了一天半左右的時間,心態差點蹦了,還好有神人指導,堅持下來了。

錯誤問題的解決思路

pytorch多gpu加速的可能原理

同時,還發現多gpu載入資料時的可能性。pytorch使用dataparallel實現單機多gpu加速,會將模型複製到加速的gpu上,資料按照batch-size除以加速gpu數量,最後將加速的結果拼接在一起放到第乙個gpu上面。實驗中使用了兩塊gpu加速,同時,呼叫了兩次dataloader,第乙個dataloader中batch-size的大小設定為10,第二個設定為10,此時兩塊gpu會達到近似1:1的情況,不出出現本文的問題,當dataloader的batch-size的大小分別設定為5和15時,前一塊gpu會比後一塊gpu的數量大很多,以至於更快的達到視訊記憶體的極限,出現了本文的問題。

我認為這兩種情況的可能原因是,當加速資料可以平均分配時,會在多gpu合適的進行,但是無法分配時,可能更多的借助於第一塊gpu,所以造成第一塊更快的達到極限,更有可能視訊記憶體崩掉。

Pytorch中多GPU訓練

參考 在資料越來越多的時代,隨著模型規模引數的增多,以及資料量的不斷提公升,使用多gpu去訓練是不可避免的事情。pytorch在0.4.0及以後的版本中已經提供了多gpu訓練的方式,本文簡單講解下使用pytorch多gpu訓練的方式以及一些注意的地方。這裡我們談論的是單主機多gpus訓練,與分布式訓...

pytorch 多GPU訓練(單機多卡 多機多卡)

首先是資料集的分布處理 需要用到的包 torch.utils.data.distributed.distributedsampler torch.utils.data.dataloader torch.utils.data.dataset distributedsampler這個包我們用來確保dat...

pytorch 多GPU訓練注意事項

1.多gpu訓練記得dataloader dataset dataset train,batch size config train batch shuffle config train shuffle num workers config train workers drop last true ...