数值等价性

不同后端永远不会逐位一致;蜂群把测得的容差当作一等契约。

CUDA、ROCm、Adreno 和 CPU 以不同的归约顺序、FMA 融合、累加器和超越函数近似计算同一算子——结果每算子相差约 1e-6…1e-3,这是设计使然,永远不会逐位一致。由任何到场硬件组成的蜂群无法要求逐位精确,所以 Kvasir 转而测量等价性。

后端对(真实 122B,layer-0 专家)max|Δ|cosine
CUDA (GB10 Blackwell) vs ROCm (MI250)3.5e-101.0000000000
ROCm (MI250) vs numpy (x86)7.9e-70.99996
手机 ARM CPU vs numpy (x86)1.4e-60.99992
CUDA (GB10 Blackwell) vs Grace ARM CPU2.6e-50.99975

整个后端矩阵已补全:两个 GPU 后端(CUDA、ROCm)共享内核源码,落在实质逐位相同(cosine 1.0000000000),而 GPU↔CPU 对以 ~0.9997 等价。一个 CUDA worker 与一个 ROCm worker 可互换;一个 GPU worker 与一个 CPU worker 数值等价。

为何不同

浮点加法不满足结合律

  • matmul 归约顺序 — tensor core、MFMA tile、OpenCL workgroup 和 SIMD lane 以不同顺序累加。
  • 累加精度 — F16/BF16 存储配 F32 或 F16 累加器,是影响分歧幅度的最大杠杆。
  • 超越函数近似 — exp(softmax)、silu(swiglu)和 rsqrt(norm)在各后端使用不同的多项式/查表变体。
契约

容差、能力、单一权威

  • 验证是容差——"top-1 一致率 ≥ 99.x%,KL ≤ ε"——绝不是逐位相等。
  • 后端与累加精度作为节点能力公示;F32 累加节点在输出敏感的 rank 上优先。
  • 超出容差的节点被标记为不适合敏感 rank,而不是被整体拒绝。
  • 离散决策(路由、采样)固定在单一权威上,连续误差永远无法变成离散分歧。