StarVLA-Qwen3-VL-8B-PickOrange (QwenGR00T, freeze-VLM)

针对 LeIsaac SO-101 PickOrange 任务训练的 StarVLA QwenGR00T 策略:Qwen3-VL-8B 视觉语言骨干(冻结)+ GR00T N1.5 flow-matching DiT 动作头(仅训此头,~0.47B)。 A StarVLA QwenGR00T policy (Qwen3-VL-8B VLM backbone, frozen + GR00T N1.5 flow-matching DiT action head, ~0.47B trainable) for the LeIsaac SO-101 PickOrange task.

▶️ 演示视频 / Demo(若上方未渲染,直接打开):https://huggingface.co/wsagi/StarVLA-Qwen3-VL-8B-PickOrange/resolve/main/starvla-8b-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 QwenGR00T = Qwen3-VL-8B(冻结,freeze_modules: qwen_vl_interface)+ GR00T N1.5 flow-matching DiT-B 动作头(action_horizon=16, 6-DOF)。双相机 @ 448×448(橙子只占 10-40px,224 是 vision death zone)。
  • 训练 / Training:冻 VLM 只训动作头 / batch=4 / 60k 步 / cosine lr(head 1e-4)/ bf16 / DeepSpeed ZeRO-2 / 云端 RTX 4090-48G。step-30000 是过拟合峰值前的最优 ckpt。
  • 评测 / Evalstrict 20-round,与 leaderboard 同口径:120s sim × 180s wall_cap × stuck 30s/0.05rad;本机 24G 用 8bit (int8) VLM eval,int8≈bf16 实锤):**E(🍊)/ep=53.3% (32/60 oranges)P(3)=35% (7/20)**,P(≥2)=45%,avg 156s。
  • 🚀 vision dividend 实打实:相比同架构 4B 版(35.0% / P(3)=10%),仅把骨干 4B→8B、零源码改动,橙子率 +18 点、完整成功率 3.5×。对 10-40px 小橙子,更大 VLM 的视觉特征显著更强。

关键发现 / Key findings

  • 换骨干零源码改动:QwenGR00T 在运行时把 cross_attention_dim 对齐到所加载 VLM 的 hidden_size(4B=2560 / 8B=4096),所以从 4B 升 8B 只改一个 config 的 base_vlm + run_id(+ batch)。vl_hidden_dim 对 QwenGR00T 是死字段。 Swapping the VLM backbone needs zero source change: QwenGR00T aligns cross_attention_dim to the loaded VLM's hidden_size at runtime. 4B→8B = one config edit.
  • vision dividend:橙子在 448 帧里仅 10-40px,是这个任务的瓶颈。8B backbone 的视觉特征把 E(🍊)/ep 从 35.0%→**53.3%、P(3) 从 10%→35%**,直接登上横评 leaderboard rank 4(超过自训 GR00T-N1.6 48.3% 与 ACT 43.3%)。
  • 倒 U 过拟合曲线(样本数驱动):云端 sweep 显示峰在 step-30000、>36k 悬崖式塌陷(手臂晃动悬停)。峰值由样本数 ~120k 决定而非模型大小(4B 15k步×bs8、8B 30k步×bs4,两者峰值同样本量)。 Inverted-U overfit curve peaks at step-30000 then collapses; the peak is sample-count driven (~120k samples), not model-size driven.
  • 8bit ≈ bf16 实锤:8B bf16 权重 ~16G + Isaac Sim ~7G 在本机 24G 卡必 OOM;int8 量化 VLM(DiT 头保 bf16)降到 serve+Isaac 共占 18 GB。同协议对照 int8 与 bf16 橙子率一致。
  • 提分杠杆 / Levers:① 解冻 VLM 顶层 N 层;② 加 demo(60 → 100+);③ 换 PI_v3 动作头(StarVLA model_zoo 上 Qwen3-VL-PI_v3 在 Bridge=69.8 > GR00T head=65.3)。

评测结果 / Evaluation

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

指标 / Metric 值 / Value
E(🍊)/ep 53.3% (32/60)
P(3)(单 ep 放满 3 颗) 35% (7/20)
P(≥2) 45% (9/20)
P(1) 35% (7/20)
P(0) 20% (4/20)
avg round 156s
5-round σ 3.37 (22.4%)

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

完整横评榜单见父项目 README leaderboard:53.3% 排在 rank 4,介于 N1.5 LightwheelAI (58.3%) 与自训 GR00T-N1.6 (48.3%) 之间。

⚠️ 务必 ≥20-round:本 ckpt 同样的 3-round 快筛会因 n=3 巨大方差给出误导值(实测 1/9 ≈ 11%,而 strict 真值 53.3%)。所有对外数必须 strict 20-round。

文件 / Files

文件 说明
checkpoints/steps_30000_pytorch_model.pt 权重(~17.9 GB,冻结的 Qwen3-VL-8B + 训练的 GR00T 动作头)
config.yaml 训练/推理重建配置(baseframework.from_pretrained 读取;base_vlm 指向 Qwen/Qwen3-VL-8B-Instruct
dataset_statistics.json 动作反归一化统计
modality.json 6-DOF state/action + 双相机 modality 映射
config_so101_qwengr00t.yaml / run_so101_train.sh 训练入口配方(bs=4, 60k 步, save_interval=6000)
starvla-8b-pickorange.mp4 SO-101 in Isaac Sim 演示(前 60s)

推理 / Inference

StarVLA 的 PolicyServerWrapper(ckpt_path).from_pretrainedconfig.yaml(+dataset_statistics.json)重建框架并加载权重。本项目用一个 openpi msgpack-numpy websocket 适配器把它接进 LeIsaac Isaac Sim(stateless 双相机 @ 448)。本机 24G 卡需 8bit evalSTARVLA_VLM_8BIT=1,VLM int8、DiT 头 bf16,serve+Isaac 共占 18 GB):

# serve(starvla_eval 环境,8bit VLM)
STARVLA_VLM_8BIT=1 python LeIsaac/scripts/evaluation/serve_starvla.py \
    --ckpt checkpoints/steps_30000_pytorch_model.pt \
    --base /path/to/Qwen3-VL-8B-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.pyStarVLAServicePolicyClient

限制 / Limitations

  • 峰值靠采样兜住:过拟合峰是 ~3k 步宽的悬崖,>36k 即塌陷到 0;step-30000 是 sweep 采到的最优。
  • :部分轮次撞 180s 墙钟没放完 3 颗(avg 156s),策略认真抓放但不够果断高效。
  • 8bit eval:leaderboard 数为 int8 VLM(≈bf16);全精度 bf16 需 >24G 显存或多卡。
  • 小样本置信:20-round (60 ep) CI ≈ ±10%(单 ep 级 Bernoulli noise)。

引用 / Citations

License

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

Downloads last month
4
Video Preview
loading

Model tree for wsagi/StarVLA-Qwen3-VL-8B-PickOrange

Finetuned
(561)
this model

Dataset used to train wsagi/StarVLA-Qwen3-VL-8B-PickOrange

Collection including wsagi/StarVLA-Qwen3-VL-8B-PickOrange

Paper for wsagi/StarVLA-Qwen3-VL-8B-PickOrange