大模型入门-大模型分布式训练2

大模型分布式训练:把"大象"装进冰箱的终极指南

7.4 DeepSpeed ZeRO 系列:吃干榨净每一寸显存

面对万亿级大模型,前面的招数还是不够用。微软的 DeepSpeed 敏锐地发现:显存不够,往往不是模型本身大,而是模型状态(Model States,包含优化器状态、梯度、模型参数)太占地方 。

在传统 DP 中,每张卡都死板地存着这三大件的完整副本,简直是极大的浪费 。ZeRO (零冗余优化器) 的核心哲学就是:分片存储,用时再取

它将优化做到了三个级别:

  1. ZeRO-1 (PosP_{os}Pos): 只把占用最大的"优化器状态(如 Adam 的动量)"切成 NdN_dNd 块,每张卡只存一份。显存开销瞬间直降 4 倍 。

  2. ZeRO-2 (Pos+gP_{os+g}Pos+g): 在第一步基础上,把"梯度"也切成 NdN_dNd 块。显存开销降幅达 8 倍 。

  3. ZeRO-3 (Pos+g+pP_{os+g+p}Pos+g+p): 丧心病狂的终极形态。连"模型参数"本尊也切碎。算到哪一层,就通过网络向其他卡实时借参数。只要你的 GPU 数量足够多,理论上能训练无限大的模型 。

ZeRO-Offload:显存不够,内存来凑

如果即便切碎了,显存还是爆了怎么办?ZeRO-Offload 给出了绝杀:把参数下放到廉价的 CPU 和主板内存里

它巧妙地把高并发、高复杂度的前反向传播留在 GPU;把计算量小但极占空间的参数更新过程(Update)扔给 CPU 。由于传输的数据量恒定,随着卡数增加,CPU 的多核优势反而能缩短计算时间 。


7.5 Sequence Parallel:序列并行

在处理动辄 100K 上下的长文本时,Token 序列长度太长也会撑爆显存 。

  • 核心思路: 把一长段话从中间劈开(例如 1024 长度劈成两个 512)。GPU 0 看上半段,GPU 1 看下半段 。

  • 代价与收益: 前向和后向需要各进行一次 All-Gather 通信来交换拼接上下文线索 。代价是吞吐量会下降 10-25%,但换来的是显存峰值直线下降,从而使大模型阅读长篇巨著成为可能 。


7.6 Expert Parallelism:专家并行 (MoE专属)

大模型走向 MoE(混合专家架构)后,迎来了一种新的并行方式 。

  • 核心思路: Transformer 里养了一批"术业有专攻"的专家网络。每次推理时,门控机制会只挑出最契合的 top-k 个专家来工作,其他专家全程摸鱼 。

  • 物理部署: 我们把不同的专家丢到不同的物理显卡上 。

  • 通信挑战: 当数据流过来时,需要进行疯狂的 All-To-All 点对点通信,把不同的 token 快递到对应专家的显卡上 。由于它利用了稀疏激活的特性,实际的吞吐量(Token/s)能得到惊人的翻倍提升 。


7.7 终极总结与面试必考指北

在工业界,大模型的训练绝非使用单一策略,而是"我全都要"的3D/4D混合并行组合拳 。

性能权衡速查表:

策略类别 并发度优势 吞吐量表现 通信压力分析
DP / EP 最优。所有 GPU 同步推进,没人闲着 。 EP 利用 MoE 的稀疏性,大幅提升实际产出 Token/s 。 DP 只需做梯度同步。EP 需要频繁的跨卡交换 。
TP / PP / SP 存在跨卡同步或流水线等待,短期内必定存在 GPU 空闲的 Bubble 。 PP 必须扣除不可避免的气泡时间;TP 和 SP 严重受制于通信带宽压降 。 TP 每层都要做 All-Gather;PP 仅在流水线边界少量通信;SP 有跨卡交换 。

如果你正在准备大模型相关的面试,请务必吃透以下 5 个核心问题:

  1. 参数量 vs 显存占用: 面对不同参数规模,如何通过切分网络或 ZeRO 策略极限压榨显存峰值?

  2. 通信带宽 vs 延迟: 深入辨析 All-Reduce、All-Gather、All-To-All 的底层机制,什么场景下谁会成为系统瓶颈?

  3. 并发度 & 气泡 (Bubble): 在 Pipeline 管线并行中,如何通过设计 micro-batch 数量和 stage 平衡来消灭计算气泡?

  4. MoE 路由与负载: 专家并行中,如何设计健壮的 Top-k 门控机制,防止某个专家被瞬间打满(专家热点),而其他专家无所事事?

  5. 混合并行设计: 给定千卡集群,如何拍板 DP + TP + PP + SP 的最优拓扑结构与调优思路?

bash 复制代码
print('hello')
相关推荐
醒醒该学习了!3 分钟前
Prompt提示词——文生文提示词的设计策略(理论篇)
prompt
PAK向日葵2 小时前
我用 C++ 写了一个轻量级 Python 虚拟机,刚刚开源
c++·python·开源
玖釉-2 小时前
下一个排列:从字典序到原地算法的完整推导
数据结构·c++·windows·算法
IronMurphy2 小时前
【算法五十】62. 不同路径
算法
影寂ldy3 小时前
C#一维数组
算法
Yunzenn3 小时前
深度分析字节最新研究cola-DLM 第 07 章:推理流水线逐行拆解 —— 从 prompt 到生成文本
人工智能·驱动开发·深度学习·chatgpt·架构·prompt·github
玄米乌龙茶1233 小时前
思维导图笔记:Prompt工程
笔记·prompt
是Yu欸3 小时前
从 Prompt 到 WebUI:基于 SenseNova U1 封装一个图文技术博客生成工具
大模型·llm·prompt·webui·moe·sensenova u1·商汤科技
过期动态3 小时前
【LeetCode 热题 100】移动零
java·数据结构·算法·leetcode·职场和发展·rabbitmq