research: audit AttnRes spike path study

This commit is contained in:
wuyang
2026-07-30 12:03:37 +08:00
parent e9ca86c21e
commit 3cbb163715
10 changed files with 376861 additions and 0 deletions
+503
View File
@@ -0,0 +1,503 @@
# K3 Attention Residuals 局部梯度尖峰与反向路由审计
研究日期:2026-07-30
协议 ID:`llm-atlas-k3-attnres-spike-path-v1`
父协议:`llm-atlas-k3-attnres-gradient-scale-v1`
研究身份:**Round 05 已知异常驱动的定向机制追踪,不是盲发现**
## 0. 一句话结果
在与 Round 05 **model / optimizer / BPC / post-MLP gradient 全部 exact** 的
depth-32 Block AttnRes 三 seed 重放中:
1. layer 21–25 的局部峰在六个捕获位置最终都 3 / 3 可见;
2. 四种预注册 Token-gradient reductions 的 12 / 12 单元全部过闸;
3. 全局切断 64 个 depth mixers 与 output mixer 的 softmax / query / key
source-gradient path,峰没有下降,反而在 3 / 3 seed 略增;
4. 保持 learned forward 完全不变、只把所有 mixer 的 value backward coefficients
从 learned `w` 改为 `1/N` 后,spike contrast 平均下降 **70.2%**、peak normalized
平均下降 **37.0%**,两项都在 3 / 3 seed 超过预注册 20% 阈值;
5. seed-1 从初始化完整重训 8,000 steps 的 replay,连六位置、七 reductions、三模式和
65 个 mixer quantile summaries 都 exact。
最窄、最准确的结论是:
> 在这个已训练的缩小 Block AttnRes 图上,最终 layer 21–25 峰对 learned mixer 的
> **value-backward routing coefficients** 有预注册阈值下的强全局敏感性;它不是由
> softmax/key source-gradient derivative path 单独解释的。
这不等于:
- uniform backward 是更好的训练方法;
- learned value weights 让模型训练变差;
- 某一个 layer 或同层 MLP mixer 是唯一原因;
- Kimi K3 真实 checkpoint 存在同样尖峰。
## 1. 研究问题从哪里来
Round 05 已知:
- Block 的首/末四分位失衡在 6 / 6 配对中改善;
- 全层 CV 却在 6 / 6 配对中恶化;
- depth-32 三 seed 平均的相对高值集中在 layer 21–25;
- post-MLP gradient 与 MLP latest-source mean weight 在 96 个
`seed × layer` 点上 Pearson `r≈0.651`,在 layer 19–28 的 30 点上 `r≈0.690`。
这些 observational correlations 不能回答:
- 是 softmax / key 的导数路径重要,还是 value coefficients 重要?
- 峰是否只是 element RMS 的 reduction 产物?
- 峰在一个 block 内到哪个位置才出现?
因此 Round 06 在看见新结果前固定:
- 六个 activation 位置;
- 四个主 reductions、两个 cancellation-sensitive reductions 和一个代数控制;
- 三种 same-forward backward rules;
- fixed spike set `S={21,22,23,24,25}`;
- `contrast≥1.5`、top-5 overlap、Spearman、20% material drop;
- 三 formal seeds 和一个完整 replay。
前置 scoping、协议与 runner 分别在提交 `204f599`、`54c80fb` 前后进入公开仓库,
formal 训练随后才开始。
## 2. 对抗审查如何改变协议
本机 Grok Headless 只用于一次只读、对抗性方法审查,不提供事实来源,也没有修改文件。
主代理采纳并在结果前修正的关键问题包括:
- 把“最早生成位置”降级为“最早可见 tensor”;
- 主判定时点固定为 step 8,000;
- intervention 明确作用于全部 64 个 depth mixers 加 output mixer;
- 结论从局部因果分解降级为全局 backward-rule sensitivity;
- material 判定固定只用 `element_rms`;
- median / p95 固定 Hyndman–Fan Type 7;
- top-5 ties、Spearman ties、正分母与 invalid 条件全部写死;
- 增加六位置 loss×2、optimizer isolation 和训练不得进入 custom autograd 的闸门。
这次审查的价值是发现协议漏洞,不是为结果背书。
## 3. 第一次 smoke 为什么被拦住
最初 intervention custom backward 直接用 elementwise multiplication 分配
`weights × grad_output`。forward identity 已经 exact,但 step-0 uniform negative
control 失败:
```text
六位置 max raw relative difference:约 0.0037–0.0046
六位置 max normalized difference:约 0.0011–0.0020
```
这说明虽然代数公式一致,手写 backward 没有复用父 runner autocast einsum 的实际数值
路径,不能满足预注册的“query=0 时三模式等价”。
正式训练尚未开始。实现随后改为:
1. forward 直接返回父 `DepthMixer.forward` 已算出的 `y_parent`;
2. backward 在 `torch.enable_grad()` 下,用冻结的 learned / uniform weights
重新走同一个 BF16-autocast einsum surrogate;
3. 只把 surrogate 对 source values 的梯度返回;
4. 不向 `y_parent`、query、key path 回传。
修正后:
```text
三模式 logits / loss / 六位置 activations:byte-exact
65 个 mixer summaries:exact
step-0 六位置 raw gradient spectra:max difference 0
step-0 normalized spectra:max difference 0
六位置 × 七 reductions loss×2:scale / shape error 0
两个全新进程非计时字段:exact
```
这个失败不是需要隐藏的“调试噪声”;它正是负控制在正式结果前发挥作用的证据。
## 4. 训练合同与工作量
Round 06 没有创建新的训练分布:
| 字段 | 值 |
|---|---:|
| architecture | Block AttnRes |
| depth | 32 Transformer blocks |
| groups | 8,每组 4 blocks |
| width / heads / FFN | 192 / 6 / 768 |
| context / batch | 256 / 32 |
| steps | 8,000 |
| formal seeds | 2026073001 / 2 / 3 |
| replay | seed-1,从初始化完整 8,000 steps |
| formal target bytes | 196,608,000 |
| 含 replay target bytes | 262,144,000 |
| diagnostic tensor | 固定 16 × 256 |
| diagnostic steps | 0 / 100 / 500 / 2,000 / 4,000 / 8,000 |
| intervention steps | 0 / 8,000 |
数据与父协议 exact,完整值为:
```text
formal schedule:
5041e09b167f229248d2462324e8c254b8f5938975f135dcd8192b00a54a4f4e
validation:
f459316f13078a163b47c133511bb7181e05170ab89516e196490113893ce338
diagnostic:
21117e31db302b10d67b63f035665dc8f220b879d216ccd12b7d2ba86e7b1716
```
## 5. 父协议训练等价闸门
三个 formal seed 全部满足:
| 字段 | seed-1 | seed-2 | seed-3 |
|---|---:|---:|---:|
| final model-state hash | exact | exact | exact |
| final optimizer-state hash | exact | exact | exact |
| 六个 validation BPC | exact | exact | exact |
| 六条 post-MLP element-RMS arrays | exact | exact | exact |
| training history | exact | exact | exact |
最终 BPC:
| seed | Round 06 | Round 05 |
|---:|---:|---:|
| 2026073001 | 1.7123525940760473 | exact |
| 2026073002 | 1.7093240655856785 | exact |
| 2026073003 | 1.7030966812870931 | exact |
因此新增 capture / diagnostics 没有改变 optimizer trajectory。Round 06 不是一组“看起来
相近”的新模型,而是同一冻结训练的独立数值重放。
## 6. 峰在训练中形成,不是初始化常数
最终主指标是 post-MLP element-RMS:
```text
spike_contrast =
mean(layers 21–25) / mean(other 27 layers)
```
时间轨迹:
| step | seed-1 | seed-2 | seed-3 |
|---:|---:|---:|---:|
| 0 | 0.782 | 0.691 | 0.797 |
| 100 | 0.560 | 0.556 | 0.575 |
| 500 | 0.522 | 0.573 | 0.478 |
| 2,000 | 2.497 | 2.740 | **1.461** |
| 4,000 | 2.851 | 3.157 | 1.773 |
| 8,000 | **3.046** | **3.333** | **1.881** |
step 500 时三个 seed 的目标层都低于其他层均值;到 step 2,000,seed-1/2 已形成明显峰,
seed-3 仍略低于预注册 1.5 阈值;seed-3 到 step 4,000 才跨过。
所以允许说:
> 尖峰在这个训练过程中发展出来,且 onset 有 seed 差异。
不允许说:
> aggregation boundary 本身在初始化就必然产生 layer 21 峰。
## 7. 六个位置:处处可见,不等于找到 origin
最终 element-RMS spike contrast:
| 位置 | seed-1 | seed-2 | seed-3 | 三 seed mean | 3/3 ≥1.5 |
|---|---:|---:|---:|---:|---:|
| pre-attention input | 3.724 | 3.189 | 2.040 | 2.984 | 是 |
| attention branch output | 3.200 | 3.662 | 2.005 | 2.955 | 是 |
| post-attention state | 3.200 | 3.662 | 2.005 | 2.955 | 是 |
| pre-MLP input | 3.829 | 4.527 | 2.978 | **3.778** | 是 |
| MLP branch output | 3.046 | 3.333 | 1.881 | 2.754 | 是 |
| post-MLP state | 3.046 | 3.333 | 1.881 | 2.754 | 是 |
协议顺序中的第一个可见 tensor 是 `pre_attention_input`。但 activation gradient
本来就汇总全部下游路径,所以这只说明:
> 在进入该层 attention 之前,固定深度模式已经能在损失对该 tensor 的敏感性中看到。
它不说明峰在 pre-attention mixer “生成”。六个位置全部可见,反而证明单靠位置 trace
无法定位唯一 origin。
值得注意的是,`pre_mlp_input` 的平均 contrast 最高,但这仍是读数,不是“MLP 是唯一
原因”的消融证据。
## 8. reduction robustness:12 / 12 过闸
主 family:
1. element RMS;
2. mean token RMS;
3. median token RMS;
4. p95 token RMS。
每个 seed / reduction 必须同时满足:
- contrast ≥1.5;
- top-5 与固定集合至少重合 3;
- 与 element-RMS 32-layer Spearman ≥0.8。
结果:
| reduction | seed contrasts | 最低 top-5 overlap | 最低 Spearman | verdict |
|---|---|---:|---:|---:|
| element RMS | 3.046 / 3.333 / 1.881 | 3 | 1.000 | pass |
| token RMS mean | 2.869 / 3.182 / 1.808 | 3 | 0.958 | pass |
| token RMS median | 2.646 / 2.905 / 1.666 | 3 | **0.895** | pass |
| token RMS p95 | 3.143 / 3.532 / 2.012 | 3 | 0.993 | pass |
总判定:
```text
12 / 12 cells pass
robust within the preregistered reduction family
```
`global_l2` 与 element RMS 的固定 shape 代数控制也通过。batch-mean / token-mean
reduction 同样保存,但它们允许正负梯度先抵消,按协议只作探索性读数,不进入 robustness
判定。
这个结果支持:
> layer 21–25 峰不是只由“先平方再平均”的单一 reduction 选择制造的。
它不支持:
> 论文所有可能的 gradient magnitude 定义都会给出同一曲线。
## 9. same-forward interventions 到底改了什么
三模式:
### learned
原计算图:
```text
w = softmax(qᵀ RMSNorm(sources))
y = Σ w_i source_i
```
### detached learned
forward 的 `w`、`y`、logits、loss 完全相同;backward 对 sources 保留 learned
value coefficients,但切断 softmax / query / key 的 source-gradient path。
### uniform value backward
forward 仍逐字节返回 learned `y`;backward 对每个 source 返回 `grad_y/N`,不向
softmax / query / key 回传。
作用域是全部 64 个 depth mixers 加 output mixer。它不是只改 layer 21 附近,也不是一次
训练消融。
三个 seed 的最终 forward identity 均满足:
```text
logits hash exact
loss exact
六位置 activation hashes exact
65 mixer summary hash exact
```
所以三模式的梯度差不能归因于不同 forward activation 或不同预测。
## 10. softmax / key path:没有降低峰
learned → detached learned:
| seed | contrast | detached | relative drop | peak relative drop |
|---:|---:|---:|---:|---:|
| 2026073001 | 3.046 | 3.093 | −1.54% | −0.67% |
| 2026073002 | 3.333 | 3.397 | −1.93% | −0.38% |
| 2026073003 | 1.881 | 1.929 | −2.53% | −1.47% |
| mean | — | — | **−2.00%** | **−0.84%** |
“relative drop”为负表示 detaching 后峰略高。预注册规则要求 contrast 与 peak 都下降至少
20%、3 / 3 seed 同向;实际是两项在 3 / 3 seed 都朝相反方向。
结论:
> 全局移除 softmax / query / key 的 source-gradient derivative path,没有在本阈值下
> 降低固定峰;它在三个 seed 中都使峰略增。
这不证明该路径处处为零,也不证明它对训练没有作用。它只否定本轮预注册的
“material peak reduction”方向。
## 11. learned value coefficients:3 / 3 过 material 闸门
detached learned → uniform value backward:
| seed | detached contrast | uniform contrast | contrast drop | peak drop |
|---:|---:|---:|---:|---:|
| 2026073001 | 3.093 | 0.780 | **74.8%** | **39.3%** |
| 2026073002 | 3.397 | 0.786 | **76.9%** | **43.2%** |
| 2026073003 | 1.929 | 0.792 | **58.9%** | **28.6%** |
| mean | — | — | **70.2%** | **37.0%** |
六个相对下降全部超过预注册 20%。uniform value backward 下:
- 固定 target-layer contrast 都低于 0.8;
- peak layer 从 learned / detached 的 layer 21 移到 layer 2;
- forward logits、loss 与 activation 完全不变。
预注册判定:
```text
material sensitivity at the preregistered threshold
3 / 3 seeds
```
允许说:
> 在最终已训练计算图上,learned source value-backward coefficients 是该局部梯度形状的
> material carrier / amplifier。
禁止说:
- “把训练改成 uniform backward 一定更好”;
- “learned mixer 导致 BPC 下降或上升”;
- “峰完全由同层 MLP latest weight造成”;
- “70.2% 是因果贡献率”。
相对下降是对一个**全局反向规则干预**的指标变化,不是可加的路径归因百分比。
## 12. mixer association 与 intervention 如何一起读
最终 observational association:
| scope | metric | Pearson | Spearman |
|---|---|---:|---:|
| 96 seed×layer | MLP latest mass | 0.651 | 0.692 |
| 96 seed×layer | MLP normalized entropy | −0.274 | −0.417 |
| layer 19–28 | MLP latest mass | 0.690 | 0.693 |
| layer 19–28 | MLP max mass | 0.702 | 0.705 |
| layer 19–28 | MLP normalized entropy | −0.636 | −0.640 |
| layer 19–28 | attention latest mass | 0.158 | 0.339 |
Round 06 的 intervention 让“value coefficients 值得关注”从单纯相关线索升级为
same-forward backward sensitivity。但它仍然是**全部 mixers 同时改写**,所以不能把
全局结果定向归因给表中同层 MLP latest mass。
更窄的下一步需要:
- 逐 group / 逐 mixer intervention;
- output mixer 与 64 个 depth mixers 分开;
- current partial、completed group、embedding source 分开;
- 保持 forward exact 的局部 backward path ablation。
这些没有在本轮结果后追加,以免事后挑选 layer。
## 13. replay 与完整复现
seed-1 replay 从初始化完整训练 8,000 steps,不加载 formal checkpoint。
exact 字段:
```text
architecture / depth / seed / steps / batch / target bytes
manifest / model / optimizer contracts
model and optimizer state hashes
six validation evaluations
all training-history checkpoints
six diagnostic steps
six positions
seven reductions
three intervention modes at step 0 / 8,000
65 mixer summaries with quantiles
forward identity / negative control / loss-scale gates
environment / artifact identities
Round 05 equivalence record
```
冻结 compare SHA-256:
```text
05396eaf56429ca8d87815ecf00a5f78be5a9b2ec7cc96014856c09dcedcbb87
```
排除计时、run kind 和输出路径。replay verdict:`exact`。
## 14. 成本数字的正确解释
formal 三个进程的 mean step time 都约 224 ms;peak allocated 约 12.84 GB,
reserved 约 13.92 GB。
它们与 Round 05 单进程约 109 ms 不可直接比较,因为本轮两进程并行竞争同一 RTX 5090,
GPU 利用率 100%。训练 step 本身走父 runner exact 路径,新增诊断只发生在冻结时点。
因此:
- 计时证明实验真实执行;
- 计时不用于评价新诊断 overhead;
- 更不能外推到 K3 训练系统。
## 15. 工件与哈希
核心源码:
| 工件 | SHA-256 |
|---|---|
| manifest | `d5302a249249a07d362819134763d14e7d32307f22cff416c665ed9606142fef` |
| protocol | `6cb101b8760d9f1c81caeb2f16880b16152da103867224a06761a75a12984a16` |
| scoping | `590166bd62580bb8238293823cfcc39bc0a465fec4c697025343f3f1138abd27` |
| runner | `77298081d3c491d2e88e4705995174b9879ef377f520eb5fe5ea107e7a1da084` |
| analyzer | `b9dd7f723e8c5765ecffd9ae3050ff7a95643f95853adaeeaa2c2c323d0ca057` |
raw physical hashes:
| 文件 | SHA-256 |
|---|---|
| formal seed-1 | `e39e93b7a7fce3c56f5f14f95cfdc04afdce53628affee1202fe62bd1bdb7f71` |
| formal seed-2 | `1c6f6c731030ec0adb2a8e7a4d586e0c4005cc3319568a7ac83c08c2a4b8eaf8` |
| formal seed-3 | `115f8245577ece6dfaaa8ada68445c186e6523a7f3b26efcc3eb4c0c4ce82406` |
| replay seed-1 | `4f91c7a2698662ea69af9aa3425e144107834fd9b6b717fb82b84f153b867dc5` |
聚合工件:
| 工件 | physical SHA-256 | canonical SHA-256 |
|---|---|---|
| full aggregate | `75058f9e…c1e90` | `1d0faef2…fc8b4` |
| compact | `7b3a3749…8ef6c` | `a430dd26…26cd` |
| reproduction | `86ac20ee…879a` | `7c522314…3515` |
完整值保存在文件自身和 `reproduction.json`,缩写只用于阅读。
## 16. 允许与禁止的最终表述
### 允许
> 固定 layer 21–25 峰在四种预注册 Token-gradient reductions 中 12 / 12 过闸,
> 所以它在本轮 reduction family 内稳健。
> 在同一个 learned forward 上,全局 value-backward coefficient uniformization 使
> contrast / peak 在 3 / 3 seed 超过 20% 下降阈值。
> 全局移除 softmax/key source-gradient path 没有降低峰,反而在 3 / 3 seed 略增。
> 峰从训练中发展,且 seed-3 的形成更晚、更弱。
### 禁止
- “找到了梯度尖峰的唯一来源”;
- “pre-attention 是尖峰生成点”;
- “论文 Figure 5(c) 已复现”;
- “Kimi K3 checkpoint 有 layer 21 尖峰”;
- “uniform backward 会提高训练质量”;
- “learned mixer 的 70.2% 梯度是坏的”;
- “softmax/key path 没有任何作用”;
- 从 3 seeds 推断总体显著性;
- 从 width 192 / depth 32 外推到 2.8T 参数。
## 17. 下一轮最有价值的实验
1. 把全局 intervention 拆成 output mixer、group 6、group 7 和其他 mixers 四组;
2. 对 completed-group value path 与 current-partial value path 分开做 same-forward backward
ablation;
3. 预先固定 local intervention grid,不根据本轮最大的单层事后选择;
4. 比较“只改诊断 backward”与“从初始化按替代 backward 训练”的身份差异;
5. 若 Attention Residuals 官方发布 Figure 5 telemetry,再开独立 protocol 对齐其 tensor、
norm、reduction、batch 与 AMP 时点。
真实 K3 forward 仍受 `A_log [128]→[96]` 官方转换合同缺失阻断;本轮不绕过该边界。