Skip to content

LLM 技术原理与架构演进(选读) ​

这一章可以跳过

实现 Code Agent 不要求先学会训练模型。本章只回答五个问题:

  • 一段文字怎样进入模型,又怎样变成输出文字;
  • Transformer 怎样发展成今天的 LLM;
  • 模型变大以后遇到了哪些成本和能力问题;
  • GPT 到 DeepSeek 之间的架构与训练变化分别解决了什么;
  • 哪些问题至今仍不能只靠模型解决。

不读本章也可以直接进入第 3 章。

先看完整流程:文字怎样进入模型,又怎样变回文字 ​

当前主流生成式语言模型的基础任务仍然是:根据前面的 token,预测下一个 token。 一次完整生成可以简化成下面这条流程:

text
原始文字
  ↓ tokenizer:把文字切成 token,再转换成 token ID
token ID
  ↓ embedding:把编号转换成向量,并加入位置信息
向量序列
  ↓ 多层 decoder-only Transformer:Attention 读取前文,FFN 加工信息
下一个 token 的候选分数
  ↓ softmax:把分数转换成概率
概率分布
  ↓ 解码策略:选择一个 token
新的 token
  ↓ 接回输入,重复预测,直到结束
token ID 序列
  ↓ tokenizer:把 token ID 转换回文字
输出文字

这里容易混淆两个“解码”:

  • Transformer decoder 是模型内部的网络结构。它使用因果掩码,生成当前位置时只能读取前文,不能看到后面的 token。
  • 文本解码 是 tokenizer 把模型选出的 token ID 还原成文字。

相应地,开头的“编码”也不等于使用 Transformer encoder。GPT 一类模型通常没有单独的 encoder 网络;文字先经过 tokenizer 和 embedding,就可以进入 decoder-only Transformer。

tokenizer 决定同一段文字会被切成多少 token。它会影响上下文占用、推理费用和模型处理代码或不同语言的效率,但不能单独决定模型是否“理解”内容。同一个模型也必须使用与训练时匹配的 tokenizer,不能随意替换。

decoder-only 模型生成下一个 token 的简化过程

模型内部主要做了什么 ​

每一层 Transformer 主要包含两类计算:

  • Attention:让当前位置根据需要读取前文不同位置的信息。例如补全一个变量名时,模型可能更关注前面的变量定义,而不是相邻的注释。
  • FFN:分别加工每个位置已经汇总的信息。语言模型的大量参数通常位于这一部分。

注意力头根据当前位置为前文 token 分配不同权重

模型最后输出的不是一句完整答案,而是词表中每个候选 token 的分数。softmax 把这些分数转换成概率,解码策略再从中选择一个 token。贪心选择、temperature、top-p 等方法会改变选择方式,却不会把概率预测变成确定性计算。

这一章最重要的边界

从可以验证的工作机制看,LLM 不是先形成一个有自我意识的想法,再把想法翻译成文字。它根据上下文计算下一个 token 的概率,选出一个 token,然后继续预测。我们日常说模型在“思考”,描述的是它生成中间步骤、比较候选答案或投入更多推理计算的表现,不代表它已经具有人类式的自我思考能力。

更多参数、更好的数据、指令微调、强化学习和更多推理计算,都在调整这套概率分布:让正确答案、合适格式和合理工具调用更可能出现,而不是保证它们一定出现。 模型可以越来越可靠,却仍可能编造事实、漏掉限制、推理出错或返回不合法的工具参数。

Transformer 为什么出现,又怎样变成 GPT ​

Transformer 出现以前,处理文本的模型常使用 RNN 等循环结构。它们需要按顺序读取 token,后一个位置依赖前一个位置的计算结果,不容易把整段文本并行训练;距离很远的信息也更难传递。

Transformer 原始论文在 2017 年提出只使用 Attention 的编码器—解码器结构。Attention 可以直接建立远距离 token 之间的联系,也让训练更容易并行。它最初主要解决机器翻译等序列转换任务,并不是今天聊天模型的完整形态。

GPT 选择了其中的 decoder,并使用因果掩码训练它预测下一个 token。这样,同一种训练目标就可以利用大量没有人工标注的文本。随后发生的变化不是“突然发明了一种全新 AI”,而是围绕同一条主干持续扩大数据、参数和计算,再增加指令训练、偏好训练和推理优化。

