← 返回书架人工智能 · 交互式 Wiki
模型工程/量化与投机解码资料与边界
生成与检索服务进阶专题讲解

MODERN AI / EFFICIENT INFERENCE

量化与投机解码:省什么,付出什么

量化减少数值表示成本;投机解码减少昂贵模型的串行调用。量化通常引入数值误差;投机解码在精确采样条件下可保持目标分布。实际收益取决于 batch、序列长度和硬件。

01 / QUANTIZATION

量化把连续数值映射到有限的刻度

q=clip⁡ ⁣(round⁡(x/s)+z,  qmin⁡,qmax⁡),x^=s(q−z).\begin{aligned} q&=\operatorname{clip}\!\left(\operatorname{round}(x/s)+z,\;q_{\min},q_{\max}\right),\\ \hat x&=s(q-z). \end{aligned}
s 是 scale,z 是 zero point,q 是有限刻度上的数,x̂ 是重建近似值。round 与 clipping 都可能丢失信息。

量化先选择动态范围和刻度,把值映射成有限整数或低位浮点;计算时使用支持该格式的 kernel,或恢复/转换到其他格式。分组量化为不同 group 保存 scale,能减轻 outlier 对整个张量的影响,但增加元数据和处理成本。

对线性层 y=Wx,权重误差造成 Δy=(Ŵ−W)x。仅比较 ||Ŵ−W|| 不足以说明任务影响,输入激活 x 的分布也重要;这就是校准数据、层敏感性与 activation-aware 方法有意义的原因。

配置减少什么还需要什么额外检查
Weight-only / W4A16权重用低位格式存储,激活保持较高精度。group scale、打包格式、支持的矩阵乘 kernel。计算精度由 kernel 决定;长上下文 KV 占用另行计算。
W8A8 / FP8权重与部分激活的存储、带宽或矩阵乘成本。动态范围管理、scale、累加精度及硬件支持。FP8 使用浮点格式,INT8 使用整数格式;实际收益取决于 kernel。
KV 量化随请求数、序列长度增长的缓存。K/V 校准或动态 scale、解量化与 attention kernel。权重量化后 KV 不会自动变小;长程误差需单独测。
PTQ / QATPTQ 在已有模型上校准/转换;QAT 在训练中暴露量化误差。PTQ 可能重构局部输出;QAT 常用 fake quant 和近似梯度。确认 PTQ 的校准方案,以及 QAT 中前向模拟和反传使用的精度。
02 / ERROR BUDGET

outlier 怎样改变其他数值的精度?

对称逐张量量化

max-abs scale · 未优化校准范围
scale
均方误差
原始权重压缩比
原值 x整数 q近似 x̂误差

本例使用 [−qmax,qmax] 对称刻度,qmax=2^(b−1)−1。位宽相同,动态范围扩大可能让普通小值落在同一刻度;增加 group 数或优化 clipping 范围会改变结果。

压缩比仅比较 FP16 的 16 bit 与 b bit 原始数值,不含 scale、zero point、padding、未量化层、workspace。模型能力还需任务评估。

03 / CALIBRATION

从已有模型到可部署工件

01 / BASELINE

固定原模型

revision、tokenizer、processor、精度与评估协议。先记录质量与时延基线。

02 / CALIBRATE

覆盖实际输入

采集层激活/输出,用代表性语言、长度、工具和多模态样本校准。

03 / CONVERT

选择量化粒度

per-tensor/channel/group、对称/非对称、保留高精度层、kernel 打包格式。

04 / MEASURE

真实引擎回归

验证长上下文、perplexity、任务质量、TTFT/ITL、显存、吞吐与并发。

GPTQ 类方法利用校准输入近似局部重构重要性;AWQ 利用激活信息调整权重缩放。不同实现的 group、层白名单与 kernel 有差异。导出时应保存量化配置、scale、打包版本与底座标识;加载后继续检查 kernel 选择,并对比校准时的数值结果。

04 / SPECULATIVE DECODING

小模型先写草稿,大模型并行验收

draft model 先自回归提出 k 个候选,target model 在一次前向中计算这些位置的条件分布。验收从左到右进行;第一次拒绝后,后续草稿的前缀已经不成立,需要丢弃并修正。这能减少 target 的串行调用,但增加草稿计算、验证工作量和缓存管理。

a(x)=min⁡ ⁣(1,p(x)q(x)),x∼q,pcorr(v)=[p(v)−q(v)]+∑u[p(u)−q(u)]+,[b]+=max⁡(0,b).\begin{aligned} a(x)&=\min\!\left(1,\frac{p(x)}{q(x)}\right),\qquad x\sim q,\\ p_{\mathrm{corr}}(v)&=\frac{[p(v)-q(v)]_+}{\sum_u[p(u)-q(u)]_+},\\ [b]_+&=\max(0,b). \end{aligned}
p、q 是同一个当前前缀下的目标与草稿分布,a(x) 是接受概率。发生拒绝时从正差残差分布采样;p=q 时拒绝概率为零,不需要计算 0/0 的修正分布。全接受时可额外采样一个 target token。

