大模型学习 (Datawhale_Happy-LLM)笔记8: Decoder-Only PLM
概述
Decoder-Only 预训练语言模型(PLM)代表了当前大语言模型发展的主流方向。这种架构只使用 Transformer 的解码器(Decoder)部分进行堆叠构建,是目前大火的 LLM 的基础,包括引发热潮的ChatGPT和主流开源LLM如LLaMA 都采用了这种架构设计。
本文将深入剖析 Decoder-Only PLM 的技术原理、发展历程和实际应用,从GPT 系列的开创性工作到现代 LLM 架构的优化,全面解析这一引领当前大语言模型时代的核心技术路径。
1. 架构起源与发展历程
1.1 技术起源背景
Decoder-Only 架构的诞生源于对文本生成任务的专门设计。2018年,OpenAI 推出第一个 Decoder-Only 模型 GPT,开创了预训练-微调的技术范式。与传统方法不同,GPT 首先明确提出了通用预训练的概念,通过在大规模文本语料上进行无监督预训练,然后在特定任务上进行有监督微调。
1.2 技术发展路径
GPT 系列的发展体现了"规模即正义"的技术理念:
- 预训练-微调范式:GPT 确立了现代大语言模型的基本训练流程
- 规模化路径:通过不断扩大预训练数据和增加模型参数来提升性能
- 生成优先设计:专门为文本生成任务优化的架构设计
这一技术路径最终在ChatGPT中得到验证,证明了Decoder-Only架构的强大潜力。
2. GPT 模型架构深度解析
2.1 整体架构设计
GPT模型采用纯解码器架构,主要组件包括:
核心组件结构
-
Tokenizer部分:
- 文本分词处理
- 转换为词典序号(input_ids)
- 输入格式化
-
Embedding层:
- 词嵌入(Word Embedding)
- 位置编码(Positional Embedding)
- 将input_ids转换为hidden_states
-
Decoder层:
- 多个DecoderLayer堆叠
- 每层包含注意力机制和前馈网络
- 使用因果掩码(Causal Mask)
处理流程
输入文本 → Tokenizer → input_ids → Embedding → hidden_states
→ DecoderLayers → 线性映射 → 输出概率分布 → 生成token
2.2 关键技术特点
注意力机制设计
- 自注意力(Self-Attention):模型关注输入序列内部的关系
- 因果掩码:防止模型"看到"未来的信息,保证自回归特性
- 多头注意力:并行计算多个注意力头,增强表示能力
位置编码策略
GPT使用Sinusoidal位置编码(三角函数绝对位置编码),这种设计能够让模型理解序列中token的相对位置关系。
网络结构特点
- MLP结构:使用一维卷积核而非线性矩阵进行特征提取
- Pre Norm:在注意力和前馈网络之前进行LayerNorm
- 残差连接:确保梯度流动和训练稳定性
2.3 GPT系列演进
根据文档内容,GPT系列的发展体现了规模扩展的重要性:
模型版本 | 主要特点 | 技术创新 |
---|---|---|
GPT-1 | 开创性工作 | 确立预训练-微调范式 |
GPT-2 | 规模扩大 | 证明规模化的有效性 |
GPT-3 | 涌现能力 | 展现大模型的强大潜力 |
ChatGPT | 产品化 | 结合RLHF实现产品突破 |
3. 因果语言模型(CLM, Causal Language Model)技术原理
3.1 CLM基本概念
因果语言模型(Causal Language Model)是Decoder-Only架构的核心预训练任务。CLM通过预测序列中下一个token来进行训练,这是传统N-gram语言模型在深度学习时代的自然扩展。
数学表示
给定序列
x
1
,
x
2
,
.
.
.
,
x
n
x_1, x_2, ..., x_n
x1,x2,...,xn,CLM的目标是最大化:
P
(
x
1
,
x
2
,
.
.
.
,
x
n
)
=
∏
i
=
1
n
P
(
x
i
∣
x
1
,
x
2
,
.
.
.
,
x
i
−
1
)
P(x_1, x_2, ..., x_n) = \prod_{i=1}^{n} P(x_i | x_1, x_2, ..., x_{i-1})
P(x1,x2,...,xn)=i=1∏nP(xi∣x1,x2,...,xi−1)
3.2 CLM的技术优势
任务自然性
因为CLM任务与人类语言的自然生成过程高度一致,所以这种预训练方式更加直观和有效。相比需要人工创建[MASK]标记的MLM任务,CLM能够在任何自然语言文本上直接应用。
训练效用性
- 数据利用效率:可以利用任何文本数据进行训练
- 计算简单性:任务定义清晰,实现相对简单
- 扩展能力强:支持海量语料的大规模预训练
4. 现代LLM架构:LLaMA优化方案
4.1 LLaMA 架构特点
LLaMA 作为现代开源LLM的代表,在GPT架构基础上进行了多项关键优化:
基础设计保持
- Decoder-Only 结构:保持纯解码器架构
- 自回归生成:维持因果语言模型的生成方式
- 注意力机制:继承多头自注意力设计
处理流程优化
输入文本 → tokenizer → input_ids → embedding → hidden_states
→ positional embedding → DecoderLayers → 输出
4.2 LLaMA关键技术创新
Attention模块优化
- RoPE位置编码:旋转位置编码(Rotary Position Embedding)
- KV缓存优化:repeat_kv函数优化推理效率
- 多头注意力:query_states, key_states, value_states的高效计算
MLP模块改进
- 门控机制:gate_proj进行门控计算
- 激活函数:使用SiLU(Swish)激活函数
- 维度变换:up_proj和down_proj进行维度转换
归一化技术
- RMSNorm:使用RMSNorm替代LayerNorm
- Pre Norm:在每个子层之前进行归一化
4.3 RMSNorm技术详解
RMSNorm是 LLaMA 中的重要技术创新,其数学公式为:
RMSNorm ( x i ) = x i 1 n ∑ j = 1 n x j 2 + ϵ ⋅ g i \text{RMSNorm}(x_i) = \frac{x_i}{\sqrt{\frac{1}{n}\sum_{j=1}^{n}x_j^2 + \epsilon}} \cdot g_i RMSNorm(xi)=n1∑j=1nxj2+ϵxi⋅gi
实现代码
class LlamaRMSNorm(nn.Module):
def __init__(self, dim: int, eps: float):
super().__init__()
self.eps = eps
self.weight = nn.Parameter(torch.ones(dim))
def forward(self, x):
# 计算RMS
rms = torch.rsqrt(x.pow(2).mean(-1, keepdim=True) + self.eps)
return x * rms * self.weight
技术优势
- 计算效率:只需计算均方根,不需要计算均值
- 参数简化:减少了可学习参数的数量
- 数值稳定性:通过ε参数避免除零问题
5. 其他Decoder-Only模型分析
5.1 ChatGLM系列特点
ChatGLM在GPT基础上进行了针对性优化:
架构改进
-
Post Norm vs Pre Norm:
- ChatGLM使用Post Norm(残差后归一化)
- 参数正则化效果更强,鲁棒性更好
-
输出层简化:
- 使用单个线性层进行token预测
- 减少参数量,提高鲁棒性
-
激活函数优化:
- 从ReLU改为GeLU
- 更好的梯度传播性质
5.2 架构对比分析
特征 | GPT系列 | LLaMA系列 | ChatGLM系列 |
---|---|---|---|
位置编码 | Sinusoidal | RoPE | 相对位置编码 |
归一化 | LayerNorm | RMSNorm | LayerNorm |
激活函数 | ReLU/GeLU | SiLU | GeLU |
Norm位置 | Pre Norm | Pre Norm | Post Norm |
优化重点 | 规模扩大 | 效率优化 | 中文适配 |
6. Decoder-Only架构的核心优势
6.1 生成能力优势
自回归生成的天然适配
因为Decoder-Only架构专门为生成任务设计,所以在文本生成方面具有天然优势:
- 序列连贯性:每个token的生成都基于完整的前文
- 生成灵活性:能够处理各种长度和风格的文本生成
- 任务适应性:从对话到创作,适应多种生成场景
训练效率优势
- 任务简单性:CLM任务定义清晰,易于实现
- 数据利用性:可以利用任何文本数据进行训练
- 并行化能力:训练过程便于并行化处理
6.2 扩展性优势
参数扩展的良好特性
Decoder-Only架构在参数扩展方面表现出良好的收益特性,模型性能随参数量增加呈现稳定提升。
能力涌现现象
当模型规模达到一定程度时,会出现各种涌现能力,包括:
- 零样本学习:无需训练即可完成新任务
- 少样本学习:仅需少量示例即可适应新场景
- 推理能力:展现出一定的逻辑推理能力
7. 技术挑战与限制
7.1 固有技术限制
单向性约束
因为Decoder-Only模型只能利用前文信息,所以在某些需要双向理解的任务上存在劣势:
- 信息利用限制:无法同时利用前后文信息
- 理解任务挑战:在纯理解任务上可能不如双向模型
- 上下文依赖:过度依赖序列的顺序关系
计算效率问题
- 推理延迟:自回归生成导致逐token生成,延迟较高
- 内存占用:KV缓存随序列长度增长,内存需求大
- 并行限制:生成过程难以并行化
7.2 训练资源需求
数据要求
- 语料规模:需要TB级别的高质量训练数据
- 数据质量:对训练数据的质量要求很高
- 数据多样性:需要覆盖各种语言风格和领域
计算资源
- 硬件需求:需要大量GPU集群进行训练
- 训练时间:大模型训练周期通常以月为单位
- 成本控制:训练和部署成本都相对较高
8. 应用场景与实践
8.1 主要应用领域
文本生成任务
- 创意写作:小说、诗歌、文章等创作
- 内容创作:广告文案、营销内容生成
- 代码生成:程序代码自动生成和补全
对话交互应用
- 智能客服:自动化客服系统
- 聊天机器人:日常对话和娱乐交互
- 教育辅导:个性化学习和答疑系统
文本处理任务
- 文本续写:基于开头内容的续写
- 风格转换:改变文本的写作风格
- 语言翻译:多语言之间的翻译
8.2 实际部署考虑
模型选择策略
- 任务导向:根据具体应用需求选择合适规模的模型
- 资源平衡:在性能和成本之间找到平衡点
- 部署环境:考虑硬件环境和推理延迟要求
总结
Decoder-Only PLM 代表了当前LLM发展的主流方向,从 GPT 的开创性工作到 LLaMA 的工程优化,再到各种开源模型的百花齐放,这种架构已经成为大语言模型的标准选择。
随着技术的不断进步和应用场景的不断拓展,Decoder-Only 架构将继续在大语言模型领域发挥核心作用,推动人工智能向更高层次发展。