模型大到一张卡装不下时,把它按几种方式拆到多张卡上同时跑的办法。
1. 它到底在说什么
并行策略(Parallelism Strategies)回答的是一个很朴素的问题:当一个模型大到一张显卡放不下、或者跑得太慢时,怎么把它拆到多张显卡上一起干。工程界把它归纳成三种基本“切法”,可以单独用,也可以叠着用。
用一个盖楼的比喻来理解。数据并行像是同一份设计图复印多份,每个施工队盖不同的单元楼——各自独立,最后把进度汇总。张量并行像是把一面承重墙的施工图纸横竖切开,几个人同时砌同一面墙的不同段,砌完再拼起来——切的是“同一道工序内部”。流水线并行则像是把盖楼拆成打地基、立框架、做装修几道工序,不同队接力完成,像工厂流水线——切的是“工序的顺序”。
这三种切法都不改变模型本身会学到什么,只改变“活儿怎么分”。
2. 为什么现在这个词很热
三种策略并非同时出现,而是被模型变大的压力逐个逼出来的。
数据并行(Data Parallelism)最早成熟:2012 年谷歌 DistBelief 的 Downpour SGD 已是雏形,后来 PyTorch 的 DistributedDataParallel(Li 等,VLDB 2020)把它变成默认选项。它的前提是“一张卡能装下整个模型”,这在十亿参数时代够