时间代表变化主要解决的问题
2017:Transformer用 Attention 取代循环结构作为主要信息交换方式长距离信息传递和训练并行性
2018:GPT-1先做生成式预训练,再针对任务微调标注数据有限,任务模型难以复用通用语言能力
2019:GPT-2扩大模型与数据,用自然语言上下文表达任务减少每个任务都单独训练一个模型的需要
2020:GPT-3继续扩大规模,展示上下文中的零样本、少样本学习不修改模型参数,也能用说明和示例适配任务
2022:InstructGPT指令微调、人工偏好和强化学习会续写不等于会遵循用户要求
2024:DeepSeek-V2MLA 与稀疏专家架构大模型生成时的 KV Cache、计算和部署成本
2024:DeepSeek-V3改进专家负载均衡,并加入多 token 预测训练目标更高效地训练和使用大规模稀疏模型
2025:DeepSeek-R1在可验证任务上强化学习,并结合多阶段训练与蒸馏改善数学、代码等任务的多步推理行为

因此,“LLM 的出现”不是某一个时间点,也不能只归功于模型参数变多。decoder-only Transformer 提供了可以扩展的主干,海量数据和计算形成基础能力,上下文学习改变了使用方式,后训练又让模型更会按人的要求回答。

LLM 变大以后,暴露了哪些问题 ​

规模扩大带来了能力,也把成本和可靠性问题一并放大。后续架构变化应该放回这些问题下理解,而不是背一串技术名词。

问题为什么出现常见改进方向
训练越来越贵参数、数据和训练 token 同时增加调整模型与数据配比,提高训练效率
每生成一个 token 都要计算大量参数稠密模型每次都使用全部主要参数MoE 只激活部分专家
长上下文占用大量显存生成时需要保存前文的 key/valueMQA、GQA、MLA 压缩或共享 KV
Attention 受显存读写限制计算过程频繁在不同层级内存间搬运数据FlashAttention 等计算内核优化
会续写,但不一定听指令预训练目标只要求预测后文SFT、偏好训练、RLHF
回答流畅,但多步推理仍会错局部合理的 token 不等于最终结论正确可验证奖励、更多推理计算、外部验证
输出始终不能完全可靠模型生成的是概率结果,也看不到完整真实环境工具、权限、沙箱、测试和结果验证

训练规模:参数多不等于训练充分 ​

Scaling Laws观察到,模型误差会随参数、数据和训练计算按一定规律下降。但在计算预算固定时,不能只增加参数。Chinchilla进一步表明,模型大小和训练 token 数需要合理配比;参数很大但数据训练不足,可能不如更小但训练更充分的模型。

这解决的是“有限计算应该怎样分配”的问题,不是证明参数量可以单独代表能力。比较模型仍要回到真实任务、延迟和费用。

架构和训练优化分别解决了什么 ​

问题一:参数越多,每次计算越贵 ​

稠密模型处理每个 token 时,都会使用同一组主要参数。MoE(Mixture of Experts,混合专家)把一部分 FFN 替换成多组专家,再由路由器为每个 token 选择少数专家。

稠密 Transformer 与 MoE 块的差异

Switch Transformer展示了稀疏专家模型的扩展方式,Mixtral和 DeepSeek 则把这条路线用于公开的大语言模型。DeepSeek-V3 有 671B 总参数,但每个 token 约激活 37B 参数。

因此,比较 MoE 模型时要分开看:

  • 总参数量决定模型一共保存多少参数;
  • 激活参数量决定每个 token 实际经过多少参数;
  • 路由和通信成本决定专家分布到多张卡后,数据搬运是否成为瓶颈。

MoE 让“增加模型容量”和“增加每个 token 的计算量”不再完全绑定,但代价是路由、负载均衡和跨设备通信更复杂。它解决的是计算效率问题,不会自动解决事实错误和指令遵循。

问题二:上下文越长,KV Cache 越大 ​

自回归生成每个新 token 时,都需要读取前文。KV Cache 保存前文 Attention 已经计算出的 key 和 value,避免每一步从头计算;但前文越长,缓存占用的显存也越大。

