单机多卡训练-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数据
相关推荐
该学习了咕咕2 小时前
顶刊论文学习笔记
学习
Linux-lucky4 小时前
45-Linux学习之旅之防火墙与WEB加固
linux·前端·网络·学习·ubuntu
li星野4 小时前
【学习记录】k-Wave 时间步长、CFL 稳定性与参数实验全解析
学习
心祭丫丫7 小时前
【每天一个 Python 小案例17】Python 实现通讯录
开发语言·人工智能·笔记·python·学习
Nerd(BUG版)10 小时前
Flutter学习day5--事件手势与命中测试
学习·flutter
Nerd(BUG版)11 小时前
KMP学习day4--Kotlin空安全与泛型
学习·安全·kotlin
東隅已逝,桑榆非晚11 小时前
算法6. 双指针法-查找总价格为目标的两个商品
c++·学习·算法
wdyan29712 小时前
带着小白学习-微服务-5 实战:配置中心-数据库连接
数据库·学习·微服务
叼烟扛炮13 小时前
Linux 学习笔记(五十):网络层——IP 协议、子网划分与 NAT 魔法
linux·笔记·学习
叼烟扛炮13 小时前
Linux 学习笔记(六十):单线程的逆袭——epoll 高并发服务器实战
linux·服务器·网络·笔记·学习·算法