初识分布式训练

news/2025/11/9 18:39:40/文章来源:https://www.cnblogs.com/rifo/p/19204672

假设有N块GPU,模型有ψ个参数。

前提知识:每个参数对应一个梯度值,且SGD每个参数对应一个一阶动量,Adam每个参数对应一个一阶、一个二阶动量


DP(data parallel)

​ 数据并行(单进程,多线程,只用一个cpu核),每个GPU上都保存完整的模型参数(param,or p)与优化器状态(optimizer state,or os)。磁盘读取数据,通过一个cpu进程将数据分成多份,每个GPU一份,反向传播结束后,得到各自完整的梯度,其他GPU将各自计算的梯度同步到GPU0上,由GPU0的优化器平均梯度后并更新GPU0的参数,再将更新后的参数广播给其他GPU。

​ 各GPU的通信量如下:(其中N-1为其余GPU数,ψ为梯度更新一次的通信量)

image-20251109151601496

DP的问题在于:(1)单进程多线程,只能利用一个CPU核(2)GPU0的通信与计算压力大于其他GPU


DDP(distributed data parallel)

​ 分布式数据并行(多进程), 每个GPU上也都保存完整的模型参数(param,or p)与优化器状态(optimizer state,or os)。相比DP而言,用各自的优化器计算ring-allreduce后的梯度并更新参数,网络状态和优化器状态始终保持同步

Ring-AllReduce两个阶段:scatter-reduce和allgather

scatter-reduce示意图如下,每个GPU存有a、b、c,共3个梯度,经过3(模型参数量、梯度量即ψ)个通信回合,每个GPU上都有一个梯度值是完整的。(这个阶段梯度传递并相加)

image-20251109151621221

image-20251109151646671

image-20251109151700939

allgather示意图如下,(梯度传递并直接覆盖)。

image-20251109152204246

image-20251109152357859

​ 此外,为了提升效率,将梯度分组,先计算出来的那组梯度开始ring-allreduce同步,此时下一组梯度也正在被计算。

​ 边计算边同步梯度

image-20251109153026200

DDP通信量如下:(其中N-1为通信次数,ψ/N为单次通信量)

image-20251109153306588


Deepspeed ZeRO

DP和DDP每个模型都需要存储完整的模型参数、梯度、优化器状态。使用Adam优化器的显存占用如图

image-20251109162846309

而Deepspeed ZeRO-1、-2、-3分别对这三者做了处理,每张卡的显存占用如下图(baseline为标准DDP)​

DDP的显存为fp16(2B)参数+fp16(2B)梯度+优化器(12B=4B一阶动量+4B二阶动量+4B参数)

ds-zero-1:相比DDP优化了优化器显存

ds-zero-2:相比DDP优化了优化器显存+梯度显存

ds-zero-3:相比DDP优化了优化器显存+梯度显存+参数显存

image-20251109162720759

Deepspeed ZeRO-1

​ 以3个GPU为例(Aadm+AWP),每个GPU上的梯度和参数是完整的,但优化器不是,整个过程如下:

image-20251109164146430

  1. 同步:每个GPU从后往前计算梯度,当最后1/3的梯度计算完成,GPU0和GPU1将其同步给GPU2,计算呢后1/3的梯度均值;与此同时,3个GPU计算计算中间1/3的梯度,并同步给GPU1;前1/3的梯度,同步给GPU0;到此各GPU都拿到了自己负责那部分的梯度均值(fp16)。

  2. 更新:接着将fp16转为fp32(不存储)->进行缩放->更新优化器的fp32一阶动量和二阶动量->更新fp32的参数(master-weights)

    ->更新各自fp16的参数。

  3. 广播:广播各自那部分的fp16参数给其他GPU。

通信量分析:(N-1表示GPU数量,ψ/N为其余每个GPU同步的梯度量)

image-20251109164439787

Deepspeed ZeRO-2

相比ZeRO-1,梯度不再是每个GPU都需要保存,而是以桶(DDP中的桶)的形式同步给负责该部分梯度的GPU后释放该部分显存占用。

image-20251109172820129

  1. 同步:每个GPU从后往前计算梯度,当一桶的梯度计算完成,就将梯度同步给负责该部分梯度的GPU,其他GPU立即释放该部分的显存占用。
  2. 更新:反向传播完成,每个GPU都有了自己所负责部分的平均梯度,像ZeRO-1 2.那样更新参数。
  3. 广播:广播各自那部分的fp16参数给其他GPU。

通信量分析:与ZeRO-1通信量相同,显存进一步减少

Deepspeed ZeRO-3

再ZeRO-2的基础上对参数也进行划分。image-20251109174512439

  1. 计算梯度:广播参数,进行前向传播,计算该部分输出后释放所占用显存;反向传播时,再广播参数,进行梯度计算,并释放该部分参数显存。
  2. 更新:反向传播完成,每个GPU都有了自己所负责部分的平均梯度,像ZeRO-1 2.那样更新参数。

通信量分析:相比之前,不再需要第三步广播参数,但是仍然需要前向传播时分块广播参数,这个地方通信量不变;但是新增了反向传播时的参数广播开销约等于ψ,故单GPU的传入/传出:3ψ。

image-20251109174452652


总结:

deepspeed就是在DDP的基础上,减少单个GPU的显存占用的同时,-1、-2保存通信量不变,-3增加到了1.5倍,常用-2版本。

分布式训练的概览是这样,具体一些细节还在探索中~


参考:

