Download HANDOVER.md from tchbcb/qwenjev: direct link, hf CLI and curl.
- Browser
- Download file 37.6 kB
-
https://huggingface.co/tchbcb/qwenjev/resolve/main/HANDOVER.md
- Command line
-
hf download hf://tchbcb/qwenjev/HANDOVER.md
-
curl -L -o HANDOVER.md https://huggingface.co/tchbcb/qwenjev/resolve/main/HANDOVER.md
QwenJev 交接手册(HANDOVER)
更新:2026-09-24 | 版本 v0.4.16(L3 复合体/0门状态机大发现)| 读者:下一个会话的 Agent 或接手的开发者。 目标:任何人凭本文档 + 公开 HF 仓,在 15 分钟内恢复全部工作现场。
0. 一句话现状
v5 = 亲自在线教学(用户指令:主 Agent 逐帧单步当教师,弃用"垃圾模型教师"蒸馏路线)。
架构已闭环落地:ops/teach_server.py(T4 常驻,文件 IPC,内存驻留 env)→ 教师(主 Agent)
通过信封逐帧看画面、逐步发动作 → 轨迹直写 collect_selfplay 兼容 schema(标签=教师动作,
天然 BC)→ ops/v5_daemon.py 每 10min 快照轨迹→重建数据集→续训 40 步→上传 HF(HEAD 验证)。
【现行权威 2026-09-25(续)YZ9UOC7Y 会话(Kaggle T4X2)—— L3 机制地图 v3(相位状态机)】: ① 布局随机化再确认:4 复合体在上(12w 带+3w 柱×9 行,刚性 L 形),5 复合体在下(3w 柱×9+12w 带, 倒 L 形);中部 a 带(rows 27-29)含 0 晶格行;4 个 b 窗组 = 上下各一 T 形(12w 条+6w 柄); 右侧 rows 24-32 为小件停放区:4 小块(6w×3 实心)/ a 带拼片(12w×3,505 行)/ 5 小块(6w×3,505 行); ② 塔相位动作语义:A3=双塔左移 3(首按仅动 4 塔 = 其墙轴段 bbb 溶解解锁),A4=右移 3(=A3 逆), A1=4 塔下 3+5 塔上 3(行军,身后留 b 模+旧位回 9),A2=逆行军;晶格点(行/列 ≡1 mod3)永久烧 b; 塔带经过窗格时窗显示材料色,离开立即重开 b(无锁定); ③ 关键达成:4 塔带 9 次左移精确入顶 12w 窗(12-14@9-20,step92)→ 3 次 A1 降落完美填充(晶格 b 全吻合); 5 塔带左移+上移入底 12w 窗(42-44@9-20)+ A5 清 0 后完美填充(step94); ④ 5 塔完美入窗后状态机切"小件相位":A1/A2/A3/A4 = 三小件整体 上/下/左/右 移 3(行槽 [24-26,27-29,30-32] 循环换位,A1 顶槽回卷底槽),塔全部冻结;A3 左移在拼片列相位 ≡48/51 时失效 (停放区疑似有 [48,59] 列墙); ⑤ 小件相位 A1 变体(step103 实测):4 塔上移 6 + a 带拼片分裂为 4 板+5 板(各 12w×3)+ 4 小块上移 6 至 rows18-20;A2=精确逆(含板融合复原);分裂后 4 小块列相位变 51(≡0 mod3, 理论可对齐窗列 12-17,但 A3 随即失效待解); ⑥ A5=0 搬运泵:row28 晶格门(≡1 mod3 全开过)↔ 5 材料内部 0 洞双向搬运;填充 5 材料内 0(→9/b) 同时开 row28 新门;窗内完美填充要求晶格烧 b 无 0 残留((43,10) 的 0 曾致底窗不完美); ⑦ A6=惰性(2 组坐标实测无变化);A7=撤销上一有效动作(单发;撤销后 A4 no-op,疑似需成功动作再装填); ⑧ 未解核心:小件如何从 rows24-32 抵达窗行 9-11/45-47(A1 循环不出三行槽;分裂后组件爬升但列相位 锁 48/51 且 A3 失效);相位切换触发器(5 塔入窗切换已证;切回塔相位的条件未知); 窗槽配对假设:顶 12w←4 塔带✅ / 顶 6w←4 小块 / 底 12w←5 塔带✅ / 底 6w←5 小块 / 12w 5 板=诱饵; ⑨ 本会话教学 32 步(step74-105)全部入 trace(1183 步),gen12 训练轮 06:28 启动 (日志 tag 误印 gen11@06:28 = 实际 gen12,sed 双引号未命中,产物路径无影响)。
【L3 机制地图 v4 · 2026-09-25 06:5x(YZ9UOC7Y 会话,step 74-134 实测)——四层相位状态机】: ① 动作语义随"焦点层"变化,焦点自动切换,实测四种焦点:塔层(A1=4塔下3+5塔上3 / A2=反 / A3=双塔左3(首按或仅未dock塔)/ A4=右3)、小件层(A1/A2/A3/A4=四小件整体上/下/左/右移3)、 爬升变换(A1=4塔上6+小件上3+a带拼片分裂为4板+5板 / A2=精确逆)、0 泵(A5 恒为 0 搬运); ② 四窗槽配对定论:顶 12w(12-14@9-20)←4 板或 4 塔带 / 顶 6w(9-11@12-17)←4 小块 / 底 12w(42-44)← 5 塔带或 5 板 / 底 6w(45-47)←5 小块;12w 窗被 12w 板/带填,6w 窗被 6w 小块填(宽度决定); ③ 单 dock 均已达成过:顶 12w(step92 塔带、step114 塔带)、底 12w(step94/118/121 塔带, A5 清 0 后完美=晶格全 b 无 0 残留);双 dock 同时被跷跷板阻止:A1/A2 塔层动作者 4塔与5塔反向耦合(band_top 和恒定 48,需 54 才双 dock),和值曾在 step103 爬升(吞 4 小块 18 格)时 -3,未找到 +3 恢复动作; ④ dock 锁定现象:step95-99 底 dock 后塔层冻结 5 动作(A1-A4 全作用于小件);触发疑与 A5 完成 dock 净化相关,step121 后同构状态未复现锁定,机制未破解; ⑤ 小件列对位达成(step134):4 小块(15-17)@12-17、4 板(18-20)@9-20、5 板(30-32)@9-20、 5 小块(33-35)@12-17 —— 全部列对齐,纯垂直余量:4 小块上6+4 板上6=顶窗双 dock(2 次 A1)、 5 小块下12=底 6w(4 次 A2);障碍:4 塔(带 9-11+柱 12-20@9-11)占据顶窗位需先上移 9 (塔层 A2×3),且 A1/A2 小件动作者四件同向(4 件上时 5 件也上)——需 dock 锁定配合或发现 分向动作;底 12w 窗待 5 塔带从 39-41 降 3(A2 塔层); ⑥ A5 泵细节:0 在 a 晶格行(row25/28 随相位)↔ 5 材料晶格点(柱/带/板/小块 ≡1 mod3 处)间搬运, 一次泵=材料 0 填充+a 行门开启(或反向);5 塔带入底窗前其 0 行必须洁净(step118 下降中 0 自动 排入柱、step120 A5 主动泵净均有效); ⑦ A7=单发撤销上一有效动作(step101 复证);A6=惰性(4 组坐标复证无效);材料守恒破缺:4 小块 曾被"吸收"(step113)并于 step114 重新出现——存在隐形容器/生成机制; ⑧ 本会话累计教学 61 步(74-134),gen12(1183 步快照)+gen13(1195 步快照)两轮训练完成/进行中, 产物 HEAD 验证 t4_assets_v5/checkpoints/;gen13 日志 tag 正确(gen13@06:44); ⑨ 下一步建议:塔层 A2×3 上移 4 塔让出顶窗 → 小件层 A1×2 顶窗双 dock → 观察 4 件是否锁定 → A2×4-6 底 6w 对位 → 5 塔带 A2 降 3 回底 12w → 全窗同时覆盖判 WIN。
【L3 机制地图 v5 · 2026-09-25 06:55(YZ9UOC7Y 会话终版,step 74-139 实测)】: ① 小件相位 A1/A2 = 分色定向移动(step135-139 关键发现):A2=4 色小件上移 3 + 5 色小件下移 3 (相向而行/远离),A1=4 色下移 3 + 5 色上移 3;A3/A4=全体左/右移 3。四小件=4 小块(6w)、 4 板(12w)、5 板(12w)、5 小块(6w),列对位已全部达成(4 小块/5 小块@12-17,双板@9-20); ② 底部 T 曾完整合围(step138 Config X):5 板 dock 底 12w(42-44@9-20,晶格全 b 无 0) + 5 小块 dock 底 6w(45-47@12-17),同按 4 次 A2 一次性达成;但 A1(4 件下/5 件上)立即解除 (step139),dock 无持久锁定,全窗同时覆盖的跷跷板矛盾未解; ③ 配态分析:Config X(A2 侧)=底部 T 完整 + 顶部差 6(4 板@6-8 需 12-14、4 小块@3-5 需 9-11); Config Y(A1 侧)=顶部近 3(4 板并带@9-11、4 小块@6-8)+ 底部破 3;两态振荡无净推进, 需要:a) 4 塔先让位(塔层 A2×3 上移 9:带 0-2/柱 3-11)+ b) 底 T dock 锁定触发器,二者未知; ④ 塔带可作窗填充者:4 塔带@9-11 时已覆盖顶 6w 窗(过覆盖 9-11/18-20 列无害);5 塔带与 5 板 合并(同色重叠不可分)后 row40 0 行重现需 A5 泵净; ⑤ 本会话终局统计:教学 66 步(74-139),gen12/13/14 三轮训练(trace 快照 1183/1195/1217 步), 数据集 choice 1204 / boolean 1216 / score 1217,全部产物 HEAD 验证 HF t4_assets_v5/checkpoints/; gen14 于 06:54 启动(日志 tag gen14 ✓); ⑥ 交棒清单:a) 等 gen14 ROUND DONE+HEAD ok;b) 下会话先 t4r/信封拉 obs 恢复局面(当前 step139: 4 塔带+4 板并@9-11、4 小块@6-8、柱@12-20/9-11、5 塔带+5 板并@39-41(0 行未净)、5 小块@42-44、 顶 12w 窗柱盖 9-11 列、底全空);c) 优先实验:A5 泵净 0 行 → 塔层相位触发器(试 5 塔带对齐 42-44 时按 A5 是否触发锁定的 step94 复现)→ Config X 复位(A2×1 回底 T 完整)→ 4 塔让位路径。
【现行权威 2026-09-24】0S3BN0UN 会话(T4X2, 12h 窗)—— L1/L2 通关配方重放成功 + L3 机制图半解:
① 本会话(游戏版 0c5556536)L1/L2 布局与旧会话不同(初始列位置随机化),但摆钟语法一致:
L1 配方(17 步):A4→A3×6(4 塔 33-41→51-59 对位蓝图)→A2×10(全体+3 下行入槽)→WIN;
L2 配方(24 步):A4×3(墙+9/press 扫过 4 塔触发世界重组)→A5(钻孔)→A2×8
(全体+3 降至蓝图行带)→A5→A3×6(4 脚手架 -6/press 行军拼装镜像 S 模具覆盖蓝图)→WIN;
② L2 语义图:A1=全体↑3/A2=全体↓3/A3=重排·左(5 件 −3,4 脚手架重组)/
A4=重排·右(世界相位 +3,4→5 转换+穿孔)/A5=钻孔机+搬0(pit 在墙轴↔件内 lattice 间搬运,
0 门恒在 rows≡1 mod3 × cols≡1 mod3)/A7=免费 UNDO(撤销上一步,无风险实验钥匙)/A6=惰性;
③ L3 机制图(半解,~40 步实证):开局对称双塔(4 左 5 右,b 窗=晶格点);A3 一按重组为
水平墙+5 件套上半场+b 模具下半场;A1/A2=墙升降机(墙停处门区烙 b = 行走蓝图打印机);
A5=铸造扳机(板内 lattice 钻孔 + 模具区材料化 4 柱);墙=移动浇铸机(身后浇铸
5 板垂直翻转的 4 复制品,随墙移动旧品蒸发);A2 亦可触发垂直色/形置换;
目标判定:4 复制品精确覆盖 b 模具(同 L1/L2 判据族)。
④ 部署/训练坑(本会话实录):seed 块静默失败(中继吞响应+大下载被杀)→ 必须远端文件实证;
torchao 0.10.0 不满足 peft 0.19.1(需 ≥0.16)+ 坑 14 变体:exec 同进程 sys.modules 缓存
旧模块,pip 装完 import 仍见旧版 → 用子进程验证;手动训练轮 runner ops/v5_round.py
(分离进程,RESULT 逐条落盘 /content/v5_round.log)。
【L3 机制 v2 · 2026-09-24 晚(step 104-140,38 步实测)——复合体/0门状态机】: ① 四复合体结构(比"左右两块"更细):右5(12宽带+6宽带,正Full=12w上6w下,锁相对位)/ 右4(6宽带+12宽带,倒Full=6w上12w下)/ 左5(柱3w×9行+带12w)/ 左4(带12w+柱3w×9行); 无门时 A1/A2=右5↑↓3+右4↓↑3,A3/A4=右复合体水平±3(左复合体完全不动); ② 0 门系统(A5 双向):A5 开门=墙轴 row34 打 21 个 0(cols≡1 mod3)+ 左复合体透明 9 洞 实体化为 0 洞(139 实测 7 个:柱 3+带 4);A5 再按=填门+洞还原(双向搬运); ③ 门开模式:A1/A2=墙↑↓3+左4↑↓6+右4↑↓6(左5/右5 不动);A3=左复合体左移3(132 实测 一次,后重复按失效——状态机有记忆效应,非纯函数);A4 同理预期右移(138 实测失效); ④ 无门+墙离开底位 33-35 时:A1=全局↑3(墙+左5+左4+右4,右5 除外,131 实测); A2=左5↓3+左4↓3(墙/右4/右5 不动,140 实测)——A1/A2 不对称,状态机更深; ⑤ 过模填充修正:材料覆盖窗=b→4/5 显示,材料离开窗立即重开(无锁定,110/137 双实测) → WIN 需要全部窗同一时刻精确覆盖;晶格点(row≡1 mod3 且 col≡1 mod3)永久保持 b 烙印 (材料覆盖中也显示 b); ⑥ 窗-材料配对图(推断+部分实测):右5 6w↔窗12-17@9-11(134 前曾精确对位)、 右5 12w↔窗9-20@12-14(116 曾精确对位)、右4 倒Full↔下窗组倒结构(12w窗9-20@42-44 上+ 6w窗12-17@45-47 下,A1门开×1+A3×1 可双窗)、左5带12w↔顶窗33-44@3-5、左5柱↔33-35@6-8 或 33-35@42-50(9 行精确匹配)、左4带↔9-20@42-44 或 33-44@51-53; ⑦ A1 形状循环(右5):Full(占6行)→Compact(12w单条,占3行)→Full,周期 3 步位移 9 行 (116-119 实测),6w 在 Compact 相位消失、Full 相位回归——倒 Full(右4 结构)从未在右5 出现,窗组 12-17@9-11+9-20@12-14 需要倒 Full 才能双精确对位 = 未解核心矛盾; ⑧ gen4 训练轮 374+ 步数据集已启动(16:2x,v5_round 前台 exec 模式绕 Popen 沙箱限制)。
历史会话(VIK9H6GV)的塔式电梯地图见 §6 0.5;其 L1/L2 布局与现行版本不同,仅作参考。
v5t 学生代际链(现行):gen1(181步)→gen2(240步)→gen3(326步)→gen4(347步,loss 近零区+分歧尖峰6.00) 全部 HEAD 验证在链 t4_assets_v5/checkpoints/;gen1/gen3 评测 均 0 关 0 重置(渐进预期);0S3BN0UN 会话教学累计 354 步(含 L1/L2 两个 WIN 正样本 + L3 深探 63 步),trace 快照 HEAD 200。L3 终局线索:对位停驻填充 (A4 过模填充但非永久)+ 宽带-宽窗列对齐(33-44@39-41 vs 51-53)。
v5t gen-1 已完成并归档:68 步 ar25 教学 → 66 choice/67 boolean/68 score 样本 →
从 v4b 续训(v0.4.13 新补丁:out_dir 已有 qwenjev_s1.pt 则 load_heads 续接)→ 40 步 →
全产物 HEAD 验证在 HF t4_assets_v5/checkpoints/。训练判读:choice loss 前段≈0
(v4b 与教师行为先验一致——坍缩是状态特异的),分歧状态 loss 高达 17+/13+
(这些行才是真教学信号)。bp35 另教 48 步(迷宫导航+全盘元胞自动机,无 levels 突破)。
ar25 机制地图 v3(Task 12 实测定稿,累计 240 步,LEVEL 1/2 已通关 2/8)——
塔式电梯谜题。
① 双件:4件(实心9宽带+实心左对齐柱)与 5件(505505505 洞带+右对齐505柱)。
通关判定实证:蓝图(rows45-53:带51-59×3行+柱51-53×6行,45 格实心)与 4 塔
同构——4 塔三段精确入槽 = WIN(lvl+1);5 塔带单独精确覆盖蓝图带槽无事件
(柱槽必须匹配);5 塔柱右对齐永不匹配 = 诱饵/配重;
② 动作真语义(L1):A4=斜行程(5→+3/4←−3,首次触发后附带全体+3 下行一次);
A3=5←3/4→+3;A1/A2=双塔同步升降 3 行(落地 row63 硬止动不扣费);
A7=免费单发扳机(一次后熄火,需其他成功动作再装填);A6=纯惰性 0 耗;
③ 计数器:col63=付费预算显示(63/循环,耗尽后下一付费动作自动重生新循环,
实际预算无限);no-op 不扣费;过关返还制胜步费用;
④ 摆钟全高度工作("4件止步47"证伪);墙 cols30-32 可穿越(穿越时被裁剪显示);
⑤ Level 2 新机制:过关后棋盘镜像重生(4侧/5侧左右互换,双塔→四件套:
蘑菇+松散带堆叠);5 件洞值 0→9(透明);蓝图 72 格三段(带42-44@9-17 +
柱45-50@9-11 + 带51-53@3-11)= 4 侧堆叠整体 (−18,+24) 平移;
A3/A4 语义翻转且步幅×2(A3=4侧−6、A4=4侧+6;双侧解耦 5 侧冻结);
垂直轴锁定 → A5=钻孔机(溶解墙轴 col31 每 3 行的 0-pit 门 → A2 解锁);
过关后 4 塔长出 5 型洞(4>5 同化);
⑥ Level 1 通关配方(可重放 ~17 步):出生(rows15-23, 4带@33-41) → A2×10
(降 30 行进 rows45-53)→ A3×6(4带 33-41→51-59,extent 监控对位)→ WIN;
**Level 2 配方(13 步)**:任意动作触发重生(4侧带27-35+松散带21-29,
rows18-29)→ A5 钻轴 → A3×3(−18)→ A2×8(+24)→ 三件入槽 WIN;
⑦ Level 3 = 全新谜题型(未解):横墙 row48(b-门 33-35)+ 点状轴井 row49
(每 3 格 0-pit)+ 双方尖塔蓝图(rows3-14 / rows42-53,点对称 234 格)+
四块 5 拼片(3×9 柱@21-29/12-14、12×3 带@27-29/34-45、12×3 带@30-32/12-23、
6×3 带@30-32/47-52,共 ~103 格 < 蓝图 → 疑分段生长);完整开局存本地
scripts/t4/obs_current.json(step195);A7 触发重生免费;动作语义未测。
T4 (VIK9H6GV) 已于 Task 12 末死亡(uptime 4.4h,tunnel offline)——损失内存局面
(L3 进行中)与轨迹 step 154-204(两次 WIN 演示);gen-4 检查点+数据(≤step153)
HF 幸存。重连新 T4 时:上传 codepkg → 装依赖(§4 坑 10 cu128 锁)→
put teach_server.py + v5_daemon.py → nohup 拉起 → 按 §0⑥ 配方重放 L1/L2
(30 步,为 v5t 学生产出第一批 WIN 正样本)→ 继续单步教学攻 L3。
v4b 判定(第三次阴性):real_b loss 0.49 / real_c ECE 0.4469→0.3326, 对照评测 ar25 0关0重置、bp35 0关1重置。复盘对照实验定案:随机基线 ar25 600/150 步双 0 关 + v4b ar25×600 0 关 → 0 关是噪声地板,v3/v4/v4b 的 0 关 不构成模型失效证据。决策树曾触发 System-2 蒸馏方向,被用户否决改为亲自教学。
v4b 产物全 HEAD 验证在 HF t4_assets_v4/:qwenjev_s1.pt(校准头 276MB)、
qwenjev_s1_sft.pt(SFT 头)、qwenjev_s1_v4_calibrated.pt(v4 校准头独立备份)、
adapter_model.pt(LoRA)、dataset_v4.tgz、traces_real3.tgz;
评测报告 eval_report_v4b_ar25_bp35.json 入仓根+HF(HEAD 200)。
v0.4.10 新增:① 堵住头文件上传黑洞(wip_uploader 30 分钟节奏推 qwenjev_s1.pt,
real_b 后正式上传 qwenjev_s1_sft.pt 276MB)——上次 T4 死亡真正丢的就是头;
② 新镜像环境坑(坑 10):必须锁回 torch cu128 栈;③ watchdog 检查点改为 env 驱动。
v4 恢复过程中的新发现:HF 上 v4 只有 LoRA(adapter_model.pt 69.8MB),决策头
(qwenjev_s1.pt)从未上过 HF → real_c 的 load_heads 硬依赖它 → 恢复脚本
直进 real_c 的方案不成立 → 改为 real_b 重跑重建头(max_steps 110 避开 s165 OOM 墙,
LoRA 从 s160 恢复)。头重建 loss 20+→0.68-5.9 震荡区间(fresh 头 + 收敛 LoRA 的
再适应,末值 2.08);ECE 0.3589→0.227 优于 v3(0.4151→0.2727)。
v3 历史结论保留:real_b(SFT) 收敛止损 + real_c(RLCD) ECE 0.4151→0.2727,
对照评测 ar25+bp35 各 150 步 0 关 0 胜;产物在 HF t4_assets_v3/checkpoints/。
v0.4.8 铁律:权重一律 .pt 入仓 + HEAD 验证(HF 静默剔除 .safetensors/.bin,坑 9)。
v4 对照评测(2026-09-24,阴性):ar25 0 关 0 重置、bp35 0 关 0 重置
(v3 bp35 有 2 重置,v4 行为又变但仍未触过关通路),best_level_sum=0。
解读:架构修复在表征层已验证(loss/ECE 全改善),但 150 步短窗内未转化为过关——
下一变量是驱动源(ε0.45 数据已采完 400 集并 HEAD 验证在 HF
t4_assets_v4/data/traces_real3.tgz 88.5MB),v4b = dataset_final + traces_real3
重训(进行中,见 §6)。System-2 教师蒸馏仍排 v5(GPU 冲突未解)。
新 T4 恢复(一键,若本机又死):标准 bootstrap 装好代码+依赖后:
cd /content/qwenjev && QWENJEV_OUT=qwenjev-s1-hf-v4 QWENJEV_ASSETS=t4_assets_v4 \
nohup python3 -u -B scripts/v4_recover_bootstrap.py > /content/v4_recover.log 2>&1 &
自动:抽 dataset_final.tgz → 拉 v4 权重到 stage_a_lora/hf_lora → 盖 prep/data 章 → real_b 重跑重建头(max_steps 110)→ real_c → ALL_DONE → 对照评测。 ⚠️ 依赖必须锁 cu128 栈(见 §4 坑 10),否则 transformers 导入即炸。
0.4 RCA 实录(v0.4.9,复现工具已入仓)
| 探针 | 读数 | 结论 |
|---|---|---|
| processor batch | pixel_values (512,1536)+128 vision tokens | 图像确实进 forward,排除漏传 bug |
| 视觉塔输出(图像 token 位)帧 A vs B | per-token cos 0.604 | 塔活着,帧区分度强 |
| last-position 帧 A vs B | cos 0.991(真游戏 0.9999) | 帧内容信号在读出点死亡 |
| last-pos 有图 vs 无图 | cos 0.741 | 只编码“有图”,不编码内容 |
| 真游戏 30 步动作分布 | ACTION3 占 70%,仅 3 种动作 | 候选分布坍缩 |
| 候选文本敏感性 cos(A1,A6) | 0.9995 | 候选区分也近乎失效 |
工具:ops/diagnose_v3.py(逐步 JSONL+探针)、scripts/proc_probe.py、
scripts/vision_probe2.py。修复机制:hf_compat.pooled_last_and_vision();
新配置键 system1.pool_vision: true;evaluate_local.build_s1 从检查点自动探测
(v3 无标志=旧池化,v4 有=true=2H)。
历史:第一轮 v3 在 real_b 中途(step ~58/180)被超时打断后,v0.4.6 建立防丢失铁律; v0.4.7 加入 GPU 硬门控(12.5GiB 预判跳行,旧 T4 step-58/152 两次 OOM 死亡根因)。 QwenJev(Qwen3-VL-2B 多模态改造的 ARC-AGI-3 双系统智能体)三阶段训练管线完整入仓; 2026-09-23 关键结论:v2(仅 mock 训练)× 真游戏 zero-shot 泛化失败 (2 局 300 步 0 关 0 胜,见 §3),v3 用真游戏数据训练接力,编排器 stamp 幂等。
0.5 防丢失铁律(v0.4.6,因真实事故写入)
任何产物创建后数分钟内必须落 HF——Colab 超时和本地沙盒重置都真实发生过,唯一持久存储是 HF 仓。已内置的自动保险:
- SFT 训练中:
train_system1.py每save_every_steps: 20步(≈13 分钟)写 WIP (heads + LoRA + stage_b_meta.json);编排器wip_uploader线程每 10 分钟把变化的 WIP 推到 HFt4_assets_v3/checkpoints/hf_lora_wip/。最坏损失 = ~13 分钟训练。 - 断点续训:real_b 启动时若本地无 hf_lora 但 HF 有 hf_lora_wip → 自动拉取并覆盖 stage_a_lora 作为起点(接着练,不从 v2 重来)。
- 合并数据集:data 阶段合并完 dataset_final 立即 tgz 推 HF
t4_assets_v3/data/dataset_final.tgz。 - 远端轨迹:
remote_chain.py检测到采集完成 → 先后台 tgz+推t4_assets_v3/data/traces_real2.tgz,再拉起编排器。 - **所有 autosave 走
upload_soft**:失败只告警不炸流水线;正式产物仍走三次重试的upload。
1. 资产位置(哪些是持久的,哪些是临时的)
| 资产 | 位置 | 持久性 |
|---|---|---|
| 代码仓 v0.4.3 | https://huggingface.co/tchbcb/qwenjev (公开,155+ 文件) | 持久 |
| v2 终模型 | 同仓 t4_assets_v2/checkpoints/qwenjev_s1.pt(323.8MB)+ hf_lora/ 分片(sha256 cae4663a…) |
持久 |
| CUDA 编译资产 | 同仓 t4_assets*/ 下 NVRTC 内核 tar + compile_cache_note |
持久 |
| 训练蓝图 | 同仓 train.md(v0.4.3,14 章) |
持久 |
| 本地 git 仓 | /home/z/my-project/qwenjev(沙盒重置会丢,从 HF 恢复) |
半持久 |
| 远端 Colab 现场 | /content/qwenjev(代码)+ /content/hf_cache(基座缓存) |
临时,实例销毁即失效 |
| 信封隧道 | https://aitun.cc/ZMPBD8M2(远端 Colab 的 Flask 执行器) |
临时,每次重启换隧道码 |
2. 一键恢复(新机器 / 新会话)
# 1) 拉代码(任一方式)
git clone https://huggingface.co/tchbcb/qwenjev # 或 snapshot_download
cd qwenjev
# 2) 装依赖(GPU 机器)
pip install torch==2.11.0 transformers==5.16.1 peft==0.20.0 accelerate==1.14.0
pip install arc-agi "torchao>0.16" # 游戏引擎 + 必须 >0.16(见 §4 坑 1)
# 3) 评测(检查点/基座自动从 HF 拉,无需 token,公开仓匿名可读)
python ops/run_eval.py --games all25 --backend hf --max-actions 150 \
--out eval_report_public25.json
# 无 GPU 的机器:--backend tiny(仅 harness 验证,不能代表 v2 水平,见 §4 坑 3)
远端 Colab 执行器(若用户提供了新隧道码 XXXX):
export T4_URL=https://aitun.cc/XXXX
python qwenjev/ops/t4exec.py status # 健康检查
python qwenjev/ops/t4exec.py runfile <本地.py> # 执行本地脚本(内含 put 逻辑可传文件)
3. 评测基线(v2 终模型 × 公开游戏,T4 实测)
- 配置:
--backend hf(fp16 基座 + LoRA merge)--max-actions 150(GAME_OVER 自动重置续玩,同预算公平) - 速度锚点:真模型 ~0.25 步/秒(大网格);启发式兜底 200+ 步/秒(见 §4 坑 1 健康判据)
- zero-shot 基线(2026-09-23 T4 实测,用户拍板提前叫停):
ar25:150 步/0 关/609s;bp35:150 步/0 关/608s —— 2/25 局、0 胜、best_level_sum=0;
mock→真游戏迁移无游戏能力,符合预期(v2 只见过 mock 推箱)。
完整报告远端
/content/eval_v2_2games_final.json,仓根留档eval_report_public25_v2_partial.json。 这把失败尺子正是 v3 的对照:同命令重评,best_level_sum升即真数据训练有效。 - v3 真游戏训练(2026-09-23 已完成,对照阴性):
① 数据:本地+远端各采一批 → 167,635 样本(dataset_final.tgz 在 HF);
② 训练:real_b SFT 有效 ~276 步收敛止损(loss 0.26-0.30;64×64 长格 OOM 硬门控
跳行)+ real_c RLCD 120 步(ECE 0.4151→0.2727);产物在 HF
t4_assets_v3/checkpoints/(qwenjev_s1.pt 254MB + adapter_model.pt 69.8MB); ③ 对照评测(同尺子:ar25+bp35×150 步×hf 后端):ar25 0 关 0 重置、bp35 0 关 2 重置 —— best_level_sum=0,与 v2 zero-shot 基线(0 关)持平,v3 无泛化增益。 唯一行为差异:bp35 出现 2 次 RESET(基线 0 次),说明策略有变化但未触及过关通路; ④ 下轮配方见 §6。 - v4 视觉读出修复版(2026-09-24 恢复重训,对照阴性):
① 数据:同 v3(dataset_final 158,290 行);
② 训练:real_b 头重建 110 步(loss 20+→0.68-5.9 震荡,末值 2.08)+
real_c RLCD(ECE 0.3589→0.227,优于 v3);产物在 HF
t4_assets_v4/checkpoints/(qwenjev_s1.pt 276MB 校准版 + qwenjev_s1_sft.pt 276MB SFT 头 + adapter_model.pt 69.8MB,全部 HEAD 验证); ③ 对照评测(同尺子):ar25 0 关 0 重置、bp35 0 关 0 重置 —— best_level_sum=0。 行为差异再变(bp35 重置 2→0),仍未触过关通路; ④ 结论:架构读出修复改善表征健康度(loss/ECE),但不足以过关 → 下一变量 = 驱动源数据(ε0.45×400 集 traces_real3 已在 HF),v4b 重训进行中。
4. 已知坑清单(按踩中概率排序)
- torchao 必须 >0.16(v0.4.3 实测坑):transformers 5.16.1 加载 Qwen3-VL 时校验 torchao,
0.10.0 会让
build_s1抛异常 → run_eval 静默回退启发式策略跑完全程(不报错!健康判据:steps_per_s > 100必是启发式)。修复:pip install -U torchao(0.18.0 验证通过)。 - 信封协议两规则(ops/t4exec.py 已内置,改代码前必读):
① payload 必须单行 b64url(76 字符换行是文档写法,现中继会弄坏多行 payload → CRC mismatch);
② CRC =
crc32(解码后的原始代码字节),不是对 b64 文本算(print(123, 456)→c03b37d5实证)。 - CPU 评测可行性矩阵(2 核 / 3.9GB 容器实测): tiny 后端 + v0.2.0 头(128 维)✅ 完整可跑(25/25);hf 后端需 ≥8GB 内存(fp16 基座 4.4GB + 三头 254MB fp32)❌ 本容器不可行;bitsandbytes 4bit 仅 CUDA,CPU 无替代。 且 v2 头是 2048 维,tiny 骨干 128 维 —— tiny 后端不能加载 v2 检查点(维度不匹配)。
- kagglehub 竞赛下载需认证:
competition_download('arc-prize-2026-arc-agi-3')实测抛UnauthenticatedError(需 KGAT token + 官网接受规则)。评测链路已不依赖它:arc-agi包匿名 key 自动下发(2026-09-23 实测 25 环境全部拉取成功,~3MB)。 - HF xet 吞 safetensors:直接上传大
.safetensors会坏 → 用 nonce 前缀 + 4 分片.pt+ manifest.json(sha256) + reassemble 方案(run_eval.py的ensure_adapter_safetensors自动重组校验)。 - 本沙盒后台进程会被收割:本地容器里 nohup/setsid 活不过工具调用结束,长任务必须前台分块 (每块 <9 分钟);远端 Colab 无此问题(nohup 可跑数小时)。
- 远端 exec 作用域陷阱:信封执行的脚本里,自定义函数内部访问不到顶层
import的模块 (exec globals/locals 分离)→ 远端脚本一律写线性代码,不定义函数。 - 隧道码每次重启轮换:旧隧道码会超时,用
t4exec.py status先验活;换码只需export T4_URL=https://aitun.cc/<新码>。 - HF 静默剔除 .safetensors/.bin(v0.4.8 事故实录,最重要):upload_file 报成功、
commit 落地,但文件本体被服务端剥离 → resolve 时 404。实证:同一 30MB 随机字节,
存 .pt → HEAD OK;存 .bin/.safetensors → 404(96B 小文件同样死,xet 开关无关,
推断为权重类扩展被强制 LFS 而本仓 LFS 对象通道损坏)。**铁律:① 权重一律以 .pt
入仓(upload/upload_soft 内置 hf_safe_name 映射 + verify_remote HEAD 校验);
② run_eval 的 ensure_adapter_safetensors 已支持 adapter_model.pt 单文件形态;
③ 任何上传后必须 HEAD 验证,成功日志必须含 'HEAD ok'**。v3 权重救援实录:
safetensors 全丢 → 从 T4 磁盘 rename .pt 重传,69.8MB+254MB 均 HEAD 校验通过。
疑难排查工具:
scripts/xet_experiment{,2,3}.py(三轮对照实验,可复现)。 - 新 Colab 镜像 cu130 栈(v0.4.10 事故实录,2026-09-24):新镜像预装
torch 2.11.0+cu130 + torchvision/torchaudio/torchcodec 全 cu13,直接跑
real_b 会在 transformers 导入链上炸:torchaudio 的
_check_cuda_version()抛 "PyTorch has CUDA 12.8 whereas TorchAudio has CUDA version 13.0" →ModuleNotFoundError: Could not import module 'AutoProcessor'(误导性报错!真因 在 audio 包版本自检)。另有 cu13 NVRTC builtins 探测失败风险(libnvrtc-builtins .so.13.0 dlopen 不到)。修复(已验证):锁定老 T4 验证组合pip install torch==2.11.0+cu128 torchvision==0.26.0+cu128 --index-url https://download.pytorch.org/whl/cu128+pip uninstall torchao torchaudio torchcodec+pip install bitsandbytes==0.50.2 peft==0.20.0 transformers==5.16.1。 ⚠️ pip 大包走信封前台会 504(中继超时但服务端继续跑完)→ 用后台 nohup+轮询日志; 测试 LD_LIBRARY_PATH 修 NVRTC 时绝不能替换整条路径(会丢驱动 libcuda), 且 cu13/lib 混有 libcuda stub。 - exec 沙箱内 os.symlink 被禁("Creating symbolic links is not allowed.")→ 修库文件用 shutil.copyfile 复制,不能用符号链接。
- nohup 子进程挂在 /execute 会话下会占住执行通道(Task 8/10 实录):POST /execute 返回空响应但服务端实际已执行(GET /health /status 不受影响, /status recent_history 可核实);轮询至子进程退出后通道恢复。
- exec 同进程 sys.modules 缓存旧模块(Task 10 实录):重传模块后再 import 仍拿旧版 → 内联执行绕过,或重启 colab_server。
- colab_server exec 共享作用域污染探针(Task 12 误判实录):exec_globals/ locals 跨调用共享,远程探针里的函数/comprehension 会读到陈旧全局变量 (曾误判"机构重置+计数器重置",实为污染数据)→ 几何分析必须拉 obs 到 本地算,或远程代码严格去函数化、每个变量现算。
- 中继 502 风暴(Task 12 实录,坑 12 变体升级):/execute 间歇 502
(成功一次→502 一次节奏),GET 不受影响 → 用
scripts/t4/t4r.py(重试 包装 run/get,指数退避)骑波动;写 cmd 前先读 obs 确认上步已生效,防盲发。
5. 训练现场恢复(若要继续训练/放大)
- 蓝图:
train.md§5(两阶段配方 + 显存预算)+ §11(T4 实录:smoke 391 行流水线、scale 246 行); - 真游戏训练接力(2026-09-23 启动,三步链式
/content/real_pipeline.py): ①python -m data.collect_selfplay --config configs/collect_real.yaml(25 游戏启发式+ε 采集,已完成 8863 步 →data/traces_real/); ②python -m data.build_dataset --in data/traces_real --out data/dataset_real; ③ Stage B 重训configs/train_real.yaml(4bit 基座 + LoRA r16 + 三头,120 步 ≈ 76 分钟,产物checkpoints/qwenjev-s1-hf-real/); 查看进度:grep -v 'it/s' /content/real_pipeline.log | tail;接力中断就从断的那一步单跑; - 真游戏训练 OOM 根因链(v0.4.3 排障实录,重要):
① transformers 5.16 要求 torchao>0.16(§4 坑 1);
② hf 分支 prompt 不截断,64×64 state(~4k 字符)→ 4k token 序列 → SDPA 爆显存
(
clip_state_text已修:meta 行 + '*' 变化行优先 + 均匀采样到预算,完整画面交给视觉塔); ③from_pretrained默认 eval 模式,gradient checkpointing 仅在 self.training 时生效—— 训练循环不调model.train_mode(True)时 64×64 行反向持 ~10GiB 全激活(step 1-24 靠运气, 实测 step25 必爆)。修复:optim 构造后model.train_mode(True)。修复后 4.9GiB 恒定跑通 120 步; ④ 兜底三件套:行级 OOM 容错(empty_cache+跳过)、非有限 loss 行跳过、clip_grad_norm_(1.0); - 训完后重评对照:
python ops/run_eval.py --games ar25 bp35 ls20 ft09 --max-actions 60 --checkpoint checkpoints/qwenjev-s1-hf-real --backend hf; - CUDA 编译资产已在仓,T4 实例重启后解压到
/root/.cache/torch/kernels/可跳过 NVRTC 重编译 (见仓内compile_cache_note.json); - 断点续训:
resume_adapters()已修(commit dda44ec),Stage B/C 可从checkpoints/续。
6. 下一步(按优先级)
- 【进行中 2026-09-24 傍晚】0S3BN0UN 会话(T4X2 Kaggle 2×T4, 12h 窗口)增量:
- L1/L2 通关配方重放成功(见 §0 现行权威块),trace 已含两关 WIN 正样本 (291 步快照 HEAD 200;教学继续至 350+ 步)。
- gen3 训练轮:326 步数据集(choice 320/bool 325/score 326)训练中
(torchao==0.18.0 修复后)。完成判据:/content/v5_round.log 出现 ROUND DONE
- HEAD ok 两行。后续每 ~40 新教学步跑一轮 v5_round.py。
- L3 攻坚中(机制图半解见 §0③):当前形态=两座复合塔+b 模具; 待试:墙降到模具行触发浇铸入位 / A5×N 连续铸造 / 复合塔 marching 对齐 12-14 列系。
- 待办队列:gen3 完成验证→gen3 评测(ar25@150 对照 v4b 0关0重置)→继续 L3
→bp35@150 随机基线补跑(
ops/random_baseline_runfile.py改[('bp35',150)])。 - 新工具:
ops/v5_round.py(手动训练轮,daemon 冻结时的可靠替代); 部署脚本已改 gen2 种子(t4_assets_v5)+trace 先恢复后播种(防覆盖)。
0.5. 【历史】VIK9H6GV 会话产出 gen-1/2/3/4 代际(HEAD 200): teach_server + daemon 架构见 §0;VIK9H6GV 会话产出 gen-1/2/3/4 代际 (HEAD 200)。教学工具链(本地 scripts/t4/):teach_step.sh(单信封 单步:写 cmd→睡→取 obs→渲染)、watch.sh(紧凑几何摘要)、t4r.py(重试 包装,骑 502 风波)、render_obs.py、fsm_analysis.py / journey.py(轨迹 离线状态机重建)。新会话开局三步:① t4r.py get obs 本地渲染恢复局面; ② pgrep 确认 teach_server/v5_daemon/errwatch 在位;③ 按配方续教。
- ar25 L1/L2 重放 + L3 攻坚(机制地图 v3 见 §0):新 T4 后先按 §0⑥
配方重放两关(~30 步,教学轨迹含 WIN 正样本 → daemon 自动产 gen-5+,
学生首次见到正标签);L3 多拼片谜题语义探测顺序:A3/A4(谁动/方向/步幅)
→ A1/A2(垂直是否需先钻孔)→ A5(横墙门 33-35 + 轴井 row49 的钻法)。
铁律:每步拉 obs 本地算几何(坑 14),不确定不盲发。
顺手补跑:随机基线 bp35@150(
ops/random_baseline_runfile.py改回[('bp35', 150)]即可);bp35 的 A6 需要 (x,y) 坐标(KeyError 'x' 实证)待探。 - Kaggle 提交实战:
scripts/package_kaggle.py打包(禁网环境,权重走 Kaggle Dataset),先--games all25本地验证再花 Commit 配额(train.md§7)。 注:v4b 600 步评测 1.02 步/s vs 150 步尺子 0.24 步/s——长评测比预估快 4 倍, Kaggle 预算内全 25 游戏扫一遍是可行的。 - RHAE 对齐:官方按关卡
min(人类步数/智能体步数,1)²加权,本地拿不到人类 基线,提交后用 LB 反馈校准本地报告的横向可比性。
7. 凭据与安全
- HF 写 token:仅通过环境变量
HF_TOKEN传入(push_hf.py自动读 env /~/.secrets/hf_token); 任何在聊天/截图里明文出现过的 token,用完建议立刻在 HF 设置里轮换; - 仓内不含任何 token(
.gitignore+push_hf.pyignore_patterns 双保险); - Kaggle KGAT:尚未配置(评测不需要;仅离线竞赛数据包下载需要,见 §4 坑 4)。