StarVLA-Qwen3-VL-2B-PickOrange (QwenGR00T, freeze-VLM)
针对 LeIsaac SO-101 PickOrange 任务训练的 StarVLA QwenGR00T 策略:Qwen3-VL-2B 视觉语言骨干(冻结)+ GR00T N1.5 flow-matching DiT 动作头(仅训此头,~0.47B)。这是 Qwen3-VL 家族横评里最小的骨干——vision-dividend 阶梯的底端。 A StarVLA QwenGR00T policy (Qwen3-VL-2B VLM backbone, frozen + GR00T N1.5 flow-matching DiT action head, ~0.47B trainable) for the LeIsaac SO-101 PickOrange task — the smallest backbone of the family, the bottom of the vision-dividend ladder.
🔗 项目仓库 / 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 QwenGR00T = Qwen3-VL-2B(冻结,
freeze_modules: qwen_vl_interface)+ GR00T N1.5 flow-matching DiT-B 动作头(action_horizon=16, 6-DOF,cross_attention_dim=2048)。双相机 @ 448×448(橙子只占 10-40px,224 是 vision death zone)。 - 训练 / Training:冻 VLM 只训动作头 / batch=8 / 30k 步 / cosine lr(head 1e-4)/ bf16 / 云端 RTX 4080S-32G。step-25000 是过拟合峰值前的最优 ckpt。
- 评测 / Eval(strict 20-round,与 leaderboard 同口径:120s sim × 180s wall_cap × stuck 30s/0.05rad;2B 权重小,bf16 全精度直接 eval,无需量化):**E(🍊)/ep=18.3% (11/60 oranges),P(3)=0% (0/20)**,P(≥2)=10%,env_success 0/20。
- 📉 vision-dividend 底端:相同 QwenGR00T 架构、零源码改动,只换骨干 2B/4B/8B,橙子率 18.3% → 35.0% → 53.3% 单调上升。2B 的视觉特征撑不起 10-40px 小橙子——会去抓但放不满,从不放满 3 颗(P(3)=0)。这条单调阶梯反过来证明本任务瓶颈就是 VLM 视觉分辨能力,不是动作头。
关键发现 / Key findings
换骨干零源码改动:QwenGR00T 在运行时把
cross_attention_dim对齐到所加载 VLM 的hidden_size(2B=2048 / 4B=2560 / 8B=4096),所以换骨干只改一个 config 的base_vlm+run_id。vl_hidden_dim对 QwenGR00T 是死字段。 Swapping the VLM backbone needs zero source change: QwenGR00T alignscross_attention_dimto the loaded VLM'shidden_sizeat runtime (2B=2048 / 4B=2560 / 8B=4096).vision dividend 是单调的:橙子在 448 帧里仅 10-40px,是这个任务的真瓶颈。同架构同数据,仅放大骨干:
骨干 / Backbone E(🍊)/ep P(3) leaderboard Qwen3-VL-2B(本卡) 18.3% 0% 弱(< SmolVLA 25%) Qwen3-VL-4B 35.0% 10% rank 8 Qwen3-VL-8B 53.3% 35% rank 4 18.3 → 35.0 → 53.3 单调,证明瓶颈在 VLM 视觉特征而非动作头或数据。
2B 的失败模式:手臂会朝橙子去、能夹起,但定位不够准、放盘不果断,单 episode 从未放满 3 颗(P(3)=0%,最高 2 颗仅 10%)。这是"视觉 grounding 不足"而非"不会动作"。
倒 U 过拟合曲线(样本数驱动):sweep 峰在 step-25000;峰值由样本数(bs8 × 25k ≈ 200k 样本)决定,与 8B(bs4 × 30k)一致的过拟合规律。
评测结果 / Evaluation
Strict 20-round(60 oranges total,leaderboard 同条件,bf16 eval):
| 指标 / Metric | 值 / Value |
|---|---|
| E(🍊)/ep | 18.3% (11/60) |
| P(3)(单 ep 放满 3 颗) | 0% (0/20) |
| P(2) | 10% (2/20) |
| P(1) | 35% (7/20) |
| P(0) | 55% (11/20) |
| P(≥2) | 10% (2/20) |
env_success(task_done) |
0% (0/20) |
| 5-round σ | 0.50 (3.3%) |
20-ep raw oranges:[0,1,0,1,0,0,1,0,1,1,0,0,0,1,2,0,0,0,2,1]。
⚠️ 务必 ≥20-round:本 ckpt 的 3-round 快筛曾给出 44.4% 的误导值(n=3 巨大方差),strict 20-round 真值才是 **18.3%**。所有对外数必须 strict 20-round —— 这正是 2B 这种弱模型最容易被快筛高估的原因。
完整横评榜单见父项目 README leaderboard。
文件 / Files
| 文件 | 说明 |
|---|---|
checkpoints/steps_25000_pytorch_model.pt |
权重(~5.19 GB,冻结的 Qwen3-VL-2B + 训练的 GR00T 动作头) |
config.yaml |
训练/推理重建配置(baseframework.from_pretrained 读取;base_vlm 指向 Qwen/Qwen3-VL-2B-Instruct) |
dataset_statistics.json |
动作反归一化统计 |
modality.json |
6-DOF state/action + 双相机 modality 映射 |
config_so101_qwen3vl2b_gr00t.yaml |
训练入口配方(bs=8, 30k 步, save_interval=1000) |
starvla-2b-pickorange.jpg |
SO-101 in Isaac Sim eval 截图 |
推理 / Inference
StarVLA 的 PolicyServerWrapper(ckpt_path).from_pretrained 从 config.yaml(+dataset_statistics.json)重建框架并加载权重。本项目用一个 openpi msgpack-numpy websocket 适配器把它接进 LeIsaac Isaac Sim(stateless 双相机 @ 448)。2B 权重小,bf16 直接 serve(无需量化,serve+Isaac 共占 ~12 GB):
# serve(starvla_eval 环境,bf16 VLM)
python LeIsaac/scripts/evaluation/serve_starvla.py \
--ckpt checkpoints/steps_25000_pytorch_model.pt \
--base /path/to/Qwen3-VL-2B-Instruct --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
- 骨干太小是天花板:2B 视觉特征撑不起 10-40px 小橙子,P(3)=0、env_success=0;要提分换更大骨干(4B / 8B)比调头/加数据更直接。
- 3-round 快筛会高估:弱模型的小样本方差极大(3-round 曾报 44.4%,真值 18.3%);对外数据必须 strict 20-round。
- 小样本置信:20-round (60 ep) CI ≈ ±10%(单 ep 级 Bernoulli noise)。
引用 / Citations
- StarVLA: StarVLA: A Lego-like Codebase for Vision-Language-Action Model Developing, HKUST, 2026 · github.com/starVLA/starVLA.
- GR00T action head: NVIDIA Isaac GR00T N1.5(flow-matching DiT action expert)。
- Qwen3-VL: Qwen/Qwen3-VL-2B-Instruct.
- LeIsaac SO-101 PickOrange: LightwheelAI/leisaac.
License
MIT,与 StarVLA 一致(base VLM Qwen3-VL-2B 受其各自许可约束)。
- Downloads last month
- 16
Model tree for wsagi/StarVLA-Qwen3-VL-2B-PickOrange
Base model
Qwen/Qwen3-VL-2B-Instruct