分布式训练是什么?
单个 GPU 的算力和显存是有限的,模型一旦大到装不下、或者训练慢到等不起,就得把活儿分出去。分布式训练,就是把训练任务拆成很多份,交给多台机器、多张 GPU 同时干,再把结果汇总起来。为什么单机不够用了?
模型越来越大从几亿参数到几千亿参数,模型体积早就超过了单张显卡的显存。
时间等不起
哪怕能跑,单卡训练一个超大模型可能要几个月甚至几年,商业上完全不可行。
数据也多
海量训练语料,单机读都读不过来。
它靠什么把速度提上去?
把数据切分(数据并行)每个设备各拿一份完整模型,各处理不同的数据批次,然后同步梯度。
把模型切分(模型并行)
模型太大放不进一张卡,就把不同层分到不同卡上。
两者混着用
现实中的大模型训练,往往是数据并行、模型并行、流水线并行等多种策略叠加。
难点在哪?
通信开销设备之间要频繁同步梯度和参数,网络慢了会拖后腿。
一致性
多台机器上的结果要保持同步、不出错,容错和调试都更复杂。
它带来了什么
分布式训练让「训练超大规模模型」从不可能变成工程问题。今天所有叫得上名字的大模型,背后都是成千上万张 GPU 协作的结果。一句话记住:分布式训练就是把「一个人干不完的活」,拆给一群人同时干,还要保证结果对齐。
评论