第二十三章:大语言模型原理
大语言模型(Large Language Model,LLM)是 NLP 发展到今天最重要的技术方向。本章讲解 LLM 的核心原理、规模定律和涌现能力。
什么是大语言模型?
大语言模型是指参数量达到数十亿甚至数千亿的语言模型,它们通过在海量文本数据上训练,展现出了强大的语言理解和生成能力。
核心特征
| 特征 | 说明 |
|---|---|
| 大规模参数 | 通常 1B+ 参数 |
| 海量训练数据 | 数万亿 token 的文本 |
| 涌现能力 | 小模型不具备、大模型突然出现的能力 |
| 通用性 | 一个模型可以完成多种任务 |
规模定律(Scaling Laws)
Kaplan Scaling Laws
OpenAI 的 Kaplan 等人(2020)发现了语言模型性能的幂律关系:
其中:
是损失(loss) 是模型参数量 是训练数据量(token 数) 是计算量(FLOPs) 是幂律指数
核心发现:
- 模型性能随参数量、数据量、计算量的增加而持续提升
- 三者之间存在最优分配比例
Chinchilla Scaling Laws
DeepMind 的 Hoffmann 等人(2022)提出了修正的规模定律:
核心发现:模型参数量和训练数据量应该同比例增长。
| 模型 | 参数量 | 训练 token 数 | 比例 |
|---|---|---|---|
| Gopher | 280B | 300B | 1:1 |
| Chinchilla | 70B | 1.4T | 1:20 |
| LLaMA | 7B | 1T | 1:143 |
Chinchilla 用更少的参数、更多的数据,达到了更好的效果。
涌现能力(Emergent Abilities)
什么是涌现能力?
涌现能力是指只在模型规模超过某个阈值时才突然出现的能力。
模型参数: 1B 10B 100B 200B
算术推理: 差 差 突然好 很好 ← 涌现!
代码生成: 不行 勉强 突然行 很行 ← 涌现!常见的涌现能力
| 能力 | 说明 |
|---|---|
| 少样本学习 | 通过几个示例学会新任务 |
| 思维链推理 | 逐步推理解决复杂问题 |
| 代码生成 | 生成可执行的代码 |
| 指令遵循 | 理解并执行复杂指令 |
| 多语言能力 | 在未显式训练的语言上表现良好 |
思维链(Chain of Thought)
核心思想
思维链是一种提示技术,通过让模型"一步一步思考"来提升推理能力。
标准提示 vs 思维链提示
标准提示:
问:小明有 5 个苹果,给了小红 2 个,又买了 3 个,现在有几个?
答:6思维链提示:
问:小明有 5 个苹果,给了小红 2 个,又买了 3 个,现在有几个?
答:让我一步一步思考。
1. 小明开始有 5 个苹果
2. 给了小红 2 个:5 - 2 = 3 个
3. 又买了 3 个:3 + 3 = 6 个
所以现在有 6 个苹果。为什么思维链有效?
- 分解复杂问题:将复杂推理分解为简单步骤
- 减少错误传播:每一步都可以验证
- 激活知识:逐步推理帮助模型激活相关知识
主流大语言模型
闭源模型
| 模型 | 公司 | 参数量 | 特点 |
|---|---|---|---|
| GPT-4 | OpenAI | 未公开 | 多模态、最强推理 |
| GPT-4o | OpenAI | 未公开 | 多模态、更快 |
| Claude 3.5 | Anthropic | 未公开 | 长上下文、安全 |
| Gemini | 未公开 | 多模态 |
开源模型
| 模型 | 公司 | 参数量 | 特点 |
|---|---|---|---|
| LLaMA 2 | Meta | 7B-70B | 最早的高质量开源模型 |
| LLaMA 3 | Meta | 8B-405B | 性能接近 GPT-4 |
| Qwen | 阿里 | 0.5B-72B | 中文优化 |
| DeepSeek | DeepSeek | 7B-67B | 性价比高 |
| Mistral | Mistral | 7B-8x22B | 高效架构 |
LLM 的训练流程
三阶段训练
阶段1:预训练(Pre-training)
数据:海量无标注文本(数万亿 token)
目标:自回归语言模型(预测下一个词)
结果:获得通用的语言能力
阶段2:监督微调(Supervised Fine-Tuning, SFT)
数据:高质量的指令-回复对
目标:学习遵循指令
结果:能够理解并执行指令
阶段3:人类对齐(Alignment)
方法:RLHF 或 DPO
目标:让输出符合人类偏好
结果:更安全、更有帮助LLM 的推理优化
KV Cache
在自回归生成时,每个新 token 需要计算与所有之前 token 的注意力。KV Cache 缓存之前计算的 Key 和 Value,避免重复计算。
无 KV Cache:
生成 token 5 时:计算 Q5×[K1,K2,K3,K4] → O(n²)
生成 token 6 时:计算 Q6×[K1,K2,K3,K4,K5] → O(n²)
有 KV Cache:
生成 token 5 时:计算 Q5×[K1,K2,K3,K4],缓存 K5, V5
生成 token 6 时:计算 Q6×[K5](只计算新部分)→ O(n)量化
将模型权重从 FP32 压缩到更低精度:
| 精度 | 大小(7B 模型) | 性能损失 |
|---|---|---|
| FP32 | 28GB | 无 |
| FP16 | 14GB | 几乎无 |
| INT8 | 7GB | 很小 |
| INT4 | 3.5GB | 较小 |
推测解码(Speculative Decoding)
使用小型"草稿"模型快速生成多个候选 token,然后用大型模型验证。
小结
| 概念 | 说明 |
|---|---|
| 规模定律 | 性能随参数/数据/计算量的增加而提升 |
| 涌现能力 | 大规模时突然出现的能力 |
| 思维链 | 逐步推理提升复杂问题的解决能力 |
| 三阶段训练 | 预训练 → SFT → 对齐 |
| KV Cache | 缓存注意力计算结果,加速推理 |
大语言模型代表了 NLP 的当前最前沿。理解其原理,有助于我们更好地使用和开发这些模型。