StarVLA-Qwen3.5-2B-PI_v3-PickOrange (QwenPI_v3, freeze-VLM)
针对 LeIsaac SO-101 PickOrange 任务训练的 StarVLA QwenPI_v3 策略:Qwen3.5-2B 视觉语言骨干(冻结)+ PI_v3 LayerwiseFM cross-DiT 动作头(仅训此头)。 A StarVLA QwenPI_v3 policy (Qwen3.5-2B VLM backbone, frozen + PI_v3 LayerwiseFM cross-DiT action head, trained) for the LeIsaac SO-101 PickOrange task.
▶️ 演示视频 / Demo(若上方未渲染,直接打开):https://huggingface.co/wsagi/StarVLA-Qwen3.5-2B-PI_v3-PickOrange/resolve/main/starvla-qwen3.5-2b-pi_v3-pickorange.mp4
🔗 项目仓库 / Project repos:
- vitorcen/isaaclab-experience — Isaac Lab + LeIsaac 多策略横评(parent project)
- vitorcen/LeIsaac-Training — LeIsaac fork(训练脚本 + 设计文档 / training scripts + design docs)
TL;DR
- 任务 / Task:
Grab orange and place into plate— SO-101 单臂依次夹起 3 颗橙子并放盘子。 Single-arm SO-101 picks 3 oranges sequentially and places each into a plate. - 数据集 / Dataset:
LightwheelAI/leisaac-pick-orange— 60 episode 遥操示范。 - 架构 / Architecture:StarVLA QwenPI_v3 = Qwen3.5-2B(冻结,
freeze_modules: qwen_vl_interface)+ PI_v3 LayerwiseFM cross-DiT 动作头(action_dit_hidden_dim=1024, action_horizon=16, 6-DOF)。project_layers把 VL hidden 2048 → 1024。双相机 @ 448×448(橙子只占 10-40px,224 是 vision death zone)。 - 训练 / Training:冻 VLM 只训动作头 / batch=4 / 30k 步上限 / cosine_with_min_lr(head 1e-4, warmup 1500)/ bf16 / gradient-checkpointing / DeepSpeed ZeRO-2 / 云端 RTX 4080S-32G。step-27000(≈3.0 epoch)是过拟合峰前的最优 ckpt。
- 评测 / Eval(strict 20-round,与 leaderboard 同口径:120s sim × 180s wall_cap × stuck 30s/0.05rad;2B 可全精度 bf16 eval,serve+Isaac 共占 ~13 GB):**E(🍊)/ep=43.3% (26/60 oranges),P(3)=15% (3/20)**,P(≥2)=50%,avg 160s。
- 🎯 head 架构 > 单纯堆参数:本 2B(PI_v3 head)反超 同项目 4B Qwen3-VL 版(GR00T head,35.0%)—— 参数更少却 +8 点。换 action head(PI_v3 LayerwiseFM 而非 GR00T flow-matching)+ Qwen3.5 骨干,在 60-demo 小数据上更高效。
关键发现 / Key findings
- PI_v3 head 比 GR00T head 更省:同一 PickOrange,Qwen3.5-2B + PI_v3 = 43.3% > **Qwen3-VL-4B + GR00T head = 35.0%**(参数还少一半)。验证 StarVLA model_zoo 上 PI_v3 在 Bridge 高于 GR00T head 的结论 —— head 架构 + backbone 选型比纯堆参数更关键。 The PI_v3 (LayerwiseFM) head + a 2B backbone beats the 4B Qwen3-VL + GR00T head (43.3% vs 35.0%) with half the params — head architecture matters more than raw param count.
- 换骨干零源码改动:QwenPI_v3 在运行时把
vl_hidden_dim对齐到所加载 VLM(Qwen3.5-2B → 2048)、按该维重建project_layers。从 8B PI_v3 config 切到 2B 只改一个base_vlm。 - 倒 U 过拟合曲线(样本数驱动):云端 1k-step sweep 的峰在 **step-27000 (≈3.0 ep),与 GR00T 系一致落在 3-4 ep sweet spot;step-35000 (3.85 ep) 已过峰回落到 35.0%**,更晚的 41000 (4.5 ep) 崩到 ~10%(手臂晃动悬停)。
- 3-round 快筛会骗人 / 20-round is mandatory:同一 step-27000 的 3-round 快筛曾报 66.7%,但 5-round 子样 σ=3.32 ⇒ 单次 3-round 摆动 **±16.8%**;strict 20-round 真值才 **43.3%**。所有对外数必须 ≥20-round。
- 提分杠杆 / Levers:① 解冻 VLM 顶层 N 层;② 加 demo(60 → 100+);③ 升骨干(4B/8B,同 PI_v3 head)。
评测结果 / Evaluation
Strict 20-round(60 oranges total,leaderboard 同条件,bf16 eval):
| 指标 / Metric | 值 / Value |
|---|---|
| E(🍊)/ep | 43.3% (26/60) |
| P(3)(单 ep 放满 3 颗) | 15% (3/20) |
| P(≥2) | 50% (10/20) |
| P(1) | 15% (3/20) |
| P(0) | 35% (7/20) |
| avg round | 160s |
| 5-round σ | 3.32 (22.1%) |
20-ep raw oranges:[0,2,1,0,0,2,2,2,2,3,0,0,2,3,1,0,2,0,1,3]。
完整横评榜单见父项目 README leaderboard:43.3% 排在 rank 8,与自训 ACT (43.3%) 同档、反超同项目 4B StarVLA (35.0%)。
⚠️ 务必 ≥20-round:本 ckpt 的 3-round 快筛会因 n=3 巨大方差给出误导值(曾报 66.7%,strict 真值 43.3%)。所有对外数必须 strict 20-round。
文件 / Files
| 文件 | 说明 |
|---|---|
checkpoints/steps_27000_pytorch_model.pt |
权重(~5.3 GB,冻结的 Qwen3.5-2B + 训练的 PI_v3 LayerwiseFM 动作头) |
config.yaml |
训练/推理重建配置(baseframework.from_pretrained 读取;base_vlm 指向 Qwen/Qwen3.5-2B) |
dataset_statistics.json |
动作反归一化统计 |
modality.json |
6-DOF state/action + 双相机 modality 映射 |
config_so101_qwen3_5_2b_pi_v3.yaml / run_so101_train.sh |
训练入口配方(bs=4, 30k 步上限, save_interval=1000) |
starvla-qwen3.5-2b-pi_v3-pickorange.mp4 |
SO-101 in Isaac Sim 演示 |
推理 / Inference
StarVLA 的 PolicyServerWrapper(ckpt_path).from_pretrained 从 config.yaml(+dataset_statistics.json)重建框架并加载权重。本项目用一个 openpi msgpack-numpy websocket 适配器把它接进 LeIsaac Isaac Sim(stateless 双相机 @ 448)。2B 全精度 bf16 即可在单张 24G 卡上 serve+Isaac 共存(~13 GB,无需 8bit):
# serve(starvla_eval_qwen35 环境,bf16)
python LeIsaac/scripts/evaluation/serve_starvla.py \
--ckpt checkpoints/steps_27000_pytorch_model.pt \
--base /path/to/Qwen3.5-2B --port 8013 --img_size 448
# Isaac Sim 客户端 eval(与 leaderboard 同参)
python LeIsaac/scripts/evaluation/policy_inference.py \
--task=LeIsaac-SO101-PickOrange-v0 --policy_type=starvla \
--eval_rounds=20 --episode_length_s=120 --max_round_wall_s=180 \
--step_hz=30 --policy_action_horizon=16 --policy_port=8013 --enable_cameras
serve + client 实现见 serve_starvla.py 与 StarVLAServicePolicyClient。
限制 / Limitations
- 峰值靠采样兜住:过拟合峰在 step-27000 附近,>35k 即回落(35000→35.0%、41000→~10%);step-27000 是 1k-step sweep 采到的最优。
- 慢:部分轮次撞 180s 墙钟没放完 3 颗(avg 160s),策略认真抓放但不够果断高效。
- 小样本置信:20-round (60 ep) CI ≈ ±10%(单 ep 级 Bernoulli noise);5-round 子样 σ=22.1%。
引用 / Citations
- StarVLA: StarVLA: A Lego-like Codebase for Vision-Language-Action Model Developing, HKUST, 2026 · github.com/starVLA/starVLA.
- PI_v3 / LayerwiseFM action head: StarVLA model_zoo(π0-style flow-matching cross-DiT expert)。
- Qwen3.5: Qwen/Qwen3.5-2B.
- LeIsaac SO-101 PickOrange: LightwheelAI/leisaac.
License
MIT,与 StarVLA 一致(base VLM Qwen3.5-2B 受其各自许可约束)。
- Downloads last month
- 3