StarVLA-Qwen3.5-4B-PI_v3-PickOrange (QwenPI_v3, freeze-VLM)
针对 LeIsaac SO-101 PickOrange 任务训练的 StarVLA QwenPI_v3 策略:Qwen3.5-4B 视觉语言骨干(冻结)+ PI_v3 LayerwiseFM cross-DiT 动作头(仅训此头)。 A StarVLA QwenPI_v3 policy (Qwen3.5-4B 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-4B-PI_v3-PickOrange/resolve/main/starvla-qwen3.5-4b-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-4B(冻结,
freeze_modules: qwen_vl_interface)+ PI_v3 LayerwiseFM cross-DiT 动作头(action_dit_hidden_dim=1024, action_horizon=16, 6-DOF)。project_layers把 VL hidden 2560 → 1024。双相机 @ 448×448(橙子只占 10-40px,224 是 vision death zone)。 - 训练 / Training:冻 VLM 只训动作头 / per-device batch=8(global batch=8)/ 30k 步上限 / cosine_with_min_lr(head 1e-4, warmup 1500)/ bf16 / gradient-checkpointing / DeepSpeed ZeRO-2 / 云端 RTX 4080S-32G。step-21000(≈4.6 epoch)是该家族 20-round 选型胜出 ckpt。
- 评测 / Eval(strict 20-round,与 leaderboard 同口径:120s sim × 180s wall_cap × stuck 30s/0.05rad;4B 可全精度 bf16 eval,serve+Isaac 共占 ~17.5 GB):**E(🍊)/ep=46.7% (28/60 oranges),P(3)=20% (4/20)**,P(≥2)=45%,env_success 25%,avg 147s。
- 🏆 StarVLA PI_v3 家族冠军:本 4B 在 Qwen3.5 PI_v3 全量 sweep 里居首(4B 46.7% ≈ 9B 45.0% > 2B 43.3%),且与 9B 几乎打平 —— 冻 VLM 时 action head 表达力是天花板,9B 翻倍参数几乎零增益,4B 是参数/性能甜点。
关键发现 / Key findings
- **参数饱和在 ~46%**:同一 PI_v3 head(LayerwiseFM)+ 冻 VLM,三个骨干 20-round strict best = 4B/21000=46.7%(4.6ep)≈ 9B/10000=45.0%(4.4ep)> 2B/27000=43.3%(3.0ep)。2B→4B 视觉红利 +3.4 点真实可见,但 4B→9B 翻倍参数几乎零增益(env_success 同 25%)—— 冻 VLM 时 head 容量是瓶颈,堆 backbone 边际递减。 Params saturate at ~46%: 4B ≈ 9B > 2B. The 2B→4B vision dividend is real (+3.4 pts) but 4B→9B (2× params) gives essentially nothing — with a frozen VLM the action head is the ceiling.
- 换骨干零源码改动:QwenPI_v3 在运行时把
vl_hidden_dim对齐到所加载 VLM(Qwen3.5-4B → 2560)、按该维重建project_layers。从 2B/8B PI_v3 config 切到 4B 只改一个base_vlm。 - 4-4.5ep sweet spot(铁板平台):4B 三方 20-round = 19000(4.2ep)/20000(4.4ep)/21000(4.6ep) = 46.7%/31.7%/46.7% —— 19k 与 21k oranges 完全打平(都 28/60),21k 靠 env_success(25% vs 15%) 胜出。与 GR00T / 其它 StarVLA 一致落在 3-4.5 ep。
- 3-round 快筛会骗人 / 20-round is mandatory:4B 的 3-round quick-eval 曾报 21000=66.7% vs 19000=55.6%(看着差 11 点),但 strict 20-round 下双双收敛到 46.7% —— 那个"跨度差"几乎全是 σ=±16.8% 的噪声。选型必须 5-round 筛 + 20-round 定,不能信 quick。
- 提分杠杆 / Levers:① 解冻 VLM 顶层 N 层(突破 head 天花板);② 加 demo(60 → 100+);③ 升视觉分辨率 / 多视角。
评测结果 / Evaluation
Strict 20-round(60 oranges total,leaderboard 同条件,bf16 eval):
| 指标 / Metric | 值 / Value |
|---|---|
| E(🍊)/ep | 46.7% (28/60) |
| P(3)(单 ep 放满 3 颗) | 20% (4/20) |
| P(≥2) | 45% (9/20) |
| P(1) | 30% (6/20) |
| P(0) | 25% (5/20) |
env_success(task_done 触发) |
25% (5/20) |
| avg round | 147s |
| 5-round σ | 1.63 (10.9%) |
20-ep raw oranges:[2,1,0,3,1,0,2,0,3,0,1,1,1,2,2,3,2,3,0,1]。
完整横评榜单见父项目 README leaderboard:46.7% 排在 rank 7,是 StarVLA PI_v3 家族最高,反超同项目 4B Qwen3-VL+GR00T head (35.0%) 与 2B PI_v3 (43.3%)。
⚠️ 务必 ≥20-round:3-round 快筛曾报 66.7%(n=3 巨大方差),strict 真值 46.7%。所有对外数必须 strict 20-round。
文件 / Files
| 文件 | 说明 |
|---|---|
checkpoints/steps_21000_pytorch_model.pt |
权重(~10.2 GB,冻结的 Qwen3.5-4B + 训练的 PI_v3 LayerwiseFM 动作头) |
config.yaml |
训练/推理重建配置(baseframework.from_pretrained 读取;base_vlm 指向 Qwen/Qwen3.5-4B) |
dataset_statistics.json |
动作反归一化统计 |
modality.json |
6-DOF state/action + 双相机 modality 映射 |
config_so101_qwen3_5_4b_pi_v3.yaml / run_so101_train.sh |
训练入口配方(bs=8, 30k 步上限, save_interval=1000) |
starvla-qwen3.5-4b-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)。4B 全精度 bf16 即可在单张 24G 卡上 serve+Isaac 共存(~17.5 GB,无需 8bit):
# serve(starvla_eval_qwen35 环境,bf16)
python LeIsaac/scripts/evaluation/serve_starvla.py \
--ckpt checkpoints/steps_21000_pytorch_model.pt \
--base /path/to/Qwen3.5-4B --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
- head 天花板:冻 VLM 时 9B 翻倍参数都摸不到更高(45.0% vs 4B 46.7%);要继续提分需解冻 VLM 顶层或加数据。
- 慢:部分轮次撞 180s 墙钟没放完 3 颗(avg 147s),策略认真抓放但不够果断。
- 小样本置信:20-round (60 ep) CI ≈ ±10%(单 ep 级 Bernoulli noise);5-round 子样 σ=10.9%。
引用 / 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-4B.
- LeIsaac SO-101 PickOrange: LightwheelAI/leisaac.
License
MIT,与 StarVLA 一致(base VLM Qwen3.5-4B 受其各自许可约束)。
- Downloads last month
- 1