一次验收回合

预设的拒绝位置,用于展示缓存与前缀

此处按预设状态展示验收过程。精确随机投机采样需要正确的 p/q、残差采样和一致的目标采样规则;argmax 一致只比较了概率最高的候选。量化后的 target 则是另一个目标分布。

什么条件下能节省时间?

draft 足够便宜,接受率高,target 的多位置验证能摊薄权重读取成本。长草稿并非总好,第一次早拒绝会浪费后续工作。

需要测哪些指标?

最终输出分布/质量、接受长度、draft 耗时、验证耗时、吞吐与 p95 延迟。已高度批处理的服务可能收益有限,需要端到端测量。

05 / PROBABILITY MASS

接受的概率质量,加上修正后等于多少?

草稿提出 token v 的概率为 q(v),其接受概率为 min(1,p(v)/q(v))。两者相乘,直接接受的概率质量就是 min(p(v),q(v))。拒绝后的修正分布补齐剩余的正差。

P(reject)=1−∑vmin⁡(p(v),q(v))=∑v[p(v)−q(v)]+,P(output=v)=min⁡(p(v),q(v))+[p(v)−q(v)]+=p(v).\begin{aligned}P(\mathrm{reject})&=1-\sum_v\min(p(v),q(v))=\sum_v[p(v)-q(v)]_+,\\P(\mathrm{output}=v)&=\min(p(v),q(v))+[p(v)-q(v)]_+=p(v).\end{aligned}
当拒绝概率大于零,第二项来自“拒绝总概率 × 条件修正分布”。p=q 时拒绝概率为零,直接接受已给出完整目标分布。

三类词表的精确概率账本

固定前缀 · 归一化 p/q · 无模型调用

表格是解析概率质量,不受单次验收旋钮影响。下方一次抽样固定草稿 u=0.4、修正 u=0.2,只改变验收用的均匀数。

拒绝总概率
最终分布与 p 的最大差
拒绝后的条件修正分布
Tokenpq接受概率直接接受质量修正质量最终质量

q(v)=0 的项不会从草稿中抽到,因此不计算 p(v)/0;它仍可能经修正分布输出。保持目标分布要求在同一前缀上使用一致的目标采样规则,不能混用过滤前后的 p/q。

用实际接受概率走完两个草稿

为单独观察流程,此处假设每个位置使用相同的 p/q,且相互独立。草稿均匀数依次为 0.4、0.8;第一个验收值使用上方旋钮,第二个由下方调整;修正与额外采样的均匀数分别为 0.2、0.3。

同一分布允许不同字符串

独立采样的输出可以不同。解析等式核对的是每个输出事件的概率;重复抽样频率只能提供带抽样误差的辅助证据。

多 token 验收逐前缀成立

接受一个位置后,下一位置的条件分布以已确认前缀为条件。首次拒绝后,后续草稿的前缀不再成立,应丢弃对应候选并回滚缓存;全接受时可再从目标分布取一个 token。

06 / TRAIN THE DRAFTER

MTP boosting:骨干定下来后,草稿头还怎样训练?

多步辅助训练后,草稿头仍可能遇到不同的输入状态:训练时使用的内部状态与递归草稿运行时由自身先前步骤产生的状态并不相同。NVIDIA 的 Nemotron 3.5 报告将 hidden-state mixing 与 MTP-only 后训练结合;这一阶段冻结骨干,只更新 MTP 头,由对应骨干产生 rollout 和教师分布。

绑定的公开版本本节核对的机制不可混用的细节
Meta MTP v1 · 2024-04-30多偏移损失经独立头回到共享骨干。原论文的 Transformer 头与共享词表投影,不等于本站线性头教具。
Nemotron 3.5 报告 · 页首 2026-10-27Super 有 SFT 后的 warm start 与最终 boosting;Lightning 只做最终 boosting。第 3.7 节明确采用 LK 损失,区别于文中对 Ultra 温度缩放 forward KL 的描述。

日期口径:官方产品页标注 2026-10-14;这里核对的是页首标注 2026-10-27 的技术报告第 2.1、3.7 节。两份 NVIDIA PDF 的本轮字节摘要保存在来源记录中,以便发现发布者后续替换文件。

hidden-state mixing 让训练接触来自更早 MTP 步骤的内部状态,而非只依赖紧邻上一步。报告将它用于缓解较深草稿位置的条件差异;不能把“骨干冻结”理解为可忽略草稿的输入状态、目标位置和 assistant-response mask。

先用两个 logit 核对“冻结教师,更新草稿”

