summaryrefslogtreecommitdiff
path: root/docs/hardware/EQOLION_DESIGN.md
blob: a44fccbfc71b80560af3cc97f13055bf5fe435be (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
# EqOLion(工作名):把线性代数交给基底物理的谱优化器
*2026-08-05 · 用户提案("根据我们的场景改造优化器,引入对我们便宜的平衡态计算或牺牲部分步骤精度")的第一份具体设计*

## 设计原则
不问"哪个现成优化器硬件受害最小",改问"我们有哪些廉价原语,优化器的每个功能块各由哪个原语承担"。

| 优化器功能 | 常规实现(贵) | 我们的廉价原语 |
|---|---|---|
| 动量 | 显存缓冲 | 漏电容积分器(天然 EMA;不同漏率=免费多时间尺度) |
| 谱均衡(Muon 的核心) | 每步 Newton-Schulz 矩阵-矩阵 | **正交化=平衡态**:连续流 Ẋ = X − X(XᵀX) 以极因子为吸引子(σ 的动力学 σ̇=σ(1−σ²)→1),物理弛豫自己算 |
| 该流的矩阵乘 | 显式矩阵-矩阵 | **随机探针估计**:ΔX ∝ (p₁−p₃)rᵀ,其中 p₁=Xr, p₂=Xᵀp₁, p₃=Xp₂ —— 每探针 3 次向量通过 + 1 次外积写,全是现有原语(正反读+脉冲符合写) |
| 每步重算 vs 跟踪 | 从头 NS | **跟踪摊销**:动量时间尺度 ~20 步,极因子漂移慢,常驻旁路每步只纠 O(lr) 漂移 |
| 写入精度 | 逐元素模拟精度 | **sign 读出(OLion 的礼物)**:更新=sign(X),正交化器精度要求塌到 1 bit,比较器+定幅脉冲写 |
| 范数/衰减控制 | weight decay | **Hyperball 式 AGC**:每矩阵一个 Frobenius 传感器+增益旋钮;顺带解决流的收敛域要求(NS 流需 σ∈(0,√3),AGC 预定标正好提供) |
| 噪声 | 需要抑制 | 是原料:探针本身可以就是噪声;探针噪声被漏积分平均掉 |

## 合成配方
每个权重矩阵旁挂一个跟踪态 X(C×C 级 fabric 或数字缓冲,视实现层):
1. 动量 M 由漏积分器维护(β₂ 档慢漏 + β₁ 档 Nesterov 混合,同 OLion);
2. X 由两项驱动:探针化的 NS 流(n_p 个探针/步,每个 3 通过+1 外积写)+ 向 M/s 的弱重锚(s 来自 AGC);
3. 参数更新 = −η·γ·sign(X),γ 取 OLion 的 RMS 定标(≈0.2);
4. (可选)Hyperball 层:步后把 ‖W‖_F 归回常数。

**成本**:n_p=8 探针 → 每矩阵每步 24 次向量通过 + 8 次外积写,对照训练步自身 ~1500 次通过 ≈ **1-2% 开销**(Muon 从头 NS 是 10-15·C ≈ 5-8k 次)。

## 两个探针变体(都排臂)
- **专用各向同性探针**(E[rrᵀ]=I):理论干净,成本如上;
- **搭训练流量的便车**:直接用 nudged 相位本来就在过阵列的活动向量当探针——**零额外通过**,代价是 Gram 估计带上数据协方差 → 白化变成数据度量下的(K-FAC 味道)。可能是 bug 也可能是 feature,实验裁决。

## 要证的(论文贡献面)
1. 跟踪误差界:漂移速率 O(lr(1−β₂)) vs 旁路收缩速率 → X 与真极因子的稳态距离;
2. sign 对旁路噪声的鲁棒性(误差只在过零点计价)——OLion 的对角各向同性假设框架(其 Thm 4.4)可扩展;
3. 实证:EP 训练的 LM 上与 Muon/OLion 的质量对照 + 模拟成本模型 + imperfection 表参数化后的物理版。

## 验证阶梯(并入价目表实验)
1. **数学理想版 = 正好是 OLion**(NS+sign)——已在扩臂清单里,它就是 EqOLion 的上界对照;
2. **探针跟踪版**(本设计的本体):同一网格,扫 n_p ∈ {2, 8, 32} 与重锚强度;
3. **物理版**:叠加元件表实测参数(比较器 offset → 过零判决噪声;写入粒度 → 更新舍入)。

## 诚实的风险清单
- 收敛域:NS 流要求初始 σ∈(0,√3),AGC 预定标必须先行(顺序依赖);
- 跟踪滞后在 LR 峰值区可能放大(早期动量漂移快);
- **Occam 臂必须在场**:行/列 AGC(Adafactor 式)可能白拿大部分谱均衡收益——若它追平 EqOLion,结论就是"不需要极因子",同样是有价值的负结果;
- 便车探针的数据度量白化没有现成理论;
- 全部建立在 OLion 的"sign 后正交化不掉点"上,该论文本身待复现。

## 定位
项目主论点是"梯度来自物理"(EP);EqOLion 把它延伸到"**预条件也来自物理**"——同一个基底、同一类弛豫、同一套读写原语,把优化器里唯一剩下的全局线性代数也吃进平衡态计算。名字最后定,不绑定 OLion。

---
## 证伪记录(2026-08-05,设计当天,三轮)
**R1(同步锚+8 秩一探针/步,玩具随机游走 d=256)**:sign 一致率 0.76-0.82,未清零成本基线
sign(M)=0.824。死因:锚项把 X 拉向 M,而 M 谱非单位——**锚在毒化正交化**。
**R2(串行"注入→纯流抛光")**:抛光 0.802 vs 不抛光 0.803——**每步 O(1) 个秩一探针对 d×d 矩阵
的修复量可忽略**(8×400=3200 个秩一修正 vs 256² 自由度+持续漂移)。"1-2% 开销"的算术作废:
追踪需要 O(d) 探针/漂移时标,成本回到 ~C 次通过/步(≈20-30% 开销)——仍比从头 NS 便宜 20-50×,
但不是童话。
**R3(判决性:真实动量矩阵,fw135m_rlin_s2_s80000 的 60 块 Muon 动量)**:
sign(M) vs sign(polar(M)) 一致率**中位 0.700(0.647-0.816)**,谱偏斜 σmax/σmed 中位 55(最大 156)。
⟹ 玩具(0.824/偏斜3)严重低估载荷:**真实训练里正交化改写 ~30% 的符号**。设计目标明确 = 用
廉价平衡态计算收回这 30%,且 R3 的 0.70 就是论文的动机图。
**存活分支(按优先序)**:
1. **搭车探针(主分支)**:nudged 相位每步本来就有 T×B×K ≈ 数千个活动向量流过每块阵列 = 免费
   探针,数量足以追踪(需求 ~d 个/漂移时标)。代价 = 探针协方差非各向同性(数据度量白化,
   K-FAC 味)——无现成理论,实验裁决。
2. **块探针**:k~d/4 的批量探针,~C 次通过/步,理论干净。
3. 已死:O(1) 秩一探针;同步锚。
**下一轮证伪**:真实动量的逐步轨迹(11M 短跑 dump 每步动量),在其上跑搭车/块探针追踪,
判据 = 追踪态的 sign 一致率显著超过 0.70 基线且开销入账。

**R4(2026-08-05,真实轨迹判决,601 步 C128 动量 dump)**:
- 基线复核:sign(M) vs sign(polar) 在轨迹上 0.67-0.73(与 ckpt 测量一致)。
- **冻结极因子基线 0.52-0.53 ≈ 随机**——极因子的符号模式在几十步内退相关。"动量慢漂移⟹极因子慢漂移"
  的前提对**符号模式**不成立:极均衡把全部 σ 拉到 1,恰恰放大了病态尾部方向,而小 σ 方向的奇异向量
  在噪声下高速旋转。**极因子本质上是高翻腾对象**(这同时解释了 Muon 为何有效与为何难追)。
- 子满秩探针(k=d/8, d/4)步长未调导致 NaN(0.000 行);满秩单迭代勉强存活但只打平 sign(M) 基线。
- **存活空间收窄**:(a) 温启动的完整 NS(每步全秩 2-5 次迭代 ≈ 从头的 3-5× 节省,非数量级);
  (b) Occam 臂升为主候选——行/列 AGC 可能拿走谱均衡里"有用的部分"而不碰病态尾部;
  (c) 限定:本轨迹取自训练最早期(步 100-600, LR 峰值区, 漂移最快的最难工况)——**晚期 ckpt 重 dump
  后再判死刑**。

---
## 第二代设计(2026-08-05,R4 后重排:只追翻腾慢或不翻腾的目标)
| 名字 | 规则 | 原语构成 | 针对的洞 |
|---|---|---|---|
| **SignLine** | a_i·b_j·sign(m_ij),a/b 来自行/列 RMS 的漏积分(^-α/4,均值归一) | 漏积分×(d1+d2) + 比较器 + **每线驱动幅度**(BoM 已有的 per-line DAC) | 关键洞察:正的行/列缩放放进 sign 里是无操作,只有作为**脉冲幅度**放在 sign 外面才起作用 = 因子化自适应的模拟原生形态 |
| **ConsensusLion** | 快慢两个动量的 sign 一致才写,不一致处不写 | 两个不同漏率的电容 + 比较器 + 符合门 | 用免费的多时间尺度做噪声否决;整个优化器=电容加逻辑 |
| **DitherLion** | sign(m + τ·noise·rms(m)) | 基底噪声(免费)+ 比较器 | 硬 sign 变期望意义的软 sign,小分量跨步携带比例信息 |
| KFAC-lite(下一轮) | u = m·Q,Q 用反 Hebbian 局部规则追踪**输入活动协方差**的白化 | 搭车探针 + 外积写 + 漏衰减 | **数据统计是平稳的**——R4 杀掉的是追极因子(高翻腾),活动协方差不翻腾,追踪前提在这里成立 |
测试协议 = 与 stage A 完全同网格(C128/2500 步/3 档 LR),本地双卡 ~45 分钟出结果,与农场标准组同表对比。