数据/模型/张量并行:Maths, CS & AI Compendium分布式训练原理图解
【免费下载链接】maths-cs-ai-compendiumBecome a cracked AI/ML researcher/engineer with this unconventional textbook covering maths, computing, and ML with intuition.项目地址: https://gitcode.com/GitHub_Trending/mat/maths-cs-ai-compendium
Maths, CS & AI Compendium 是一本"直觉优先"的开源教科书,覆盖数学、计算机科学与 AI 的全栈知识。本文聚焦其中的分布式训练核心内容,用图解式思路拆解数据并行、模型并行、张量并行三大策略,帮你快速看懂大模型(LLM)为什么必须多卡训练、多张 GPU 之间如何分工与同步。
为什么大模型训练必须分布式?
单卡训练大型神经网络,迟早会撞上两堵墙:
- 算力墙⚡:一个 dense 层单步训练约需 6·B·d_in·d_out 次浮点运算,反向传播成本约为前向的 2 倍,GPT 级模型动辄需要数千 GPU 时;
- 显存墙📌:训练时 GPU 必须同时放下四样东西——参数、梯度、优化器状态、激活值。以 7B 模型 + FP32 + Adam 为例,仅前三项就合计 112 GB,还没算随 batch size 线性增长的激活值,一块 80 GB 的 A100 根本装不下。
结论见 05. distributed deep learning.md:分布式训练不是锦上添花,而是训练前沿模型的刚需。
混合精度训练:显存减半的第一道防线
- 用FP16 / BF16跑前向与反向,同时保留一份FP32 主权重供优化器更新;
- BF16 的指数范围与 FP32 相同,几乎不会溢出,已是现代 Transformer 训练的默认选择;
- 效果:激活值与梯度这两块"大头"显存直接减半。
对应原理:05. distributed deep learning.md
数据并行:多卡训练最简单的入门方法
数据并行是最容易上手的分布式策略,分三步:
- 把完整模型复制到 N 张 GPU 上;
- 把 mini-batch 切成 N 份,每张卡独立做前向 + 反向;
- 用All-Reduce对梯度求平均,各卡同步更新本地权重。
它的效果等效于用 N 倍的 batch size 在单卡上训练。同步 SGD 与单卡训练数学等价,但最慢的卡会拖住全员;异步 SGD 消除等待却引入"陈旧梯度"噪声,实践中更推荐"同步 + 高效通信"。详见 05. distributed deep learning.md。
梯度累积:小显存也能模拟大批量
不急着更新权重,先跑多轮前向/反向把梯度累加起来,再一次性更新——效果等同大 batch,而激活值显存只占一份。这是单卡玩家模拟大批量训练的实用技巧。
模型并行:模型太大装不进单卡怎么办
当模型本身超过单卡显存,就要把模型拆给多张卡,主要有两种拆法:
张量并行:把一层的矩阵乘法拆给多卡
把 Y = XW 按列切开:W 分成 [W₁, W₂] 放两张卡,并行算出 Y₁ = XW₁、Y₂ = XW₂ 再拼接。它适用于 Attention 的 Q/K/V 投影和 FFN 层,但每一层都要通信,必须搭配 NVLink 这类机内高速互联。
流水线并行:像流水线一样分阶段执行
GPU 0 跑第 1-4 层、GPU 1 跑第 5-8 层……数据像传送带依次流过。朴素做法存在"流水线气泡"(上游在算、下游空转),把 mini-batch 再切成多个微批依次流过,就能让各卡几乎全程忙碌。两种模型并行的对比见 05. distributed deep learning.md。
混合并行:大模型训练的真实组合拳
GPT-4、Llama 这类模型采用的是三层嵌套方案:
| 层级 | 策略 | 为什么 |
|---|---|---|
| 机内(8 卡) | 张量并行 | NVLink 带宽高,扛得住每层通信 |
| 跨机 | 流水线并行 | 层间通信量相对小 |
| 跨多组机器 | 数据并行 | 扩展 batch、提升吞吐 |
Ring All-Reduce:带宽最优的梯度同步
朴素做法是把所有数据集中到一台卡上求和再广播,根节点很快成为瓶颈。Ring All-Reduce把 N 张卡排成环、数据切成 N 块,经过 2(N−1) 步后每张卡都拿到完整的和——总通信量约 2 倍数据大小,且几乎不随卡数增长,是带宽最优方案,工业界普遍配合 NCCL 库按网络拓扑自动选择最优算法。原理见 05. distributed deep learning.md。
分布式训练速查表
| 技术 | 作用 | 代价 |
|---|---|---|
| 混合精度(BF16) | 激活/梯度显存减半 | 轻微数值差异 |
| 数据并行 | 多卡扩展 batch | 梯度同步通信开销 |
| 张量并行 | 层内拆分矩阵 | 需要高速互联 |
| 流水线并行 | 层间切分模型 | 流水线气泡 |
| 梯度累积 | 模拟大批量 | 训练更慢 |
| 梯度检查点 | 降低激活显存 | 约 +33% 计算 |
| Ring All-Reduce | 高效梯度平均 | 超大模型下带宽受限 |
延伸阅读:在 Compendium 中深入学习
- 分布式训练完整章节(含 FLOPs 估算公式、数据并行与单卡等价性验证、MoE 层实现练习):05. distributed deep learning.md
- GPU 架构与 CUDA 基础,理解 NVLink 与跨机带宽差异:04. GPU architecture and CUDA.md
🔑 一句话总结:前沿模型训练 = BF16 混合精度 + 机内张量并行 + 跨机流水线并行 + 数据并行 + 梯度检查点 + 定期 checkpoint 容错,系统工程与算法设计同样关键。
【免费下载链接】maths-cs-ai-compendiumBecome a cracked AI/ML researcher/engineer with this unconventional textbook covering maths, computing, and ML with intuition.项目地址: https://gitcode.com/GitHub_Trending/mat/maths-cs-ai-compendium
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考