arganzheng · 2026-10-01
每种推理优化都改了成本公式的一项;除投机解码之外每一种都改变了输出分布;而退化是不均匀的——集中在困惑度看不到的地方。
[ \text{一步 decode 的成本} = \frac{\text{权重字节} + \text{KV 字节}}{\text{带宽}} \div \text{每次前向产出的 token 数} + \text{算力项} ]
| 改哪一项 | 篇 |
|---|---|
| 改解码过程(分母) | 01 采样与约束 · 02 投机解码 |
| 改权重字节 | 03 训练后量化 · 04 QAT 与评测 |
| 改 KV 字节 | 05 量化、驱逐、稀疏 attention |
| 改参数数量 | 06 剪枝、深度缩放、小模型 |
%%{init: {"flowchart": {"wrappingWidth": 180}}}%%
flowchart TB
C["一步 decode 的成本 = (权重字节 + KV 字节 + 算力)÷ 每次前向产出的 token 数"]
C --> D1["改解码过程<br/>01 采样与约束"] --> D2["02 投机解码<br/>唯一不改变输出分布的方法"]
C --> W3["改权重表示<br/>03 训练后量化"] --> W4["04 量化感知训练与低比特评测"]
C --> K5["改 KV<br/>05 量化、驱逐、稀疏 attention"]
C --> P6["改结构<br/>06 剪枝、深度缩放、小模型"]
W4 & P6 -. "恢复靠蒸馏" .-> X["评测:退化集中在困惑度看不到的地方"]
D2 & K5 -.-> X
结论:pass@1 奖励稳定走最可能的路(最优低温),pass@k 奖励至少一次走到(最优中高温)——两者不能用同一组参数报告;温度只改比值不置零,截断才把尾部置零;推理模型不用 greedy。
| 量 | 数 |
|---|---|
| 熵对温度的导数 | (dH/dT = \text{Var}(z)/T^3) |
| 128K 词表尾部总质量 | 可达 10%;T = 0.7 也许只降到 0.02——低温没有去掉尾部 |
| pass@1 最优温度 | ≈ 0.2;pass@100 最优 ≈ 0.8 |
| pass@k 无偏估计 | (1 - \binom{n-c}{k}/\binom{n}{k}) |
| 高温下 | min-p 比 top-p 稳 |
结论:唯一不改变输出分布的方法(拒绝采样保证严格等于目标分布);EAGLE 赢在条件依赖与特征输入;树用宽度换深度但受 ridge 约束;投机是延迟工具不是吞吐工具。
%%{init: {"flowchart": {"wrappingWidth": 230}}}%%
flowchart LR
P["前缀"] --> D["<b>草稿 q</b><br/>自回归 γ 步,时间 γ·c"] --> V["<b>目标 p</b><br/>一次前向验证 γ+1 个位置<br/>= 一步普通 decode 的时间"]
V --> ACC{"逐位置以 min(1, p/q) 接受"}
ACC -- "全部接受" --> O1["γ 个草稿 + 1 个从 p 采的"]
ACC -- "第 k 个被拒" --> O2["前 k−1 个 + 1 个从 norm(max(0, p−q)) 重采"]
classDef draft fill:#eef6ff,stroke:#5b8fd6
classDef target fill:#fff7e0,stroke:#c98a00,stroke-width:2px
class D draft
class V target
| 量 | 数 |
|---|---|
| 期望产出 | (\mathbb E[\text{tokens}] = \frac{1 - \alpha^{\gamma+1}}{1 - \alpha}),speedup (= \mathbb E/(\gamma c + 1)),c ≈ 0.02–0.05 |
| 平均接受长度 | Medusa 2.5–3 → EAGLE 3.8–4.5 → EAGLE-3 5–6.5 |
| MTP 头(与主模型联合训练) | 接受率 85–90%、约 1.8× |
| 树的约束 | (B \cdot N_{tree} \lesssim \text{ridge}):batch 8 × 64 节点 = 512 已过 H100 的 295 |
结论:4-bit 快在 memory-bound 的 decode、慢在 prefill 与大 batch;崩掉来自权重重尾与激活的固定通道离群——GPTQ 补偿、AWQ 保护、SmoothQuant 迁移、旋转摊平。
| 量 | 数 |
|---|---|
| 舍入误差方差 | (\Delta^2/12):每少 1 bit ×4,INT8 → INT4 ×256 |
| 一个 15σ 权重 | 让 INT4 的 Δ = 2σ——group 内一个离群值毁掉一组 |
| g128 | 有效 4.156 bit,元数据 4% |
| 输出误差 | (\text{tr}(EHE^\top)),(H = \mathbb E[XX^\top]):误差落在激活大的通道被放大 |
| 方法 | 做什么 |
|---|---|
| GPTQ | 用 (H^{-1}) 把误差补偿到未量化的列 |
| AWQ | 保护激活幅度最大的约 1% 通道 |
| SmoothQuant | (\text{diag}(s)) 把激活的离群迁到权重 |
| 旋转(QuaRot) | Hadamard 把 1000 摊成约 17;70B W4A4KV4 困惑度 3.32 → 3.73 |
结论:困惑度 +0.36 的 W4 模型 GSM8K 掉 3–6、needle 掉 10 以上——先掉的是多步推理、长上下文、多语言与指令细节;逐 token KL 是直接度量;末段 QAT 以全精度的自己为教师把退化压回一半。
| Llama-3-8B W4 | 变化 |
|---|---|
| 困惑度 | +0.36 |
| MMLU | −1–2 |
| GSM8K | −3–6 |
| needle | −10 以上 |
| 逐 token KL 均值 | 0.01–0.05 nat;超 0.1 明显——看 P99 不看均值 |
结论:key 有固定通道离群、value 没有——key per-channel、value per-token,2 bit 下选错崩掉;FP8 KV 永远是第一步;驱逐假设「过去不重要 = 将来不重要」,在问题未知、信息密度高的任务上不成立。
| 步 | KV 大小 |
|---|---|
| BF16,每 token 320 KB | 40 GB |
| FP8(KL 0.001 nat) | 20 GB |
| INT4(元数据 25%,实际 3.2×) | 12.5 GB |
| + SnapKV 保留 25% | 3.1 GB |
结论:中后层是残差流上的小修正——删掉对平均预测影响小、对关键位置的多步组合与后训练能力破坏大(删 25% 层 PPL +0.3、GSM8K 50 → 10 以下);剪枝必须蒸馏恢复。
| 量 | 数 |
|---|---|
| OBS / SparseGPT 重要性 | (w_q^2 / [H^{-1}]_{qq})——与 GPTQ 同一个拉格朗日推导 |
| Wanda | (\lvert w_{ij}\rvert \cdot \lVert X_j\rVert)——与 AWQ 同一个一阶观察 |
| 非结构化 50% | Tensor Core 不识别零,不变快 |
| 2:4 | GEMM 1.3–1.8×,只在 compute-bound 有效;decode 字节只到 5/8 |
| Minitron 15B → 8B | 94B token 蒸馏 vs 从头 8T,省 40×;比继续预训练高 3–4 MMLU 点 |
| 线 | 落点 |
|---|---|
| 分布变了多少 | 有意改(采样)→ 不变(投机)→ 可控噪声(量化,Δ²/12、逐 token KL)→ 任务依赖(驱逐)→ 改变最大(剪枝);度量从 TV 到 KL 到任务曲线 |
| 成本公式的哪一项 | 投机改分母(≲ ridge);W4A16 改权重字节(止于 memory-bound);KV 量化在 40K 后边际更大;2:4 只在 compute-bound;叠加时消耗同一段余量 |
| 离群值与同一套二阶数学 | (\text{tr}(EHE^\top)):GPTQ = SparseGPT、AWQ = Wanda;通道级离群(LayerNorm γ,6.7B 起相变)与 massive activations(sink) |
| 困惑度 vs 关键 token | 每个「无损」都要问在哪个指标、哪类任务、什么协议下 |
| 蒸馏,教师 = 自己 | 训草稿、QAT、剪枝恢复;部署需求提前到训练:MTP 头、厂商 QAT 版、NSA / MLA、剪枝做初始化 |
| 篇 | 一个公式 / 一个数 |
|---|---|
| 01 | pass@1 最优 T ≈ 0.2、pass@100 ≈ 0.8;模型卡 T = 0.6 / top-p 0.95 |
| 02 | (\alpha = 1 - \text{TV});(\mathbb E = (1-\alpha^{\gamma+1})/(1-\alpha));(B \cdot N_{tree} \lesssim) ridge |
| 03 | (\Delta^2/12);(\text{tr}(EHE^\top));Hadamard 1000 → 17 |
| 04 | STE (\hat w = w + \text{sg}(Q(w) - w));PPL +0.36 ↔ needle −10 |
| 05 | 70B 128K:40 → 20 → 12.5 → 3.1 GB;sink 吃 30–50% |
| 06 | (w_q^2/[H^{-1}]_{qq});2:4 1.3–1.8×;Minitron 省 40× |
/efficient-inference-and-compression-for-llms.html;通关自测 22 题在系列总结