返回博客

2026.09.07

单卡 2103 tok/s 的跑分,怎么在不复现的情况下判断它是刷出来的?

一条公开跑分声称单张消费卡上 27B 稠密模型跑到 2103.6 tok/s。我没有那张卡,也没跑过那个配置,但三个除法就能确定它全程没做过前向计算。这三个除法你在自己机器上也能算。

llmbenchmarkinferenceengineering

有人丢来一条跑分:单张消费旗舰卡,27B 稠密模型,batch 1,2048 个 token 在 0.969 秒里出完,2103.6 tok/s

同卡同模型的正常速度大概是 79。这条快了 26 倍。

我没有那张卡,也不打算为了反驳一条跑分去买一张。但三个除法就够了——每个都能在一分钟内算完,每个单独成立就足以下判决。第二章那个除法是全文最短的一条,你现在就能记住;第六章是我自己在同一套方法上翻的车,那章决定你要不要信前面五章。

只想拿判据,就看第 2 章;另外两条独立反证在第 3、4 章。想看我怎么翻车去第 6 章,只要检查单就跳到第 8 章。

1. 他什么都没藏

先说清楚:这条跑分的作者不是骗子。

启动命令、量化格式、投机解码参数、运行时的自述备注,全部公开可查。如果按「配置有没有藏起来」这条老判据去审,它能全票通过。

钉子恰恰在他自己写的备注里:

--speculative-num-draft-tokens 56
--speculative-dflash-block-size 56

"width 56 speculative window with N-gram primary fill
 (100% acceptance, AL=56.0)"

投机解码是这么回事:让一个小模型先猜后面几个词,大模型一次性验证这几个猜测,猜对的白赚,猜错的从错的地方丢掉重来。数学上无损,贪心解码下输出跟大模型逐个吐是一样的。

窗口设成 56,意思是小模型一次猜 56 个。而 AL(接受长度,平均每轮真正被采纳几个)报的是 56.0,接受率 100%。

他如实汇报了一个没有意义的测量。

2. 第一个除法:接受长度除以窗口宽度

全文最值钱的一行:

AL / num_draft_tokens → 越接近 1.0,这个数字越不可外推

代进去:

56.0 / 56 = 1.000

一次都没猜错。 连续 2048 个 token,小模型每一次预测全部命中。

为什么这是红灯?拿同一个投机解码方法的官方数据当尺子:

任务 官方 AL 对应加速比
GSM8K 5.46 3.43×(单请求)
MATH-500 5.28
MBPP 4.79
HumanEval 4.39

真实任务落在 4 到 6 之间。除以窗口 56 就是 0.078 到 0.098——猜 56 个,能用的大约 5 个。

100% 命中意味着输出已经退化成能被整段预测的序列:数数、复读、套模板、格式化枚举。N-gram 填充直接从前文抄,当然全中。

这时候投机解码在干的事是:跑一次大模型前向,吐出 56 个早就知道的 token。它量的是 N-gram 命中率,跟模型生成速度没关系。

可迁移的形状:任何指标恰好等于它的理论上界,先怀疑它是喂进去的而不是跑出来的。真实负载的 AL 一定是个带小数的散值,恰好等于窗口宽度就是「分母被喂饱了」的确诊签名。同族的还有接受统计写成 383/383767/767 这种分子分母完全相等的,一律红灯。

3. 第二个除法:功耗,最难伪造的旁证

第 2 章那条要求你知道官方 AL 基线。不知道呢?

同一张卡、同一个 27B 模型:

跑法 功耗
真实稠密解码 574–576 W(该卡 TDP 575,满载)
这批「记录」 99–100 W

99 除以 575 等于 0.172

GPU 在用 17% 的电产出 26 倍的速度。 它大部分时间没在算。

功耗是三条里最好用的,因为它跟你要验证的那个数字完全无关——作者没有动机去伪造它,跑分平台也只是被动记录。一个满载的加速器功耗应该贴着 TDP 走,明显低于 TDP 就说明它在等,不在算。

4. 第三个除法:roofline

生成每个 token 至少要把权重完整读一遍显存。所以:

batch-1 生成速度上限 = 显存带宽 ÷ 权重体积

这不是什么经验规律,就是一个除法。代进去:

27B 稠密模型(不是 MoE,别按激活参数算)
NVFP4 权重 ≈ 27.8e9 × 0.5 字节 = 13.9 GB
该卡带宽 = 512 bit ÷ 8 × 28 Gbps = 1792 GB/s

上限 = 1792 ÷ 13.9 = 129 tok/s

对账:

数字 相对上限
同机真实自回归解码 79 tok/s 0.61× ✅ 合理
声称的 2103.6 16.3×
同批更宽窗口的 4691 36.4×

79 拿到理论上限的 61%,这是个正常达成率。2103.6 是上限的 16 倍。

有人会说投机解码本来就能突破这个上限——对,它一次前向出多个 token。但按官方 AL 5.46 反推,诚实的数字该落在 300 到 700。两千是另一个量级。

5. 这批数据自己把曲线画出来了

