单机多卡训练-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数据
相关推荐
TL滕几秒前
从0开始学算法——第十二天(KMP算法练习)
笔记·学习·算法
TG:@yunlaoda360 云老大27 分钟前
腾讯云国际站代理商TACO Kit有什么优势呢?
学习·云计算·腾讯云
半夏知半秋1 小时前
Elasticsearch Query DSL 指令整理
大数据·数据库·笔记·学习·elasticsearch·搜索引擎·全文检索
BFT白芙堂1 小时前
Franka机械臂“举一反三”:LLM Trainer如何通过单次演示实现自动化数据生成与长程任务学习
人工智能·学习·机器学习·自动化·模型训练·具身智能·franka
van久2 小时前
.Net Core 学习:Razor Pages中 HTML 表头字段的两种写法对比
学习·html·.netcore
2501_916766542 小时前
【Git学习】Git的tag标签
git·学习
m0_564876842 小时前
卷积学习录
深度学习·学习·cnn
阿蒙Amon2 小时前
JavaScript学习笔记:2.基础语法与数据类型
javascript·笔记·学习
道19932 小时前
PyTorch 从小白到高级全阶段学习大纲(一)
人工智能·pytorch·学习
光影少年2 小时前
前端ai开发需要学习哪些东西?
前端·人工智能·学习