☰
接受率越高反而越慢?百度 ERNIE 开源 DCore,揭开投机采样评测的「皇帝新衣」
2026/10/22 3:55:15 网站建设 项目流程

接受率越高反而越慢?百度 ERNIE 开源 DCore,揭开投机采样评测的「皇帝新衣」

接受长度排名第一的 Drafter,端到端吞吐连前三都进不了——这是百度 ERNIE 团队开源的 DCore 项目(GitHub 仓库:ernie-research/DCore)用实测数据捅破的事实。如果你的团队还在拿不同论文里的 τ(平均接受长度)来选 Drafter,选型结论大概率是错的。## 一、投机采样到底在加速什么大模型自回归推理是典型的访存受限任务:生成一个 token 需要把几十 GB 的模型权重在显存里“过”一遍,而算力大量闲置。投机采样的思路是——用一个小得多的 Draft 模型(Drafter)先快速“猜”出 k 个 token,再让目标大模型一次性并行验证。验证一次的成本约等于生成一个 token,但通过验证的多个 token 被“白嫖”,从而实现 2~3 倍的加速。这套机制的核心指标有两个:-平均接受长度 τ:每轮验证中,Draft 提议的 token 平均有几个被主模型接受;-单步延迟:Drafter 生成 k 个 token + 主模型验证一次的总耗时。直觉上,τ 越大越好。但 DCore 的作者们指出:这个直觉存在系统性偏差。## 二、More accepted tokens ≠ faster LLMs问题出在:接受长度 τ 是有代价的,而这个代价经常被隐藏。一个更大的 Drafter、或者经过蒸馏对齐的 Drafter,确实能提高 τ,但它的单 token 生成延迟也随之上升。推理的整体吞吐可以近似表示为:textSpeedup ≈ τ / (1 + k · t_draft / t_target)最终加速比取决于 τ 的增益能否覆盖 Drafter 的额外延迟。分母里的k · t_draft正是被大多数人默默忽略的部分。DCore 用实测数据证明:在某些主流模型组合上,接受长度排名第一的 Drafter,端到端吞吐反而排不进前三。【配图建议:DCore 官方仓库 assets 目录下的 figure-2,展示 τ 与端到端吞吐不对应的实测对比】第二个发现更有杀伤力:当 τ 的统计口径不统一时,Drafter 之间的排名会彻底洗牌。不同论文在评测时使用的验证策略、温度、采样方式、是否共享 KV Cache、验证窗口长度等因素各不相同,导致文献中“谁是最强 Drafter”的结论互相矛盾。同一个 Drafter 在不同论文里的排名可以差出好几名,原因往往不是实现优劣,而是协议不同。## 三、DCore 提供了什么作为百度 ERNIE 官方仓库,DCore 给出了一套可复现的公平评测框架:1.统一验证协议:固定采样参数、验证算法和硬件环境,消除混杂变量;2.多 Drafter 排行:在不同目标模型和任务分布下,同时报告接受长度与端到端吞吐两个维度;3.收益边界分析:明确指出在什么条件下(目标模型多大、Drafter 多小、任务多“可猜”)提升接受率才是划算的。典型使用方式如下:bash# 安装pip install dcore# 在统一协议下评测某个 Drafterdcore evaluate \ --target Qwen2.5-72B-Instruct \ --drafter your-draft-model \ --tasks mmlu,gsm8k,alpaca \ --metrics accepted_length,throughput \ --batch-size 1 --temperature 0.0``````pythonfrom dcore import SpeculativeEngine, Drafter# 同时观测接受长度与真实吞吐engine = SpeculativeEngine( target="Qwen2.5-72B-Instruct", drafter=Drafter.from_pretrained("your-draft-model"), speculative_steps=4,)result = engine.benchmark(prompts)print(result.accepted_length) # 平均接受长度print(result.tokens_per_sec) # 端到端吞吐 —— 评测的落脚点注意评测命令里同时报告的accepted_length与throughput两个指标——前者只是过程量,后者才是落脚点。示例以 Qwen2.5-72B-Instruct 为目标模型,覆盖 mmlu、gsm8k、alpaca 三类任务分布,speculative_steps=4。【配图建议:DCore 官方仓库 assets 目录下的 figure-12,展示统一协议下的多 Drafter 排行结果】## 四、对开发者的实践建议第一,选 Drafter 别只看 benchmark 表上的接受长度。如果你的目标模型本身很小(如 7B 级别),t_target 已经很低,一个“猜得准但偏慢”的 Drafter 很可能得不偿失;反之在 70B+ 的模型上,Drafter 的延迟占比更小,值得追求更高的 τ。判断标准就是回到公式:τ 的增益能不能覆盖分母的增加。第二,警惕跨论文的数字直接对比。验证策略、温度、KV Cache 共享与否、验证窗口长度,任何一项不同都会让排名失真。复现优先,引用谨慎——在自家硬件上跑一遍统一协议的评测,比引用任何榜单都可靠。第三,任务分布影响 τ,进而影响选型。代码生成、数学推理这类高结构化任务,Drafter 更容易猜对;开放式闲聊则相反。生产环境应以自身流量分布做评测,而不是迷信公开榜单。【配图建议:DCore 官方仓库 assets 目录下的 figure-4,展示不同任务分布对接受长度的影响】## 五、写在最后推理加速领域的“内卷”,很大程度是指标的内卷。DCore 的价值不在于提出新算法,而在于把尺子校准了——当一个社区开始认真讨论“怎么测”的时候,才真正走到了“怎么做得更好”的前夜。目前仓库热度尚在早期,但作为 ERNIE 官方出品,其工程完整度和方法论严谨性值得持续关注。下次做 Drafter 选型前,先在自己的流量上跑一遍dcore evaluate,把 tokens_per_sec 而不是 τ 放进汇报 PPT——这是这篇文章最值得带走的一个动作。—来源:GitHub Trending — ernie-research/DCore(https://github.com/ernie-research/DCore)原文:https://www.rainbowonionai.cn/ernie-researchdcore.html

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询