一句话定位:在一台云 GPU 上把 LabVLA(5B VLA 模型) 在 LabUtopia 仿真实验室里的 L1→L5 全链路(serve 冒烟 → 专家采集 → 数据转换 → 微调 → 评测)完整打通,并在成功率卡 0% 后,用分层归因方法(逐维信号分析 → 四级失败判据 → 专家轨迹参照 → 反事实实验)定位根因。
| 里程碑 | 结果 | 证据 |
|---|---|---|
| L1 serve 冒烟 | ✅ WebSocket 推理服务跑通 | logs/smoke_result.txt |
| L2 专家采集 | ✅ 34 段专家演示(level1_pick) | videos/expert_success/ |
| L3 数据转换 | ✅ HDF5 → LeRobot 格式 | logs/convert_lerobot.log |
| L4 首次微调 | ✅ 3 epoch 收敛(loss 下降) | logs/loss_tail.txt |
| L5 首次评测 | ❌ 0/10 成功,逐维动作发散 | videos/model_failures/ |
| 阶段 A 扩采重训 | ✅ 33ep 重训完成,3 轮复测 | a2_eval_v2 日志 |
| A2 机制对照(5 组) | videos/a2_groups/ | |
| L1 信号归因 | ✅ 自动化:臂部 slope→0、夹爪可控 | figures/ stats/ |
| L2-L4 归因(诊断 rollout/专家配对/反事实) | ⏸ 阻塞于云实例驱动兼容性 | docs/experiments.md EXP-005 |
LabUtopia (Isaac Sim 5.1, headless) LabVLA (serve, WebSocket :8000)
┌────────────────────────────┐ ┌─────────────────────────────┐
│ main.py level3_pick_infer │ │ serve_labvla.py │
│ └─ pick_controller │ obs(msgpack)│ └─ LabVLAPolicy (5B) │
│ └─ RemoteInference ───┼──────────────►│ (Qwen3-VL backbone) │
│ ◄─────────────────────┼─── action │ checkpoint: 33ep 重训 │
│ FrankaTrajectoryController│ (50,8) │ norm_stats + schema 自动载 │
└────────────────────────────┘ └─────────────────────────────┘
双环境隔离:仿真 labutopia311 (torch 2.7.0) / 推理 labvla (torch 2.7.1+cu126)
- 初次 3ep 训练:j4/j6 关节单向发散 + 夹爪锁死全开(0.04 plateau)→ 训练量不足的量级失配
- 33ep 重训后:臂部 slope→0(发散消失)、夹爪动态二值化生效(plateau 0.021)——动作量级问题已修复,但闭环成功率仍 0%
- 当前主假设:「专家轨迹覆盖与任务闭环分布不匹配」——模型动作在量级上正确,但轨迹形状/时序与专家不完全一致,无法完成"接近→下降→闭合→提升"四阶段闭环
- 验证状态:需要 Layer 2-4(诊断 rollout → 专家同初始条件重跑 → gripper/arm 覆写反事实)给出终判,当前阻塞于实例驱动兼容性(见下方已知问题)
- docs/pipeline.md — L1-L5 工程化管线说明(目录解耦、双环境、4090 单任务调度、断点续跑)
- docs/failure-analysis.md — 根因时间线与逐维证据
- docs/report.md — 完整报告
- docs/experiments.md — 全部实验记录(含失败尝试)
- evidence/ — 精选证据(视频/日志/图表/统计表)
- scripts/ — 归因工具链
- 云实例驱动兼容性:Isaac Sim 5.1 的 RTX 渲染器在 驱动 595.71.05(beta)+ RTX 4080 SUPER 组合下启动即 segfault(
librtx.scenedb.plugin),同代码在驱动 580.76.05 + RTX 4090 上正常。复现请使用 NVIDIA Production Branch 驱动(582.53 / 595.97)的实例。 - numpy 版本陷阱:
training_state.pt以 numpy 2.x 保存,加载环境必须 numpy≥2(conda labvla 环境 numpy 2.2.6);numpy 1.x 会报No module named 'numpy._core',serve 的 T6 防护会拒绝静默回退。 - 大文件(权重/数据集/原始采集)不入仓,见 .gitignore。