「蚂蚁灵波具身大模型挑战赛」上篇 | 从零到 56.8%:一个人、一张卡、一场具身智能比赛的完整配置
本系列共三篇:上篇讲背景、配置与成绩;中篇讲 31 个坑与"更好的办法"反思;下篇讲学习清单与优化方向。这是天池「蚂蚁灵波具身大模型挑战赛」RoboTwin 赛题的全记录,队伍:喵喵喵喵而汪之队(个人小队)。
目录
一、比赛是什么
天池「蚂蚁灵波具身大模型挑战赛」线上初赛:主办方提供开源 VLA(Vision-Language-Action,视觉-语言-动作)模型 LingBot-VLA2(6B)和固定的机器人操作演示数据,参赛者在 RoboTwin 2.0 仿真环境的 50 个双臂机械臂任务上微调模型,按评测成功率排名。任务包括抓取放置、开关抽屉、倒水、握手、盖章、微波炉开门等。
我的装备:AutoDL 租的一张 RTX 6000D 80GB,没有本地 GPU。
二、模型架构:它在模仿什么
| 组件 | 内容 |
|---|---|
| 基座 | LingBot-VLA2 6B(模型总量 6375.9M,激活 5186.8M) |
| VLM | Qwen3-VL-4B-Instruct(视觉语言理解) |
| Action Expert | DiT(扩散 Transformer),36 层,hidden=768,MoE 32 experts top_k=4 |
| 输出方式 | Flow matching 去噪(denoise_steps=10),直接输出动作序列 |
| 优化器 | Muon + AdamW,lr 1e-4 余弦衰减至 5e-5(配置模板值) |
| 几何辅助 | MoGe-2(深度估计),训练含 Depth_Loss |
一句话:VLM 负责"看懂",DiT 负责"动手",把图像和指令变成机械臂的动作块(action chunk)。
三、完整配置一览
环境(两个 conda env 隔离)
| 环境 | Python | 关键依赖 |
|---|---|---|
lingbotvla(训练/推理) | 3.12 | PyTorch 2.8.0+cu128、flash-attn 2.8.3、transformers 4.57.3、lerobot v0.4.2、torchcodec |
RoboTwin(仿真评测) | 3.10 | SAPIEN 3.0、cuRobo、mplib、pytorch3d、Vulkan-Loader 1.4.365(源码编译) |
- 两个环境隔离的原因:训练要新 PyTorch,仿真依赖(SAPIEN/mplib)只支持旧 Python
- flash-attn 源码编译必须
MAX_JOBS=2,否则 nvcc 编译内存爆掉 - RoboTwin 必须锁定 commit
13c3c47,版本不一致仿真行为会变,成功率暴跌 - GPU 是新架构,PyTorch 必须用 cu128 版本才带对应 kernel
数据
- RoboTwin clean 数据集:2500 episodes(50 任务 × 50 episodes),548893 frames
- LeRobot 格式 v2.1 → 官方脚本转 v3.0(就地转换)
- 指令高度碎片化:单条指令平均只有 2-5 个样本——这直接决定了后面"训练量不够"的结局
训练(最终提交版)
| 项 | 值 |
|---|---|
| 精度 | BF16 |
| 步数 | 50,000 步(save_steps=5000) |
| 速度 | 约 4.1 s/step,总计约 57 小时 |
| 实际训练量 | 约 0.73-1 个 epoch(官方基线 93 个 epoch) |
| 显存峰值 | 约 78.8GB(80GB 卡,几乎顶满) |
| 单份 checkpoint | 约 74G(hf_ckpt 24G + model 24G + optimizer 26G) |
评测
| 项 | 值 |
|---|---|
| 任务集 | demo_clean,50 任务,按固定顺序执行 |
| 评测次数 | 20 episodes/任务(官方默认 100,需显式改脚本 test_num) |
| 耗时 | 单集约 36s,全量 1000 次约 8.4 小时 |
| 架构 | 推理服务器(websocket)+ 仿真客户端,两个 conda env 来回切换 |
| 结果落盘 | 每任务完成立刻写 _result.txt,支持中断续跑 |
提交
- zip 9.45G(BF16 权重 3 分片 12G 压缩后 + 代码 + 文档)
- 天池超大文件必须 OSS 直传:ossutil + STS 临时凭证(1 小时有效),从 AutoDL 直传阿里云,9.45G 用时 9.4 分钟(17.9 MB/s),上传即自动登记为提交
四、全程时间线
| 时间 | 事件 |
|---|---|
| 09-15 | 启动:环境搭建、模型下载(主模型 27G + Qwen3-VL 8.3G + MoGe-2 400M)、数据转换 |
| 10-13 | 首次训练配置(batch=4,10k 步),踩 checkpoint 清理脚本 sort bug,误删 step 10000,重训 |
| 10-15 | 10k 步训练完成(loss≈0.08),Vulkan 渲染修复约 10 小时,评测管线打通,smoke test 7.7%,启动全量评测 |
| 10-20 后 | 复盘训练配置:确认 batch=4 过拟合,换大 batch 重训 50k 步 BF16(57 小时) |
| 10-23 | 50k 模型全量评测(5 episodes):58.0%;随后加测 20 episodes |
| 10-24 | 20 episodes 版 568/1000 = 56.8%,整理提交材料,OSS 上传,提交完成 |
一个有意思的事实:5 episodes 版(58.0%)和 20 episodes 版(56.8%)统计上是一致的——早期小样本评测其实已经给出了可靠的点估计,只是当时我们不敢信它。
五、最终成绩与双峰分布
568 / 1000 = 56.8%(50 任务 × 20 episodes)
把 50 个任务排序后,得分呈明显的双峰分布:
- 约 20% 任务 ≥90%:place_burger_fries 100%、press_stapler / shake_bottle 系列 95%、dump_bin_bigbin / grab_roller / stack_bowls_two 90%……共性是单臂、短程抓取-放置,模型已稳定掌握
- 约 24% 任务 ≤35%:hanging_mug 10%、place_mouse_pad 20%、open_microwave / stack_blocks_three / pick_diverse_bottles 15%、move_stapler_pad / turn_switch 25%、lift_pot / handover_block / put_object_cabinet / stamp_seal / put_bottles_dustbin 35%……
短板集中在四类:双臂协同、毫米级对位堆叠、铰链/旋转交互、多样化泛化——恰好都是人类觉得"顺手"、对机器人却是地狱难度的事。
中篇预告:31 个坑的完整实录,以及每一条"当时有没有更好的办法"的诚实反思。
喵喵喵喵,汪!
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)