Skip to content

大语言模型架构

📅 发表于 2025/07/09
🔄 更新于 2025/07/09
👁️ 次访问
📝 0 字
0 分钟
llm
#decoder-only
#Casual-LM

LLM常见架构

Encoder和Decoder特点

  • Encoder:某个词能看到整个序列的所有信息,同时看到上文和下文
  • Decoder:由于mask机制,编码某个词特征时,仅能看到上文

Encoder-only/自编码语言模型

Encoder-Only / AutoEncoder LM

🥅建模目标

  • BERT将序列x随机挑选15%Token变成[MASK]得到噪声x^
  • 期望根据上下文恢复/猜测出原始值 x¯
maxθlogpθ(x¯|x^)t=1Tmtlogpθ(xt|x^)

代表和优缺点

  • 代表:Bert
  • 优点:较好融入双向语言模型,能看到被预测单词的上文和下文。
  • 💔 缺点
    • Masked Language Modeling 任务,不擅长做生成任务
    • 👿预训练引入mask导致和下游finetune任务不一致
    • 😞 泛化效果不好需要微调。

Encoder-Decoder

Encoder-Decoder
  • 代表:T5、BART

PrefixLM

PrefixLM

🎓核心内容

  • Encoder-Decoder 变体,区别是Encoder和Decoder 共享一个Transformer

    • Encoder:Auto-Encoding编码token之间互相可见。

    • Decoder:Auto-Regressive自回归模式,待生成token可以看到Encoder所有tokenDecoder已经生成的token

  • 可以根据给定的前缀生成后续的文本生成每个词时都可以考虑之前的上下文信息。

  • 代表:UNILM、GLM等。

  • 适用于:机器翻译等任务。

👑CasualLM/Decoder-Only/自回归LM

CasualLM / Decoder-Only / AutoRegressive LM

🎓核心内容

  • Next Token Prediction 兼顾理解和生成;下游泛化性好。
  • 只能根据前面生成的文本去生成后面的文本
  • 代表:GPT (当前绝对主流)
  • GPT是单向的从左到右,使用更大语料和参数,把AutoRegressive LM发挥到了极致。ELMo是双向的。

🥅建模目标

  • 给定文本序列x=[x1,,xT],调整参数使得训练数据上的似然函数最大。
  • hθ(x1:t1): Transformer(或RNN)在t时刻之前编码的隐状态,emb为词向量。
maxθpθ(x)=t=1Tlogpθ(xt|x1:t1)=t=1Tlogexp(hθ(x1:t1)Temb(xt))xexp(hθ(x1:t1)Temb(x))

优缺点

  • 优点:天然符合下游任务。见下文吧。

为什么 Decoder-Only

为什么是Decoder-Only

why decoder-only

👊Encoder 缺点

  • MLM任务不擅长生成任务,下游需微调
  • 双向注意力的低秩问题,可能会削弱模型表达生成任务而言,双向并无实质好处

👊Encoder-Decoder 缺点

  • 同等参数下,需要multitask finetuning 才能激发最佳性能。

👋Decoder 优点

  • NTP任务兼顾理解和生成,下游泛化性好
  • 同等参数Decoder具有更好的zero-shot性能更适合利用大规模无标注语料自监督学习
  • 训练效率、工程实现有优势
    • 支持一直复用KV-Cache,对多轮对话更友好。
    • 因为每个Token的表示之和它之前的输入有关,而encoder-decoder和PrefixLM就难以做到。

MoE

混合专家模型 (MoE) 详解

MoE优缺点

在有限的资源下,用更少的训练步数训练一个更大的模型,往往比更多步数训练小模型效果更好。

MoE vs Dense

👏优点

  • 🚀 训练推理速度更快、所需计算资源更少、效果更好
  • 允许模型计算成本不变的情况下增加参数数量,更容易scale到万亿模型。
  • 多任务学习能力强

👿缺点

  • 需要大量显存,所有expert需要加载到内存
  • 可能遇到训练稳定性问题微调存在挑战finetune过拟合,但显示出潜力。
  • 通信成本高,MoE专家路由机制带来通信成本。

条件计算及背景

条件计算

背景

  • 充分利用数据和模型的规模,是DL成功的关键。
  • 随训练数据和模型大小增加带来训练成本增加(二次方‼️)。然而当前计算能力不太能满足。

🍊条件计算

  • 许多工作提出条件计算,在不显著增加训练成本的情况下,尽量增加模型容量
  • 以每个样本为基础,冻结或激活网络大部分
  • 门控决策机制
    • 可以是二进制的、稀疏而连续的、随机性的、确定性的等。
    • 通过各种RL、反向传播来训练

早期论文条件计算工作:Outrageously Large Neural Networks: The Sparsely-Gated Mixture-of-Experts Layer

17年早期论文工作

Sparsely-Gated Mixture-of-Experts layer (MoE)结构

  • 一些专家:每个专家为一个FFN,也可以是Transformer。
  • 一个可训练的门控网络:它会挑选专家的一个稀疏组合,用来处理每个输入
  • 所有网络都是使用反向传播联合训练

