ARTICLE · 1030037
有关AI模型结构自演化的探索,从运气走向规律
给AI的"算盘"换了一种珠子之后,我们发现了什么
引子:上一篇文章留下的问题
上一篇文章的结尾是一句话:"正确的结构不是'更大',而是'同构'。"
当时我们证明了:给AI装一把"刚性尺子"(置换表),它8次全部学会模加法;给它一根"橡皮筋"(仿射RNN),8次全部失败。结论很清晰——算子的代数结构必须与任务的代数结构同构。
文章发出后,问题变成了:那接下来呢? 如果"同构"是对的,那把珠子换得更巧妙一点,能不能让AI连"学习"都省掉,直接"长出"正确的结构?
从v7.10到v7.18,我们跑了大约九轮实验。答案比预期更丰富——它分成三段:一段惊喜,一段挫折,一段新的悬崖。
---
第一段:两种"同构",差别是七倍参数
置换表的"刚性尺子"有一个隐藏问题:它有28×28×28 ≈ 22,000个参数。每一行、每一列、每一个加数,都是独立的参数。
这相当于把一本"加法答案手册"塞给AI:加法=3的答案在第3页第1行,加法=5的答案在第5页第7行——每一页都要单独记,一条都不能少。
这不是"理解加法",这是"背下答案册"。
所以第二轮,我们换了一本更薄的册子:不背答案,只背一条规则。规则是:加法=1的操作记为一个矩阵C。加法=a的操作就是C自乘a次。
于是参数从28³降到28²——少了28倍。
结果:
· 背答案册(V³表):每个加数100%正确,但每个加数都要单独学。如果用"没见过的加数"考它,它完全蒙圈——准确率只有3.6%,就是瞎猜。
· 背规则(V²生成器):所有加数93%正确,而且没见过的加数也自动正确——因为生成规则本身就是"算"出来的。
核心差别不在于"参数少",而在于答案册不能外推,规则可以外推。
---
第二段:一个更惊人的发现——泛化是"免费"的
我们做了一次对照实验:把一个正确的规则直接塞进AI,不训练,直接测。
结果是:它第一次就全对了。
不需要训练,不需要梯度,不需要几千步。因为规则一旦正确,所有答案就自动成立——这是代数结构的性质,不是学习的功劳。
这个发现有一个必须写在论文里的严格含义:
AI的"泛化"有两种。一种是训练出来的泛化,另一种是参数化的代数结构白送的泛化。这两者看起来一样,本质完全不同。
打个比方。你教一个学生加法:
· 第一种泛化:他做了100道题,考试时第101道题也会了。这是"学习"。
· 第二种泛化:你直接给他一个计算器,他一按就出答案。这是"工具"。
一个计算器不需要"学习"加法,但你不能说"计算器学会了加法"。这就是"参数化赠品"和"学习发现"的区别。
我们在v7.18里把这个区别做成了正式的判据:一个臂如果只是靠参数化的代数性质泛化,它的struct_pass就不该算"结构生长的成功"。 这是一个很微妙的判别,没有它,实验结论会被系统性夸大。
---
第三段:一个无法绕过的悬崖——"我教得太少,它就不动"
到这里,故事看起来一路向上。但接下来遇到的问题,是这九轮实验里最硬的一块。
我们试了一个看似更聪明的做法:不告诉AI每一加数该怎么做,只告诉它"加法=1"怎么做。剩下的让规则自己推导。
逻辑上很漂亮:既然规则是C^a,那么学会C,所有a不就自动成立了?
结果是:完全失败。
失败的方式非常干净,以至于它本身就是一个科学发现。我们看它的诊断指标:
· cyc(循环闭合误差):5.2——而"完全没动"的初始化值恰好就是5.2
· idn(对角概率):0.14——恰好是"什么都不做"的softmax期望值
翻译成大白话:C完全没动,它就是初始化那个"什么都不做"的样子。
更精确地说:C=I(单位矩阵)是循环约束的平凡解——它满足"自乘28次等于自己",但它的作用是"状态永远不动"。一个循环的、但退化成"空转"的算子。
这个问题在实验前就被预见到了(我们在v7.14的changelog里写过"cycle loss单独存在C=I平凡解陷阱")。当时的设想是:把循环约束和任务损失联合训练,任务梯度会把C推出恒等盆地。
但这个设想被实验推翻了。 三个不同种子的三个变体,cyc全部冻结在5.196到5.200之间——C完全没动过。
机制很清楚:任务梯度太弱,推不动C。
稀疏监督(只教1/28的加数)产生的梯度信号,在28×28的参数空间里像一滴水。它甚至在"要不要动"这个层面都没有形成指向——直接被循环约束的恒等项淹没。
和"密集监督"下的对照特别刺眼:
监督密度 C是否逃出恒等盆地
100%(每一加数都教) 逃出,cyc从5.2降到0.523
14%(只教{1,2,4,8}) 困死,cyc停在5.2
0%(自由学习) 困死,cyc停在5.2
同样的参数化,同样的循环约束,唯一的差别是监督密度。 结论直接:
循环约束本身不能产生循环结构。它只能"稳定"一个已经被任务梯度推到正确方向的C。在弱任务信号下,它反而把C钉死在恒等盆地里。
这个结论把v7.14的一个猜想修正了。我们原先以为"cycle loss + 任务损失联合"就够了。实验告诉我们:联合还不够。任务信号本身必须先足够强。
---
第四段:一个更隐蔽的发现——算法成功 ≠ 任务成功
还有个更微妙的现象值得单独说。
我们试了"完全自由学习"的模式——不给任何监督,只让AI看任务对错。它的任务准确率从3.6%涨到了10%左右。看起来像是"学会了一点"。
但一检查"算法身份",问题暴露了:
· 单步转移准确率:10%(随机是3.6%,但离"正确"还有十万八千里)
· 群一致性检验:4.4%(约等于随机)
· 留出加数泛化:3.8%(完全随机)
翻译过来:它在任务上"表现"确实好了一点,但它学到的东西不是模加法,是一个能帮助预测B的启发式捷径。
这是一个教科书级的案例:行为成功不等于机制成功。 如果不做算法身份检查,这个结果会被误认为是"结构形成"。加上检查,真相立刻清晰。
---
第五段:还有一个被反复验证的机制——算法和接口是两件事
还有一个发现值得一提,因为它改变了我们对"结构形成"的定义。
我们做了一个对照:如果冻结输出头(让侧车和输出头不能联合适应),只训练侧车,会怎样?
结果:完全失败。
即使侧车内部已经形成了正确的置换表,任务准确率仍然停留在随机水平。原因很简单:侧车算出来的状态是"外语",但输出头听不懂"外语",它只会把状态翻译成随机预测。
结构形成不是"新模块独自完成",而是"新模块 × 接口适应"。
这个发现有两个后果:
1. 它解释了为什么BF(Bridge-Frozen)臂的增益只有15%~25%——不是侧车算得不好,是冻结的输出头还没学会读它。
2. 它为应用指出了一个具体方向:如果你想让一个已经训好的模型获得新能力,你需要同时让新模块和"接口"(读出路径)都适应,不能只换模块。
---
当前的位置:一张七层阶梯
把这九轮实验叠起来看,我们现在能画出一张清晰的"证据阶梯":
层 主张 状态
L0 人工设计架构 + 人工设计算法 ✅ 已完成
L1 人工架构 + 训练选择参数 ✅ 强稳健(多种子)
L2 人工参数化族 + 训练选择族内成员 ✅ 部分完成(V³ vs V²)
L3 训练选择族本身(架构搜索) ❌ 未触及
L4 跨任务迁移结构 ❌ 未触及
L5 元学习"如何设计结构" ❌ 未触及
L1 已经完全踏平,且有多种子证据。L2 部分完成——我们展示了"参数化族"的选择影响巨大(V³ vs V²),但"选择族"本身仍然是工程师指定的。
真正指向"结构自演化"的 L3 以上,一个都还没到。
但好消息是:我们已经精确知道下一道坎在哪里。
---
悬崖的地质构造:两句话能说清
在v7.10之前,我们的困惑是"为什么8个种子里只有1个成功"——看起来像运气。
现在这个问题有两句话的答案:
第一句:不是运气,是几何。仿射RNN的参数化几何与模加法不同构,所以再训练也不会成功。置换表与模加法同构,所以一学就会。
第二句:即使几何正确,也需要足够的"启动信号"。稀疏监督下,正确的几何也困在初始化的恒等盆地——因为它没有被推出舒适区。
这是两个独立的瓶颈:几何同构是一道门槛,信号密度是另一道门槛。两个都过,结构才能形成。
---
下一步:v7.19 的课程实验
那么,稀疏监督下"困死"这个问题,能不能靠"课程"解决?
设想是这样的:开头密集地教,让C先逃出恒等盆地;然后逐渐撤掉监督,看它能不能维持。
这相当于:先用答案册帮学生理解规则,然后拿掉答案册,看学生能不能自己算。
这个实验有四种可能结局,我们在跑之前先写下来:
1. 成功:C逃出恒等盆地,收敛到正确的循环元,退火后自持。→"结构形成需要课程,而非更多步数"。
2. 退化:课程结束后C慢慢滑回恒等盆地。→"正确结构需要持续的信号支撑"。
3. 收敛到错误阶数:C逃出恒等盆地,但收敛到一个不是28阶的元素(比如14阶)。→"逃出盆地"和"形成正确阶数"是两个独立障碍。
4. 完全不动:即使密集起步也推不动。→"瓶颈在softmax的参数化几何本身"。
四种结局都有明确含义。 这是这个系列第一次能预注册"所有结局都是有效信息"的实验。
---
一个清醒的定位
如果把这个系列放回更大的图景(grokking、induction heads、模型内部的算法实现研究),我们目前能贡献的机制命题是三条:
1. 结构形成需要信号密度超过阈值,而非总步数。
2. 代数泛化必须与参数化赠品严格区分——否则会把"计算器会加法"当成"学会了加法"。
3. 接口对齐与算法形成是两个独立的瓶颈——结构生长不是单点突破,是双重适应。
这三条在玩具域(Z₂₈模加法、32步序列)里已经严格建立。它们是否在真实规模的模型里成立,需要完全不同量级的实验。目前它们只能作为"微型可控模型中已严格建立、等待规模检验的假设"来陈述。
---
结语:从"更大的算盘"到"更对的珠子"
回头看这个系列,我们其实一直在回答一个问题:当AI需要一个新能力时,它应该"更大"还是"更对"?
上一轮的答案是"更对"——如果珠子形状对了,它会自己学会拨。
这一轮的答案更精确:"更对"还不够,还得"喂得够多"。
即使给AI一把正确的尺子,如果只在3道题里教它一次,它依然会待在"不动"这个最舒服的位置。正确的几何结构不是免费的午餐——它是一扇门,但你需要足够的推力才能推开它。
这个推力就是v7.19要做的课程实验。
如果课程能成功,"结构自演化"在玩具域上第一次从"需要人类手把手教"变成"只需要人类告诉它规则合法"——这是从 L1 迈向 L2 的关键一步。
如果课程失败,那我们至少知道:瓶颈不在参数化,而在优化动力学本身。 下一步就要换一种方式来设计"启动推力"——比如从非恒等初始化出发,或者让softmax的温度退火。
两个结局都是前进。 这大概是这个系列跑到现在最成熟的标志:我们不再赌"这次能不能成功",而是把每一次实验都设计成"无论如何都能得到有效信息"。
从"运气"到"规律",从规律到"架构"——我们已经在路上。Smart Density v7.18 (merged: v7.14 science + v7.17 engineering)
device=cuda fingerprint=d282beecfac21b96 base_mode=a
train_addends=[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
heldout_addends=[14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27]
arms=['BridgeOnly', 'OracleAcc', 'AddFrozen_Free', 'AddTrue_TF', 'Gen_TF_calib', 'AddTrue_TF_scrambled', 'Table_TF', 'Table_Free', 'Table_TF_BF', 'Affine_TF', 'Gen_TF', 'Gen_TF_BF', 'Table_TF_isolate', 'Table_TF_isolate_BF', 'Table_TF_fill', 'Table_TF_fill_BF', 'Gen_probe1_fill', 'Gen_probe_pow2_fill', 'Gen_probe_pow2_fill_BF', 'Gen_TF_fill', 'Gen_Free_fill']
====================================================================================================
[base 42 | mode a] ...
Phase-A step 200: A_acc=0.0681
Phase-A step 400: A_acc=0.0773
Phase-A step 600: A_acc=0.0946
Phase-A step 800: A_acc=0.1084
Phase-A step 1000: A_acc=0.1126
Phase-A step 1200: A_acc=0.1234
Phase-A step 1400: A_acc=0.1455
Phase-A step 1600: A_acc=0.1757
Phase-A step 1800: A_acc=0.2576
Phase-A step 2000: A_acc=0.3422
Phase-A step 2200: A_acc=0.4590
Phase-A step 2400: A_acc=0.5005
Phase-A step 2600: A_acc=0.6238
Phase-A step 2800: A_acc=0.6481
Phase-A step 3000: A_acc=0.6825
Phase-A step 3200: A_acc=0.6224
Phase-A step 3400: A_acc=0.7358
Phase-A step 3600: A_acc=0.7111
Phase-A step 3800: A_acc=0.7198
Phase-A step 4000: A_acc=0.7693
Phase-A step 4200: A_acc=0.5864
Phase-A step 4400: A_acc=0.7462
Phase-A step 4600: A_acc=0.6702
Phase-A step 4800: A_acc=0.7621
Phase-A step 5000: A_acc=0.8337
Phase-A step 5200: A_acc=0.7537
Phase-A step 5400: A_acc=0.8409
Phase-A step 5600: A_acc=0.6319
Phase-A step 5800: A_acc=0.9275
Phase-A hit target at step 5800
saved smart_density_v7_18/base_seed42_a.pt best_step=5800
frozen base A=0.9281 sufF=0.0358 sufT=0.0362
[base 42 | growth init 0]
[arm BridgeOnly] ...
proto=full sufF=0.0366(+0.0008) sufT=0.0372(+0.0010) fidT=nan fidH=nan grpT=nan gate=0 cs=0.00 cyc=nan idn=nan eta=2.12e-07 cal=1 cap=0 struct=0
[arm OracleAcc] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9995(+0.9634) fidT=nan fidH=nan grpT=nan gate=0 cs=0.00 cyc=nan idn=nan eta=1.34e-04 cal=1 cap=1 struct=0
[arm AddFrozen_Free] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9995(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=0 cs=0.00 cyc=nan idn=nan eta=1.34e-04 cal=1 cap=1 struct=0
[arm AddTrue_TF] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9995(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=1 cap=1 struct=0
[arm Gen_TF_calib] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9995(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.000 idn=0.000 eta=1.21e-04 cal=1 cap=1 struct=0
[arm AddTrue_TF_scrambled] ...
proto=fill sufF=0.9996(+0.9638) sufT=0.9997(+0.9636) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=1 cap=1 struct=0
[arm Table_TF] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9994(+0.9633) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=0 cap=1 struct=1
[arm Table_Free] ...
proto=full sufF=0.1245(+0.0887) sufT=0.1238(+0.0876) fidT=0.056 fidH=0.033 grpT=0.020 gate=1 cs=0.65 cyc=nan idn=nan eta=3.04e-06 cal=0 cap=1 struct=0
[arm Table_TF_BF] ...
proto=full sufF=0.2766(+0.2408) sufT=0.2669(+0.2307) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.88 cyc=nan idn=nan eta=9.43e-06 cal=0 cap=1 struct=1
[arm Affine_TF] ...
proto=full sufF=0.0370(+0.0012) sufT=0.0373(+0.0012) fidT=0.099 fidH=0.018 grpT=0.027 gate=0 cs=0.04 cyc=nan idn=nan eta=1.41e-07 cal=0 cap=0 struct=0
[arm Gen_TF] ...
proto=full sufF=0.9348(+0.8990) sufT=0.9392(+0.9031) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.523 idn=0.001 eta=1.13e-04 cal=0 cap=1 struct=1
[arm Gen_TF_BF] ...
proto=full sufF=0.1760(+0.1402) sufT=0.1777(+0.1416) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.81 cyc=0.338 idn=0.001 eta=3.21e-05 cal=0 cap=1 struct=1
[arm Table_TF_isolate] ...
proto=isolate sufF=0.0435(+0.0077) sufT=0.0514(+0.0153) fidT=1.000 fidH=0.020 grpT=1.000 gate=0 cs=0.19 cyc=nan idn=nan eta=2.63e-07 cal=0 cap=0 struct=0
[arm Table_TF_isolate_BF] ...
proto=isolate sufF=0.0366(+0.0008) sufT=0.0381(+0.0019) fidT=1.000 fidH=0.020 grpT=1.000 gate=0 cs=0.04 cyc=nan idn=nan eta=3.06e-08 cal=0 cap=0 struct=0
[arm Table_TF_fill] ...
proto=fill sufF=0.9995(+0.9637) sufT=0.9994(+0.9633) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=0 cap=1 struct=1
[arm Table_TF_fill_BF] ...
proto=fill sufF=0.2768(+0.2410) sufT=0.2672(+0.2310) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.88 cyc=nan idn=nan eta=9.44e-06 cal=0 cap=1 struct=1
[arm Gen_probe1_fill] ...
proto=fill sufF=0.0367(+0.0009) sufT=0.0371(+0.0010) fidT=0.105 fidH=0.036 grpT=0.043 gate=0 cs=0.00 cyc=5.196 idn=0.138 eta=1.14e-07 cal=0 cap=0 struct=0
[arm Gen_probe_pow2_fill] ...
proto=fill sufF=0.0367(+0.0009) sufT=0.0372(+0.0010) fidT=0.122 fidH=0.036 grpT=0.043 gate=0 cs=0.00 cyc=5.197 idn=0.156 eta=1.16e-07 cal=0 cap=0 struct=0
[arm Gen_probe_pow2_fill_BF] ...
proto=fill sufF=0.0352(-0.0006) sufT=0.0353(-0.0008) fidT=0.122 fidH=0.036 grpT=0.043 gate=0 cs=0.00 cyc=5.197 idn=0.156 eta=-1.38e-07 cal=0 cap=0 struct=0
[arm Gen_TF_fill] ...
proto=fill sufF=0.9348(+0.8990) sufT=0.9392(+0.9031) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.523 idn=0.001 eta=1.13e-04 cal=0 cap=1 struct=0
[arm Gen_Free_fill] ...
proto=fill sufF=0.0367(+0.0009) sufT=0.0372(+0.0010) fidT=0.097 fidH=0.036 grpT=0.039 gate=0 cs=0.00 cyc=5.200 idn=0.203 eta=1.08e-07 cal=0 cap=0 struct=0
[base 42 | growth init 1]
[arm BridgeOnly] ...
proto=full sufF=0.0359(+0.0001) sufT=0.0349(-0.0012) fidT=nan fidH=nan grpT=nan gate=0 cs=0.00 cyc=nan idn=nan eta=2.70e-08 cal=1 cap=0 struct=0
[arm OracleAcc] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9996(+0.9634) fidT=nan fidH=nan grpT=nan gate=0 cs=0.00 cyc=nan idn=nan eta=1.34e-04 cal=1 cap=1 struct=0
[arm AddFrozen_Free] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9996(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=0 cs=0.00 cyc=nan idn=nan eta=1.34e-04 cal=1 cap=1 struct=0
[arm AddTrue_TF] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9996(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=1 cap=1 struct=0
[arm Gen_TF_calib] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9996(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.000 idn=0.000 eta=1.21e-04 cal=1 cap=1 struct=0
[arm AddTrue_TF_scrambled] ...
proto=fill sufF=0.9995(+0.9637) sufT=0.9995(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=1 cap=1 struct=0
[arm Table_TF] ...
proto=full sufF=0.9994(+0.9636) sufT=0.9994(+0.9632) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=0 cap=1 struct=1
[arm Table_Free] ...
proto=full sufF=0.0396(+0.0039) sufT=0.0389(+0.0027) fidT=0.066 fidH=0.036 grpT=0.051 gate=0 cs=0.07 cyc=nan idn=nan eta=1.32e-07 cal=0 cap=0 struct=0
[arm Table_TF_BF] ...
proto=full sufF=0.2760(+0.2403) sufT=0.2669(+0.2308) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.87 cyc=nan idn=nan eta=9.41e-06 cal=0 cap=1 struct=1
[arm Affine_TF] ...
proto=full sufF=0.0352(-0.0006) sufT=0.0344(-0.0017) fidT=0.082 fidH=0.018 grpT=0.020 gate=0 cs=0.02 cyc=nan idn=nan eta=-7.06e-08 cal=0 cap=0 struct=0
[arm Gen_TF] ...
proto=full sufF=0.9336(+0.8978) sufT=0.9384(+0.9023) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.519 idn=0.001 eta=1.12e-04 cal=0 cap=1 struct=1
[arm Gen_TF_BF] ...
proto=full sufF=0.1764(+0.1406) sufT=0.1782(+0.1421) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.82 cyc=0.336 idn=0.001 eta=3.22e-05 cal=0 cap=1 struct=1
[arm Table_TF_isolate] ...
proto=isolate sufF=0.0442(+0.0084) sufT=0.0520(+0.0158) fidT=1.000 fidH=0.043 grpT=1.000 gate=0 cs=0.20 cyc=nan idn=nan eta=2.88e-07 cal=0 cap=0 struct=0
[arm Table_TF_isolate_BF] ...
proto=isolate sufF=0.0366(+0.0008) sufT=0.0381(+0.0020) fidT=1.000 fidH=0.043 grpT=1.000 gate=0 cs=0.03 cyc=nan idn=nan eta=3.00e-08 cal=0 cap=0 struct=0
[arm Table_TF_fill] ...
proto=fill sufF=0.9994(+0.9636) sufT=0.9994(+0.9632) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=0 cap=1 struct=1
[arm Table_TF_fill_BF] ...
proto=fill sufF=0.2762(+0.2404) sufT=0.2672(+0.2310) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.87 cyc=nan idn=nan eta=9.41e-06 cal=0 cap=1 struct=1
[arm Gen_probe1_fill] ...
proto=fill sufF=0.0360(+0.0002) sufT=0.0348(-0.0013) fidT=0.105 fidH=0.036 grpT=0.043 gate=0 cs=0.01 cyc=5.196 idn=0.136 eta=2.24e-08 cal=0 cap=0 struct=0
[arm Gen_probe_pow2_fill] ...
proto=fill sufF=0.0360(+0.0002) sufT=0.0348(-0.0013) fidT=0.122 fidH=0.036 grpT=0.043 gate=0 cs=0.01 cyc=5.197 idn=0.153 eta=2.45e-08 cal=0 cap=0 struct=0
[arm Gen_probe_pow2_fill_BF] ...
proto=fill sufF=0.0353(-0.0005) sufT=0.0353(-0.0009) fidT=0.122 fidH=0.036 grpT=0.043 gate=0 cs=0.00 cyc=5.197 idn=0.153 eta=-1.23e-07 cal=0 cap=0 struct=0
[arm Gen_TF_fill] ...
proto=fill sufF=0.9336(+0.8978) sufT=0.9384(+0.9023) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.519 idn=0.001 eta=1.12e-04 cal=0 cap=1 struct=0
[arm Gen_Free_fill] ...
proto=fill sufF=0.0360(+0.0002) sufT=0.0350(-0.0012) fidT=0.097 fidH=0.036 grpT=0.039 gate=0 cs=0.01 cyc=5.200 idn=0.195 eta=3.06e-08 cal=0 cap=0 struct=0
[base 42 | growth init 2]
[arm BridgeOnly] ...
proto=full sufF=0.0356(-0.0001) sufT=0.0363(+0.0001) fidT=nan fidH=nan grpT=nan gate=0 cs=0.00 cyc=nan idn=nan eta=-4.06e-08 cal=1 cap=0 struct=0
[arm OracleAcc] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9996(+0.9635) fidT=nan fidH=nan grpT=nan gate=0 cs=0.00 cyc=nan idn=nan eta=1.34e-04 cal=1 cap=1 struct=0
[arm AddFrozen_Free] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9996(+0.9635) fidT=1.000 fidH=1.000 grpT=1.000 gate=0 cs=0.00 cyc=nan idn=nan eta=1.34e-04 cal=1 cap=1 struct=0
[arm AddTrue_TF] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9996(+0.9635) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=1 cap=1 struct=0
[arm Gen_TF_calib] ...
proto=full sufF=0.9995(+0.9637) sufT=0.9996(+0.9635) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.000 idn=0.000 eta=1.21e-04 cal=1 cap=1 struct=0
[arm AddTrue_TF_scrambled] ...
proto=fill sufF=0.9995(+0.9637) sufT=0.9995(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=1 cap=1 struct=0
[arm Table_TF] ...
proto=full sufF=0.9994(+0.9636) sufT=0.9993(+0.9631) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=0 cap=1 struct=1
[arm Table_Free] ...
proto=full sufF=0.0597(+0.0239) sufT=0.0599(+0.0238) fidT=0.077 fidH=0.048 grpT=0.047 gate=1 cs=0.42 cyc=nan idn=nan eta=8.20e-07 cal=0 cap=1 struct=0
[arm Table_TF_BF] ...
proto=full sufF=0.2771(+0.2413) sufT=0.2673(+0.2312) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.87 cyc=nan idn=nan eta=9.45e-06 cal=0 cap=1 struct=1
[arm Affine_TF] ...
proto=full sufF=0.0362(+0.0004) sufT=0.0356(-0.0006) fidT=0.092 fidH=0.018 grpT=0.047 gate=0 cs=0.01 cyc=nan idn=nan eta=4.83e-08 cal=0 cap=0 struct=0
[arm Gen_TF] ...
proto=full sufF=0.9354(+0.8996) sufT=0.9399(+0.9038) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.516 idn=0.001 eta=1.13e-04 cal=0 cap=1 struct=1
[arm Gen_TF_BF] ...
proto=full sufF=0.1767(+0.1409) sufT=0.1784(+0.1423) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.82 cyc=0.334 idn=0.001 eta=3.23e-05 cal=0 cap=1 struct=1
[arm Table_TF_isolate] ...
proto=isolate sufF=0.0438(+0.0081) sufT=0.0516(+0.0155) fidT=1.000 fidH=0.028 grpT=1.000 gate=0 cs=0.19 cyc=nan idn=nan eta=2.76e-07 cal=0 cap=0 struct=0
[arm Table_TF_isolate_BF] ...
proto=isolate sufF=0.0366(+0.0008) sufT=0.0381(+0.0020) fidT=1.000 fidH=0.028 grpT=1.000 gate=0 cs=0.03 cyc=nan idn=nan eta=3.31e-08 cal=0 cap=0 struct=0
[arm Table_TF_fill] ...
proto=fill sufF=0.9994(+0.9636) sufT=0.9993(+0.9631) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=0 cap=1 struct=1
[arm Table_TF_fill_BF] ...
proto=fill sufF=0.2774(+0.2416) sufT=0.2679(+0.2318) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.87 cyc=nan idn=nan eta=9.46e-06 cal=0 cap=1 struct=1
[arm Gen_probe1_fill] ...
proto=fill sufF=0.0354(-0.0004) sufT=0.0359(-0.0002) fidT=0.102 fidH=0.036 grpT=0.031 gate=0 cs=0.00 cyc=5.196 idn=0.137 eta=-4.89e-08 cal=0 cap=0 struct=0
[arm Gen_probe_pow2_fill] ...
proto=fill sufF=0.0355(-0.0003) sufT=0.0360(-0.0002) fidT=0.115 fidH=0.036 grpT=0.023 gate=0 cs=0.01 cyc=5.197 idn=0.154 eta=-3.87e-08 cal=0 cap=0 struct=0
[arm Gen_probe_pow2_fill_BF] ...
proto=fill sufF=0.0352(-0.0006) sufT=0.0353(-0.0008) fidT=0.115 fidH=0.036 grpT=0.023 gate=0 cs=0.00 cyc=5.197 idn=0.154 eta=-1.27e-07 cal=0 cap=0 struct=0
[arm Gen_TF_fill] ...
proto=fill sufF=0.9354(+0.8996) sufT=0.9399(+0.9038) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.516 idn=0.001 eta=1.13e-04 cal=0 cap=1 struct=0
[arm Gen_Free_fill] ...
proto=fill sufF=0.0355(-0.0003) sufT=0.0359(-0.0003) fidT=0.099 fidH=0.036 grpT=0.020 gate=0 cs=0.00 cyc=5.200 idn=0.196 eta=-3.87e-08 cal=0 cap=0 struct=0
[base 42 | growth init 3]
[arm BridgeOnly] ...
proto=full sufF=0.0366(+0.0008) sufT=0.0366(+0.0004) fidT=nan fidH=nan grpT=nan gate=0 cs=0.00 cyc=nan idn=nan eta=2.12e-07 cal=1 cap=0 struct=0
[arm OracleAcc] ...
proto=full sufF=0.9997(+0.9639) sufT=0.9996(+0.9635) fidT=nan fidH=nan grpT=nan gate=0 cs=0.00 cyc=nan idn=nan eta=1.34e-04 cal=1 cap=1 struct=0
[arm AddFrozen_Free] ...
proto=full sufF=0.9997(+0.9639) sufT=0.9996(+0.9635) fidT=1.000 fidH=1.000 grpT=1.000 gate=0 cs=0.00 cyc=nan idn=nan eta=1.34e-04 cal=1 cap=1 struct=0
[arm AddTrue_TF] ...
proto=full sufF=0.9997(+0.9639) sufT=0.9996(+0.9635) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=1 cap=1 struct=0
[arm Gen_TF_calib] ...
proto=full sufF=0.9997(+0.9639) sufT=0.9996(+0.9635) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.000 idn=0.000 eta=1.21e-04 cal=1 cap=1 struct=0
[arm AddTrue_TF_scrambled] ...
proto=fill sufF=0.9996(+0.9638) sufT=0.9996(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=1 cap=1 struct=0
[arm Table_TF] ...
proto=full sufF=0.9996(+0.9638) sufT=0.9995(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=0 cap=1 struct=1
[arm Table_Free] ...
proto=full sufF=0.1313(+0.0955) sufT=0.1317(+0.0955) fidT=0.097 fidH=0.033 grpT=0.051 gate=1 cs=0.81 cyc=nan idn=nan eta=3.28e-06 cal=0 cap=1 struct=0
[arm Table_TF_BF] ...
proto=full sufF=0.2769(+0.2411) sufT=0.2677(+0.2316) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.87 cyc=nan idn=nan eta=9.44e-06 cal=0 cap=1 struct=1
[arm Affine_TF] ...
proto=full sufF=0.0364(+0.0006) sufT=0.0367(+0.0005) fidT=0.087 fidH=0.015 grpT=0.023 gate=0 cs=0.02 cyc=nan idn=nan eta=7.06e-08 cal=0 cap=0 struct=0
[arm Gen_TF] ...
proto=full sufF=0.9382(+0.9024) sufT=0.9416(+0.9054) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.511 idn=0.001 eta=1.13e-04 cal=0 cap=1 struct=1
[arm Gen_TF_BF] ...
proto=full sufF=0.1773(+0.1415) sufT=0.1788(+0.1427) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.82 cyc=0.331 idn=0.001 eta=3.24e-05 cal=0 cap=1 struct=1
[arm Table_TF_isolate] ...
proto=isolate sufF=0.0436(+0.0078) sufT=0.0508(+0.0147) fidT=1.000 fidH=0.033 grpT=1.000 gate=0 cs=0.18 cyc=nan idn=nan eta=2.68e-07 cal=0 cap=0 struct=0
[arm Table_TF_isolate_BF] ...
proto=isolate sufF=0.0366(+0.0008) sufT=0.0381(+0.0020) fidT=1.000 fidH=0.033 grpT=1.000 gate=0 cs=0.04 cyc=nan idn=nan eta=3.06e-08 cal=0 cap=0 struct=0
[arm Table_TF_fill] ...
proto=fill sufF=0.9996(+0.9638) sufT=0.9995(+0.9634) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=nan idn=nan eta=3.31e-05 cal=0 cap=1 struct=1
[arm Table_TF_fill_BF] ...
proto=fill sufF=0.2770(+0.2412) sufT=0.2680(+0.2319) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.87 cyc=nan idn=nan eta=9.45e-06 cal=0 cap=1 struct=1
[arm Gen_probe1_fill] ...
proto=fill sufF=0.0365(+0.0007) sufT=0.0363(+0.0002) fidT=0.102 fidH=0.036 grpT=0.043 gate=0 cs=0.00 cyc=5.196 idn=0.139 eta=9.38e-08 cal=0 cap=0 struct=0
[arm Gen_probe_pow2_fill] ...
proto=fill sufF=0.0365(+0.0007) sufT=0.0363(+0.0002) fidT=0.122 fidH=0.036 grpT=0.043 gate=0 cs=0.00 cyc=5.197 idn=0.156 eta=9.18e-08 cal=0 cap=0 struct=0
[arm Gen_probe_pow2_fill_BF] ...
proto=fill sufF=0.0352(-0.0006) sufT=0.0353(-0.0008) fidT=0.122 fidH=0.036 grpT=0.043 gate=0 cs=0.00 cyc=5.197 idn=0.156 eta=-1.30e-07 cal=0 cap=0 struct=0
[arm Gen_TF_fill] ...
proto=fill sufF=0.9382(+0.9024) sufT=0.9416(+0.9054) fidT=1.000 fidH=1.000 grpT=1.000 gate=1 cs=0.96 cyc=0.511 idn=0.001 eta=1.13e-04 cal=0 cap=1 struct=0
[arm Gen_Free_fill] ...
proto=fill sufF=0.0366(+0.0008) sufT=0.0365(+0.0003) fidT=0.097 fidH=0.036 grpT=0.031 gate=0 cs=0.00 cyc=5.199 idn=0.202 eta=1.04e-07 cal=0 cap=0 struct=0