像是把计算器换成同规格的另一台:按理说答案该一样,结果 AI 接下来说的话却全变了。Teng-Ruei Chen 在 vLLM 中固定模型、提示词、硬件和生成设置,只替换 INT8 线性层的 GPU 内核——执行具体运算的底层程序,从 CUTLASS 换成 Triton。两套实现各自冷启动后都能逐位复现,但在最大一组测试中,64 条生成结果没有一条相同。
关键不只是发现差异,而是锁定差异从哪来。INT8 量化用 8 位整数近似表示模型数据;其核心矩阵乘法先得到精确的 INT32 累加值。论文验证没有溢出,因此排除了累加顺序。给两个内核输入完全相同的数据后,真实缩放因子下的差别最多只有一个 bfloat16 间距;把缩放因子改成 2 的整数次幂,Qwen3-1.7B 和 8B 的全部 196、252 个线性层都逐位一致,端到端输出也恢复一致。换句话说,分歧出在之后的缩放与舍入,而微小误差一旦改变某个词,后文就会沿另一条路生成。这提醒部署团队:验证“接口能跑”还不够,回归测试还应检查实际输出。