本地教具固定一个前缀,教师 p=[0.8,0.2],草稿初始 logit 为 [0.1,−0.2]。只更新这两个 logit,采用 η=0.2 的一次 SGD;这里选择常规 forward KL 以核对梯度,没有实现或冒充 3.5 的 LK 配方。

q=softmax⁡(z),LKL=∑vpvlog⁡pvqv,∇zLKL=q−pq=\operatorname{softmax}(z),\qquad\mathcal L_{\mathrm{KL}}=\sum_vp_v\log\frac{p_v}{q_v},\qquad\nabla_z\mathcal L_{\mathrm{KL}}=q-p
教师概率 p 为常量,不沿教师反传。单位置精确采样验收的接受质量为 Σmin(pᵥ,qᵥ);它不同于完整草稿回合的平均接受长度或实际耗时。
阶段草稿 q(0)KL(p∥q)单位置接受质量
更新前0.5744430.1139530.774443
一次 logit 更新后0.5963360.0945930.796336
KL 更低,为什么仍要直接测接受率?

另固定 p=[0.8,0.1,0.1],比较两个人工草稿分布;它们不是上表的训练轨迹,也没有模型运行。

草稿qKL(p∥q)单位置接受质量
A0.79 / 0.209 / 0.0010.3968640.891000
B0.6 / 0.2 / 0.20.0915160.800000

B 的 KL 更低,接受质量却更低,因此不能把这两个指标的排序普遍等同。Nebius 的 LK Losses v1(2026-02-27)研究直接优化接受率,并提出多个 LK 变体。3.5 报告第 3.7 节只写采用 LK;本节不据此猜定具体变体或全部超参数。

核验只涉及人工分布、两个 logit、有限差分和现有验收概率函数。没有训练真实 MTP 模块、执行 hidden-state mixing 或重测作者的 SPEED-Bench 成绩。实际比较应固定骨干、数据与推理设置,按草稿深度检查接受情况,并计入草稿、验收和缓存成本。

07 / VERIFICATION BUDGET

DSpark:草稿能写多长,验收就该做多长吗?

前面的概率账本回答了单位置如何保持目标分布。下一步要把接受情况换算成整轮产出,再计入草稿、验收与调度成本。DSpark 将并行草稿骨干与轻量顺序头结合,并用经过校准的置信度和引擎成本曲线选择验收前缀。

先区分原论文、部署配置和 V4.1 的训练阶段
一手来源与版本明确披露的范围读法
DSpark v1 · 2026-07-06
§3、§4.1–4.2
并行基础 logits 加顺序修正;原文给出 Markov/RNN 两种头。§3.3 冻结目标模型及共享 embedding/LM head,更新草稿部件与置信度头。离线对比默认五层草稿、长度 7,关闭置信度调度器;这些默认值属于该评估设置。
同篇 §5.1–5.2
V4 preview 生产部署
三层草稿、窗口 128、长度 5、Markov 头;历史信号预测容量以配合异步调度。生产调度与离线固定长度成绩分开;不能将作者线上速度提升当作本站实测。
V4.1-Flash v1 · 2026-09-17
§2.4.3
三块草稿、窗口 128、五位置 logits。预训练结束后冻结骨干、单独训练 DSpark;后训练时二者继续训练,但 DSpark 目标不向骨干反传。后训练骨干仍可被自己的目标更新;“阻断草稿梯度”不等于整个骨干被冻结。

条件接受率,怎样变成整轮预计产出?

固定当前前缀和验收长度 K。令 cᵢ 表示“前 i−1 个均接受时,第 i 个也接受”的条件概率,Sⱼ 表示前 j 个全部接受的概率。链式法则给出乘积,无需额外假设各位置独立。若某前缀存活概率为零,后续条件概率无需定义,后续 S 均置零。

S0=1,Sj=∏i=1jci,E[LK]=∑j=1KSj,E[NK]=1+∑j=1KSj.\begin{aligned} S_0&=1,\qquad S_j=\prod_{i=1}^{j}c_i,\\ \mathbb E[L_K]&=\sum_{j=1}^{K}S_j,\qquad \mathbb E[N_K]=1+\sum_{j=1}^{K}S_j. \end{aligned}
Lₖ 是接受的草稿前缀长度,尾和恒等式来自 Lₖ=Σⱼ₌₁ᴷ1{Lₖ≥j}。Nₖ 还含一个修正 token,或全接受后的 bonus token;这里没有 EOS,也没有剩余输出长度限制。K=0 时直接从目标采一个 token。
位置 j条件接受 cⱼ前缀存活 Sⱼ
10.9000000.900000
20.8000000.720000
30.6000000.432000
40.4000000.172800

四个位置都验收时,预计输出 3.2248 个 token。真实置信度头给出的是估计值;DSpark 用留出数据上的 STS 校准累计存活概率。单位置分数排序正确仍不足以保证产出估计准确,也不能把平均接受率直接代入所有位置。

