LLM 是什么?一个词一个词地创造智能
大语言模型(Large Language Model,LLM)本质上是一个超级强大的"词语接龙"机器。给它一段文字,它预测下一个最可能出现的词。再把这个词拼到原文里,再预测下一个,循环往复,就生成了整段回答。
这个核心任务叫做自回归语言建模(Autoregressive Language Modeling)。数学形式很简单:给定前 $t-1$ 个 token,预测第 $t$ 个 token 的概率分布。
但就是这个简单的目标,当模型规模大到一定程度(千亿参数、万亿 token 训练数据)之后,涌现出了对话、翻译、编程、推理等高级能力。这就是 LLM 最神奇的地方——预测下一个词这个"低级任务",逼着模型学会了语法、知识、逻辑甚至代码。
核心洞察:LLM 不是什么"真的理解"了世界。它是一个极其复杂的概率模型,学会了人类文本中的统计规律。但当复杂度和数据量达到临界点,这些统计规律本身就能产生令人惊叹的智能表现。这就像蚂蚁群体——每只蚂蚁只知道跟着信息素走,但整个蚁群能搭建出精密的巢穴。
架构:Decoder-Only Transformer
今天几乎所有主流 LLM(GPT 系列、Claude、Gemini、LLaMA、Qwen、DeepSeek)都采用Decoder-Only Transformer 架构。为什么是 Decoder-Only?历史原因:
- 原始 Transformer 有 Encoder 和 Decoder,是为机器翻译设计的。
- GPT 系列证明了只用 Decoder 做自回归语言建模,效果足够好且更简单。
- BERT 证明了只用 Encoder 做双向理解也很好,但难以生成文本。
Decoder-Only 的核心组件包括:
1. 词嵌入(Token Embedding):把离散的 token 映射成连续的向量。每个 token 对应一个高维向量(比如 4096 维)。
2. 位置编码(Positional Encoding):Transformer 本身不考虑词序,所以需要注入位置信息。主流方案已经从早期的正弦编码演变为RoPE(旋转位置编码)。RoPE 通过旋转矩阵编码位置,让注意力计算自然地感知相对距离。
3. 多头自注意力(Multi-Head Self-Attention):每个 token 通过 QKV 机制关注上下文中的其他 token。因为加了因果掩码(Causal Mask),每个 token 只能看到自己和前面的 token,不能偷看后面的。
4. 前馈网络(FFN):对每个 token 独立做非线性变换。通常包含一个隐层,将维度从 $d$ 扩展到 $4d$ 再压缩回来。LLM 的大部分参数都藏在 FFN 里。
5. 层归一化(LayerNorm / RMSNorm):稳定训练过程。现代 LLM 多用 RMSNorm(简化版 LayerNorm)。
这些组件堆叠 $N$ 层(12 层到上百层不等),就构成了一个完整的 LLM。
| 模型 | 参数量 | 层数 | 隐层维度 | 注意力头数 |
|---|---|---|---|---|
| GPT-3 | 175B | 96 | 12288 | 96 |
| LLaMA-3 70B | 70B | 80 | 8192 | 64 |
| Qwen2.5 72B | 72B | 80 | 8192 | 64 |
| DeepSeek-V3 | 671B(MoE) | ~ | 7168 | 128 |
注意 DeepSeek-V3 用的是 MoE(混合专家)架构——不是所有参数都在每次推理中被激活,而是只激活一部分"专家",大幅降低推理成本。这种架构正在成为千亿模型的主流方向。
训练三部曲
一个 LLM 的训练不是一步到位的,而是分三个阶段,每个阶段的目标和方式都不同。
第一阶段:预训练(Pre-training)
这是最烧钱的一步。目标只有一个:从海量互联网文本中学习语言规律。训练数据来自网页、书籍、论文、代码仓库等,经过清洗、去重、过滤后,以 TB 为单位喂给模型。
损失函数就是下一个 token 预测的交叉熵损失——模型每预测一个 token,就对比真实 token 算一次损失,然后反向传播更新参数。
这个过程需要数千张 GPU 训练数周到数月。GPT-3 花了 355 GPU·年,训练成本约 460 万美元。现在的模型更大、数据更多,训练成本动辄上亿。
缩放定律(Scaling Laws):模型性能与参数量、数据量、算力量之间存在可预测的幂律关系。简单说——更大 = 更好。但 Kaplan 等人的研究发现模型大小和数据量需要同步增长,否则浪费算力。最近 Chinchilla 定律进一步修正了最优配比:数据量应该是参数量的 20 倍左右(以 token 计)。
第二阶段:指令微调(Instruction Tuning)
预训练完的模型只会"续写",不会"回答问题"。你输入"法国的首都是",它可能输出"巴黎,也是欧洲的文化中心..."——这已经是预训练模型能做到的最好水平了。但如果你问"法国的首都是什么?"它可能一脸懵。
指令微调用人工标注的问答对(指令 + 理想回答)对模型做有监督微调。数据形式是:
用户:法国的首都是什么?
助手:法国的首都是巴黎,也是法国最大的城市...
经过几千到几万条这样的数据微调,模型就学会了"对话的格式"——不再是续写,而是一问一答。这一步成本相对较低,几台 GPU 几天就能跑完。
第三阶段:人类反馈强化学习(RLHF)
指令微调让模型学会了回答问题,但回答得好不好是另一回事。RLHF 让模型学会人类偏好:更 helpful、更 honest、更 harmless。
过程是这样的:
- 收集偏好数据:对同一个问题让模型生成多个回答,人类标注员排序哪个更好。
- 训练奖励模型:用偏好数据训练一个打分模型,学会判断"人类更喜欢哪个回答"。
- PPO 强化学习:用奖励模型的打分作为反馈,通过 PPO 算法优化 LLM 的参数,让它的回答更符合人类偏好。
RLHF 是 GPT-4、Claude 等顶级模型质量的关键。它不增加模型的知识量,但显著提升了回答的有用性和安全性。最近 DPO(直接偏好优化)等简化方案也在兴起,不需要单独训练奖励模型,一步到位。
Tokenization:模型眼中的文字
LLM 不直接处理文字,它处理的是 token。Tokenization 就是把文本切成 token 的过程。
"我爱北京天安门"可能被切成 ["我爱", "北京", "天安门"] 或 ["我", "爱", "北京", "天", "安", "门"]——取决于分词器的设计。主流方案是BPE(Byte-Pair Encoding),它从字符级别开始,逐步合并频繁共现的字符对,最终形成一个词表。
Tokenization 对模型效果的影响远比你想象的大:
- 中文 token 化效率:英文一个词通常是一个 token,中文一个字通常也是 1-2 个 token。但因为 BPE 是从字符统计出发,中文常见词(如"我们"、"的")会被合并成一个 token,生僻词则可能被切成多个。
- 数字 token 化:"1000000"可能是一个 token,也可能是三个 token("100"、"0"、"000"),取决于训练语料里这个数字出现的频率。这会影响数学能力。
- 代码 token 化:空格和缩进的处理方式直接影响代码生成质量。这也是为什么很多模型的代码能力需要专门优化。
推理:生成的艺术
训练好的模型拿来用的时候,叫做推理(Inference)。你输入 prompt,模型生成 response。但这个"生成"中间有很多门道。
自回归生成
模型一次只生成一个 token,然后把新 token 拼到输入里,再生成下一个。直到遇到结束 token(EOS)或达到最大长度。
这个过程本质上是:
输入:"法国的首都是"
输出 token 概率:[巴黎: 0.7, 伦敦: 0.1, 柏林: 0.05, ...]
选择"巴黎"
新输入:"法国的首都是巴黎"
输出 token 概率:[,: 0.5, : 0.3, 是: 0.1, ...]
选择","
...重复直到结束
采样策略
每次选哪个 token?这里有几种策略:
- 贪心解码(Greedy Decoding):每次都选概率最高的 token。结果稳定但缺乏多样性,容易重复。
- Top-K 采样:只从概率最高的 K 个 token 里按概率随机选。K 越大越随机。
- Top-P(Nucleus)采样:从累积概率达到 P 的最小 token 集合里采样。比 Top-K 更灵活。
- Temperature:在 softmax 之前缩放 logits。温度越低越确定(趋近贪心),温度越高越随机。写作时用高温度,代码生成用低温度。
KV-Cache:推理加速的关键
生成第 $t$ 个 token 时,前面 $t-1$ 个 token 的 Key 和 Value 向量其实在之前每一步都算过了。如果不缓存,每次都要重新算前面的,复杂度是 $O(n^3)$。KV-Cache 把之前算过的 K、V 存起来,每次只算当前 token 的 Q,和缓存的 K、V 做注意力,复杂度降到 $O(n^2)$。
KV-Cache 是 LLM 推理引擎(如 vLLM、TensorRT-LLM)的核心优化手段。它让推理速度快了几十倍,但代价是显存消耗大——对于 70B 模型,每个并发请求的 KV-Cache 可能占用几个 GB 的显存。
涌现能力:大即不同
当模型规模突破某个阈值,会出现一些在小型模型中完全不存在的能力。这就是涌现(Emergence)。
几个典型的涌现能力:
上下文学习(In-Context Learning):给模型几个例子,它就能自动"学会"做这类任务。不需要参数更新,全靠注意力机制从示例中提取模式。这是 2022-2023 年最受关注的现象——GPT-3 的论文标题就是《Language Models are Few-Shot Learners》。
思维链推理(Chain-of-Thought):当模型大到一定程度,让它"一步一步思考"(Let's think step by step)就能显著提升推理任务的正确率。小模型即使给了这个指令也不起作用。CoT 让 LLM 在数学、逻辑、符号推理上的能力大幅跃升。
指令遵循(Instruction Following):理解复杂指令并按指令执行的能力,也是随着模型规模涌现的。小模型可能只能理解"写一首诗",大模型能理解"用莎士比亚风格写一首关于 AI 的十四行诗,每行以 'i' 开头,包含至少三个隐喻"。
注意:涌现不是魔法,而是"连续变化在阈值附近表现出跳跃"。随着模型和数据继续增大,有些以前认为"不可能"的能力可能突然出现,但也有一些能力是指令微调和 RLHF 训练的产物,而非纯规模的结果。
局限性:它不完美
LLM 很强大,但缺点也很明显。了解这些局限,不是什么缺陷,而是知道什么时候该信任它,什么时候该怀疑它。
1. 幻觉(Hallucination):LLM 会"编造"事实。因为它的训练目标只是"生成看起来合理的文本",不是"生成真实的文本"。它不知道什么是真理,它只知道什么话听起来像人话。RAG 是对抗幻觉的主要手段,但不能根除。
2. 上下文窗口限制:Transformer 的注意力复杂度是 $O(n^2)$,所以处理长文本很贵(虽然 FlashAttention 等优化已大幅缓解)。即使模型支持 128K 上下文,它也可能"忘记"开头的内容——这就是"迷失在中间"(Lost in the Middle)现象。
3. 训练数据截止:模型的知识停留在训练完成的那一刻。问它"今天发生了什么",它只能猜。除非你给它检索工具(又是 RAG 的戏份)。
4. 推理成本高昂:运行一个 70B 模型需要大约 140GB 显存(FP16),至少 2-4 张 A100/H100。每生成一个 token 都是一次完整的神经网络前向传播。Token 就是钱。
5. 缺乏真正的理解和推理:LLM 没有意识、没有意图、没有真实世界的体验。它的"推理"本质上是模式匹配的高级形式。在需要精确逻辑、多步推理、物理常识的场景下仍然会犯错。
模型生态与选型指南
2024-2025 年的 LLM 生态已经非常丰富。选择模型时的核心考量维度:
| 类别 | 代表模型 | 特点 | 适合场景 |
|---|---|---|---|
| 闭源旗舰 | GPT-4o, Claude 4, Gemini 2.5 | 最强能力,API 调用 | 复杂推理、代码、生产 |
| 开源旗舰 | LLaMA-3, Qwen2.5, DeepSeek-V3 | 可私有部署,可控 | 数据敏感、定制需求 |
| 中小模型 | Qwen2.5-7B, LLaMA-3-8B, Gemma-2 | 单卡可跑,速度快 | RAG 系统、简单任务 |
| MoE | Mixtral 8x7B, DeepSeek-V3 | 性价比高,激活参数少 | 需要大模型能力但预算有限 |
| 多模态 | GPT-4V, Gemini, Qwen2.5-VL | 看懂图片、视频 | 图像理解、文档分析 |
选型建议:先确定你的场景需要什么能力(推理?代码?中文?),然后看预算和部署条件(API 调用还是私有部署?),最后用评测集跑分做决定。不需要 70B 的时候,7B 又快又省。
面试常考:几个关键判断
Q: LLM 真的"理解"语言吗?
不。LLM 是统计模型,不是理解模型。它没有意图、信念或意识。但它的统计模式如此复杂,以至于在行为上表现出"看起来像理解"的效果。这被称为"随机鹦鹉"假说 vs"实际理解"之争——目前还没有定论。
Q: 为什么 GPT 是 Decoder-only,BERT 是 Encoder-only?
GPT 做生成(从左到右预测下一个词),BERT 做理解(双向上下文预测掩码词)。生成任务需要因果性(不能看到未来),所以用带掩码的 Decoder。理解任务需要全视野,所以用 Encoder。现在 LLM 主流是 Decoder-only,因为生成是更通用的任务形式。
Q: 7B 模型和 70B 模型差距有多大?
在很多任务上差距巨大。70B 模型的知识广度、推理深度、指令遵循能力都显著强于 7B。但在简单任务上(如简单的 QA、分类),7B 经过微调后可能接近 70B。知识靠规模,技能靠微调。
Q: 为什么推理这么慢?
三个原因:一是内存带宽瓶颈(模型参数太多,从显存搬到计算单元需要时间);二是自回归的串行本质(一次只能生成一个 token);三是注意力计算是平方级的。KV-Cache、量化、投机解码等技术都是为了缓解这些瓶颈。
Q: 开源模型能追上闭源吗?
差距在缩小但仍在。LLaMA-3 405B 和 DeepSeek-V3 已经接近 GPT-4 的水平。但 GPT-4o 和 Claude 4 也在进步。开源的优势是可定制、可私有化、可控成本;闭源的优势是能力上限更高、不用自己运维。
LLM 用海量参数和文本学会了"下一个词"的预测,却在无意中获得了推理、创作和对话的能力。它不是真正理解世界,但它生成的文字,看起来越来越像理解了——而有时候,在应用层面,"看起来像"就已经足够改变世界。
彩蛋
GPT-3 发布时(2020 年),OpenAI 的论文标题是《Language Models are Few-Shot Learners》。当时很多人觉得"few-shot"指的是给模型几个示例就能学会新任务。但后来大家发现,真正改变游戏规则的是zero-shot——不给例子,模型也能做得很好。
然后有人调侃说,应该把论文标题改成《Language Models are Zero-Shot Learners After You Spend Millions of Dollars on Scaling and Then Add a Chat Interface》。虽然是个段子,但说的确实是事实。
另外还有一个经典的笑话:AI 标注员标注 RLHF 数据的日常,就是给模型当语文老师。"这里回答得太啰嗦了,减一分。这里编了一个事实,减十分。这里用词很准确,加一分。"——然后模型就在千亿参数的维度空间里,朝着人类的偏好挪动了一小步。
而写这篇文章的时候,正在运行的模型可能才刚刚学会"法国的首都是巴黎"。希望你读完之后,不仅知道它为什么这么回答,也知道它为什么有时不这么回答。