Decoder-Only 模型架构是当前大型语言模型(LLM)的基石之一。这类模型通过Decoder 堆叠构建,专注于生成任务,例如文本生成、机器翻译等。GPT 系列模型作为这一架构的代表,引领了大规模预训练语言模型的发展潮流。
1 GPT
GPT,即 Generative Pre-Training Language Model。
在 2018 年左右,自然语言处理领域出现了两个具有划时代意义的预训练语言模型:
模型 | 发布者 | 架构 | 特点 | 代表任务 |
---|---|---|---|---|
BERT | Encoder-Only | 双向注意力,擅长理解 | 分类、问答等理解任务 | |
GPT-1/2 | OpenAI | Decoder-Only | 单向因果建模,擅长生成 | 文本生成、翻译等生成任务 |
发布之初,GPT在性能上略低于BERT,此后OpenAI 团队坚定地选择了不断扩大预训练数据、增加模型参数、优化架构设计、强调少样本 / 零样本迁移能力(不依赖 fine-tuning,而是通过 prompt 来引导模型完成任务),终于,2020 年,GPT-3 的发布彻底改变了人们对语言模型的认知,开启了 LLM 新时代。
(1) 模型架构——Decoder Only
与BERT采用Encoder堆叠不同,GPT采用Decoder堆叠构造模型。天生更加适合文本生成任务。
GPT 输入处理流程:
Tokenizer 分词
输入文本通过 tokenizer(如 BPE 或 SentencePiece)进行分词,每个 token 被映射为一个整数 ID,构成 input_ids
序列。
Embedding 层
input_ids
经过嵌入层(Embedding Layer),将每个词 ID 映射为一个向量表示(即词向量)。这些词向量通常具有固定的维度 dmodeldmodel,例如 768(GPT-2)或更大(GPT-3)。
Positional Embedding(位置编码)
GPT-1 沿用了Transformer中使用的位置编码方式:Sinusoidal 位置编码,通过三角函数进行绝对位置编码。(通过函数生成位置信息,不参与训练)
GPT-2 开始改用 可学习的位置编码,以适应更复杂的任务和长序列建模。
GPT 解码器层流程图示
Input: hidden_states = Embedding + Positional Embedding
For each decoder layer:
1. LayerNorm(hidden_states)
2. Masked Self-Attention(LayerNorm_output)
3. Residual Connection: hidden_states + Attention_output
4. LayerNorm(residual_output)
5. Feed-Forward Network (MLP)
6. Residual Connection: residual_output + MLP_output
GPT 与 BERT 的核心区别总结
方面 | GPT | BERT |
---|---|---|
模型类型 | Decoder-Only | Encoder-Only |
注意力机制 | 单向因果注意力(只能看前面) | 双向自注意力(前后都看) |
任务目标 | 因果语言建模(Causal LM) | 掩码语言建模(MLM) |
位置编码 | Sinusoidal / Learnable | Learnable |
LayerNorm 位置 | Pre-LN(在残差连接之前) | Post-LN(在残差连接之后) |
应用方向 | 文本生成为主 | 自然语言理解为主 |
(2)预训练任务——CLM
因果语言模型,Casual Language Model,简称 CLM。
是一种基于序列历史信息预测下一个 token 的语言模型。它通过建模联合概率分布来生成文本,具体方式是将联合概率分解为条件概率的形式:
每一个 token 的出现只依赖于它前面的所有 token,此乃“因果”。过去的所有token影响当前token的预测。
CLM 的工作机制如下:
- 输入一个 token 序列
- 模型根据这个前缀预测下一个最可能的
- 将预测出的新的token加入序列中,继续预测下一个 token
- 重复步骤 2~3,直到达到最大长度或遇到结束符(如
<EOS>
)
这种逐步生成的方式被称为 自回归(Autoregressive)生成。
与 N-gram 模型的比较:
特性 | N-gram 语言模型 | 因果语言模型(CLM) |
---|---|---|
历史依赖 | 固定长度(如前 n-1 个 token) | 动态长度(所有前面 token) |
上下文感知能力 | 局部依赖,上下文有限 | 全局依赖,可建模长距离依赖 |
模型复杂度 | 简单,参数少 | 复杂,尤其是基于神经网络时 |
实现方式 | 统计频率表 / 插值平滑 | RNN / Transformer / CNN 等 |
生成能力 | 有限,易生成重复或无意义内容 | 强大,尤其在大规模模型中 |
很显然,相比BERT的MLM、NSP,CLM是更直接更符合人类书写习惯的预训练任务,并且同样可以在海量无监督数据上进行大规模的预训练。
CLM输入输出举例:
input: 我喜欢拉布
output: 我喜欢拉布拉
input: 我喜欢拉布拉
output:我喜欢拉布拉多
(3)GPT 系列模型的发展
GPT-1(2018年):
- OpenAI发布了首个基于Transformer架构的生成式预训练模型GPT-1。
- 它通过大规模未标注数据进行预训练,然后在特定任务上进行微调,以增强语言理解和生成能力。
GPT-2(2019年):
- GPT-2拥有更多的参数和更大的数据集,其最大版本有15亿个参数。
- 引入了零样本学习的概念,即无需额外训练就能执行各种NLP下游任务。
GPT-3(2020年):
- GPT-3大幅扩展了规模,最大版本包含1750亿个参数。
- 提出了上下文学习(In Context Learning, ICL)方法,使用提示(Prompt)来适应不同的下游任务,实现了少样本或零样本学习。
- 推出了OpenAI API,标志着商业运营阶段的开始。
ChatGPT(2022年):
- 基于GPT-3.5,并采用了人类反馈强化学习(Human Feedback Reinforcement Learning),以更好地对齐人类需求。
- 两个月内全球活跃用户数突破1亿。
GPT-4(2023年):
- 展现了更强的理解与推理能力,能够处理图像等多模态数据。
- 在许多专业和学术测试中表现出超过常人的能力,并接近通用人工智能(AGI)的能力。
2 LLaMA
LLaMA模型是由Meta(前Facebook)开发的一系列大型预训练语言模型,采用了与GPT系列相似的纯解码器架构,这意味着它不包含编码器部分,而是专注于自回归语言建模任务,即根据前面的文本预测下一个单词或标记。
LLaMA模型的发展历程
LLaMA-1 系列:
- Meta于2023年2月发布了LLaMA-1,包括7B、13B、30B和65B四个参数量版本。
- 这些模型在超过1T token的语料上进行了预训练,其中最大的65B参数模型在2,048张A100 80G GPU上训练了近21天。
- LLaMA-1因其开源性和优异性能迅速成为开源社区中最受欢迎的大模型之一。
LLaMA-2 系列:
- 2023年7月,Meta发布了LLaMA-2,包含7B、13B、34B和70B四个参数量版本,除了34B模型外,其他均已开源。
- LLaMA-2将预训练的语料扩充到了2T token,并将模型的上下文长度从2,048翻倍到了4,096。
- 引入了分组查询注意力机制(Grouped-Query Attention, GQA)等技术。
LLaMA-3 系列:
- 2024年4月,Meta发布了LLaMA-3,包括8B和70B两个参数量版本,同时透露400B的LLaMA-3还在训练中。
- LLaMA-3支持8K长文本,并采用了编码效率更高的tokenizer,词表大小为128K。
- 使用了超过15T token的预训练语料,是LLaMA-2的7倍多。
3 GLM
GLM 系列模型是由智谱开发的主流中文 LLM 之一。
为什么叫GLM?
来自其提出的 GLM(General Language Model,通用语言模型)任务,这也是 GLM 的名字由来。GLM 是一种结合了自编码思想和自回归思想的预训练方法。所谓自编码思想,其实也就是 MLM 的任务学习思路,在输入文本中随机删除连续的 tokens,要求模型学习被删除的 tokens;所谓自回归思想,其实就是传统的 CLM 任务学习思路,也就是要求模型按顺序重建连续 tokens。
GLM 通过优化一个自回归空白填充任务来实现 MLM 与 CLM 思想的结合。其核心思想是,对于一个输入序列,会类似于 MLM 一样进行随机的掩码,但遮蔽的不是和 MLM 一样的单个 token,而是每次遮蔽一连串 token;模型在学习时,既需要使用遮蔽部分的上下文预测遮蔽部分,在遮蔽部分内部又需要以 CLM 的方式完成被遮蔽的 tokens 的预测。例如,输入和输出可能是:
输入:I <MASK> because you <MASK>
输出:<MASK> - love you; <MASK> - are a wonderful person
GLM(Generalized Language Model)最初是由清华大学计算机科学与技术系知识工程组(KEG)团队提出的一种新型通用语言模型架构。它在设计上融合了传统的 Causal Language Modeling (CLM) 和 Masked Language Modeling (MLM) 的思想,旨在构建一个既能胜任自然语言理解(NLU),又能在自然语言生成(NLG)任务中表现优异的统一预训练语言模型。
GLM 的核心创新点包括:
1. 统一建模目标:结合 CLM 与 MLM
- 传统 CLM(如 GPT):通过自回归方式预测下一个词,适合生成任务。
- 传统 MLM(如 BERT):通过遮蔽部分词语并预测它们,适合理解任务。
GLM 在此基础上引入了一种新的预训练任务:
Prefix + Blank Infilling:即给定一个上下文前缀(prefix),模型需要填充句子中间被遮盖的部分(blank)。这种任务形式既保留了 MLM 的双向理解能力,也保持了 CLM 的生成特性。
2. 灵活的输入掩码机制
GLM 使用一种随机选择文本片段进行遮蔽的方式,并允许对多个“空白”位置进行预测,从而增强模型的多任务适应能力。
3. 支持多种下游任务的统一框架
由于其设计兼顾理解和生成,GLM 可以直接用于:
- 分类任务(如文本分类、问答)
- 生成任务(如摘要、对话、翻译)
总结
GLM 是一种具有创新性的统一语言模型架构,它的出现打破了 NLU 和 NLG 之间的界限,提供了一个更加通用的语言模型范式。后续基于 GLM 架构开发的模型,也在持续推动着中文大模型的发展。
资料参考:
https://github.com/datawhalechina/happy-llm/blob/main/docs