流水线并行是什么?
模型并行把模型按层切开,数据从前到后依次流过每一张卡。问题是:同一时刻,只有一张卡在忙,其他卡都在干等。流水线并行就是解决这个「空转」——它让多批数据像工厂流水线一样,一批接一批地灌进来,每张卡忙完一批立刻接手下一批,设备利用率大幅提升。它怎么类比?
就像汽车装配线车身在一号工位装底盘时,二号工位正在给上一辆装引擎,三号工位又在给更早一辆喷漆。每个工位都不闲着,整条线持续出货。
模型层就是「工位」
不同的层放在不同 GPU 上,数据(一批批样本)就是流水线上的「车」。
它解决了什么问题?
减少「气泡」如果一次只喂一批数据,前面卡算的时候后面卡在等,算完又反过来等,出现大量空闲时间(叫「气泡 bubble」)。
让多批数据填满空隙
把数据切成很多小批(micro-batch),让它们首尾相接流过各卡,空闲被后面的批次填满,吞吐就上去了。
代价与权衡
显存占用变大同一时间有多批数据在流水线上,每张卡要同时保存多批的中间状态,显存压力增加。
调度更复杂
要考虑切多少个 micro-batch、怎么排布才能既填满流水线又不撑爆显存。
它在大模型里的位置
流水线并行常和模型并行、数据并行一起用,是超大规模模型训练的「组合拳」之一。它让成百上千张 GPU 尽量保持忙碌,把训练速度再往上推一截。一句话记住:流水线并行就是让模型像工厂流水线一样「不停工」,一批批数据首尾相接,把设备空闲填满。
评论