StarVLA-Qwen3.5-4B-GR00T_v2-PickOrange (QwenGR00T_N17, midlayer + unfreeze top-4)
针对
LeIsaac SO-101 PickOrange 任务训练的
StarVLA QwenGR00T_N17("GR00T_v2") 策略:
Qwen3.5-4B 视觉语言骨干 +
GR00T N1.7 风格动作头(VLLN + AlternateVLDiT 图/文交替 cross-attn + state dropout,无 future tokens)。
关键 = GR00T-faithful 中层特征 select_layer=12(物理 pop 掉 13-31 层)+ 解冻 LLM 顶 4 层(截断后 = 层 8-11)一起训。
A StarVLA QwenGR00T_N17 ("GR00T_v2") policy (Qwen3.5-4B VLM + GR00T-N1.7-style action head) for LeIsaac SO-101 PickOrange. Trains the action head plus the top-4 LLM layers (8–11 after truncating to select_layer=12) — unfreezing breaks the frozen-head ceiling.
🔗 项目仓库 / 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_N17 = Qwen3.5-4B + GR00T-N1.7 风格 head(VLLN + AlternateVLDiT 图/文交替 cross-attn + state dropout,无 future tokens)。
select_layer=12:读 LLM 第 12 层中层特征,并按 GR00T 官方做法 truncate_to_select_layer=true 物理 pop 掉 13–31 层 → 截断后 12 层栈。tune_top_llm_layers=4 解冻栈顶 4 层(= 层 8–11,正是产生 select_layer 特征的层),与 head 一起训;层 0–7 冻结。双相机 @ 448×448。ckpt 仅 12 层(708 keys,~6.6 GB)。
- 训练 / Training:解冻顶 4 层 + 训 head / per-device batch=4(解冻加 ~4 层梯度+AdamW state,故从 8 降到 4)/ 30k 步(=3.3 epoch)/ head lr 1e-4 + VLM lr 1e-5(
learning_rate/qwen_vl_interface 非零确认解冻生效)/ bf16 / DeepSpeed ZeRO-2 / 云端 RTX 4090-24G。step-21000(≈2.3 epoch)是 strict 20-round 选型胜出 ckpt。
- 评测 / Eval(strict 20-round,leaderboard 同口径:120s sim × 180s wall_cap × stuck 30s/0.05rad,step_hz=30;4B 全精度 bf16,serve+Isaac 共占 ~17 GB):step-21000 = E(🍊)/ep 66.7% (40/60 oranges),P(3)=35% (7/20),P(≥2)=75%,env_success 40%,avg 127s。
- 🏆 解冻 > 冻结,破天花板:同 4B、同数据、同 head,解冻顶 4 层 66.7%(best)/61.7%(双 ckpt 池) vs 冻结 head-only 55%(best)/48.9%(3 ckpt 池) —— +12~18 点。直接坐实"解冻 VLM 顶层"是冻结派 ~48% 天花板之上的真杠杆。leaderboard rank 3 🥉(StarVLA 家族最高,反超同骨干 PI_v3-4B 46.7%、Qwen3-VL+GR00T head 4B 35.0%)。
关键发现 / Key findings
- 解冻顶 4 层 = +12~18 点,破冻结天花板:受控对照(同 Qwen3.5-4B、同 60-demo、同 GR00T_v2 head、同 strict 口径)——
- 冻结 head-only(E1):best 21k=55%,3 ckpt 池化(21k+24k+27k)=48.9% / P(3)=25%
- 解冻顶 4 层(本模型):best 21k=66.7%,双 ckpt 池(21k+15k,40 轮)=61.7% / P(3)=35%
- → 之前 PI_v3 家族观察到的"冻 VLM 时 head 容量是 ~46-48% 天花板,堆 backbone(4B→9B)零增益",用解冻顶层突破了。这正是冻结派 model card 列的头号提分杠杆。
Unfreezing the top-4 LLM layers lifts a same-4B frozen-head policy from 48.9%→61.7% pool (55%→66.7% best). Confirms "unfreeze the VLM top layers" is the real lever above the frozen-head ~48% ceiling.
- 修正了 8B GR00T_v2 的负面归因(榜单 footnote ²):父项目曾报 8B QwenGR00T_N17 head-only strict 20-round 仅 13.3% / P(3)=0,被怀疑"N1.7 头不迁移"。三方评审定位为移植 bug:旧实现取 末层
hidden_states[-1](第 36 层),而真 GR00T N1.7 用中层 select_layer=12;末层 image 位已丢视觉语义、与"只看 image 位"的 AlternateVLDiT 强耦合 = 喂坏特征。本 4B 复测在正确中层(12)+ GR00T 截断上重跑,head-only 即回到 ~48.9%、解冻到 66.7% → 证伪"头不迁移",负面 = porting bug,非头设计。
- GR00T 截断的两个工程要点:① head 读
hidden_states[select_layer],但若不 pop 上层,被解冻的"顶 4 层"会落在 28–31(select_layer 下游)→ 零梯度 = 静默 no-op(早期一版即此,20-round 仅 13-26%);truncate_to_select_layer 先 pop 13–31 再解冻,顶 4 层才真正是产生特征的 8–11 层。② ckpt 只存 12 层(708 keys),与满层(32 层)family 的工具不通用——抽 delta 需专门的截断 base。
- 早期不收敛、3-4.5ep 甜点:5-round 曲线 3k/6k=6.7% → 9k=46.7 → 12k=33.3 → 15k=66.7 → 18k=60 → 21k=73.3(峰) → 24k=46.7(回落),与 GR00T/StarVLA 家族一致落在 3-4.5 ep。
- 单次 20-round 仍是点估计:21k 单轮 66.7% 是 best-ckpt 惯例值;更稳的双 ckpt 40-round 池 = 61.7%(见父项目 footnote ³ 的高方差教训:对外尽量多轮合并)。两个口径都稳居 rank 3。
评测结果 / Evaluation
Strict 20-round(step-21000,60 oranges total,leaderboard 同条件,bf16 eval):
| 指标 / Metric | 值 / Value |
|---|
| E(🍊)/ep | 66.7% (40/60) |
| P(3)(单 ep 放满 3 颗) | 35% (7/20) |
| P(≥2) | 75% (15/20) |
| P(1) | 15% (3/20) |
| P(0) | 10% (2/20) |
env_success(task_done 触发) | 40% (8/20) |
| avg round | 127s |
20-ep raw oranges (step-21000):[1,2,2,0,2,3,2,2,3,3,0,2,1,3,1,2,3,3,2,3]
双 ckpt sweet-spot 池(21k + 15k,40 round = 120 oranges,更稳点估计):E=61.7% (74/120),P(3)=35% (14/40),env_success 42.5%。15k 单轮 = 56.7% (34/60),raw [2,2,0,2,0,0,3,2,3,3,3,1,0,3,2,1,3,3,0,1]。
受控消融 vs 冻结 head-only(同 4B/同数据):
| 配置 / Config | best ckpt 20-round | 多 ckpt 池化 | P(3) |
|---|
| 冻结 head-only (frozen VLM) | 55% (21k) | 48.9% (3 ckpt/60r) | 25% |
| 解冻顶 4 层 (本模型) | 66.7% (21k) | 61.7% (2 ckpt/40r) | 35% |
完整横评榜单见父项目
README leaderboard:
66.7% 排 rank 3 🥉,StarVLA 家族最高,并解决了 8B GR00T_v2 13.3% 的负面归因(= select_layer porting bug,非头设计)。
⚠️ 本 ckpt eval 为有头(DISPLAY=:0 --enable_cameras,无 --headless);按项目标准 wall_cap 给足时有头分数 == 无头分数(score 是 sim 行为非渲染速度),与 headless-180 行可比。
文件 / Files
| 文件 | 说明 |
|---|
checkpoints/steps_21000_pytorch_model.pt | 权重(~6.6 GB;截断 12 层 Qwen3.5-4B[0–7 冻结 + 8–11 训练] + GR00T_N17 动作头,708 keys) |
config.yaml | 训练/推理重建配置(select_layer=12 + truncate_to_select_layer=true + tune_top_llm_layers=4;base_vlm 指向 Qwen/Qwen3.5-4B) |
dataset_statistics.json | 动作反归一化统计 |
modality.json | 6-DOF state/action + 双相机 modality 映射 |
config_so101_qwen35_4b_gr00t_v2_midlayer_unfreeze4_trunc.yaml | 训练入口配方(bs=4, 30k 步, save_interval=3000, keep_last=6) |
starvla-qwen3.5-4b-gr00t_v2-pickorange.mp4 | SO-101 in Isaac Sim 演示 |
⚠️ serve 必须带 truncate_to_select_layer=true(config.yaml 已含):模型物理只有 12 层,serve 端要据此把 VLM 截断到 12 层才能对上 708-key ckpt。
推理 / 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 GB):
1# serve(starvla_eval_qwen35 环境,bf16)
2python LeIsaac/scripts/evaluation/serve_starvla.py \
3 --ckpt checkpoints/steps_21000_pytorch_model.pt \
4 --base /path/to/Qwen3.5-4B --port 8013 --img_size 448
5
6# Isaac Sim 客户端 eval(与 leaderboard 同参)
7python LeIsaac/scripts/evaluation/policy_inference.py \
8 --task=LeIsaac-SO101-PickOrange-v0 --policy_type=starvla \
9 --eval_rounds=20 --episode_length_s=120 --max_round_wall_s=180 \
10 --step_hz=30 --policy_action_horizon=16 --policy_port=8013 --enable_cameras
serve + client 实现见
serve_starvla.py 与
StarVLAServicePolicyClient。
限制 / Limitations
- 慢:部分轮次撞 180s 墙钟没放完 3 颗(avg 127s)。
- 小样本置信:单 ckpt 20-round (60 ep) CI ≈ ±9%;故同时给双 ckpt 40-round 池 61.7% 作更稳点估计。
- 15k/18k full ckpt 未保留:选型时 strict eval 跑完即清理;本仓只发 best(21k)full + 训练配置,其余 ckpt 成绩见上表。
引用 / Citations
- StarVLA: StarVLA: A Lego-like Codebase for Vision-Language-Action Model Developing, HKUST, 2026 · github.com/starVLA/starVLA.
- GR00T N1.7 head 设计: NVIDIA Isaac GR00T N1.7(VLLN + AlternateVLDiT + state dropout)。
- Qwen3.5: Qwen/Qwen3.5-4B.
- LeIsaac SO-101 PickOrange: LightwheelAI/leisaac.
License
MIT(与 StarVLA 上游一致)。