Pytorch多GPU訓練踩坑記錄2

2021-10-23 09:10:17 字數 436 閱讀 4516

使用nn.dataparallel進行多gpu訓練時,對模型進行傳參,有時會出現報錯「runtimeerror: chunk expects at least a 1-dimensional tensor」。

nn.dataparallel的作用是將模型和資料分配到各個gpu上,讓其在各自的gpu上訓練,首先檢查batchsize是否是gpu數量的整數倍,以及dataloader是否設定了drop_last是否是true,如果沒有drop_last,那麼最後乙個batchsize剩下的數量可能不是gpu數量的整數倍,那麼也會出現此錯。如果以上情況都不是報錯原因,還有乙個原因可能是:對模型進行傳參時,有可能傳遞了標量。

nn.dataparallel沒法將標量分散然後分配給各個gpu,因此,多gpu訓練時,最好避免傳參為標量,一定要傳遞這個此引數的話,最好在nn.dataparallel之前傳參,或者最好把引數改為張量。

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 ...