Adaptive Verification Without a Confidence Head
Adaptive Verification Without a Confidence Head
发表时间: 2026-10 · Blog post by Giancarlo Delfin (Inferact) (blog.vllm.ai)
原文: https://blog.vllm.ai/blog/2026-10-14-adaptive-verification-online-estimator
《无置信度头情况下的自适应验证》
作者/机构:Giancarlo Delfin (Inferact)
速读
一句话结论 本文提出了一种在线拟合的接受率估计器,通过提取草稿模型输出分布的特征来预测目标模型的接受概率,使得缺乏预训练置信度头的草稿模型也能直接启用 Adaptive Verification 机制以提升推理吞吐量。
要解决什么问题 在大批量服务场景下,GPU 往往受限于算力,vLLM 引入的 Adaptive Verification (AV) 机制可以通过提前裁剪掉接受概率低的草稿 token,来节省目标模型前向传播的算力开销。然而,AV 机制的卡点在于它需要精确的逐 token 接受概率估计值,以此来衡量算力成本并做出全局预算决策。此前,该机制仅支持自带置信度头(confidence head,一个专门训练用于二分类预测的小型线性层)的 DSpark 草稿模型。对于 EAGLE、MTP、DFlash 等缺乏置信度头的草稿模型,或者社区中大量已部署的存量权重,如果想使用 AV 机制就必须重新训练草稿模型来添加置信度头。这种离线训练不仅成本高昂,而且无法适应实际服务中动态变化的数据分布和采样参数,导致大量现有模型完全无法享受 AV 机制带来的性能红利。
怎么做的 核心思路是引入一个轻量级的逻辑回归模型,在推理服务期间利用目标模型正常验证时产生的真实接受/拒绝标签进行在线拟合。该估计器将草稿模型最高概率 token 的对数几率作为输入特征,其定义公式为:
其中 $p$ 是预测的接受率,$q_{\max}$ 是草稿模型给出的最高 token 概率。模型由两个关键部件构成:一个是所有草稿位置共享的斜率 $\omega$,负责衡量草稿模型对其预测的自信程度;另一个是逐位置的截距 $\beta_i$,负责吸收不同深度和不同数据分布下的基础接受率。
这种设计巧妙绕开了离线训练的卡点。首先,特征必须满足无损性,如果使用实际采样 token 的概率会导致裁剪决策依赖采样值本身,从而破坏投机解码输出目标模型精确分布的保证,而 $\text{logit}(q_{\max})$ 是安全的。其次,AV 机制既需要高 AUC 来保证局部排序(优先保留高概率 token),又需要低期望校准误差 (ECE) 来决定全局算力预算。直接将 $q_{\max}$ 作为概率使用会导致极差的 ECE,而在线拟合能将其校准到真实的接受率。在工程实现上,系统每隔 $N$ 个解码步,使用迭代重加权最小二乘法 (IRLS) 更新参数。为了将内存开销严格限制在 $O(K^2)$($K$ 为草稿长度),系统在解码步中只累加海森矩阵和梯度,不存储原始标签。针对深层草稿 token 标签稀疏的问题,共享斜率设计保证了牛顿步的稳定性,同时引入步长阻尼机制,根据样本数量缩放更新幅度,防止深层位置因数据不足而产生噪声更新。
效果如何 实验在并发度 64、温度 1.0、top-p 0.95 的设置下进行,使用了 SPEED-Bench(高/低熵)、GSM8K、HumanEval 和 MT-Bench 数据集。测试模型包括 DeepSeek-V4-Flash + DSpark,以及原本不支持 AV 的 MiMo-V2.5-Pro-FP4 + DFlash、Inkling-NVFP4 + MTP 和 Muse-Glimmer-30B + DFlash2。对比基线包含两个:一是关闭 AV 的固定长度验证(代表传统投机解码路线),二是使用预训练置信度头的 AV(代表需要离线训练的 SOTA 路线)。
量化结果显示,在 DeepSeek-V4-Flash + DSpark 上,在线估计器在 450 万个标签上测得的 AUC 为 0.8336,甚至略高于预训练置信度头的 0.8191;虽然在首个 token 的预测上不如置信度头,但从第二个 token 开始实现反超,最终端到端吞吐量与置信度头几乎持平。消融实验证明了部件职责的合理性:当工作负载变化时,斜率 $\omega$ 几乎稳定在 0.51 到 0.55 之间,而截距 $\beta_0$ 与草稿熵呈现 -0.89 的强负相关。对于缺乏置信度头的 MiMo 等模型,开启在线估计器后,相比关闭 AV 的基线在所有数据集上均实现了吞吐量提升,并在 7 个并发度设置中的 5 个上占据了吞吐量-交互延迟的帕累托前沿。作者也指出了该方法的局限性:目标模型的注意力后端必须支持变长验证;此外,MTP 和 EAGLE 等自回归草稿模型的收益不如 DFlash,因为它们为那些最终被裁剪掉的 token 付出了不成比例的生成算力代价。
A1 主要贡献
在推测解码(Speculative Decoding)中,自适应验证(Adaptive Verification, AV)通过在目标模型执行前向传播前裁剪掉低接受概率的草稿(draft)token,从而节省计算资源。然而,该技术此前仅支持带有“置信度头”(Confidence Head,即草稿模型隐藏层上的小型线性分类器)的 DSpark 模型。对于缺乏置信度头的草稿模型(如 EAGLE, MTP, DFlash 以及部分 DSpark 权重),若要使用 AV,通常需要重新训练模型,这对于现有的预训练权重是不可行的。
本文提出了一种在线拟合的接受率估计器(Online-Fitted Acceptance Estimator),用于替代传统的置信度头。该估计器直接从草稿模型的 logits 中提取特征,预测目标模型接受该 token 的概率,并将其作为自适应验证的置信度分数。估计器的系数会根据实时传入的数据流进行持续的在线拟合。该方案无需对草稿模型进行任何重新训练,使得任何现有的草稿模型权重都能免费获得自适应验证的性能提升。该功能已在 vLLM 的 PR #52228 中合入。
A3 背景知识与先验工作
自适应验证(Adaptive Verification)的背景
vLLM 的自适应验证(AV)允许在推测解码期间仅验证草稿 token 的一个子集。接受概率较低的草稿 token 会在运行目标模型前向传播之前从批次(batch)中被裁剪掉,从而节省计算量。这种优化在服务大批次(large batch sizes)时尤为有利,因为在该状态下 GPU 会受到计算瓶颈(compute-bound)的限制。
先验工作与局限性
使用草稿模型自身的置信度作为接受率的代理指标在过往研究中已有确立:
- EAGLE-2 [文献:EAGLE-2, arXiv:2406.16858] 证明了 EAGLE 的草稿概率与接受率密切相关,并利用其来增长和重新排序动态草稿树。
- Draft & Verify [文献:Draft & Verify, arXiv:2309.08168] 及其后续研究在草稿概率低于固定阈值时停止生成草稿。
- SpecDec++ [文献:SpecDec++, arXiv:2405.19715] 则训练了一个专用的接受率预测头,其核心理念类似于 DSpark 的置信度头。
在上述所有案例中,从草稿置信度到接受率的映射要么被原样直接使用,要么是离线学习得到的。然而,AV 需要的不仅仅是一个良好的排序(ranking)。其预算决策需要将预测的接受概率求和,并与测量的成本进行权衡。因此,预测值必须针对正在服务的特定模型对(model pair)和工作负载(workload)进行校准(calibrated),这正是本文提出的在线拟合估计器所解决的核心问题。
A2 方法细节
在线拟合接受率估计器设计
为了在无置信度头的情况下估计接受概率,引入了一个轻量级的逻辑回归(logistic regression)模型。该模型通过从草稿分布中提取的单一标量(即草稿模型最可能生成的 token 的对数几率,log-odds)来估计每个草稿 token 的接受概率。
该估计器在所有草稿位置上共享一个斜率(slope),并为每个草稿位置分配一个独立的截距(intercept)。因此,一个生成 $K$ 个 token 的草稿模型总共只需要 $K + 1$ 个参数。这些参数根据目标模型在正常验证过程中产生的接受/拒绝(accept/reject)决策进行在线拟合。
对分布进行评分 (Scoring the Distribution)
特征提取与逻辑回归
给定草稿 token 的置信度分数是通过逐位置(per-position)的逻辑回归来估计的。其核心关系可以通过对数几率(log-odds)形式清晰表达:
预测的接受率对数几率 = $\omega \cdot logit(q_{max}) + \beta_i$
其中:
- $\omega$ 是在所有草稿位置上共享的拟合斜率。
- $\beta_i$ 是第 $i$ 个位置的拟合截距。
- $q$ 是草稿分布,$logit(q_{max})$ 是估计器的输入特征,代表草稿模型最可能的 token 的对数几率。
直观地看,$logit(q_{max})$ 代表了草稿模型对其预测的自信程度。该特征通过系数 $\omega$ 和 $\beta_i$ 进行线性变换,以预测目标模型接受该草稿的对数几率。对其取 sigmoid 函数即可得到估计的接受率 $p$,该值被直接用作 AV 的置信度分数。
备选特征的评估 (Other Considered Features)
在确定使用 $logit(q_{max})$ 之前,评估了多种替代特征。评估特征的四个核心维度如下:
- 无损性 (Losslessness):特征是否会在推测解码期间使输出分布产生偏差(bias)。这是不可妥协的属性,否则会破坏推测解码输出与目标模型精确分布一致的基本保证。
- 曲线下面积 (AUC):随机选择的被接受草稿得分高于随机选择的被拒绝草稿的概率。衡量了区分(discrimination)应该被接受与被拒绝的草稿的能力。0.5 为随机概率。AUC 对局部排序 (local ordering) 至关重要,它确保更有可能被接受的 token 优先存活。
survival = confidence_probs[idx_mapping].cumprod(dim=1)
...
winners = flat.topk(draft_budget).indices
- 对数损失 (Log-loss):预测接受概率的平均负对数似然。它惩罚自信的错误答案并奖励良好的校准。
- 期望校准误差 (ECE):将草稿按预测接受概率分箱(bin),测量每个分箱内平均预测值与平均观察频率之间的误差(按分箱占用率加权)。衡量了校准 (calibration) 能力。ECE 对全局预算决策 (global budget decision) 至关重要,它确保估计的接受 token 数量与实际相符。
num_tokens_to_estimated_accepted_tokens = np.concatenate(
([num_sampling_requests], num_sampling_requests + np.cumsum(scores))
)
costs = draft_cost_ms[...] + verify_cost_ms[...]
...
draft_budget = int(np.argmax(num_tokens_to_estimated_accepted_tokens / costs))
特征对比实验数据
实验基于 DeepSeek-V4-Flash + DSpark,收集了约 450 万个标记草稿(未开启 AV,temp=1, top-p=0.95, conc=64),涵盖 SPEED-Bench 2k、GSM8K、HumanEval 和 MT-Bench 数据集。
| 特征 | 无损性 | AUC | 对数损失 | ECE |
|---|---|---|---|---|
| $\log(q_{max})$ | 是 | 0.8069 | 0.4813 | 0.0592 |
| $\log(q_{max}) - \log(q_{2nd})$ (top-2 margin) | 是 | 0.8156 | 0.4437 | 0.0105 |
| $H(q)$ (熵) | 是 | 0.8321 | 0.4577 | 0.0638 |
| $-\log(-\log(q_{max}))$ | 是 | 0.8336 | 0.4289 | 0.0103 |
| $logit(q_{max})$ (最终采用) | 是 | 0.8336 | 0.4284 | 0.0100 |
| $logit(q_{sampled})$ | 否 | 0.8553 | 0.4040 | 0.0152 |
| $-\log(-\log(q_{sampled}))$ | 否 | 0.8554 | 0.4075 | 0.0193 |
| $q_{max}$ (无拟合,直接作为概率) | 是 | 0.8259 | 0.4880 | 0.0736 |
| 训练好的置信度头 (Baseline) | 是 | 0.8191 | 0.4449 | 0.0052 |
特征选择分析:
- 为何弃用表现更好的 $logit(q_{sampled})$:尽管其 AUC 极高,但它读取了草稿模型实际采样的 token 的概率 $q_{sampled}$。基于该值进行裁剪会使位置 $i$ 的验证决策依赖于 $x_i$ 本身,导致存活的草稿不再服从 $q$ 分布。标准的拒绝采样期望草稿 token 从 $q$ 中采样,若基于 $q_{sampled}$ 裁剪,会使输出分布向草稿模型高置信度的 token 偏移,破坏了无损性。
- 为何不能直接使用 $q_{max}$ (无拟合):虽然它能比训练好的置信度头更好地对草稿进行排序(AUC 0.8259 vs 0.8191),但其校准性极差(ECE 比选定特征差 7 倍)。其平均预测值为 0.784,而实际接受率为 0.723。草稿的 top-token 概率仅反映草稿模型自身的自信度,而不反映目标模型是否会同意。在线拟合能够直接从目标模型的决策中学习这种映射,从而获得更好的校准。
- 最终选择:选择了 $logit(q_{max})$,因为它在 AUC 和 ECE 之间取得了良好的平衡,且与尝试估计的量共享对数几率尺度和分辨率。
与训练好的置信度头对比 (Versus a Trained Confidence Head)
在 DeepSeek-V4-Flash + DSpark 上,估计器在整体 AUC 和对数似然损失上优于置信度头,但在 ECE 上稍逊一筹。
包含所有草稿的对比:
- 估计器 $logit(q_{max})$: AUC 0.8336, Log-loss 0.4284, ECE 0.0100
- 置信度头: AUC 0.8191, Log-loss 0.4449, ECE 0.0052
排除第一个草稿位置后的对比:
- 估计器 $logit(q_{max})$: AUC 0.8352, Log-loss 0.4420, ECE 0.0103
- 置信度头: AUC 0.8075, Log-loss 0.4743, ECE 0.0090
(此时两者的校准能力几乎持平)
逐位置 AUC 分析:
置信度头在第一个草稿位置是更好的预测器,但估计器从第二个位置开始领先,且差距随深度扩大(到最后一个位置时估计器领先 0.08 AUC)。由于存活率是累积乘积,第一个草稿位置通常带有最高的存活分数,较少被预算裁剪。估计器的优势恰好位于发生裁剪的深层位置,这解释了为何估计器能在端到端性能上媲美置信度头。
系数拟合过程 (Fitting the Coefficients)
系数 $\omega$ 和 $\beta_i$ 在请求的实时服务期间持续重新拟合。上一个解码步骤中提出的草稿 token 在下一个解码步骤中由目标模型验证。只有直到第一次拒绝(如果有)之前的草稿 token 才有资格用于训练,因为目标模型已经明确对它们进行了标记(接受或拒绝)。
优化算法:
使用迭代加权最小二乘法(IRLS)来最小化预测值与标签的对数似然损失。该最小化过程在对数似然损失的二阶泰勒近似上进行。$\omega$ 和 $\beta_i$ 的优化步骤通过求解以下方程组获得:
$\Delta \theta = -H^{-1}g$
其中:
- $\Delta \theta$ 是共享斜率 $\omega$ 和逐位置截距 $\beta_i$ 的增量。
- $H$ 是损失函数的海森矩阵(Hessian),形状为 $(K + 1) \times (K + 1)$。
- $g$ 是损失函数的梯度,大小为 $K + 1$。
内存控制与更新频率:
重新拟合发生在每 $N$ 个固定解码步骤之后。在该区间内的每次解码步骤中,累积由收集到的系数、特征和标签导出的海森矩阵和梯度值。这种方法将一轮内的内存上限控制在 $O(K^2)$,而非收集原始标签所需的 $O(N \times B \times K)$。在回合的最后一步求解方程组并更新系数。
缓解深层数据稀疏的设计决策:
由于深层草稿被接受的频率较低,深层位置在一轮中可能会缺乏标签。采取了两个决策来缓解此问题:
- 共享斜率 (Shared Slope):所有位置共享斜率,防止因深度数据稀疏导致噪声更新。预测对斜率误差比截距误差敏感得多,共享斜率使牛顿步长(Newton step)更加明确。经验表明,共享斜率在准确性上几乎没有代价(仅损失 0.0002 AUC 和 0.0003 log-loss)。
- 步长阻尼 (Step Damping):每个系数的更新根据支持证据的数量进行缩放,公式为 $n / (n + constant)$,其中 $n$ 是已评分草稿的数量。这确保了标签较少的深层位置更新更为保守。
斜率与截距的作用分析 (Slope vs Intercept Roles)
对不同模型/数据集组合的拟合系数追踪显示,两类参数表现出截然不同的特性。
控制模型不变,改变工作负载 (DSV4-Flash + DSpark):
- 斜率几乎不变(0.51 到 0.55),与工作负载难度无关(与平均草稿熵的相关性 $r = -0.08$)。
- 截距变化剧烈:第一个草稿位置的截距与草稿熵的相关性为 $r = -0.89$,在可预测工作负载上约为 0.5-0.6,在不可预测工作负载上降至 0 以下。
改变模型对:
- 不同模型对之间的斜率范围从 0.45 到 0.59,但在每个模型对内部保持紧凑。截距在不同模型对之间也不同。
结论:斜率衡量的是草稿模型对自身正确率的认知程度,这是目标/草稿模型对和草稿采样方法的固有属性,因此仅随模型对变化。截距吸收了其余因素:每个草稿位置的基础接受率。基础接受率随深度下降,并在不可预测的内容上进一步下降。基础接受率依赖于模型对和工作负载,因此截距沿两个轴都会发生移动。
A4 实验环境
- 数据集:SPEED-Bench 2k low-entropy, SPEED-Bench 2k high-entropy, GSM8K, HumanEval, MT-Bench。
-
模型配置与组合:
- DeepSeek-V4-Flash + DSpark (推测长度=5)
- MiMo-V2.5-Pro-FP4 + DFlash (推测长度=8)
- Inkling-NVFP4 + MTP (推测长度=8)
- Muse-Glimmer-30B + DFlash2 (推测长度=7)
-
采样参数:temperature = 1.0, top-p = 0.95, concurrency = 64。
A4 实验结果
1. 吞吐量增益实验 (Output Throughput Gain)
在四个数据集(并发度 64)上,对比了关闭 AV 与开启 AV(使用在线估计器)的性能。结果表明,在相同的推测长度下,使用在线估计器在所有基准数据集上均带来了吞吐量的提升。对于 DSV4-Flash + DSpark,在线估计器的增益与使用真实置信度头的增益极为接近。
2. 吞吐量与交互性帕累托曲线 (Throughput vs Interactivity) - DSV4-Flash + DSpark
扫描了固定的推测长度以及在最大推测长度下使用 AV 的表现。结果显示,在线估计器在所有测量的并发度下,其性能与训练好的置信度头大致相当。
3. 吞吐量与交互性帕累托曲线 - MiMo-V2.5-Pro-FP4 + DFlash
该模型对原本缺乏置信度头。扫描结果表明,在 7 个测试的并发度中,有 5 个并发度下,AV(使用在线估计器)处于吞吐量-交互性前沿(frontier)上,证明了该方法作为直接替代方案的有效性。
A5 结论
本文提出并验证了在线拟合接受率估计器。该估计器在无需对草稿模型进行任何额外训练(即无置信度头)的情况下,能够提供准确且经过良好校准的 token 接受率预测,从而成功激活了自适应验证(AV)功能。实验证明其端到端性能与专门训练的置信度头相当。
局限性 (Limitations):
- 目标模型的注意力后端(attention backend)必须支持变长验证(variable-length verification)。这与 DSpark AV 现有的先决条件相同。
- MTP 和 EAGLE 等自回归推测器从 AV 中获得的收益低于 DFlash 和 DSpark。因为这些自回归推测器在生成可能在验证前被裁剪的 token 时,付出了比例更大的计算成本。
A6 附录
脚注 1:关于 $logit(q_{sampled})$ 引起输出分布偏差的数学证明
假设一个简单的双 token 词表 $[a, b]$。
目标模型分布 $p = [0.5, 0.5]$,草稿模型分布 $q = [0.2, 0.8]$。
假设裁剪策略为:如果 $q(x) < 0.5$ 则将草稿 token 从验证中裁剪。
- 如果草稿模型采样到 $a$:触发裁剪,目标模型从自身分布 $p(x)$ 中采样,输出 $a$ 和 $b$ 的概率均为 0.5。
- 如果草稿模型采样到 $b$:进行验证。token $b$ 被接受的概率为 $\min(1, p(b)/q(b)) = \min(1, 0.5/0.8) = 0.625$。如果被拒绝,则从残差分布 $norm(\max(0, p - q)) = [1, 0]$ 中重新采样,必定产生 $a$。
在拒绝采样期间,最终输出分布计算如下:
$p_{out}(a) = q(a) \cdot p(a) + q(b) \cdot (1 - 0.625) = 0.2 \cdot 0.5 + 0.8 \cdot 0.375 = 0.1 + 0.3 = 0.4$
$p_{out}(b) = q(a) \cdot p(b) + q(b) \cdot 0.625 = 0.2 \cdot 0.5 + 0.8 \cdot 0.625 = 0.1 + 0.5 = 0.6$
最终输出分布 $[0.4, 0.6]$ 与目标模型的原始分布 $[0.5, 0.5]$ 不符,这严重违反了推测解码的无损保证(lossless guarantee)。
A7 补充细节
vLLM 使用方法 (vLLM Usage)
自适应验证通过推测配置(speculative config)启用。对于满足以下条件的草稿模型:(1) 没有置信度头,(2) 所有的后端支持变长注意力,vLLM 会自动选择在线估计器。使用代码示例如下:
vllm serve <target_model> \
...
--speculative-config '{
"model": "<draft_model>",
"method": "<method>",
"num_speculative_tokens": <num_speculative_tokens>,
"draft_sample_method": "probabilistic",
"enable_adaptive_verification": true
}'
💬 评论讨论
欢迎在这里分享您的想法和见解!