一、核心痛点:为什么大模型训练这么难
我们可以把大模型比作“一栋超级大房子”,训练模型就是“装修这栋房子”
- 效率问题:装修材料(训练数据)太多,一个人搬材料、刷墙、铺地板,要花好几年(对应数据量大,单GPU训练耗时)
- 显存问题:房子太大(模型参数多),你的工具车(GPU显存)装不下整栋房子的装修材料和工具(对应模型参数、中间计算记过超出GPU显存,直接报错)
其实后面的所有方法,本质上都是“怎么让装修又快又能装下”——要么“多找人分工”(并行训练),要么“精简材料占用空间”(混合精度,ZeRO),要么“不重新装修,只局部改造”(REFT微调)
二、并行训练:多GPU“分工干活”(解决效率+显存问题)
并行训练就是“找多个工人一起装修”,但分工方式不同,对应三种核心并行策略

1.数据并行(DP):“多人干同样的话,最后汇总”
- 核心逻辑:把“装修材料”(训练数据)分成多份,每个GPU(工人)拿一份材料,同时用完整的模型(整栋房子的装修方案)计算梯度;计算完后,所有人把梯度汇总(比如你算的梯度是0.1,我算的是0.2.汇总后是0.3),再用汇总后的梯度统一更新模型参数
- 类比:3个工人同时刷同一栋房子的3个房间,每个人都有完成的“刷墙流程”(模型),刷完后一起商量“下次怎么刷更快”(统一更参数)
关键特点:
- 优点:简单易操作,不用改模型结构,训练速度随 GPU 数量线性提升;
- 缺点:要求单块 GPU 能装下完整模型(显存够大)—— 如果房子太大(模型参数太多),一个工人的工具车装不下完整装修方案,就没法用。

2.模型并行(PP):“多人干不同的活,按流程来”
- 核心逻辑:把“模型”(装修方案)拆成不同部分,每个GPU只负责其中一部分。比如Transformer的第1-2层给GPU0,第3-4层给GPU1,第5-6层给GPU2;前向传播时,数据按“GPU0->GPU1->GPU2”的顺序计算,反向传播时按“GPU2->GPU1->GPU0”的顺序回传梯度
- 类比:装修时,工人A只负责刷墙,工人B只负责铺地板,工人C只负责装家电,按流程接力干活,最后完成整栋房子装修
关键特点:
- 优点:解决“单GPU装不下完成模型的问题”(比如模型有100层,拆给10个GPU,每个GPU只装10层)
- 缺点:GPU之间要频繁传数据(比如工人A刷完墙,要告诉工人B可以铺地板了),通讯时间长,效率比数据并行略低
3.张量并行(TP):把一个活拆成小块,每人干一块