几种优化的思路不同:

  • MQA 让多组 query 共享同一组 key/value,缓存更小,但可能损失部分效果;
  • GQA 让若干组 query 共享一组 key/value,在质量与成本之间折中;
  • MLA 把 key/value 信息压缩到较小的潜在表示中,需要时再参与 Attention 计算。DeepSeek-V2 用它显著降低生成阶段的 KV Cache 成本。

这些是模型内部的 KV Cache 优化。第 2 章讨论的提示词缓存是在多次请求之间复用相同前缀,两者不是同一件事。

问题三:Attention 的显存读写拖慢计算 ​

FlashAttention没有把精确 Attention 换成另一种近似模型,而是重新组织计算,减少 GPU 不同层级内存之间的数据读写。

它首先改善的是速度和显存占用,不会直接让同一组参数变得更聪明。但更高的训练和推理效率可以让更大模型、更长上下文或更高吞吐变得可行,从而间接影响最终能力和成本。

问题四:只预测一个 token,训练信号有限 ​

标准语言模型根据当前位置预测紧接着的一个 token。DeepSeek-V3 在训练中加入多 token 预测目标,让模型同时学习后续多个 token 的信息。

这是一种训练目标优化,不代表模型生成时可以无条件一次跳过多个 token,也不改变最终输出仍需按概率选择的事实。它主要帮助模型更充分地利用训练信号。

问题五:会续写,不等于会按要求回答 ​

预训练看到的是“前文后面通常出现什么”,没有天然的用户、助手和任务完成概念。后训练负责缩小这个差距:

方法做法主要改善仍不能保证
SFT用“指令—理想回答”样例继续训练指令遵循、格式和任务习惯没见过的边界情况一定正确
偏好训练、RLHF根据人工或模型偏好调整回答倾向有用性、安全性和表达方式偏好等于客观事实
可验证强化学习用答案、测试或环境结果作为奖励数学、代码等可判定任务的解题行为奖励覆盖不到的问题也正确
蒸馏让较小模型学习较强模型的输出以更低成本复用部分能力完整复制教师模型能力

DeepSeek-R1 的主要变化位于后训练,而不是重新发明 Transformer 主干。它说明在答案能由规则、测试或环境验证时,强化学习可以改变模型投入计算和展开推理的方式;也说明验证信号本身是能力提升的重要条件。

从 GPT 到 DeepSeek,真正变了什么 ​

如果只看产品名称,很容易误以为每一代模型都换了一套完全不同的原理。公开资料能够支持的结论更朴素:

相对稳定的部分持续变化的部分
decoder-only Transformer 主干模型规模、训练数据和计算配比
根据前文预测后续 token稠密模型或稀疏专家的参数组织方式
Attention 和 FFN 逐层加工信息GQA、MLA 等 KV Cache 优化
输出候选 token 的概率分布FlashAttention 等训练与推理工程
自回归生成SFT、偏好训练、强化学习和蒸馏
概率选择会产生不确定性多 token 预测、推理阶段计算和工具使用训练

GPT-1 到 GPT-3 的公开工作主要展示了生成式预训练、规模扩展和上下文学习。DeepSeek-V2/V3 把重点放在大规模模型怎样降低训练与推理成本,DeepSeek-R1 则重点改善可验证任务上的推理行为。它们改变了能力与成本的边界,但没有改变“根据上下文计算 token 概率”这一基础生成方式。

这些变化仍没有解决什么 ​

模型架构和训练方法还在快速演进,但下面几类问题不能因为基准分数上升就视为已经解决:

看起来合理,不等于真实正确 ​

模型学习的是数据中的模式。一个说法在语言上很常见,只能提高它被生成的概率,不能证明它符合当前代码、最新文档或真实环境。检索和工具可以补充信息,测试与验证负责检查结果,但模型仍可能错误理解或错误使用这些信息。

生成推理过程,不等于拥有稳定的自我思考 ​

模型可以生成更长的中间步骤,也可以通过训练学会检查、回退和比较答案。这些能力对解题很有用,但其可观察机制仍是条件概率生成。中间步骤可能正确,也可能只是流畅地把错误继续展开。

上下文窗口,不等于长期记忆 ​

更长窗口让一次请求能看到更多内容,却不代表模型会永久记住项目状态,也不保证它能从大量内容中找到关键事实。跨会话记忆仍需要外部存储、检索、更新和遗忘规则。

模型知识,不会自动保持最新 ​

