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

TL;DR

  • 任务 / TaskGrab orange and place into plate — SO-101 单臂依次夹起 3 颗橙子并放盘子。 Single-arm SO-101 picks 3 oranges sequentially and places each into a plate.
  • 数据集 / DatasetLightwheelAI/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。
  • 评测 / Evalstrict 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 spotstep-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_pretrainedconfig.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.pyStarVLAServicePolicyClient

限制 / 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

License

MIT,与 StarVLA 一致(base VLM Qwen3.5-2B 受其各自许可约束)。

Downloads last month
3
Video Preview
loading

Model tree for wsagi/StarVLA-Qwen3.5-2B-PI_v3-PickOrange

Finetuned
Qwen/Qwen3.5-2B
Finetuned
(330)
this model

Dataset used to train wsagi/StarVLA-Qwen3.5-2B-PI_v3-PickOrange

Collection including wsagi/StarVLA-Qwen3.5-2B-PI_v3-PickOrange

Paper for wsagi/StarVLA-Qwen3.5-2B-PI_v3-PickOrange