分布式训练DP与DDP

动画理解Pytorch 大模型分布式训练技术 DP,DDP,DeepSpeed ZeRO技术_哔哩哔哩_bilibili

单卡运行流程

DP(data parallel)

从硬盘读取数据,然后一个cpu进程将数据分成多份,给每个GPU训练,然后计算出梯度 进行网络更新(无效更新),然后再将各个GPU算出来的梯度,返回到gpu0进行梯度平均,再更新网络0,网络0再把更新后的网络参数广播到其他网络上。

DP存在的问题: 单进程,多线程,Python GIL只能利用一个CPU核。

GPU0负责手机梯度,更新参数,同步参数,通信,计算压力大。(即卡间负载极不平衡)

DDP: 让每个GPU都能进行接收处理以及通讯。

图中scatter的意思是,通过分发,让不同的节点有不同的值,reduce 的意思是 收集所有节点的值,并进行计算。

allgather 的意思是,把更新后的值,同步到 各个GPU,最后完成更新。充分利用各个GPU上下行的带宽。

计算参数梯度的个数满一个'桶'的时候,就开始流水并行化更新同步。

(他会预先分配好,哪些参数该谁更新,这样就避免了一个参数连圈转的发送和接收(相当于原来是A给B给C给D,现在是,A,B,C直接给D了)

相关推荐
kfaino1 小时前
码农的AI翻身(四)你好,我叫 Attention
人工智能·后端
雨落Re3 小时前
如何设计一个高质量Skill
人工智能
Token炼金师3 小时前
大模型权重文件全指南:从格式选择到优化实战
人工智能
阿牛哥_GX3 小时前
CDP 浏览器操控原理:让脚本接管你的浏览器
人工智能
ThreeS3 小时前
手搓MiniVLA全实战教程-一步一步用pytorch解释原理与思路
人工智能·python
米小虾4 小时前
Loop Engineering —— 循环的设计与自主执行
人工智能·agent
米小虾5 小时前
Harness Engineering —— 系统的安全护栏
人工智能·agent
火山引擎开发者社区5 小时前
积分当钱花,火山引擎开发者激励计划首月消费双倍回馈
人工智能
aqi005 小时前
15天学会AI应用开发(十)把文本嵌入模型换成国产模型
人工智能·python·ai编程