BridgeQuantAsyncVLA — LIBERO-Spatial full-finetune (98.0% SR)
Sub-0.5B Vision-Language-Action policy: LFM2.5-VL-450M trunk + BridgeConnector
(soft multi-layer taps, compressed cacheable semantic memory) + BridgeActionHead
(expert transformer + rectified flow matching). 480M parameters total, full
finetune. The bridge-latent caching / async runtime is unaffected by
finetuning (the trunk is static at inference): cached replan ≈ 5 ms.
Result
196/200 = 98.0% on LIBERO-Spatial — protocol: sync, --n-action-steps 1
(replan every env step), num_steps 1, 20 episodes/task, eval seed 42.
| t00 | t01 | t02 | t03 | t04 | t05 | t06 | t07 | t08 | t09 |
|---|
| 20 | 20 | 20 | 20 | 19 | 20 | 19 | 20 | 20 | 18 |
Hard elevated-support cluster (t07/t08/t09): 58/60. Reference: GR00T N1.7
reports 97.65% at 2B params / 12.8M finetune samples; this run uses 480M params
/ 0.48M sample-passes (30k steps × batch 16), ~2.5 h on one H100 80GB.
Recipe
configs/bridgequant_vla/experiments/libero_spatial/lfm25vl_spatial_fullft.yaml
= the frozen auglight recipe with exactly two coupled changes:
backbone.train_mode: "finetune" and lr: 5.0e-5. Data: libero_spatial_no_noops
(LeRobot v3), GR00T-style augmentation (ColorJitter + RandomResizedCrop),
train seed 42. Longer schedules hurt (60k: 90.5%) — 30k is the operating point.
Files
model.safetensors — full checkpoint (480M params; includes the finetuned trunk)
norm_stats.json — state/action normalization sidecar (required)
lfm25vl_spatial_fullft.yaml — self-contained train+eval config
Load / evaluate
1uv run python scripts/eval_libero_object.py \
2 --config lfm25vl_spatial_fullft.yaml \
3 --checkpoint <this-repo-dir> \
4 --n-action-steps 1 --episodes-per-task 20
Loading uses load_trainable_weights (safetensors + sidecar); the finetuned
trunk weights ship in the checkpoint, so the HF base model is only needed for
the processor/config skeleton.
Notes
- Single-seed result at the GR00T-convention seed 42 (3-seed spread measured:
98.0 / 95.5 / 88.5).
- This recipe is an empirical optimum: every measured neighbor is worse —
+sdrop0.2 96.5, 60k 90.5, sdrop+60k 91.5, batch32/lr7e-5 79.0, 16-probe
bridge 86.5–88.0, 10-layer trunk 85.5, 7-layer trunk 82.5. Surplus fit
(lower loss) consistently flows into shortcut channels: loss 0.35 → 98.0
while loss 0.015 → 31.0 on a 12.8M-sample frozen twin.
- What the finetune gain is NOT: language grounding. Text↔patch attention stays
non-semantic after finetuning (nonsense instructions score identically); the
gain is task-adapted visual features (action sensitivity to image
perturbation +24%).