同一组接受概率,两条成本曲线

下表是预先保存的人工成本,单位为任意时间单位:启用草稿花 0.15,固定开销 0.05;验收成本 A 为 [1,1.02,1.04,1.06,1.08],B 为 [1,1.4,2,2.8,3.8],依次对应 K=0…4。T 是这三部分的总和,J=E[Nₖ]/T。这只展示额外验收便宜或昂贵时的不同选择,没有测量硬件或模拟完整并发系统。

K预计产出 E[Nₖ]总时间 T / A产出率 J / A总时间 T / B产出率 J / B
01.0000001.0500000.9523811.0500000.952381
11.9000001.2200001.5573771.6000001.187500
22.6200001.2400002.1129032.2000001.190909
33.0520001.2600002.4222223.0000001.017333
43.2248001.2800002.5193754.0000000.806200

在这五个离散候选中,最大产出率分别为 A:K=4;B:K=2。增加 K 总能增加或保持本例的预计产出,产出率却取决于新增成本。这些候选在采样前就已确定;离线比较整张固定表不需要观察当前草稿内容。

为什么服务端还要按整个 batch 算,而不是逐请求取最大值?

DSpark §3.2.2 将 R 个请求的长度 ℓᵣ 放在同一账本:B=Σᵣ(1+ℓᵣ) 是送入目标模型的位置数,预计产出 τ̂=Σᵣ(1+Σⱼ≤ℓᵣ Ŝᵣⱼ),目标为 τ̂·SPS(B),其中 SPS 是预先测得的每单位时间步数。所有请求共享同一成本曲线,不能各自挑长度后再把吞吐相加。该近似主要以 B 描述成本;真实引擎还应核对上下文、缓存、草稿耗时与延迟约束。

论文的逐步早停并不无条件找到全局最优;还需要目标沿候选路径具有单峰结构。§5.2 明确讨论硬件曲线的离散台阶,以及使用两步前的历史预测确定容量的异步适配。本站固定曲线的枚举不等于实现了该生产调度器。

保持目标分布,还要限制调度器能看什么

精确验收的 p/q 公式有前提:决定是否让第 k 个草稿进入验收,不能反过来依赖该 token 自己的取值或后续候选。DSpark v1 附录 A 给出了选择偏差反例。以下另设一个更小的人工例,首位置 p=q=[0.5,0.5],按标准验收本应全接受。

算一遍:为什么“看完后续再选最佳 K”会把 50% 变成 75%?

设 K∈{0,1,2},SPS(1…3)=[1,0.45,0.4]。首草稿为 A 时,第二位置的 p=[0.9,0.1]、q=[1,0],故 c₂=0.9;首草稿为 B 时,第二位置 p=[0,1]、q=[1,0],故 c₂=0。仍使用原 q 验收。

已经看到的首草稿c₂预计率 / K=0预计率 / K=1预计率 / K=2事后选择 K
A0.9000001.0000000.9000001.1600002
B0.0000001.0000000.9000000.8000000

若事后全局取最大值:抽到 A 就保留并接受,抽到 B 就取消草稿、重新从目标采样。因此 P(首输出=A)=0.5×1+0.5×0.5=0.75。若在 K=1 首次下降时就停止,则尚未查看 c₂,两个分支都选 K=0,输出仍为目标分布。

首输出的策略P(A)P(B)
直接从目标采样0.5000000.500000
看完后续再选 K0.7500000.250000
在首个下降处停止0.5000000.500000

这里证明的是这条事后筛选规则失效;不是所有动态长度都会偏。调度信息边界、提议分布与验收规则必须共同核对。前面的成本枚举仅使用采样前固定的输入,因此没有这次“用后续候选筛首草稿”的操作。

离线重算:概率、成本、边界与正文读出

在仓库根目录执行。10,000 组离散均匀数通过既有单位置验收函数,核对首拒绝分布、预计产出和输出上限;同时枚举 K、检查选择偏差,并逐项核对四张正文表与两个数值标记。

node artifacts/dspark-horizon-20261030T084815Z/check-mechanisms.mjs

脚本另检查空草稿、全拒绝、全接受与零存活前缀。仅有剩余输出上限 m、没有 EOS 时,产出应截为 min(Nₖ,m);EOS 还取决于 token 路径,需要单独统计。完整模型训练、STS 校准、GPU 耗时与作者线上成绩均未在本地复现。

适用范围与一手资料

量化、MTP 与 DSpark 均区分来源机制和固定教具。双 logit 例用 forward KL,不实现 LK/状态混合。新增条件前缀、含 bonus 的预计产出、人工成本枚举与选择偏差可离线核验;未训练 DSpark、拟合 STS 或测 GPU/厂商 benchmark。

公式与机制的原始依据 · 10 项
知识目录
搜索知识库