两次前向即可定位因果泄漏,Zamba2与Nemotron-H在chunk边界翻车

The Mask Is Not the Model: Auditing Prefix Invariance in Attention, State-Space, and Hybrid Sequence Models

Taebong Kim, Youngsik Hong, Minsik Kim, Sunyoung Choi, Jaewon Jang, Minseo Kim

cs.LG, cs.AI

2026-08-24

两次前向即可审计前缀不变性:改最后一个token,看前面各层是否跟着变。mask检查192次注入全漏,该方法192/192定位到层;Zamba2与Nemotron-H在chunk边界把未来漏到前面。

这篇在解决什么

自回归模型有一条硬约束:位置 t 的表示不能看 t 之后的输入。Teacher forcing、KV cache、推测解码都默认这件事成立。过去大家查的是 attention mask 画得对不对。混合栈里这件事不够用。Mamba 和 RWKV 根本没有 mask;chunked scan、全局归一化、差分注意力的聚合,都可以在 mask 正确时把未来漏到前面。

更麻烦的是,泄漏会让训练指标变好。未来信息让 next-token 变容易,loss 和 teacher-forced perplexity 一起下降,到自由生成或缓存路径才爆。作者在内部混合栈上连续撞上三种互不相关的泄漏,没有一次反映在常规训练曲线上。

方法

前缀不变性说的是:两个序列前缀相同,则每一层在前缀位置上的表示必须相同。最便宜的实例是只改最后一个 token。

测试就是两次前向。随机长度 T 的序列,复制一份只改最后一位,关掉 cache,hook 每一层输出。比较位置区间 [0, T−1) 的最大绝对差。第一个超过阈值 τ(默认 1e-6)的层就是泄漏起点。干净实现上这个差是精确 0,所以阈值在 1e-6 到 1e-3 之间答案不变。135M 模型在 CPU 上加载后扫一遍要 0.1–0.5 秒。

设计点有四条。看层输出不看最终 logits,才能把人送到某一层。最后一位本来就该变,必须排除。打开 cache 会走另一条代码路径,测的就不是当前图。必须用同一份已加载 checkpoint 做阳性对照,否则全 0 可能只是模型没吃输入。

故障分成四类八种:错位一步、时间维聚合、归一化泄漏、反向扫描或末位广播。审计序列长度必须超过 chunk、窗口、卷积核,否则整类缺陷不可见。作者自己第一次普查用 T=48,Zamba2 的 chunk 是 256,当时漏检了。

结果

8 个公开 checkpoint、8 种故障、3 个深度,共 192 次注入,全部定位到被注入的那一层。其中 mamba-130m 和 rwkv-6-world-1b6 全程没有 mask。

96 次对照里,静态 mask 检查 0/96;只看 logits 能检出 96/96,但不能定位;打乱后缀 perplexity 71/96,对半径短于打乱边界的错位一步结构性失明;对前缀输出求未来位置梯度 96/96 定位,但要反传,且整条路径必须可微。cache 与全序列一致性在干净的 SmolLM2-135M 上假阳性 Δ=1.85×10⁻⁴。

在 transformers 5.7.0 里静态扫了 6 份 chunked scan:Zamba2 与 Nemotron-H 的块间归约轴反了,而且那三行字节级相同。动态审计对上预测。Zamba2-1.2B 从位置 256 开始污染,前缀最大差 1.12×10⁻²;Nemotron-H-8B 在序列长于 128 后前缀差跳到 0.74,第一处在第 17 层、第一个跨边界的 Mamba。随机初始化同样在边界泄漏;改回 Mamba2 参考实现后差回到精确 0。Bamba-9B、Falcon-Mamba-7B 等同源但轴正确的实现保持干净。泄漏发生在纯 PyTorch 路径,融合 CUDA kernel 未审计。

Falcon-H1 三个尺寸加载后,对不同输入给出比特相同的输出,阳性对照 0/24。作者把它们标成未能审计,没有写成干净。

为什么重要

混合模型会越来越多,mask 检查的覆盖面在变小。这套测试便宜到可以进 CI:两次前向,不训练,不必为了测试本身上 GPU。它不替代「有没有漏」的 logits 扰动,它补的是「漏在哪一层」。对发模型的人,论文建议因果正确性证书应该和参数量、context 长度一起给,并且必须附阳性对照和足够长的测试序列。

发现的是存在性证明,不是生态里的缺陷率。两条泄漏来自同一份抄错的轴处理。

局限与存疑

作者自己列得很清楚。检测上并不比 logits 扰动强;定位上梯度法一样准,优势在成本和可微性。普查约 20 个非随机样本,从 129M 到 9B。融合 kernel、gated 仓库、缺 modeltype 的 checkpoint 审计不了,而这些恰恰更可能藏 bug。部分干净结论没法打阳性对照,因为层返回签名接不住注入。LFM2-1.2B 在注入强度 1.0 时 24/24 精确定位,强度不超过 0.1 时稳定报成下游三层,机制不明。没测训练模式、分布式切分、以及只被稀有输入触发的泄漏。Zamba2 的完整对照电池没有在 Nemotron-H 上原样重跑。

术语

原文与代码

相关论文

全部论文解读