CoolFace
Modelpublic

wsagi/StarVLA-Qwen3-VL-2B-PickOrange

sourceHugging Facemitupdated 4mo agoView on Hugging Face
0likes14downloads
Model Card

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](https://github.com/starVLA/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](https://github.com/LightwheelAI/leisaac) task — the **smallest** backbone of the family, the bottom of the vision-dividend ladder.

StarVLA-Qwen3-VL-2B PickOrange eval

🔗 项目仓库 / Project repos:

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 动作头(actionhorizon=16, 6-DOF, `crossattention_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 wallcap × stuck 30s/0.05rad;2B 权重小,**bf16** 全精度直接 eval,无需量化):**E(🍊)/ep=18.3% (11/60 oranges)**,**P(3)=0% (0/20)**,P(≥2)=10%,envsuccess 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 aligns `crossattentiondim` to the loaded VLM's `hiddensize` at runtime (2B=2048 / 4B=2560 / 8B=4096)._
  • —vision dividend 是单调的:橙子在 448 帧里仅 10-40px,是这个任务的真瓶颈。同架构同数据,仅放大骨干:
骨干 / BackboneE(🍊)/epP(3)leaderboard
Qwen3-VL-2B(本卡)18.3%0%弱(< SmolVLA 25%)
Qwen3-VL-4B35.0%10%rank 8
Qwen3-VL-8B53.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(🍊)/ep18.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)
envsuccess(`taskdone`)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.json6-DOF state/action + 双相机 modality 映射
config_so101_qwen3vl2b_gr00t.yaml训练入口配方(bs=8, 30k 步, save_interval=1000)
starvla-2b-pickorange.jpgSO-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):

bash
# 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

License

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