从零看懂:GPT-2 到 Kimi K3
这篇不假设你读过论文。我们先用生活类比把「语言模型怎么记事」讲清楚, 再顺着一条线看:为什么要从 GPT-2 走到 Linear、Delta、Gate、KDA,最后到 Kimi K3。
- 先读 01–05 背景,不要急着跳到 Kimi K3
- 每章只抓「它解决了什么麻烦」
- 公式看不懂可以先跳过,类比看懂就算过关
01 · 语言模型到底在干什么?
一句话:给定已经出现的文字,猜下一个最可能出现的词。
像微信输入法联想。你打「今天天气」,它猜「不错 / 很好 / 真差」。 大模型只是把这件事做得极强:上下文更长、更会推理、更会写长文。
所以训练目标很朴素:
它擅长什么
- 续写、问答、总结、写代码
- 从大量文本里学到“语言规律 + 世界常识”
它不魔法的地方
- 本质上是统计预测机器
- 要“记得住”刚才说过的话,才能答得连贯
02 · Token、向量:模型眼里的文字
Token = 切碎后的文字块
模型通常不按“字/词”原样处理,而把文本切成 token(子词碎片)。
例如 “unhappiness” 可能被切成 un / happi / ness。
每个 token 先变成一串数字(向量)
模型不能直接吃汉字。它把每个 token 映射成一个高维向量,比如 768 个数。 这些数没有人类可读含义,但编码了“语义位置”。
像给每个人发一张「身份卡」,上面有很多属性分数:职业倾向、语气、主题…… 后面所有计算,都是在这些身份卡之间做比较和混合。
03 · Attention:开会时该听谁说
Attention 不是玄学,就是:当前这个词在决定自己含义时,应该多看前文里的哪些词。
现在轮到「它」这个词发言,要理解自己指代谁。 它会环顾前文:
- Query(问题):我现在想找什么?(“我在找主语”)
- Key(标签):每个前文词挂的标签(“我是人名/地点/动词”)
- Value(内容):每个前文词真正可提供的信息
Query 和每个 Key 比对,得到“该听谁”的权重; 再按权重把 Value 混合起来——这就是 attention 的输出。
Softmax Attention:最经典、也最“贵”的听会方式
经典 Transformer 用 softmax 做权重:每个词都和前面所有词比一遍。 优点是精确;缺点是上下文越长,比较次数越多,像会议室人越来越多。
04 · 生成文字时,为什么需要 KV Cache?
模型写长文是一个词一个词蹦的(自回归)。 每写一个新词,都要“回头看”已经写过的内容。
没有缓存
每写一个新词,都把整段历史重新算一遍 Key/Value。 像每开一句新会,就把过去所有会议纪要重抄一次。
有 KV Cache
旧词的 Key/Value 存起来复用。 只算新词,再拿去和缓存里的历史比对。
用一张图记住“生成一步在干什么”
读入已有文字
层层 Transformer 处理
输出下一个词的概率
05 · 全文只围绕三个问题
后面每个技术名词,都请强行翻译回这三问。
| 问题 | 人话 | 类比 |
|---|---|---|
| Store 存 | 前文记在哪? | 是整柜档案,还是一页摘要? |
| Update 写 | 新信息怎么写进去? | 只往上贴纸条,还是能擦掉重写? |
| Retrieve 读 | 需要时怎么精确取回? | 摘要丢细节后,去哪翻原件? |
06 · GPT-2:精确档案柜(但会越来越重)
GPT-2(2019)是今天大多数聊天模型的祖型:一层层 “注意力 + 前馈网络”。 记忆方式很直接:把每个历史 token 的 Key/Value 都存着。
像图书馆为每一页书都留一张索引卡。 要找东西很准,但书越多,卡片柜越占地方。
优点
- 精确:几乎不“糊掉”历史细节
- 实现直观,生态成熟
缺点
- 记忆随长度线性涨(O(N))
- 长上下文时带宽/显存压力巨大
07 · Linear Attention:改成固定大小的记事本
人们问:能不能不要为每个历史词都留一张卡, 而是维护一本固定页数的摘要本?
不再保留全部会议录音,而是只维护一页“会议纪要”。 新发言来了,就把纪要更新一下。纪要永远一页,不会越来越厚。
数学上的关键动作(直觉版):
- 不再让“当前问题”和“每个历史标签”做昂贵的两两比较后归一化
- 而是把历史折叠进一个固定矩阵
S(可以想成记事本) - 读的时候直接拿当前问题去“查这本笔记”
赚到了
- 记忆大小几乎不随文本变长而涨
- 长文本 decode 更省
付出了
- 细节会糊:很多事实挤在同一页
- 写新内容时如果只“往上加”,旧内容会互相干扰
08 · DeltaNet:记事本终于会“改写”了
Linear 的问题不是“不能记”,而是不太会改: 只会加法堆积,不会把旧事实擦掉换成新事实。
你的通讯录里本来写着「小明电话 123」。 小明换号了,你不该在旁边再写一个 456 然后俩都留着; 你应该:找到“小明”那一行 → 擦掉旧号 → 写上新号。 Delta rule 做的就是这件事。
用当前 key 去读旧值
算增量:新值 − 旧值
只把增量写回去
S = S(I − βkkᵀ) + βvkᵀ 时,就把它翻译成:
先沿某个方向擦一点,再写入新内容。
09 · 并行化:让好想法在 GPU 上跑得动
一个好更新规则如果只能 for-loop 一步步算,训练长文本会哭。 研究者把序列切成块(chunk):
写一本书时,章节内部认真排版; 章节之间只传一份“前情提要”。 既保留局部精度,又避免全书每时每刻都重排。
这一章几乎不增加“智能”,增加的是可训练性 / 硬件友好。 没有它,Delta 只是纸上漂亮公式。
10 · Gated Delta:会改,也会忘
真实对话会换话题。你不仅要改某一条事实, 还要在换场时把很多过时信息整体淡化/清掉。
Delta 像“改通讯录某一行”。 Gate(门控衰减)像“给整本旧笔记按一个旋钮调淡”: 旋钮开到 1 = 尽量保留;开到 0 = 近乎清空。
| 机制 | 像什么 | 擅长 | 不擅长 |
|---|---|---|---|
| Delta | 改某一行 | 定点更新 | 批量清场 |
| Gate(Mamba 味) | 全局淡化旋钮 | 释放容量、换场 | 所有内容一视同仁 |
| Gated Delta | 两者结合 | 又能改又能忘 | 旋钮还比较粗 |
11 · KDA / Kimi Linear:遗忘也要分通道
Gated Delta 只有一个全局旋钮 α,有点粗: 有时你想忘掉“场景细节”,但保留“人物名字”。
KDA(Kimi Delta Attention)把旋钮做成很多个: 不同特征通道可以有不同遗忘速度。
以前只有一个总音量键; 现在变成混音台:人声、鼓点、贝斯可以分别调。 记忆管理更精细了。
Kimi Linear 还不满足只改记忆更新,它开始“混合装配”:
多数层用 KDA
穿插 MLA(一种更省的精确注意力)
前馈改成 MoE(专家混合)
12 · Kimi K3:四套子系统拼起来的大工程
到 Kimi K3,主线已经不是再发明一个全新 attention 名称, 而是把前面验证过的零件,按功能装进超大规模模型。
| 零件 | 人话职责 | 对应三问 |
|---|---|---|
| KDA | 日常记事的固定本,会改也会分通道忘 | Store / Update |
| MLA | 关键时刻翻更完整的上下文档案 | Retrieve(序列维) |
| MoE | 很多专家,每次只叫一部分来干活 | 算力选择 |
| AttnRes | 不只看上一层,还能挑着看更早层的结果 | Retrieve(深度维) |
MoE 只需建立这个直觉
不是每位病人都让全院专家会诊。 前台路由:这个 token 更像内科还是骨科? 只激活若干专家,省算力又保留大模型容量。 K3 还有“永远在场的共享专家 + 按需点名的专家”。
13 · AttnRes:深度方向也要会挑着读
前面讨论的大多是“时间/序列上的记忆”。 还有另一条轴:模型有很多层,信息像流水线向下传。
传统 residual 基本是把各层输出等权累加往下传。 层数很深时,早期重要信号可能被稀释,而且不同层也没法按需取用。
以前每层只能看“到目前为止的平均会议纪要”; AttnRes 允许它说:我这层更想回看第 3 段和第 7 段的原始讨论。
| MLA | AttnRes | |
|---|---|---|
| 看哪里 | 前文哪些 token | 更早哪些层 |
| 补什么 | 固定状态丢掉的细节 | 深度传递中的稀释/不可选 |
| 一句话 | 横向翻档案 | 纵向翻草稿 |
14 · 一张总表:每一步到底升级了什么
| 阶段 | 记忆像什么 | 解决了什么 | 又带来什么新麻烦 |
|---|---|---|---|
| GPT-2 Softmax + KV | 完整档案柜 | 精确记住每个词 | 越聊越占空间 |
| Linear Attention | 固定一页纪要 | 记忆不随长度暴涨 | 只加不擦,会串味 |
| DeltaNet | 可改写的通讯录 | 定点更新旧事实 | 不善批量清场;训练难并行 |
| 并行 Chunk | 分章写作 | 让训练/prefill 跑得动 | 本身不增加智能 |
| Gated Delta | 可改写 + 总淡化旋钮 | 会遗忘、会换场 | 一个旋钮太粗 |
| KDA | 分通道混音台 | 遗忘更细 | 仍需精确检索补洞 |
| Kimi Linear / K3 | 纪要 + 档案 + 专家 + 深度回看 | 把各模块按职责装配 | 系统复杂,工程要求高 |
15 · 常见困惑 FAQ
Q1. 我是不是必须会微积分才能看懂?
不需要。先把“档案柜 / 记事本 / 擦写 / 旋钮 / 专家会诊”这些类比建立起来。 公式只是这些直觉的压缩写法。
Q2. Linear Attention 是不是比 Softmax 更强?
不是单纯更强,是更省、可扩展。它用近似和压缩换效率,常常要配合别的模块补精度。
Q3. Delta、Gate、KDA 有什么关系?
一条升级链: Delta = 会改某一条; Gate = 会整体淡化; Gated Delta = 两者结合; KDA = 淡化旋钮变成很多通道各自可调。
Q4. MLA 和 Attention 是一回事吗?
MLA 仍是注意力家族,但用更省的潜在表示来做(近似)精确检索。 在 hybrid 模型里,它常承担“关键时刻翻原件”的角色。
Q5. MoE 跟记忆有什么关系?
MoE 主要不是记上下文,而是分配算力:参数可以很多,但每次只激活一部分专家。 它和 KDA/MLA 是正交的能力。
Q6. 为什么总提“容量”?
因为任何固定大小记忆都装不下无限历史。 装不下时必须选择:覆盖、遗忘、或者去外部精确检索。 整条研究线都在设计更好的选择策略。
Q7. 我只想有个最小知识地图,记什么?
只记这条: 完整 KV(准但重)→ 固定状态(轻但糊)→ 会改写 → 会遗忘 → 分通道遗忘 → 混合精确检索与专家算力。
16 · 如果你之后想碰论文,怎么读不崩溃
第一周(只建肌肉记忆)
- 搞懂 token / embedding / 一层 attention
- 手写或跟写一个最小 GPT(可极小)
- 理解 KV cache 为什么存在
第二周(只追一条线)
- Linear Attention 在省什么
- Delta 相比加法多了什么
- Gate 为什么必要
论文名单(先认脸,不求一次读完)
| 阶段 | 看什么 | 你要带走的一句话 |
|---|---|---|
| 基础 | Attention Is All You Need / GPT-2 | 预测下一个词 + 精确注意力 |
| 固定状态 | Linear Attention (2020) | 历史可压成固定 S |
| 改写 | Fast Weight Programmers / DeltaNet | 有限记忆必须能删除/覆盖 |
| 遗忘 | Mamba / Gated DeltaNet | 要有可学习的遗忘 |
| 混合系统 | DeepSeek-V2(MLA) / Kimi Linear / Kimi K3 | 固定状态 + 精确检索 + 专家算力 |