StarVLA-Qwen3.5-9B-PI_v3-PickOrange (QwenPI_v3, freeze-VLM)

针对 LeIsaac SO-101 PickOrange 任务训练的 StarVLA QwenPI_v3 策略:Qwen3.5-9B 视觉语言骨干(冻结)+ PI_v3 LayerwiseFM cross-DiT 动作头(仅训此头)。 A StarVLA QwenPI_v3 policy (Qwen3.5-9B 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-9B-PI_v3-PickOrange/resolve/main/starvla-qwen3.5-9b-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-9B(冻结,freeze_modules: qwen_vl_interface)+ PI_v3 LayerwiseFM cross-DiT 动作头(action_dit_hidden_dim=1024, action_horizon=16, 6-DOF)。project_layers 把 VL hidden 4096 → 1024。双相机 @ 448×448(橙子只占 10-40px,224 是 vision death zone)。
  • 训练 / Training:冻 VLM 只训动作头 / per-device batch=8 × 2 进程(global batch=16)/ cosine_with_min_lr(head 1e-4, warmup 1500)/ bf16 / gradient-checkpointing / DeepSpeed ZeRO-2 / 云端 RTX 4090。step-10000(≈4.4 epoch)经 5-round 筛 + 20-round 定为该 run 选型胜出 ckpt。
  • 评测 / Evalstrict 20-round,与 leaderboard 同口径:120s sim × 180s wall_cap × stuck 30s/0.05rad;9B bf16 在 24G 卡 + Isaac 会 OOM → 8bit VLM eval,int8 ≈ bf16 实测无损,serve+Isaac 共占 ~20 GB):**E(🍊)/ep=45.0% (27/60 oranges)P(3)=20% (4/20)**,P(≥2)=50%,env_success 25%,avg 125s。
  • 🔬 9B ≈ 4B — 冻 VLM 时翻倍参数零增益:本 9B(45.0%)与同家族 4B PI_v3(46.7%)几乎打平、env_success 同 25% —— 冻 VLM 时 action head 的表达力是天花板,堆 backbone 参数边际递减,这是本 sweep 最重要的结论。

关键发现 / Key findings

  • 参数饱和在 ~46%,head 是天花板:同一 PI_v3 head(LayerwiseFM)+ 冻 VLM,三骨干 20-round strict best = **2B/27000=43.3% → 4B/21000=46.7% → 9B/10000=45.0%**。2B→4B 视觉红利 +3.4 点真实,但 4B→9B 翻倍参数几乎零增益(45.0% vs 46.7%,env_success 同 25%)。冻 VLM 时瓶颈不在 backbone 容量而在 action head 表达力。 Params saturate at ~46%: 2B→4B is a real +3.4 pt vision dividend, but 4B→9B (2× params) gains nothing. With a frozen VLM the action head — not the backbone — is the ceiling.
  • 换骨干零源码改动:QwenPI_v3 在运行时把 vl_hidden_dim 对齐到所加载 VLM(Qwen3.5-9B → 4096)、按该维重建 project_layers。从 2B/4B PI_v3 config 切到 9B 只改一个 base_vlm
  • 5-round 筛 + 20-round 定(双重 strict):9B 用 5-round 先筛 9k-13k 五个 ckpt(10000 以 53.3% 居首),再对 top-2(10000/9000)各跑 20-round —— 10000 与 9000 又是 27/60 完全打平(45.0%, env 同 25%),取 10000(5-round 筛更高)。13000(5.7ep)=43.3% 已略过峰。
  • 4-4.5ep sweet spot:9B best=10000(4.4ep),与 4B(4.6ep)、2B(3.0ep) 一致落在 3-4.5ep;更深的 13000(5.7ep) 已回落。
  • 8bit eval 无损:9B bf16 在 24G 卡 + Isaac Sim 必 OOM;VLM int8 量化后 serve+Isaac ~20 GB,实测 8bit≈bf16 无精度损失(与本项目 8B 结论一致)。

评测结果 / Evaluation

Strict 20-round(60 oranges total,leaderboard 同条件,8bit VLM eval):

指标 / Metric 值 / Value
E(🍊)/ep 45.0% (27/60)
P(3)(单 ep 放满 3 颗) 20% (4/20)
P(≥2) 50% (10/20)
P(1) 15% (3/20)
P(0) 35% (7/20)
env_success(task_done 触发) 25% (5/20)
avg round 125s
5-round σ 3.30 (22.0%)

20-ep raw oranges:[2,2,0,0,1,3,3,2,0,1,2,0,3,3,2,2,1,0,0,0]

完整横评榜单见父项目 README leaderboard:45.0% 排在 rank 8,紧随同家族 4B PI_v3 (46.7%),反超 2B PI_v3 (43.3%)。

⚠️ 务必 ≥20-round:5-round 筛 σ=22% 摆动大(10000 的 5-round 曾报 53.3%,20-round 真值 45.0%)。所有对外数必须 strict 20-round。

文件 / Files

文件 说明
checkpoints/steps_10000_pytorch_model.pt 权重(~20 GB,冻结的 Qwen3.5-9B + 训练的 PI_v3 LayerwiseFM 动作头)
config.yaml 训练/推理重建配置(baseframework.from_pretrained 读取;base_vlm 指向 Qwen/Qwen3.5-9B
dataset_statistics.json 动作反归一化统计
modality.json 6-DOF state/action + 双相机 modality 映射
config_so101_qwen3_5_9b_pi_v3.yaml / run_so101_train.sh 训练入口配方(bs=8×2, save_interval=1000)
starvla-qwen3.5-9b-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)。9B 在单张 24G 卡上须 8bit VLM 才能与 Isaac 共存(~20 GB):

# serve(starvla_eval_qwen35 环境,VLM 8bit)
python LeIsaac/scripts/evaluation/serve_starvla.py \
    --ckpt checkpoints/steps_10000_pytorch_model.pt \
    --base /path/to/Qwen3.5-9B --port 8013 --img_size 448 --vlm_quant 8

# 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

  • 翻倍参数零增益:9B(45.0%)≈ 4B(46.7%),冻 VLM 时 9B 摸不到更高 —— 是 head 容量天花板,不是欠训。要继续提分需解冻 VLM 顶层或加数据,而非堆 backbone。
  • :部分轮次撞 180s 墙钟没放完 3 颗(avg 125s)。
  • 小样本置信:20-round (60 ep) CI ≈ ±10%;5-round 子样 σ=22.0%。

引用 / Citations

License

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

Downloads last month
3
Video Preview
loading

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

Finetuned
Qwen/Qwen3.5-9B
Finetuned
(668)
this model

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

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

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