为什么现在的 LLM 都是 Decoder-Only 的架构?
从基础设施(Infra)角度分析,作为 Encoder-Decoder 架构的代表模型 T5 为何逐渐没落,以及为什么 T5 最大的模型仅停留在 11B 规模。
虽然 GLM-130B 并非 Decoder-Only 架构,但 GLM-3 及以后(目前是 GLM-4)的 GLM 系列模型均已改为 Decoder-Only 架构。就连 GLM 自己的团队都抛弃了原有的架构,跟随 LLaMA 的设计思路。
在 HuggingFace 上尝试 GLM-130B 的 Playground 可以发现,即使仅从效果评价,其表现也较为一般。至此,2023 年下半年之后的所有可公开使用的 LLM 均为 Decoder-Only 架构。
LLM 发展树与架构选择
Decoder-Only 架构的 Infra 优势
个人觉得 Decoder-Only 架构最核心的优势是非常便于分布式训练,基于 Scaling Laws 的实际训练成本最低。Scaling Laws 是 LLM 时代最为重要的规律发现,因此有一个基本判断:
在 LLM 时代,如果你提出的新算法结构可能有 5% 的效果提升,但是引入了额外 50% 的训练成本(计算时间或通信量),那么这个新算法一定是一个负优化。因为这 50% 的训练成本,基于 Scaling Laws,我可以在原模型上多训练 50% 的 tokens,或者训练大一半的模型,带来的最终提升都远大于新算法的 5%。因此,新的算法研究必然在探索阶段就需要引入 Infra 因素的考量。
比较 Encoder-Only、Encoder-Decoder、Decoder-Only 三者架构:
- 相同参数量的训练效率上:Decoder-Only > Encoder-Only > Encoder-Decoder
- 现行下,可以扩展的参数量上限和分布式集群规模的上限:Decoder-Only > Encoder-Only > Encoder-Decoder
Encoder-Only 其实并不太适合做生成式任务(Chat),目前在 NLP 应用的比较多(如 BERT),输入/输出通常是固定像素大小的图片(ViT),token 之间没有非常强的先后依赖关系,因此先排除 Encoder-Only。下面仅讨论两种架构的代表模型:Encoder-Decoder 架构的 T5 和 Decoder-Only 的 GPT。
去年 8 月在一次交流中,有位算法研究者就表示 T5 是一个非常优美的模型,且如果继续做下去应该比 GPT 更有前途。我当时表示 T5 很难扩展到千亿参数规模,Infra 很难做,对方表示那这个是 Infra 的问题应该 Infra 来解决,而不是算法的问题。我其实并不认同这个观点。
T5 很难 Scale Up 的核心原因是 T5 很难使用流水线并行(Pipeline Parallelism)。可能 T5 的理论计算量只是 GPT 的不到 2 倍,但实际在千卡集群、千亿参数量的情况下,GPT 的 MFU(Model FLOPs Utilization)可能是 T5 的十倍以上。
流水并行是千卡以上分布式训练中最重要的特性
流水并行 (Pipeline Parallelism) 是 LLM 扩展到千卡集群以上的一个核心 Feature。
NVIDIA 在 3076 张 A100 集群上训练的 1T 参数量 LLM 使用的并行方式是:
- Data Parallel Size = 6
- Tensor Parallel Size = 8
- Pipeline Parallel Size = 64
可见并行度最高的是流水并行,超过 DP 和 TP 十倍左右。为什么在三千卡集群上最主要的并行方式是流水并行?
流水并行的核心优势就是用比较少的代价(当 gradient accumulation step 很大时可以忽略不计),较少的显存代价,以及非常低的通信开销,将大模型分割在不同的 Group 中。大幅减少了单张 GPU 上的 Activation 大小(数量)和 Gradient 大小(数量)。
同时,跟 Tensor Parallel 相比,Pipeline Parallel 的通信代价很低且可以被 overlap。Tensor Parallel 虽然也能切分模型大小,但是需要全量的数据(没有减少 Activation tensor 大小),另外极高的通信频率和通信量使得 Tensor Parallel 只能在机器内 8 张卡用 NVLink 等高速互联来实现,跨机的 TP 会严重拖慢速度。
不仅如此,Pipeline Parallel 还将 Data Parallel 的模型更新限定在一个很小的范围内(比如六台机器),DP 所需的 AllReduce 通信会随着机器数量增多而变慢。PP 也让 DP 所需同步的模型梯度大小变小了,大大减缓了模型更新对于训练速度的影响。
因此 Pipeline Parallel 是让模型可以达到千亿、集群可以扩充到千卡以上的一个最重要的特性。
然而流水并行有很重要的约束条件:需要一个规整对称的、线性顺序的网络结构。 GPT 就是这样一个典型的网络结构:完全一样的 Transformer Layer 顺序堆叠,没有分叉和不对称情况,当均匀切分 Layer 时,各个 Stage 的前向/反向计算时间均一致。


