这一对 Radeon 卡上的解码吞吐;在离线探针与 campaign harness 之间核对,跨越冷启动与三十天的漂移
本仓库中有两套 harness 会产出解码数据:一套离线探针,一套 campaign harness。图表若要汇总两者的结果,其间差异必须经由实测确立,而非凭空假定。在热机状态下,该差异仅为 0.44 %。查明这一点经历了四次完全相同的运行,因为首轮读数整整低了 31 %。
campaign harness 采用流式传输请求兼容 OpenAI 协议的服务端,在温度 0.8 下采样并生成 512 个 token。探针 harness 则离线调用 LLM.generate 走贪婪解码(greedy),以 64 个 token 的运行结果减去 8 个 token 的运行结果求差。在匹配的上下文深度上,两者的吻合度分别达到 0.44 %、0.01 % 与 0.07 %。将两者的生成长度统一也未带来实质性改变。它们记录的是同一次测量。
得出该结论的前提,是先认识到在这台机器上,一次运行不构成一次测量。连续四次完全相同的运行读数依次偏差 −30.7 %、−5.1 %,随后趋于收敛。性能惩罚在机器吞吐最高处最为严重,以至于起初将预热效应误判成了两套 harness 之间的实现差异。
由此引出两条规则,并直接固化在 ledger 中,而非留待绘图时任意裁量。每个数据点均记录 runs 与 range_pct。patches 字段采用列表而非布尔值,因为依赖未合并 PR 测出的结果,与直接基于公开发行版测出的结论,绝非同等性质的断言。
指标选用极差而非标准差,其中一个格子清楚地证明了原因。为一个在 8K 上呈现双峰分布的数据点增加第三和第四次运行后,其极差从 15.79 % 扩大至 16.79 %,但标准差反而由 4.87 降至 3.61。前者警告测量稳定性出现下降,后者却给出了测量质量有所改善的假象。
选用该基准模型进行标定,目的十分明确:将两套 harness 的差异与整个技术栈中的其余变量完全隔离开来:
引擎各项运行参数严格沿用 campaign 的既有配置。上下文深度直接采用 campaign 所记录的
prompt_tokens 实际数值,而非标称目标值,从而确保两套 harness 始终在完全相同的序列长度下测量,而非仅停留在相近深度。
图 1 的初次对比显示,探针在最短深度上比 campaign 落后 31 %,在最长深度上也落后 9 %。鉴于两套 harness 在 token 跨度、采样策略和传输机制上均存在差异,这一差距极易引申出看似合理的揣测。然而这些假设无一成立。
两轮 campaign 先后相隔三十天进行,期间运行的内核版本不同,所打补丁亦有差异。其中有六组配置在两轮中均接受了实测。这六组对照数据,是判定七月的数据与八月的数据能否合并在同一张图表中的唯一依据。
ledger 将原始测量文件投影为统一的行格式,所有数据均经由重新计算与严格校验生成,绝非人工直接编辑。每个数据点都附带两个元数据字段;若将这些信息的呈现推诿给下游绘图环节,基准测试仓库就会在无形中许诺超出其实测精度的虚假确定性。
2026-08-29 的 campaign 说明了元数据为何必须与测量值同行。2026-08-29 的 campaign 在单台机器上评估了八组阶梯,在连续会话中覆盖相同的十一个共有档位,每格执行两轮。三组非投机配置的 33 个档位中,越过阈值线的数量为 0,测得的最差极差为 0.59 %。与之相对,五组投机配置的 55 个档位中有多达 28 个越过阈值。这并非投机解码本身的普遍缺陷:gemma-4-31B 的投机组在每个档位上均满足评级要求,最差极差为 2.68 %。事实上,全部 28 个超标点均来自 Qwen3.8-27B,无论采用哪种注意力后端、无论是否应用补丁皆是如此。若仅汇报简单均值,这 28 个极不稳定的格子就会显得同其余 60 个一样风平浪静,进而在后续所有图表中彻底掩盖其固有的不稳定性。
本基准测试中几乎每个格子都仅包含两次运行。在仅有 2 个样本时,样本标准差本质上就是极差除以根号二,只是同一个数值披上了名不副实的分布外衣。唯有当样本达到 4 个时,该统计量才开始具备独立的统计学意义。正是在这一节点上,统计指标的选择变得具体可感,因为实测中恰好有一个格子记录了四次运行。
验证内核改动是否无害的最直观方法,通常是比对修改前后生成的 token 序列。但在当前硬件环境下,该测试度量出的实际上是平台本身的不确定性,而非代码改动带来的影响。
本仓库中的数值结论,均在固定输入下对照 fp32 参考实现予以评估。端到端改动则基于吞吐速率以及各 worker 记录的内部执行路由进行论证。比对 token ID 的测试手段,被严格限定于已知具备确定性的计算平台;该特性在 A100 上已通过实测确立,但在当前这台机器上却并不具备。
减速效应确有实测,但机理尚未查明。它在完成单次预热生成后依然存在,且不局限于首个上下文深度,直到第三轮运行才消除。成因究竟源于宿主机、驱动、容器还是其他组件,尚未完成归因隔离。
标定仅采用单一模型以隔离变量。所得吻合度明确但适用范围狭窄:走其他内核路径的模型完全会因未及探讨的原因而在两套 harness 间产生分歧,其潜在成因未在此处涉及。
六组配置中有两组在两次 campaign 间产生了约 0.8 % 的漂移。其中一组排除了多项候选原因后仍未查明症结,目前仍在调查中。因此,跨 campaign 的数据合并仅能在统计区间内进行约束,不能断言二者绝对等价。
本文并未断定任何变化的输出结果存在错误,仅说明其无法复现。TP=1 尚未测试;输出差异的源头在内核之上,但未做进一步定位。
build_ledger.py 最初在论证 6 % 的阈值时,描述的是制定该规则时的离散分布。随后该分布发生偏移:0.27 对应的数据行入库,且双峰格子补充了两次运行,使得分布尾部变为 2.6、3.4、3.5、4.1、5.1 并跃升至 16.8,该阈值线因而仅排除了一个数据点而非两个。源码注释随后重写以描述新分布,验证器亦锁定了其尾部分布,防止后续静默失效。
benchmarks/README.md 中,142 个格子中有 30 个离散度超过 1 %。该句现已明确限定为其针对的特定格子。此外,两轮 campaign 实际相隔三十天(2026-07-25 至 2026-08-24),而非五周;此前小节标题、正文及图 3 标题均误记为五周。最后,英文中的 "stated with a band" 意指统计区间,中文此前误译为"带宽陈述"(混淆了 bandwidth),现统一更正为"区间"。
RDNA3W4A16LinearKernel,并对两个不稳定模型强制启用 TRITON_ATTN 后,二者依旧不稳定;而在早先判定为稳定的两个模型中,其四个格子均无任何变动。这证明注意力后端并非导致不确定性的关键变量,量化内核成为目前剩余的唯一具名候选,尚待确立(gfx1100-greedy-attn-ab/)。
自己跑一遍。全部实测数据与校验脚本均保存在仓库中:标定探针运行记录位于
benchmarks/harness-calibration/;
ledger 流水线位于
ledger.jsonl
与
build_ledger.py,
若已入库的投影数据与源数据不再一致,构建脚本便会报错中止;原始不确定性日志位于
gfx1100-greedy-nondeterminism.json。
文中的每一张图表,均由
verify_doc_figures.py
基于上述源文件重新计算生成。
该不确定性问题已提交至上游议题 vllm#50603。该反馈指出了完全相同的 Triton 回退行为,但指出增加一次预热调用即可解决。鉴于本仓库的每次测量在测试前均已包含一次预热生成且依然出现输出波动,要么该修复方案不具备通用性,要么当前平台遭遇了另一处完全独立的缺陷。