Skip to content

大模型分布式训练全景解析

内容整理自学习笔记,仅供面试备考参考;不构成录用、培训或考试承诺。

1. 训练大语言模型面临哪些问题?

训练大语言模型存在两大核心问题:

问题说明
显存不够175B参数的GPT-3需700GB参数 + 700GB梯度 + 1400GB优化器状态 = 2.8TB显存
计算太慢用A100训练175B的GPT-3约需288年

2. 什么是点对点通信与集体通信?

通信方式原理优缺点
点对点通信一个进程发送,一个进程接收速度快、成本低
集体通信多个进程发送,多个进程接收速度慢、成本高

3. 什么是数据并行(Data Parallelism)?

将数据集切分为多份,每张GPU分配不同数据,每个进程拥有完整模型副本。

关键:保证所有GPU上的模型参数一致

  1. 初始化时同步模型参数(0号卡广播到其他卡)
  2. 反向传播后、优化器更新前,插入reduce通信规约梯度

相同初始化 + 相同梯度 → 相同模型参数

数据并行提升效率的方法

方法说明
梯度分桶集体通信在大张量上比小张量效率更高
计算与通信重叠同桶内梯度计算完后即可开始通信
跳过梯度同步梯度累加,减少通信频次

4. 什么是流水线并行(Pipeline Parallelism)?

层间划分,将不同层放到不同GPU上。如前3层在0号卡,后3层在1号卡。

5. 什么是张量并行(Tensor Parallelism)?

层内划分,切分一个独立的层到不同GPU上。对权重矩阵A分块,分为行并行和列并行。0号卡和1号卡分别计算某层的不同部分。

6. 三种并行方式对比

维度数据并行张量并行流水线并行
显存效率最低(每卡存完整模型)最高(成比例减少)中等(单卡显存随 PP 度下降)
通信效率中等最低(频繁通信)最高(P2P通信)
实现难度最简单最难(依赖模型结构)中等

显存效率排名: 张量并行 > 流水线并行 > 数据并行 通信效率排名: 流水线并行 > 数据并行 > 张量并行

7. 什么是3D并行?

3D并行 = 数据并行 + 张量并行 + 流水线并行。例如:4路TP + 4路PP + 2路DP = 32个workers。

参考: Megatron-Turing NLG 530B使用了3D并行方案。

8. 单卡/多卡/显存不足场景的策略选择

场景策略
1张卡显存够直接训练,nB模型微调需20nGB+显存
N张卡显存够数据并行(DP)加速
显存不够装完整模型流水线并行(PP)分层加载
PP推理时GPU空转引入micro-batch流水线
超大模型预训练3D并行(DP+TP+PP)不可或缺

9. 为什么有了ZeRO还需要3D并行?

考量说明
ZeRO的局限张量并行虽更省显存,但通信量太高,只能限于节点内(需NVLink)
大规模场景千卡级别时,ZeRO-3明显不如3D并行(Megatron-LM2论文)
TP节点间节点间TP会让GPU利用率低至5%

10. 平民能否使用3D并行或ZeRO-3?

方案适用性原因
3D并行不适合需NVLink超高速连接 + 400Gb/s节点间网络
多机ZeRO-3不适合65B模型Zero3每步通信量195GB,万兆网下每步156s

平民建议: 主要靠PP,再尝试ZeRO-1。没有NVLink且万兆网的情况下,TP和DP都受限。

11. 显存优化技术一览

技术说明
重计算(Activation Checkpointing)用时间换空间,反向时重算前向结果
卸载(Offload)参数/激活在CPU和GPU间搬运,如ZeRO-Offload、ZeRO-Infinity
混合精度(BF16/FP16)降低显存消耗,训练速度提升2-4倍

BF16 vs FP16: BF16计算时不易溢出;FP16输入数据超过65506时溢出产生Inf。

12. 常见分布式训练框架分类

类别框架说明
框架自带PyTorch DDP、TensorFlow等框架内置分布式功能
框架扩展Megatron-LM(TP)、DeepSpeed(ZeRO)、Colossal-AI(高维MP)、Alpa(自动并行)基于PyTorch等扩展

13. 并行化策略选择指南

场景推荐策略
单GPU显存够直接用
单GPU显存不够offload到CPU
单节点多卡显存够DDP或ZeRO
单节点多卡显存不够TP或ZeRO或PP
多节点通信快ZeRO或3D并行
多节点通信慢+显存少DP+PP+TP+ZeRO-1

7B级模型建议: 直接用DeepSpeed ZeRO,参考open-llama项目,无需3D并行。

14. 多机训练实践问题

问题解决方法
多机训练比单机慢网络带宽不足,调整带宽(如64Gps→800Gps)
deepspeed找不到主机Hostfile中使用IP而非hostname
多机间NCCL不通设置 NCCL_IB_DISABLE=1NCCL_SOCKET_IFNAME=eth0NCCL_P2P_DISABLE=1

结论: 多机训练效率与机器数成线性关系;ChatGLM在V100推理耗时比A800高约40%。