当前位置: 首页 > article >正文

优化DeepSpeed ZeRO,让大模型训练更经济

现代自然语言处理应用大多建立在预训练语言模型之上这些模型编码了整门语言的词序列概率。随着时间的推移这些模型变得越来越大达到数十亿甚至数万亿参数的规模。在合理的时间内训练这些模型需要非常庞大的计算集群而集群间巨大的通信量可能会阻塞计算导致GPU利用率低下。因此需要精心管理GPU之间的通信以避免其成为性能瓶颈。微软的DeepSpeed分布式训练库引入了一种名为“零冗余优化器”ZeRO的管理技术。ZeRO的工作原理是将机器学习模型的状态分区到分布式工作节点上并在训练过程中根据需要从其他工作节点获取必要的模型状态。ZeRO有多个“阶段”每个阶段都通过降低内存需求来训练更大的模型但这通常是以增加通信量为代价的。虽然微软研究人员使用这项技术实现了理想的扩展性能但他们仅在专用的超大规模集群上进行了实验报告该集群使用了昂贵的高速InfiniBand网络具体来说是某图形处理器厂商的DGX系统。为了降低需要高性能计算的客户成本某机构使用弹性结构适配器EFA网络替代InfiniBand。其p4d.24xlarge计算基础设施实例上可用的EFA其通信带宽低于某DGX超大规模集群上的InfiniBand因此预计带宽密集型任务的性能会有所下降。然而当尝试重现微软的结果时发现ZeRO第三阶段的性能相对下降幅度是第二阶段的两倍。对训练过程进行了分析以寻找瓶颈并观察到在ZeRO第三阶段中通信占据了训练的主导地位。为了缩小与配备InfiniBand的DGX集群上所获结果的性能差距对ZeRO第三阶段进行了一系列优化。下表展示了在某机构p4d.24xlarge实例上训练RoBERTa语言模型时优化所带来的整体性能提升。模型GPU数量每GPU TFLOPSRoBERTa-10B64优化后123 teraflops未优化73 teraflopsRoBERTa-50B64优化后154 teraflops未优化89 teraflops今年一月将这些优化合并到了DeepSpeed代码仓库中供公众使用。优化优化大致可分为三类1改善通信与计算的重叠2优化带宽利用率3提升内存效率。同步/并行度通信与计算流的细粒度同步在带宽较低或规模较大的集群中通信时间占主导地位因此通过计算与计算重叠来掩盖通信成本至关重要。通过分析发现ZeRO过于粗粒度的同步限制了这种重叠。这导致了两种分布式计算操作的重叠水平不理想allgather从网络中的所有工作节点聚合数据此处为模型参数和reduce-scatter跨工作节点归约数据此处为梯度求和。由于通信持续阻塞计算操作这两个操作导致了GPU利用率低下。为此对参数收集和梯度reduce-scatter路径进行了重大更改以减少或消除同步同时保证正确性。经过这些更改后能够实现更好的重叠从而显著减少计算空闲时间。Python获取和分区决策的预计算/缓存训练期间需要做出许多复杂决策涉及应获取哪些参数、接下来将使用哪些参数、哪些参数可能很快被重用而应保留以及哪些可以释放。这些操作速度慢经常导致Python进程无法持续为GPU提供任务从而产生大量计算空闲时间。通过预计算或缓存尽可能多的决策来优化这一点使其计算速度大幅提升以至于不再影响训练吞吐量。通信/带宽使用批量化allgather/reduce-scatter调用发现批量化集合通信操作——allgather和reduce-scatter——可以更有效地利用带宽并分摊运行执行这些操作的计算内核的固定成本。为了实现批量化集合通信将张量数据扁平化为单个连续的缓冲区以便在一次事务中发送。每个集合通信都需要一个特殊的交错方案以确保每个工作节点接收到正确的数据。内存实现ZeRO的方式与微软的实现一样都使用了某图形处理器厂商的并行计算平台。其内存分配既是同步的又是缓慢的因此PyTorch使用缓存分配器来避免不断重新分配内存的巨大成本。如果某个分配请求没有缓存或空闲块分配器将刷新其缓存。这会造成灾难性后果原因如下在刷新开始之前需要进行多次同步调用以允许完成对持有内存的计算。这及其后的空闲调用可能需要数秒时间。不同的工作节点不能保证同时刷新其缓存。这意味着对于任何集合通信只要有一个工作节点正在刷新其缓存其他N-1个工作节点就会阻塞等待该工作节点加入。随着集群规模增大对于任何给定的集合通信至少有一个工作节点正在刷新其缓存的概率也会增加。缓存刷新后后续分配需要调用malloc函数如前所述该函数既同步又缓慢。出于这些原因内存效率对性能至关重要。内存高效的批量化PyTorch集合通信尽管使用批量化集合通信显著减少了内核启动开销并提高了带宽利用率但由于将批量化张量扁平化为一个额外的缓冲区它也增加了内存消耗。为了避免在PyTorch集合通信中进行冗余的扁平化操作使用了集合通信操作的*_base变体这些变体接受预先扁平化的张量从而避免了在内部分配额外的扁平化缓冲区。在未来工作中计划使用某厂商通信库中基于组的批量化操作以消除所有扁平化操作。初始化时更积极地对参数分区进行碎片整理即使有超过10GB的可用GPU内存仍然观察到分配器缓存刷新的迹象这暗示了内存碎片问题。为了减少这种情况对初始化时的碎片整理进行了更改将所有持久化张量移动到一个连续的缓冲区中。其他优化除了上述优化之外还通过减少主机与设备间的数据移动和同步并将数学运算从for循环中移出整合为一次内核启动与并行计算从而优化了梯度归一化。移除了通过字符串格式化添加到调试消息中的张量操作因为这些操作会导致从主机到设备的复制意味着数据移动和主机-设备同步。通过使DeepSpeed ZeRO第三阶段在广泛可用的公共云产品上高效运行希望进一步推动大语言模型训练的普及。致谢Zhen Zhang, Stephen Rawls, Yida WangFINISHED更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手或者 我的个人博客 https://blog.qife122.com/对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享

