1.分布式训练
分类:
- Data Parrallel:每个GPU上复制一份完整模型,但每个GPU上的训练数据不同
- Pipeline Parrallel:模型按层拆开
- Tensor Parrallel:每层的权重拆开
- 3D并行:上面的合体
2.Data Parrallel(nn.DataParallel)
Data Parrallel:每个GPU上复制一份完整模型,但每个GPU上的训练数据不同;如果单卡无法运行完整流程则无法使用。
流程:
- GPU0 载入model和batch数据
- batch数据从GPU0分发到各卡
- model从GPU0复制到各卡
- 各卡同时前向传播
- GPU0收集各卡的输出计算loss
- loss分发至各卡反向传播计算梯度
- GPU0收集各卡梯度,更新模型