分类:AI 大模型
学习路径:由浅入深,按顺序阅读效果最好(共 147 篇)
-
41. tiktoken 与 HuggingFace tokenizers 实现对比
同为 Rust 实现,tiktoken 把 BPE 做到极致专一,HF tokenizers 做成可插拔管线,本文对比两者的数据结构与边界取舍。
-
42. 特殊 token 的设计:BOS/EOS/PAD 如何影响生成
几个不携带文本语义的 id 却控制着生成的起点与终点,本文讲 BOS/EOS/PAD 的设计意图、训练交互与常见事故。
-
43. 从压缩理论看 BPE:与 LZ78 的亲缘关系
BPE 和 LZ78 都在做"建字典、用短码替换高频子串",区别在离线全局贪心与在线顺序解析,本文用同一框架看清两者。
-
44. tokenizer 的安全问题:glitch token 的产生
某些 token 在训练语料里几乎不出现,它的 embedding 基本停在初始化状态,一旦在推理时被拼出来就会产生不可预测的行为。这篇从梯度来源推导 glitch token 的成因,并给出排查方法。
-
45. 注意力机制三问:Q、K、V 各自扮演什么角色
从检索类比出发,讲清 Q/K/V 三分法的数学实质:匹配和内容分离、为什么需要三个不同的投影矩阵,以及自注意力与 cross attention 的差别。
-
46. 缩放点积的 1/√d:方差视角的推导
为什么注意力打分要除以 √d?因为 q·k 的方差恰好随 d 线性增长,logits 尺度膨胀会让 softmax 饱和、梯度消失。这篇用方差推导给出这个常数的来源,并讨论为什么不是 1/d。
-
47. 自注意力的矩阵化:从两两点积到一次矩阵乘
自注意力概念的原始形态是"每个词看所有词"的双重循环,把它写成 QKᵀ 一个矩阵乘是 Transformer 能落地的关键一步。这篇对比两种写法,讲清矩阵化带来的复杂度与硬件红利。
-
48. 多头注意力:多头真的学到不同模式吗
把 d 维表示切成 h 个子空间并行做注意力,参数没省、FLOPs 没省,多头的设计动机是什么?这篇从低秩分解与表示多样性的角度分析,并整理实证上观察到的头分工。
-
49. 注意力矩阵的秩与表达能力
softmax 前的打分矩阵 S=QKᵀ/√d 秩不超过 d,softmax 后的 P 却满秩但谱集中——"低秩瓶颈"到底卡在哪。这篇分清两个秩的层次,并说明线性注意力路线如何从秩的视角绕开 O(n²)。
-
50. 注意力权重的熵动力学:什么时候广撒网、什么时候单点突破
注意力每一行是一个概率分布,熵是它的"混合程度"度量。这篇定义行熵、给出它与 logit 尺度的解析关系,梳理熵在层间和序列上的典型动力学,并连接到 RL 微调里的熵坍塌问题。
-
51. causal mask 的实现与梯度流:下三角掩码如何阻断信息泄漏
decoder-only 模型的因果掩码到底怎么实现、为什么反向时不需要额外处理、masked 位置的训练动力学是什么。这篇把 addmask、masked_fill、is_causal 三种写法对齐到同一个数学对象,并给出梯度流的完整分析。
-
52. 注意力复杂度 O(n²d) 的账本:计算与显存各自卡在哪里
注意力的 n² 到底花在哪些矩阵乘上、显存的 n² 又花在哪里、什么时候注意力会超过 FFN 成为主导开销。这篇把 FLOPs、显存、带宽三笔账分开算清。
-
53. 线性注意力:用核函数视角把 O(n²) 降到 O(n)
softmax(q·k) 是点积上的指数核,换成可分解的特征映射 φ,就能用矩阵乘法结合律把 (QKᵀ)V 改写成 Q(KᵀV),O(n²) 直接降为 O(n)。这篇推导改写过程、盘点常用 φ 的取舍,并说明递归形式与表达能力代价。
-
54. FlashAttention 原理:分块与在线 softmax
注意力的瓶颈不是 FLOPs 而是 HBM 访存。这篇从 IO 复杂度推出 FlashAttention 的分块设计,推导在线 softmax 的重缩放公式,并说明反向传播为什么要重算而不是存中间矩阵。
-
55. FlashAttention-2/3 的改进点:把 IO 收益榨干
FA-1 证明了少搬数据就能赢,FA-2 把循环次序和非矩阵乘开销一起砍掉,FA-3 则吃满 H100 的 TMA 与异步流水线。这篇按"还有多少油水"的顺序拆解三代各自改了什么、为什么。
-
56. 滑动窗口注意力与全局 token
语言的局部性让注意力矩阵天然带状化:只算窗口内的交互就把复杂度压到 O(n·w)。但纯窗口丢掉全局信息,Longformer 的答案是少数"全局 token"——这篇推导窗口注意力的复杂度账,讲清全局 token 怎么补全局性,以及它给系统实现留下的麻烦。
-
57. 稀疏注意力谱系:从 Longformer 到 BigBird
把注意力矩阵的大部分位置置零就能压复杂度,但随便置零会把表达能力一起丢掉。BigBird 给出关键结果:窗口 + 全局 + 少量随机边的稀疏图,保持全连接的图论性质(常数直径、良好扩展性),稀疏注意力因此仍是序列 universal 函数逼近器。这篇梳理谱系并推导这个结果。
-
58. GQA 与 MQA:共享 KV 的性价比
自回归解码的显存大头是 KV cache,而 Q 头数远多于内容需要。MQA 让一个 KV 头服务所有 Q 头,GQA 取中间值——这篇推导 cache 字节的账本,解释为什么 decode 阶段 KV 头数几乎只影响吞吐不影响质量,以及 Llama-2-70B 为什么选 8 个 KV 头。
-
59. MLA 多头潜在注意力拆解:DeepSeek 压缩 KV cache 的做法
GQA 共享 K/V 头还留着"每头一份缓存"的底账,MLA 干脆把每层的 K/V 压成一个 d_c=512 维的潜向量,推理时缓存只存它。这篇拆解 DeepSeek-V2/V3 的投影设计、低秩吸收的等效改写,以及为什么要给 RoPE 单独留一条位置通道。
-
60. cross attention 与 encoder-decoder 之争
Transformer 原典是 encoder-decoder 加 cross attention 的双塔结构,GPT 范式却让 decoder-only 统一了江湖。这场更替不是 cross attention 本身输了,而是"两套参数两种预训练目标"的结构性成本输给了规模——这篇按时间线梳理争论的证据。