MoE结构/层次化MoE/门控网络

1、MoE结构

MoE 层

1. 专家+门控网络

  • 💥 n个专家网络(稀疏MoE层):E1,,En
    • 每个专家是一个独立的子网络模块,可以是FFN、Transformer等等。
    • 保持输入输出大小、结构一致。输出Ei(x)
    • 代替了Transformer中的FFN层
  • 💥1个门控网络G (路由网络)
    • 输出各专家权重,是一个稀疏n维向量G(x)。如[0.0,0.8,0.0,0.2,0.0] , n=5个专家
    • 决定哪些token倍发送到哪个专家
  • MoE层输出:为所有专家加权的和。
    • ⚠️后续主流是topk个专家加权求和,并非所有专家。
y=1nG(x)iEi(x)

2. 稀疏性优点

  • G(x)输出的稀疏性可以节省计算量🔋
    • G(x)i=0时,则无需计算Ei(x)
    • 实验中有数以千计的MoE,但每个样本只会用到少量专家 👍
    • 专家数量特别大,可能需要层次化MoE

Switch Transformer:使用稀疏的Switch FFN替换原来Dense FFN

2、层次化MoE

层次化MoE

专家数量很多时,使用2级层次MoE来降低分支因子

  • 1个主选通网络Gprimary:先选择一组专家组,共有a组
  • a个次选通网络G:在某组内从b个中选一个专家
  • a*b个专家
y=i=1aj=1bGp(x)iGi(x)jEi,j(x)

3、门控网络G

重要

1、Softmax Gating (朴素想法)

  • 矩阵乘以输入,再过Softmax。是非稀疏的门控网络。
G(x)=softmax(xWg)

2、Noise Top-k Gating

  • 在softmax基础上增加稀疏性和噪声,仅选择topk个专家
    • 保留前k个值,其余设置为稀疏性为了节省资源
    • 可调高斯噪声帮助负载均衡
    • 每个分量的噪音量可通过训练权重Wnoise来控制
G(x)=softmax(KeepTopk(H(x),k))H(x)i=(xWg)i+StandardNorm()Softplus((xWnoies)i)KeepTopk(v,k)i={viifvitopkotherwise

批量减小及专家平衡问题

MoE 批量减小问题

批量减小问题

  • 低效问题:专家数量增加导致单专家处理样本变少 ‼️。
    • n个专家选k个,b个样本,每个专家处理bkn<<b个样本,非常低效。
    • 如果提高b,但受内存限制。
  • 解决方法
    • 混合数据并行(复制完整模型到多设备)、模型并行(拆分模型参数到不同设备),变相扩大b
      • 如果d个设备,有效批次bd,每个专家 处理样本:kbdn
    • 增加循环MoE的批大小
专家平衡问题

专家平衡问题

  • 门控网络收敛不平衡,导致少量专家总是会得到较大权重,出现赢者通吃现象
  • 由于数据分布不均匀某些专家可能会处理更多的数据,而其他专家可能会处理较少的数据。

解决办法1:软性约束

  • 软性约束:定义专家重要性损失Limportance,在一个batch上门控网络的和。
    • 鼓励所有专家有相同的重要度,但专家仍可能收到差异很大的样本。
Importance(X)=xXG(X)L(X)=λCV(Importance(X))2

解决方法2:不同的负载均衡loss (谷歌Switch Transformers)

  • 符号:n专家,T个token的batch B

  • 所有token路由到专家i的概率Pi

Pi(x)=1TxBpi(x)
  • batch中分配给i的token占比, fi
fi=1TxB{argmaxp(x)=i}
  • 辅助loss,乘以专家数量。
    • 其中α=102是个超参数,足够大保证负载均衡,足够小,不影响主要的交叉熵训练。
lossaux=αni=1nfiPi
  • loss优点:鼓励均匀路由

Switch Transformers (重点实现,2022年谷歌)

核心思想:尽可能把Transformer做大👍

单专家策略
  • 核心:⭐一个token每次只路由到1个专家
  • 优点:
    • 减少路由计算,降低MoE通信成本。
    • 每个专家bs(专家容量)至少可以减半。
专家容量及容量因子

专家容量/容量因子

  • 背景:门路由动态性根据输入数据动态把token分配给不同专家,要求模型灵活处理数据分布。
  • 定义:每个专家在模型中处理的token数,n为专家数,capacity factor为容量因子(>1),
Expert Capacity=tokens per batchncapacity factor
  • 专家容量作用:把batch总token平均分配给专家,通过容量因子来扩展容量提供缓冲空间,应对token分布不均情况。
  • 容量因子取值:必须大于1保证有缓冲空间,但不能太大会浪费计算资源(如超过3)。
    • 示例:专家数=3,输入token=6t, 容量因子=1, 专家容量=2
    • ‼️但expert1却收到了3个token则溢出了,超出的不会计算,直接残差到下一层⚠️,这样不好😢
总访客数:   ·   总访问量:
PLM's Blog @ 2016 - 2025