日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

Pytorch:数据并行和模型并行,解决训练过程中内存分配不均衡的问题

發布時間:2025/3/8 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Pytorch:数据并行和模型并行,解决训练过程中内存分配不均衡的问题 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

文章目錄

  • 數據并行

單機多卡訓練,即并行訓練。并行訓練又分為數據并行 (Data Parallelism) 和模型并行兩種。

數據并行指的是,多張 GPU 使用相同的模型副本,但是使用不同的數據批進行訓練。而模型并行指的是,多張GPU 分別訓練模型的不同部分,使用同一批數據。

數據并行

torch.nn.DataParallel(module, device_ids=None, output_device=None, dim=0)

【參數】

module : 要進行并行的 module。這里隱含了一點 ,即網絡中的某一層也是可以進行數據并行的,但是一般不會這么使用。
device_ids : CUDA 列表,可以為 torch.device 類型,也可以是編號組成的 int 列表。默認使用全部 GPU
output_device : 某一 GPU 編號或 torch.device 。指定輸出的 GPU,默認為第一個,即 device_ids[0]

數據并行的具體原理流程為:

1.將模型加載至主設備上,作為 controller,一般設置為 cuda:0
在每次迭代時,執行如下操作:
2.將 controller 模型復制(broadcast)到每一個指定的 GPU 上
將總輸入的數據 batch,進行均分,分別作為各對應副本的輸入 (scatter)
3.每個副本獨立進行前向傳播,并進行反向傳播,但只是求取梯度
4.將各副本的梯度匯總(gather)到 controller 設備,并進行求和 (reduced add) During the backwards pass, gradients from each replica are summed into the original module.
5.更具總體度,更新 controller 設備上的參數

總結

以上是生活随笔為你收集整理的Pytorch:数据并行和模型并行,解决训练过程中内存分配不均衡的问题的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。