单机多卡训练-DDP

DDP原理:

为什么快?

DDP通过Ring-Reduce(梯度合并)的数据交换方法提高了通讯效率,并通过启动多个进程的方式减轻Python GIL的限制,从而提高训练速度。

神经网络中的并行有以下三种形式:

  1. Data Parallelism
    1. 这是最常见的形式,通俗来讲,就是增大batch size提高并行度。
      1. 平时我们看到的多卡并行就属于这种。比如DP、DDP都是。这能让我们方便地利用多卡计算资源。
    2. 能加速。
  2. Model Parallelism
    1. 把模型放在不同GPU上,计算是并行的。
    2. 有可能是加速的,看通讯效率。
  3. Workload Partitioning
    1. 把模型放在不同GPU上,但计算是串行的。
    2. 不能加速。

参考:[原创][深度][PyTorch] DDP系列第一篇:入门教程 - 知乎 (zhihu.com)

[原创][深度][PyTorch] DDP系列第一篇:入门教程 - 知乎 (zhihu.com)

注意点:

  1. 保存模型:

考虑到以后可能需要单卡加载你多卡训练的模型 ,建议在保存模型时,去除模型参数字典里面的module,如何去除呢,使用model.module.state_dict()代替model.state_dict()

2. 每一个epoch里面真正的打乱数据

复制代码
for epoch in range(args.num_epochs):
    train_sampler.set_epoch(epoch)  # shuffle数据
相关推荐
jz_ddk6 小时前
[学习] 卫星导航的码相位与载波相位计算
学习·算法·gps·gnss·北斗
华清远见成都中心6 小时前
人工智能要学习的课程有哪些?
人工智能·学习
hssfscv7 小时前
Javaweb学习笔记——后端实战2_部门管理
java·笔记·学习
白帽子黑客罗哥7 小时前
不同就业方向(如AI、网络安全、前端开发)的具体学习路径和技能要求是什么?
人工智能·学习·web安全
于越海8 小时前
材料电子理论核心四个基本模型的python编程学习
开发语言·笔记·python·学习·学习方法
我命由我123458 小时前
开发中的英语积累 P26:Recursive、Parser、Pair、Matrix、Inset、Appropriate
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
北岛寒沫8 小时前
北京大学国家发展研究院 经济学原理课程笔记(第二十三课 货币供应与通货膨胀)
经验分享·笔记·学习
知识分享小能手8 小时前
Ubuntu入门学习教程,从入门到精通,Ubuntu 22.04中的Java与Android开发环境 (20)
java·学习·ubuntu
好奇龙猫8 小时前
【大学院-筆記試験練習:数据库(データベース問題訓練) と 软件工程(ソフトウェア)(10)】
学习
wdfk_prog9 小时前
[Linux]学习笔记系列 -- [fs][proc]
linux·笔记·学习