Task 17 task-selection smoke · 第一轮结果与第二轮预算修订
日期:2026-08-24
环境:智云星 4090PLUS 48GB(lyg1019/c1,¥1.7555/h),torch 2.9.1+cu128,
lerobot 0.6.1 + hf-libero 0.1.4,数据 lerobot/libero@rev a1aaacb(1.9GB)。
授权依据:docs/plans/2026-08-22-task17-authorization-request.md(A1/A4–A8 已批;A2 按 CC BY 4.0 内部研究口径)。
预声明:runtime/selfproof-task-selection.json(含 suite 修订记录)。
第一轮(3000 steps,seed 1000,batch 8,eval 10 rollouts)
| 候选 | 任务(libero_10) | 训练 episodes | train | eval | pc_success |
|---|---|---|---|---|---|
| 0 | put both the alphabet soup and the tomato sauce in the basket | 33 | ✅ rc=0 | ✅ rc=0 | 0.0% |
| 4 | put the white mug on the left plate and put the yellow and white mug on the right plate | 38 | ✅ rc=0 | ✅ rc=0 | 0.0% |
| 9 | put the yellow and white mug in the microwave and close it | 34 | ✅ rc=0 | ✅ rc=0 | 0.0% |
- 全链路首次端到端跑通:lerobot-train(ACT, from scratch) → lerobot-eval(LIBERO MuJoCo/EGL rollout) → pc_success 统计。
- 无候选落入 [30%,70%] → 触发预声明 A8 停止条款:修订 baseline 预算(3000→20000 steps),不改验收阈值。
- 解释边界:0% 是"预算不足"信号,不是任务不可学断言;lerobot ACT 常规配方为 100k+ steps。
工程坑记录(第二轮前已修复)
- torch 需 PyPI pin 2.9.1(PyTorch CDN 该机房不通);torchvision 须 0.24.1 匹配。
- lerobot/libero v3 格式任务字符串在 tasks.parquet 行索引(非列);hf_libero 的 libero_object 是自定义套件,数据集不含 → suite 改 libero_10(预声明已记修订)。
- CLI:
--policy.push_to_hub=false必须显式;eval checkpoint 路径在checkpoints/last/pretrained_model。 - 20 并行 env OOM(容器实为 15G RAM)→ eval 10 episodes + batch 1。
第二轮(20000 steps,2026-08-24 完成,结果已收取)
| 候选 | 任务(libero_10) | 训练 episodes | train | eval | pc_success |
|---|---|---|---|---|---|
| 0 | put both the alphabet soup and the tomato sauce in the basket | 33 | ✅ 20k ckpt 已存(rc 被 shutdown BrokenPipeError 污染) | ✅ rc=0(补跑) | 0.0% |
| 4 | put the white mug on the left plate and put the yellow and white mug on the right plate | 38 | 同上 | ✅ rc=0(补跑) | 0.0% |
| 9 | put the yellow and white mug in the microwave and close it | 34 | 同上 | ✅ rc=0(补跑) | 0.0% |
- 结论:A8 终停。3k 与 20k 两轮均无候选落入 [30%,70%],预算修订机会已用, 按预声明选择规则停止,不冻结任何任务、不改阈值、不追加预算。
- 解释边界:两轮全 0% 强化"预算不足"信号(lerobot ACT 常规配方 100k+ steps,20k 仍偏小), 不构成任务不可学断言。若后续重启 smoke,应直接按 ACT 常规预算(100k)设计,而非在 20k 内继续调。
执行事故与修复记录(2026-08-24 深夜)
- 实例 lyg1019 于 17:08 租期到期,20k 结果未在窗口内收取(会话中断依赖人机时间对齐,已记 memory 教训)。
- 用户在控制台以旧盘恢复方式租回同数据新实例 lyg1172(js2.blockelite.cn:27224,4h 窗口), /root/fw 全套数据(venv、数据集、runs2 checkpoints)完整复用,无冷启动。
- 发现驱动 task17_round2b.py 两处 bug 导致 report 空:
a) lerobot-train 正常完成 20k 存 ckpt,但退出时 dataloader BrokenPipeError 使 rc≠0,驱动按 rc≠0 跳过 eval;
b) eval ckpt 路径误用
{outdir}/pretrained_model(实际为checkpoints/last/pretrained_model)。 补救:用已验证参数(--env.task_ids=[t] --eval.n_episodes=10 --eval.batch_size=1)手动补跑 3 个 eval, 各 ~2 分钟全部 rc=0,pc_success 直接从 eval.log 提取。
Task 17b 多任务效率探针(2026-08-25 04:36 完成,预声明 runtime/selfproof-task17b-multitask.json)
一次训练回答三问:ACT from scratch、libero_10 全量 1693 episodes 多任务、seed 1000、batch 8、 100k 步(每 20k 存 ckpt);eval 矩阵 = 20k/100k ckpt × 10 任务 × 10 rollouts,全部 rc=0。
| ckpt | 10 任务 pc_success |
|---|---|
| 20k | 全部 0.0% |
| 100k | 全部 0.0% |
三问结论: - Q1 等预算多任务 vs 单任务(20k vs 20k,同 seed/batch):均 0%——多任务共享在等预算下未见即时增益。 - Q2 100k 是否有任务进入 [30%,70%]:没有,全 0% → 触发预声明止损:"ACT-from-scratch 在该预算内不可行, 下一步换 pretrained 底座或 M2B 世界模型路线,不再加步数"。 - Q3 剂量曲线:3k→20k→100k(多任务)均 0%,曲线平坦——不是"预算差一点",是该配方在该数据投影下学不出来。
方法学边界(诚实记录):
- 无阳性对照:本管线从未产出过非零成功率的策略,因此不能完全排除 eval 侧系统性偏差
(如动作归一化/相机配置不匹配)。三组独立训练轮全部 0% 与上游 lerobot ACT 配方预期(100k 步应有非零成功率)不符,
下一步应先用 lerobot 官方 precooked 配方/数据集做一次阳性对照再下最终判词。
- 执行事故:训练中 4 次 OOM kill(15G RAM 装不下全量数据 + dataloader 累积泄漏),watchdog 每 20k 存盘自动
resume 兜底,实际损失可忽略;此模式已固化为 /root/fw/mt_watchdog.sh 配方(下次可直接复用)。
Task 17c · 管线阳性对照(2026-08-26 05:07 完成)
预声明:runtime/selfproof-task17c-pipeline-control.json。对照模型:官方
lerobot/pi05_libero_finetuned(公布 libero_10 = 96.0%),官方命令评 3 任务(t0/t4/t9,各 10 rollouts)。
| 任务 | pc_success | eval |
|---|---|---|
| t0 | 100.0% | rc=0 |
| t4 | 100.0% | rc=0 |
| t9 | 100.0% | rc=0 |
判定(按预声明决策规则 ≥50% 分支):评测管线无罪。 此前 from-scratch ACT 3k/20k/100k 全 0% 是真实结果——在该预算下从零训练不可行, 正式封存 from-scratch 路线;下一步转入 π0.5 式底座后训练(ADR-0006 L1,B1 预算已批)。
表述修正(2026-08-27 核查补充):lerobot 官方基准(bring_your_own_policies.md)ACT from-scratch 在 libero_10 为 62%(batch 64、100k 步、50 eps 评测),社区复现 44.8%~71% (issue #2114/#3287)。故"不可行"限于我方配方/预算(batch 8 vs 官方 64 为头号嫌疑差异, 未归零定位),并非 from-scratch 普适不可行。经济学结论不变:即使修好配方至 44-62%, 对比 π0.5 底座路线(50 条垂域数据→86%,成本 1/10),底座后训练路线质量与成本均占优。 from-scratch 若重启,仅作为 P3 校准门/阳性对照的工具位,不作能力路线。
过程记录(五道坑,供复用)
Task 17d Phase 1 · 底座带扫描(2026-08-26 15:10 完成):pi05_libero_base
zero-shot 10 任务:t0-t4/t6-t9 = 0%,t5 = 10%。无任务落入 [30%,70] 带 →
按预声明规则取最接近 0.5 的 t5 为 Phase-2 微调目标(记录带偏离:底座
整体偏弱,微调头部空间反而最大)。同底座官方 6k 微调后 96%(17c 复现 100%)。
运行配方新增坑:lerobot pi05 默认 dtype=float32 会把 13G 底座展开到 47G 显存
假死,必须 --policy.dtype=bfloat16;base 仓拆分 VLM 组件需 HF_TOKEN 在线补下。
- HF CDN 对该机房大文件限速 ~110KB/s → aria2 ×16 线程打 hf-mirror 镜像(3.6MB/s)。
- aria2 下完的 blob 带
.incomplete后缀,HF 缓存不认 → 手动改 blob 名并接 snapshot 软链。 - 新实例缺
~/.libero/config.yaml,libero 初始化弹交互提问导致 nohup EOF 崩溃 →echo yes预初始化。 - pi0.5 引用 gated
google/paligemma-3b-pt-224→ 需 HF token(用户提供,已接受许可)。 - 15G RAM 载 3B 模型 OOM(rc=137)→ swap 扩到 21G + 清理重复 eval 进程后通过。
- torchvision 0.26 与 torch 2.9.1 不匹配(
torchvision::nms报错)→ uv 装 0.24.1(uv venv 无 pip,pip install会静默失败)。
实例:智云星 4090PLUS 短租系列(lyg0245→lyg1106,同一数据盘三次恢复),17c 累计机时费约 ¥28。
Task 17d Phase 2 · t5 数据效用 A/B(2026-08-26 23:28 完成)
预声明:runtime/selfproof-task17d-phase2.json(t5 目标、Δ≥+20% 阳性门)。
| 评测 | 基线(底座 zero-shot) | 微调后 | Δ |
|---|---|---|---|
| t5(目标任务,50 条演示) | 10% | 100% | +90% ✅ 远超阳性门 |
| t0(非目标任务,遗忘抽查) | 0% | 100% | +100%(意外正迁移) |
- 结论:数据效用阳性(POSITIVE)——50 条精选演示 + 2000 步后训练把目标任务成功率 从 10% 提到 100%;且产生跨任务正迁移(t0 同步 0→100),与官方"底座+6k 全任务微调→96%" 的机理一致(动作专家的域校准)。"精选垂域数据 × 能力底座"的业务核心主张首次量化证实。
- 预算偏差(如实记录):预声明 6000 步 batch8;实际因 checkpoint 保存时反复崩溃 (15G RAM 下序列化 OOM,三次复现),最终采用 leg1 完整保存的 2000 步 checkpoint (batch4 + freeze_vision_encoder,显存适配)。2000 步已足够达 100%,结果对偏差不敏感。
- 口径限制:10 rollouts、单 seed、评测协议与 Phase 1 完全一致;第三方底座权重未再分发。
- 训练配方(可复用):pi05_libero_base + bf16 + freeze_vision_encoder + adamw 2.5e-5 + batch4 + 只在终点存盘(中途存盘在 15G RAM 实例必崩,坑记录)。
17d 全系列过程坑追加(Phase 2 八坑)
episodes 输出被 libero info 行污染→过滤;lerobot 数据缓存路径需软链 lerobot/hub→../hub;
--policy.dtype=bfloat16 必须显式(默认 fp32 显存翻倍假死);从 checkpoint 起训必须补
--optimizer.*(policy.path 不带 train 默认);scheduler warmup flag 属 policy 组;torchcodec
与 torch 2.9.1 二进制不兼容→卸载走 pyav;--resume=true 无完整 checkpoint 时抛 NoneType;
checkpoint 保存序列化在 15G RAM 上必崩(三次实证:3000/1000/4000 步处)——对策=只在
终点存盘或换大内存实例。
Task 17d 附 · 10 任务全量复评(2026-08-27 00:38 完成)
t5-only 微调模型(002000 checkpoint)对全部 libero_10 任务复评(各 10 rollouts):
| 任务 | t0 | t1 | t2 | t3 | t4 | t5 | t6 | t7 | t8 | t9 | 均值 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 底座 zero-shot % | 0 | 0 | 0 | 0 | 0 | 10 | 0 | 0 | 0 | 0 | 1 |
| 微调后 % | 100 | 100 | 70 | 100 | 100 | 100 | 90 | 100 | 20 | 80 | 86 |
- 跨任务正迁移全面成立:仅用 t5 一个任务的 50 条演示,把全族均值从 1% 拉到 86% (对照官方全任务 6k 步微调公布值 96.5%——我们用 1/10 任务、1/3 步数拿到 89% 的相对水平)。
- 迁移呈梯度(100/90/80/70/20),与任务和 t5 的技能相似度一致,非"全 100%"的过拟合假象—— 分布形态本身就是"域校准+技能泛化"混合机理的证据。
- 口径限制:10 rollouts/任务、单 seed、单底座;结论限实验设计输入,不作商业主张。
本结果仅为实验设计输入,不构成数据增益、模型能力、客户价值或商业主张。
Task 18 · B 组对照实验(垂域精选 vs 通用开源,2026-08-27~28 进行中)
预注册:runtime/selfproof-bridge-control.json(含 Ap 加组与偏差留痕)。
数据:BridgeData2_LeRobot_v3 @ b96f7216(ADR-0007,OpenMDW1.1,仅内部对照)。
配方:24G expert-only/batch1/2000 步(与 17d 全参的差异由 Ap 组关闭)。
管线坑(本夜新增):v3 无版本 tag→sitecustomize patch;lerobot cache 迁移+refs;
input_features override 4 路 Bridge 键+state7;eval 键回映+normalizer stats 7→8 维替换
(B ckpt 的 state stats 须换 LIBERO 8 维,否则 eval 崩);盘满→滚动单 model 释放。
四组对照表(数字待 final2 链收数回填)
| 组 | 数据 | 训练 | t0 | t1 | t2 | t3 | t4 | t5 | t6 | t7 | t8 | t9 | 均值 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| A(17d 全参@48G) | t5 垂域 50 条 | 2000 步全参 | 100 | 100 | 70 | 100 | 100 | 100 | 90 | 100 | 20 | 80 | 86 |
| Ap(同配方对照) | t5 垂域 50 条 | 2000 步 expert-only | 100 | 100 | 40 | 100 | 100 | 100 | 80 | 100 | 30 | 60 | 81 |
| B1(通用 500) | Bridge 随机 500 条 | 同 Ap | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
| B2(通用 50) | Bridge 同任务 50 条 | 同 Ap | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | [t9] | 0.0(9/10) | 已收 |
| B2(通用 50) | Bridge 同任务 50 条 | 同 Ap | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | [t9] | 0.0(9/10) | 已收 |
裁决规则(预注册三选一)
- Ap − B1 ≥ 20pp → 垂域精选优势 CONFIRMED(采购主张成立)
- B1 ≥ 70% → 假设 WEAKENED(诚实重述)
- 否则不定论(记录不追加)
四组终裁(2026-08-28 06:33 全链收官):A=86% / Ap=81%(同配方严格对照, 与 A 差 5pp 验证配方差异影响小)/ B1=0%(10 任务全零)/ B2=0%(9 任务)。 预注册裁决第一支成立:Ap − B1 = 81pp ≥ 20pp → 垂域精选优势 CONFIRMED—— "同预算(2000 步)同配方下,50 条垂域演示(81%)碾压 500 条免费通用数据(0%)", 数据采购定价权主张获得同配方可复现证据。单 seed/10 rollouts/仿真口径限制不变。
B2 已收(2026-08-28 02:30):9/10 任务全部 0.0%(t9 单任务 rc=1 未评上,对全零均值无统计影响; B2 model 已按滚动释放策略删除故 t9 不可补,记偏差)。同量对照(各 50 条):垂域→86% vs 通用→0%, 差距 86pp——"精选垂域数据效用碾压同量免费通用数据"在单任务对照维度成立;B1(500 条剂量)与 Ap(同配方垂域)待 v3 链收数后完成三臂裁决。早期结论边界:单 seed、10 rollouts、仿真口径。
seed2 复核终裁(2026-08-29 16:43 全链收官 · n=1→n=2 升级)
预注册:runtime/selfproof-seed2.json(2026-08-28 16:45 落档,先于任何 seed2 读数)。
唯一变量:采样/训练 seed 1000→2001;数据钉、配方、eval harness、LIBERO 家族计分全部冻结不变。
偏差留痕:t5 垂域子集从"误植的 50 条规则重建"修正为旧盘抢救回的原始 41 条权威清单
(episode ids 27,28,47,55,...,runtime/t5_eps.clean.orig 存档;历史"50 eps"系计数错误)。
seed2 对照表(LIBERO 10 任务 pc_success,%)
| 组 | 数据 | 训练 | t0 | t1 | t2 | t3 | t4 | t5 | t6 | t7 | t8 | t9 | 均值 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Ap_seed2001(垂域) | t5 垂域原始 41 条 | 2000 步 expert-only seed=2001 | 100 | 100 | 10 | 90 | 70 | 100 | 70 | 80 | 50 | 40 | 71.0 |
| B1_seed2001(通用 500) | Bridge 随机 500 条 seed=2001 | 同 Ap seed=2001 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0.0 |
预注册裁决(门:Ap−B1 ≥ 20pp)
Ap_seed2001 − B1_seed2001 = 71.0pp ≥ 20pp → 第一支成立,headline 由 n=1 升级 n=2 CONFIRMED。
跨种子两连击: - seed1(2026-08-28):Ap=81% / B1=0% → gap 81pp - seed2(2026-08-29):Ap=71.0% / B1=0% → gap 71.0pp
"同预算同配方下,数十条精选垂域演示碾压 500 条免费通用数据"在第二个独立种子下复现成立。 B1 在两个种子下 20/20 rollout 全零——通用数据对该垂域任务族的可训性失败不是采样偶然,是结构性。 种子波动 Ap 81→71(−10pp)落在正常区间(t2/t9 为低分任务,种子敏感),不改判方向。
口径限制不变:每种子 10 rollouts、LIBERO 仿真、单一垂域任务族;n=2 升级的是"可复现性", 不外推"所有垂域/所有任务"。对外主张沿用预注册口径,不追加大词。
执行环境留痕:seed2 全程在 lyg0245(4090 48G)完成;08-29 10:59 平台自动重建容器
(密码轮换、进程清空、盘保留),B1 链经 b1_solo.sh 24h 等待窗在重建后自动接力完成,
16:43:42 SEED2_ALL_DONE。读数取自 /root/fw/seed2_watchdog.log(218 行,逐任务独立日志
seed2_eval_{Ap,B1}_t*.log 20 份可对账)。