训练完成后,参数不会因为现实世界或仓库发生变化而自动更新。持续预训练、检索和工具调用可以补充新信息,但都会带来数据质量、权限和时效性问题。

能力增强,不等于可控和安全 ​

越强的模型可以提出更复杂的操作,也可能造成更大的影响。权限边界、沙箱、敏感信息保护和可审计性仍是程序必须承担的责任。未来模型需要继续改善事实可靠性、可解释性、持续学习、计算效率和对真实环境反馈的使用,但不能预设某一种架构会一次解决所有问题。

对 Code Agent 开发意味着什么 ​

到这里可以重新区分模型、服务和 Agent:

层包含什么主要决定什么
LLM参数、网络结构和训练结果生成代码、理解指令和选择下一步的概率质量
模型服务推理引擎、采样、缓存、限流和 API延迟、费用、吞吐和输出形态
AgentLLM、上下文、工具和 Harness能否接触真实环境并完成多步任务
Harness约束、沙箱、权限、调度和验证哪些操作可以执行,错误怎样被拦截和恢复

模型升级可以提高成功概率,却不能替代 Agent 的工程保证。对 Code Agent 来说:

  • 上下文负责提供当前仓库的事实、规则和任务状态;
  • 工具负责读取文件、修改代码、执行命令和取得真实结果;
  • Harness 负责限制工具能做什么,并用权限、沙箱、测试和验证阻止不可接受的结果;
  • 模型负责在这些信息和能力之上选择下一步。

因此,模型优化只能让“按预期输出”越来越可能。需要确定性的地方,必须由程序检查:参数是否有效、权限是否允许、命令是否进入沙箱、修改能否通过测试、结果是否满足验收条件。这也是第 3 章开始讨论 Agent 控制循环的原因。

常见术语速查 ​

术语直接理解
token模型处理文字和代码的基本片段,不等于字符或单词
tokenizer在文字与 token ID 之间转换的规则和程序
embedding把 token ID 转换成向量
logits模型对每个候选 token 输出的原始分数
softmax把候选分数转换成概率分布
decoding按概率选择 token,也可指把 token ID 还原成文字;需要结合上下文判断
Transformer由 Attention、FFN 等模块重复堆叠的常见模型主干
decoder-only只使用因果解码器、按前文预测后文的模型结构
causal mask限制当前位置只能读取前文的掩码
Attention让当前位置按权重组合前文其他位置的信息
FFN对每个 token 的表示继续加工的前馈网络
dense model每个 token 使用同一组主要参数的稠密模型
MoE每个 token 只选择部分专家参数参与计算的稀疏模型
KV Cache保存已处理前文的 Attention 中间结果,减少重复计算
GQA多组 query 共享较少的 key/value 头,降低 KV Cache 成本
MLA把 key/value 信息压缩到较小潜在表示中的注意力方案
prefix caching在多次请求之间复用相同前缀的计算结果
pretraining用大量数据训练后续 token 预测
SFT用输入与理想回答样例做监督微调
RLHF用人工偏好形成奖励信号,再调整模型行为
RLVR使用测试、规则或可验证答案作为强化学习奖励
distillation让较小模型学习较强模型的输出或分布
inference使用训练完成的模型生成结果
context window一次请求可容纳的输入与输出 token 范围
temperature调整采样分布的随机程度,不是事实正确率开关
reasoning model在回答前生成更多中间步骤或投入更多推理计算的模型或服务形态;仍不保证结论正确

读完只需记住五点 ​

  1. 文字先被切成 token 并转换为向量;模型逐次预测下一个 token;最后再把 token 还原成文字。
  2. Transformer 提供了可并行扩展的主干,GPT 用生成式预训练、规模扩展和上下文学习把它发展成通用 LLM,后训练再改善指令遵循。
  3. MoE、GQA、MLA 和 FlashAttention 主要解决训练、推理和长上下文成本;它们不会直接消除事实错误。
  4. DeepSeek-V2/V3 重点改善大模型效率,DeepSeek-R1 重点改善可验证任务上的推理行为,但基础生成仍是概率预测。
  5. 概率可以越来越可靠,却不能成为工程保证。Code Agent 仍需要上下文、工具、权限、沙箱、测试和结果验证。

基于 MIT 协议发布,欢迎转载与贡献。