From 96ff889ed214b68142daa0abf00456c733c879c6 Mon Sep 17 00:00:00 2001 From: Yuren Hao Date: Thu, 30 Jul 2026 17:48:35 -0500 Subject: =?UTF-8?q?RESULT=2078:=20read=5Flin=E6=A2=AF=E5=BA=A6=E7=BA=A7?= =?UTF-8?q?=E9=AA=8C=E8=AF=81=3D=3Dfp64(fp32=E4=B8=8B=E6=B3=84=E6=BC=8F?= =?UTF-8?q?=E5=A1=8C=E9=9B=B6,=E8=AF=BB=E5=87=BA=E8=88=8D=E5=85=A5=3D?= =?UTF-8?q?=E5=85=A8=E9=83=A8=E7=97=85=E5=9B=A0);=20=E9=99=84=E5=B1=9E?= =?UTF-8?q?=E8=B0=B1=E4=BB=AA:=E5=89=8D=E6=B2=BF=E9=9A=8F=E8=AE=AD?= =?UTF-8?q?=E7=BB=83=E4=B8=8B=E5=8E=8B+seed=E8=BD=B4=E8=AF=81'=E6=AF=94?= =?UTF-8?q?=E5=80=BC=E5=86=B3=E5=AE=9A=E9=9D=9E=E5=B1=82=E5=8F=B7'+?= =?UTF-8?q?=E9=98=88=E5=80=BC=E5=B8=A62-5e-7;=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E5=85=A5=E8=AE=AD=E7=BB=83=E8=B7=AF=E5=BE=84;=20CE=E7=BA=A7?= =?UTF-8?q?=E4=BB=AA=E5=99=A8=E7=BB=88=E5=AE=A1=E5=9C=A8=E9=A3=9E(?= =?UTF-8?q?=E9=A2=84=E6=B3=A8=E5=86=8C~+100%=E5=85=B3=E9=97=AD)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-Authored-By: Claude Fable 5 Claude-Session: https://claude.ai/code/session_014FAPDWQ49M5Ye3NpTndTpn --- docs/campaign/CASCADE_ABLATION_PLAN.md | 14 ++++++++++++++ ep_run/casc_eq_train.py | 9 ++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/docs/campaign/CASCADE_ABLATION_PLAN.md b/docs/campaign/CASCADE_ABLATION_PLAN.md index 503a321..e0e5cac 100644 --- a/docs/campaign/CASCADE_ABLATION_PLAN.md +++ b/docs/campaign/CASCADE_ABLATION_PLAN.md @@ -1932,3 +1932,17 @@ Matched 三口径(同窗 434-440k, n=61/臂): - **硬件含义(为 Dillavou 通话)**: 这就是"读出必须差分"的数字版 — 对比读数要直接测差(d), 不能减两个 大数((o+d)−o); 板上对应相关双采样/差分读出。基底加性地板设计律获得数字孪生实证。 - 1B 迁移: 逐层 disp_ratio(一次自由相可测)+基底地板 → 逐层安全裕度表, 零训练。 + +## RESULT 78 (2026-07-30): read_lin 梯度级验证成功 == fp64; 附属谱仪三发现; 修复入训练路径 +- **rlin 判决(fp32, C768 旗舰 ckpt, NB256)**: 上半 proj −0.006/+0.003/+0.003/+0.000/−0.000/+0.001, + 与 fp64 臂逐块吻合(rel 同降至 0.013-0.020)。**读出侧 (z−o) 舍入 = 全部病因**; 位移的传输通道 + (vjp 链的独立 d 张量)从来是满精度的 — 这也解释了为何 bf16-amp 与 fp32 泄漏相同(两者读出均 fp32)。 +- **附属谱仪(5 剖面)**: (1) 病灶前沿随训练下压 — C768 块6: 23%时净(ratio 5.2e-7)→57% −0.70(2.0e-7) + →91% −0.75(1.5e-7), 同块在自家比值穿线时转病; (2) seed 轴证律 — C512 s2 块7(3.8e-7)病 −0.43 而 + s1 块7(6.9e-7)净: 决定者=测得比值, 非层号(条令级律形); (3) 阈值是带(RMS 2-5e-7)非刀刃 — 逐元素 + |d_i| C768 从头 > ladder EP 臂重跑。 diff --git a/ep_run/casc_eq_train.py b/ep_run/casc_eq_train.py index 3cb9494..ed164ce 100644 --- a/ep_run/casc_eq_train.py +++ b/ep_run/casc_eq_train.py @@ -699,7 +699,14 @@ def ep_step(x, y): gs = torch.autograd.grad(obj, all_params, allow_unused=True) elif EST == 'single': E = 0.0 - for z, o in zip(zp, last_outs): E = E + 0.5 * ((z.detach().float() - o.float()) ** 2).sum() # fp32 accumulation (bf16-safe; no-op in fp32) + if args.read_lin: + # FP-FLOOR FIX (RESULT 77/78): the read identity z - o = d holds algebraically but not in + # fp32 — (z - o) is a ROUNDED copy of d (components below eps·|o| are erased; the C768 + # top-half leak). The d tensors themselves are full-precision; the linear form - has + # the identical theta-derivative and bypasses the rounding. Probe-verified == fp64. + for dl, o in zip(GOV['_last_d'], last_outs): E = E - (dl.detach().float() * o.float()).sum() + else: + for z, o in zip(zp, last_outs): E = E + 0.5 * ((z.detach().float() - o.float()) ** 2).sum() # fp32 accumulation (bf16-safe; no-op in fp32) obj = E / (NBT * beta_t) + obj_loss(readout(zp[-1].detach()).reshape(-1, vocab), y.reshape(-1)) gs = torch.autograd.grad(obj, all_params, allow_unused=True) else: -- cgit v1.2.3