相关文章:

优化DeepSpeed ZeRO,让大模型训练更经济

现代自然语言处理应用大多建立在预训练语言模型之上,这些模型编码了整门语言的词序列概率。随着时间的推移,这些模型变得越来越大,达到数十亿甚至数万亿参数的规模。在合理的时间内训练这些模型需要非常庞大的计算集群,而集群间巨…...

tabix实战指南:从基因组数据压缩到高效区域检索

1. 为什么需要tabix处理基因组数据 第一次接触基因组数据分析的朋友,经常会遇到这样的困扰:一个VCF变异文件动辄几十GB,用grep查个基因要等半小时;打开100MB的GFF注释文件时笔记本直接卡死;想提取某个染色体区间的BED数…...

VLAN隔离实战:如何用Python模拟ARP表项在不同VLAN间的不可见性

VLAN隔离实战:用Python模拟ARP表项在不同VLAN间的不可见性 作为一名网络工程师,你是否曾盯着交换机的配置界面,试图向新人解释为什么VLAN2里的主机无法直接“看到”VLAN3里的主机?或者,作为一名对网络原理感兴趣的开发…...

LLM之RAG实战(四十九)| AutoRAG进阶:如何通过自动化评估与优化打造高效RAG pipeline

1. AutoRAG进阶实战:自动化评估的核心逻辑 第一次接触AutoRAG时,我被它"自动优化RAG pipeline"的宣传吸引,但真正用起来才发现,这工具最厉害的地方在于它的自动化评估体系。就像汽车工厂的质检流水线,它能同…...

利用mimikatz和procdump在Windows系统下提取密码的实战技巧

1. 认识mimikatz和procdump这对黄金搭档 第一次接触mimikatz是在一次内部安全演练中,当时我正为如何验证系统密码强度发愁。这款由法国安全研究员Benjamin Delpy开发的小工具,用一条简单的命令就让我看到了系统里存储的明文密码,那种震撼至今…...

XC7Z100硬件设计实战:从原理图到板级系统搭建

1. XC7Z100芯片深度解析:从架构到选型 XC7Z100-2FFG900作为ZYNQ7000系列的旗舰型号,其独特之处在于将双核Cortex-A9处理器与7系列FPGA架构深度融合。我在实际项目中多次使用这款芯片,发现它特别适合需要高性能处理又要求硬件灵活定制的场景。…...

实战解析:220V转5V反激电源的Y电容选型与EMI抑制设计

1. 反激电源设计中的Y电容核心作用 第一次接触220V转5V反激电源设计时,我对电路板上那个小小的蓝色元件产生了好奇——它标着"Y1 2.2nF",跨接在变压器原副边之间。后来才知道,这个不起眼的Y电容竟是整个电源EMI性能的关键。在实际项…...