前三条都是外部反证。第四个证据不需要任何外部知识,只要把作者自己提交的那批记录按窗口宽度排开:

窗口 AL tok/s
512 231–292 4691
256 174–240 4547
56 56.0(100%) 2104
24 未报 1074

tok/s 跟着窗口宽度单调涨,AL 亦步亦趋。 它量的是窗口宽度。

最讽刺的一条在最下面:窗口 24 那条方法最规范——temperature 设 0、六次取最优、每次之间冷却 15 秒——它也最慢。规范度和数字大小成反相关,这个反相关本身就是信号。

顺带一提,2103.6 那条的首字延迟字段是空的,备注写着预填充走了缓存。连输入处理的成本都没进分母。

6. 我在同一套方法上翻过的车

上面五章看着挺利落。诚实起见,列一下我自己栽过的地方——这几条决定你该给前面的数字打几折。

这次没有复现,全是旁证。 我没那张卡,没跑那条配置。所有反证来自同一个公开数据库里的其他字段,加上我自己机器上的同类实测。旁证足以证伪,不足以给出真值:我能说「2103 不可能」,说不出「它真实应该是多少」。第 4 章那个 300–700 是按官方 AL 反推的,不是测出来的。

roofline 用的是理论带宽。 1792 GB/s 是规格书数字,真实可达带宽永远低一截,所以 129 这个上限本身偏乐观。

这一条我栽得最难看。之前算一个达成率,分母用了个来路不明的 1493,得出 67%;后来我「修正」成 1133,宣布达成率 109%、根本没有缺口。两个数都是错的——1133 是在限功耗且没预热的条件下单次测出来的。老实重测的真值是 1674,达成率 74%,缺口存在,只是还没归因。

拿历史数字当分母之前,先把那个数字重算一遍。一个听起来合理的机制配一个没复核的历史常数,足够推出一个方向完全相反的结论。

那个 79 tok/s 的对照组不严格同配置。 它是另一种量化格式跑的,权重字节数跟 NVFP4 那份不同。够格当量级参照,不够格当精确基线。

官方 AL 基线来自模型卡,不是我自己跑的。 第 2 章那张 4–6 的表我复核过跟公开报告一致,但没在自己机器上重跑那四个任务。

我还犯过一次方向相反的错。 同一天我捡到同型号硬件上的另一份公开数字(65–74 tok/s),拿它去质疑一份 212.7 的跑分,结论是「212 可疑」。

被一句话拽回来:那两份数字四个旋钮全不一样——投机解码方法、上下文长度、前缀缓存开关、KV 数据类型。而我自己同口径实测是 185–193,跟 212 只差 9%。

该被质疑的是我的比较。同型号硬件的两份公开数字互相打架时,默认结论是「不可比」,先列差异表再说话。

7. 判死不等于拿到知识

上面这套能把一个数字判死,但判死之后还得真去测。

同一份 212.7 的跑分,我把该问的都问完,得到「跟我们差 13%,候选原因三项」。然后逐项做单变量实测:

变量 实测贡献
量化格式 INT8 vs FP8 −6.5%(反向)
草稿模型量化 W4A16 vs bf16 +4.2%
引擎版本与功耗档 剩余 9.1% 未归因

那个 13% 看着像一个整体,拆完发现里面有一项是负的。不拆就会把功劳记给错的地方——这次差点记给量化格式,而量化格式实际是拖后腿的那个。

推断出的候选清单是实验计划,不是结论。

还有一条:把「机制是真的」和「倍数是刷的」分开讲。被拆穿的这个投机解码方法本身是扎实东西,开源协议明确,数学上无损,2.7 到 4.6 倍的加速有据可查。不要因为一条跑分刷分就否定方法,也不要因为方法是真的就接受那个数字。

8. 下次照着问

第一,原帖里有证据吗。 通常没有——正文写着数字,配图是一张显卡照片。最便宜的一步,也最容易跳过。

第二,真配置在哪个页面。 爆款帖子常常只是某个跑分站的引流,真配置在那边。这类站点往往有公开 JSON 接口,一次能拉全上百条含完整启动命令和自述备注的记录,比开浏览器快一个数量级。落盘再解析,别在管道里直接解析——备注字段常含控制字符,经过 shell 往返会被破坏。

第三,它报的是哪一格。 batch 1 单流的数字进不了多用户服务的结论。同一个草稿模型在高并发下可能从加速变成净亏。

第四,引擎是不是私有分支。 版本号带后缀就是硬信号,里面还有什么你不知道。

第五,算 AL 除以窗口宽度。 逼近 1.0 就停,不用往下看了。

第六,看功耗。 明显低于 TDP 的满载跑分,GPU 没在算。

第七,算 roofline。 带宽除以权重体积,跟声称值比个倍数。

第八,前七条全过了,去测。 差异清单是实验计划,实测的账经常跟清单长得不一样。

八条答完之前,那个数字只是个数字。


写这篇的动力一半来自「有人在网上晒了个假数字」,另一半来自第 6 章——那里面每一条都是我自己算错的账。