https://www.bilibili.com/video/BV1mm42137X8/?spm_id_from=333.337.search-card.all.click&vd_source=da862fa7a218e81897b55d7e24fe26ee

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/960646.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

电脑监控软件,后台监控,适合家庭电脑、员工电脑监控

电脑监控软件,后台监控,适合家庭电脑、员工电脑监控 支持异地远程访问,终身授权,可月付年付 不限设备数量,支持win7、10、11 1、电脑位置显示 2、桌面远程观看 3、桌面文件下载 4、完整记录按键输入 5、智能屏幕快…

题解:P10856 【MX-X2-T5】「Cfz Round 4」Xor-Forces

题解 首先,我们先考虑简单的情况,没有修改操作。 由题意得,一段区间颜色段个数可以转化为区间长度减去相邻同色个数,即区间 \([l,r]\) 的颜色段数为 \(r-l+1- \sum^r_{i=l+1}[a_i=a_{i-1}]\)。 考虑线段树,那么一…

python: Virtualenv的安装与应用

一,安装Virtualenv 以ubuntu为例: 安装pip # apt install python3-pip 安装virtualenv # apt install python3-virtualenv二,创建环境 $ virtualenv -p /usr/bin/python3.12 myenv 三,进入/退出 环境 进入 $ sourc…

题解:AT_abc147_f [ABC147F] Sum Difference

题意 在一个等差数列中取出若干个元素,求取出的元素与未取出的元素的差值有多少种可能。 思路 首先,我们有一个式子: \[w(i)=\sum_{i \in S}A_i-\sum_{i \notin S}A_i \]不难看出,该式可以变为: \[w(i)=2\times \…

20231326《密码系统设计》第八周预习报告

20231326《密码系统设计》第八周预习报告 目录20231326《密码系统设计》第八周预习报告学习内容《Windows C/C++加密解密实战》第 12 章1. 什么是 SSL 协议 (Secure Sockets Layer)2. SSL/TLS 协议发展历程3. SSL v3/T…

PERL Docker 容器化部署指南

PERL(Practical Extraction and Reporting Language)是一种高级、通用、解释型、动态编程语言,其语法借鉴了C、Shell脚本、AWK和sed等多种语言特性,广泛应用于系统管理、Web开发、网络编程等领域。通过Docker容器化…

解放双手!使用Roslyn生成代码让你的 HTTP 客户端开发变得如此简单

在现代 .NET 开发中,源代码生成器(Source Generators)是一项强大的功能,它允许开发者在编译时自动生成代码,从而减少样板代码的编写,提高开发效率和代码质量。本文主要介绍使用Roslyn实现两个代码生成器:HttpCl…

pandoc用法

要将你的 `文件V5.0_2.docx` 文件转换为 Markdown 格式,使用 **Pandoc** 是一个非常直接的选择。我已经为你准备好了相应的命令,并补充了一些实用技巧。 ### 📝 核心转换命令 在终端或命令行中,导航到你的 `.docx…

JMeter:性能测试利器全解析 - 实践

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

251109

JT-JY13T1S1Hello, Tourist information center, Mike speaking, how can i help you? Hi, i want to find out about cockery classes. I believe there is some one-day calsses for tourists. Well, they are open…

electron-vite为linux打包成功,但是安装后运行无反应

属于shark插件没有运行 在代码中使用动态导入,如果导入成功就使用shark压缩,如果没有就不压缩。 `// 动态导入 sharp,如果加载失败则优雅降级 let sharp: any = null let sharpAvailable = false async function lo…

吐血推荐!6款超好用的AI论文写作工具

吐血推荐!6款超好用的AI论文写作工具 在学术写作这条漫长的道路上,高效的工具常常能够助力前行。本文会为你详细介绍6款备受赞誉的AI论文写作工具,让你在论文创作时如虎添翼。 1. 鲲鹏智写:一站式论文深度解决方案…

完整教程:金蝶云星瀚 | 生产制造成本核算终极实操手册(从0到1,含两套完整案例)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

PHP中各种超全局变量使用

在PHP中,超全局变量是由PHP系统预先定义的一套变量,它们在脚本的所有作用域中都是可用的。这意味着开发者不需要执行特定的global语句就能访问这些变量。以下是一些常用的PHP超全局变量以及它们的使用方法和注意事项…

详细介绍:对于返回倒数第 k 个节点、链表的回文结构、链表相交题目的解析

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

实用指南:TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 自动微分和梯度

实用指南:TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 自动微分和梯度pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-…

浏览器Blockstack.org全名字段输入限制缺失漏洞分析

本文详细分析了Blockstack浏览器端全名字段缺乏输入长度限制导致的服务中断风险,包括漏洞发现过程、安全影响评估以及开发团队与安全研究员的讨论过程。漏洞报告 #304073 - browser.blockstack.org 全名字段字符串大小…

2025年维修厂家推荐排行榜单:行业权威解析

摘要 随着制冷行业在2025年的快速发展,维修厂家在保障设备高效运行中扮演关键角色。本文基于行业数据和用户口碑,解析2025年维修厂家排行榜单,重点推荐优质服务商,并提供详细表单供参考,帮助用户选择可靠的合作伙…

2025年维修厂家口碑排行榜:专业制冷服务首选

摘要 2025年维修厂家行业正迎来技术革新与市场需求增长,制冷设备维修服务成为关键领域。本文基于行业数据与用户反馈,推出维修厂家推荐排行榜单,旨在帮助用户选择靠谱的合作伙伴。榜单涵盖口碑、实力、服务等多维度…