AnythingtoRealCharacters2511开源大模型部署教程:低成本GPU算力高效利用方案

AnythingtoRealCharacters2511开源大模型部署教程:低成本GPU算力高效利用方案 1. 教程简介 你是否曾经想过把喜欢的动漫角色变成真人形象?现在有了AnythingtoRealCharacters2511,这个基于Qwen-Image-Edit模型的开源工具,可以轻松…...

密码恢复技术新突破:ArchivePasswordTestTool的高效压缩包破解方案

密码恢复技术新突破:ArchivePasswordTestTool的高效压缩包破解方案 【免费下载链接】ArchivePasswordTestTool 利用7zip测试压缩包的功能 对加密压缩包进行自动化测试密码 项目地址: https://gitcode.com/gh_mirrors/ar/ArchivePasswordTestTool 当重要的加密…...

STM32串口升级实战:从Bootloader到APP跳转的完整流程(附Ymodem协议详解)

STM32串口升级实战:从Bootloader到APP跳转的完整流程(附Ymodem协议详解) 在嵌入式设备开发中,固件升级功能几乎是每个产品的标配需求。想象一下这样的场景:你的STM32设备已经部署在客户现场,突然发现了一个…...

哈弗枭龙和长安深蓝S7增程式对比,谁才是你的理想之选?

行业现状分析 在当前的新能源汽车市场中,竞争异常激烈。哈弗枭龙凭借其独特的技术和设计,在紧凑型SUV领域占据了一定的市场份额。它搭载的混动技术,为消费者提供了高效、节能的出行选择。长安深蓝S7增程式则以其时尚的外观和智能科技吸引了众…...

SageMath实战:5种方法破解离散对数难题(附Pollard-Rho算法避坑指南)

SageMath实战:5种方法破解离散对数难题(附Pollard-Rho算法避坑指南) 离散对数问题(Discrete Logarithm Problem, DLP)是密码学中的核心难题之一,广泛应用于ElGamal加密、Diffie-Hellman密钥交换和椭圆曲线密…...

如何快速掌握AI动画制作:5个实用技巧让ComfyUI-AnimateDiff-Evolved成为你的创作利器

如何快速掌握AI动画制作:5个实用技巧让ComfyUI-AnimateDiff-Evolved成为你的创作利器 【免费下载链接】ComfyUI-AnimateDiff-Evolved Improved AnimateDiff for ComfyUI 项目地址: https://gitcode.com/gh_mirrors/co/ComfyUI-AnimateDiff-Evolved 想要轻松制…...

杰理之立体声利用数字音量节点实现左右声道平衡【篇】

利用数字音量通过dB转换,去设置LR声道的数据大小,实现LR声道数据幅值不同达到声道平衡的目的,适配用户人耳情况...

InstructPix2Pix参数详解:Text Guidance与Image Guidance调节技巧

InstructPix2Pix参数详解:Text Guidance与Image Guidance调节技巧 1. 引言:理解AI修图的核心参数 当你第一次使用InstructPix2Pix时,可能会被两个参数搞糊涂:Text Guidance(听话程度)和Image Guidance&am…...

如何在iPhone上关闭关闭短信验证码互通至Mac

问题发现在使用过程中,发现有时候只是想在手机软件中输入验证码,即使手机上已读了,电脑还是会同步,甚至在微信,或者别的各个软件的输入框中,都会显示一键输入验证码,能不能加一个已读或者关闭的…...

嵌入式开发实战之--DMA配置详解(上)

1. DMA到底是什么?为什么嵌入式开发离不开它? 第一次接触DMA这个概念时,我也被它绕晕了。直到有一次调试SPI通信,CPU占用率直接飙到90%,屏幕刷新卡成PPT,才真正体会到DMA的价值。简单来说,DMA就…...

Rust高阶类型模拟:突破局限与编译挑战

【导语:本文围绕在Rust中模拟高阶类型(HKTs)展开,作者在编写函数式编程脚本语言时遇到Rust缺乏HKTs的问题,通过泛型关联类型(GATs)尝试解决,却引发了编译错误,揭示了Rust…...

PHP高并发架构设计、微服务拆分、消息队列削峰、容器化部署 (Docker/K8s)、CI/CD 流程的庖丁解牛

