Home/Projects/中文/AutoBio × π0
AutoBio robotics lab illustration
PROJECT 08 · FLAGSHIP · DONE (single-task reproduction)

AutoBio × π0: LoRA Fine-tuning a VLA Foundation Model

2026.10●RTX 5090 · WSL2●openpi / π0 · LoRA●weights public

On AutoBio (a robot-manipulation benchmark for digital biology labs), I LoRA fine-tuned the VLA foundation model π0 (PaliGemma 2B + 300M action expert): first repaired several breakages in the frozen upstream snapshot, then trained for ~7.5 hours on a single consumer GPU, lifting thermal_cycler_close (closing a PCR machine lid) from zero-shot 0/6 to 18/20 (90%). Weights, per-episode results, training curves and rollout videos are all public and reproducible.

90%eval success · 18/20
7.5hsingle-GPU training · 5000 steps
22.2GBpeak VRAM / 24GB
0.0041final train loss (from 0.1061)
Training loss curve
① Training loss (recorded every 100 steps, real data): 0.1061 → 0.0041; steepest drop in the first few hundred steps, then slow convergence.
Success rate comparison
② Against baselines: zero-shot cannot do this task at all; 5k-step LoRA reaches 90%. The upstream paper reports 99.7% with a 30k-step full fine-tune on an H800 cluster (~1500 GPU-hours) — not an apples-to-apples comparison, shown for reference only.

Per-episode evaluation (seed 0, 20 episodes)

Each square is one real rollout, from the raw JSON saved by the eval script — no cherry-picking.

■ success □ failure
Honest scope of this result: this is the easiest of the 12 tasks (single task); a single seed and 20 episodes give a wide confidence interval (Wilson 95% ≈ 68%–98%); the zero-shot 0/6 was a 6-episode smoke check, not a rigorous estimate; and it is not comparable to the upstream paper's full fine-tune (30k steps, H800 cluster) in compute, steps or method. What it does show is that I can run the full data → training → evaluation loop on a real VLA codebase and fix the engineering problems along the way — not an extrapolatable SOTA number.

Upstream issues fixed along the way (fork changes)

Training configuration (all real records)

# single RTX 5090 D v2 (24GB) · WSL2 Ubuntu 24.04 · 2026-10 XLA_FLAGS="--xla_gpu_enable_triton_gemm=false" \ uv run scripts/train.py thermal_cycler_close-lora \ --exp-name lora5k --batch-size 16 --save-interval 1000 # base pi0_base; LoRA: backbone rank=16/alpha=16, action expert rank=32/alpha=32 # data: thermal_cycler_close-mujoco (100 episodes, LeRobot v2.0) # 5000 steps · ~5.3 s/step · ~7.5 h · peak VRAM 22.2 GB

Public artifacts

Full reproduction notes Long-form write-up: environment fixes, upstream repairs, same-seed control, 11 documented pitfalls ~12 min · in Chinese →

All credit for the AutoBio benchmark (simulation assets, tasks, datasets and paper) belongs to the upstream AutoBio team; this repo is only a study reproduction and repair on top of it.

What this gave me

  • First complete run of the VLA fine-tuning loop: LeRobot data → norm stats → LoRA training → checkpoint serving → headless MuJoCo EGL evaluation.
  • Learned to debug real research code: stale imports, SLURM assumptions, CUDA/JAX compatibility on new architectures (sm_120).
  • Understood LoRA's trade-off: ~1/200 of the training budget for comparable visible results, at the cost of generalization and ceiling.

Next steps

Run harder tasks (unscrewing, pipetting) and multi-seed evaluations with the same pipeline to tighten the confidence interval; then compare against the RDT base. Longer term, make "fine-tuning a VLA foundation model" a routine tool in my toolbox, plugged into my own simulation projects.

PythonJAXopenpiπ0LoRAMuJoCo EGLLeRobot v2.0WSL2