将 PHP 高并发架构、微服务拆分、消息队列削峰、容器化部署 (Docker/K8s)、CI/CD 流程 这五者结合,实际上构成了一个现代企业级 PHP 系统的完整生命周期。 高并发架构是目标(支撑海量流量);微服务拆分是手段(解耦复杂业…...

OPPO Find N6:折叠屏手机新势力的崛起与挑战

OPPO Find N6:零感折痕开启折叠屏新体验OPPO 推出的折叠屏手机 Find N6 带来了令人瞩目的“零感折痕”体验。借助液态 3D 打印铰链柱,其折痕是目前所有折叠屏手机中最浅的,几乎难以看到或摸到,虽未完全消失,但已近乎完…...

分布式拒绝服务攻击(DDOS)论文复现:Sin-Cos-bIAVOA方法探索

分布式拒绝服务攻击(DDOS)论文复现 实验复现 Matlab代码 Sin-Cos-bIAVOA: A new feature selection method based on improved African vulture optimization algorithm and a novel transfer function to DDoS attack detection 一种基于改进的非洲秃鹰…...

31:社会危害图谱分析:网络图论与社区检测算法

作者: HOS(安全风信子) 日期: 2026-03-15 主要来源平台: GitHub 摘要: 本文深入探讨如何构建社会危害图谱,通过网络图论和社区检测算法实现对犯罪网络的分析和识别。结合《死亡笔记》中魅上照的严谨风格,我…...

修车师傅都不知道的OBD冷知识:CAN总线接头隐藏的4种改装玩法

修车师傅都不知道的OBD冷知识:CAN总线接头隐藏的4种改装玩法 当你打开汽车OBD接口的塑料盖板时,看到的可能只是一个16针的标准诊断插座。但在这个看似平凡的接口背后,CAN总线接头的不同形态正在成为汽车改装界的"瑞士军刀"。从自制…...

抖音abogus参数逆向实战:从JSVMP混淆到算法还原的全过程

抖音abogus参数逆向实战:从JSVMP混淆到算法还原的全过程 在当今互联网环境中,数据安全与反爬虫技术日益复杂,作为开发者,理解主流平台的防护机制已成为必备技能。抖音作为头部短视频平台,其接口防护体系尤为严密&#…...

光伏储能系统电流传感器选型指南:从霍尔效应到磁通门技术

光伏储能系统电流传感器选型指南:从霍尔效应到磁通门技术 在光伏储能系统设计中,电流测量环节的精度与可靠性直接影响整个系统的发电效率与安全运行。随着双碳目标的推进,2023年全球光伏新增装机容量突破400GW,其中配备储能系统的…...

如何避免数据清洗中的常见坑?从缺失值到归一化的完整指南

数据清洗避坑实战:从缺失值陷阱到标准化误区 数据清洗是机器学习项目中最容易被低估的环节,却往往决定了80%的模型效果。我曾见过一个金融风控项目,团队花了三个月优化算法,最终发现问题竟源于原始数据中未被发现的传感器故障导致…...

旧手机秒变蓝牙键盘鼠标:实测这款神器比触控板好用10倍(附下载)

旧手机秒变蓝牙键盘鼠标:实测这款神器比触控板好用10倍(附下载) 你是否曾为桌面空间不足而烦恼?或是厌倦了在笔记本电脑上使用触控板的糟糕体验?现在,只需一款神奇的软件,就能让你的旧手机焕发新…...

MCP连接超时、消息乱序、ACK丢失全解析,深度解读协议栈层错误码映射表及自愈配置模板

第一章:MCP协议与传统REST API性能对比MCP(Message-Centric Protocol)是一种面向实时消息流与低延迟交互设计的二进制协议,其核心目标是在微服务间、边缘设备与云平台之间实现高吞吐、低开销的通信。相较之下,传统REST…...

又一个Linux发行版抛弃KDE Plasma了

最近Linux社区炸锅了:KaOS Linux 在2026年2月的最新ISO(KaOS 2026.02)中,正式结束了长达12年的KDE Plasma“专属”时代,转而默认采用Niri(一个滚动式平铺Wayland合成器)+ Noctalia Shell的组合。 乍一听很多人会震惊:“KaOS不是一直以‘Qt & KDE至上’闻名吗?怎么…...

一丹一世界FLUX.1部署指南:阿里云ECS轻量应用服务器7861端口全配置

一丹一世界FLUX.1部署指南:阿里云ECS轻量应用服务器7861端口全配置 1. 引言:从文字到画面的魔法 你有没有过这样的经历?脑子里浮现出一个绝美的画面——比如一位优雅的女士漫步在夕阳下的金色沙滩,海浪轻抚着她的脚踝&#xff0…...