LeRobot documentation
FineART-VLA
FineART-VLA
FineART-VLA dibangun di atas π0.5 dari Physical Intelligence dan implementasi openpi-nya, melalui kebijakan Pi05 LeRobot. Ia memperluas fondasi ini dengan kepala bahasa PaliGemma yang dapat dilatih dan runtime yang bergantian antara generasi bahasa dan generasi aksi. Satu checkpoint dapat memprediksi subtask tingkat rendah, secara opsional memperbarui memori atau menjawab pertanyaan visual, serta mengondisikan pakar aksi flow-matching-nya pada teks tersebut.
Gunakan Pi05 ketika Anda hanya membutuhkan aksi yang dikondisikan oleh tugas. Gunakan FineART-VLA ketika kebijakan harus menghasilkan atau mengonsumsi bahasa perantara selama rollout.
Bagaimana FineART-VLA berbeda dari Pi05
| Kemampuan | Pi05 | FineART-VLA |
|---|---|---|
| Model aksi | Prefiks bahasa-visi PaliGemma + pakar aksi Gemma | Arsitektur dasar yang sama |
| Kepala bahasa | Tidak dilatih untuk generasi waktu berjalan | Diaktifkan kembali dan dilatih dengan cross-entropy teks |
| Kondisioning aksi | Tugas episode | Subtask tingkat rendah aktif plus status robot ternormalisasi |
| Target pelatihan | Aksi flow-matching | Aksi alur, teks yang dipilih resep, dan token aksi FAST opsional |
| Persyaratan dataset | Gambar standar, state, aksi, dan tugas | Bidang yang sama ditambah anotasi bahasa untuk setiap kemampuan bahasa yang Anda latih |
| Rollout | Kebijakan tugas-ke-aksi langsung | Loop tugas → subtask → aksi hierarkis, dengan memori dan VQA opsional |
FineART-VLA dapat diinisialisasi dari checkpoint Pi05. Arsitektur kebijakan tetap kompatibel, sementara FineART-VLA membangun prosesor miliknya sendiri sehingga label resep dan label FAST tidak tergantikan secara diam-diam oleh tumpukan prosesor Pi05.
Instal
Instal LeRobot dengan dependensi FineART-VLA:
git clone https://github.com/huggingface/lerobot.git
cd lerobot
python -m venv .venv
source .venv/bin/activate
pip install -e ".[fineart_vla]"Ekstra fineart_vla mencakup dependensi PaliGemma/FAST. Untuk kernel pelatihan yang difusi secara opsional pada Linux dengan GPU CUDA, instal ".[fineart_vla_kernels]" sebagai gantinya. Ini menambahkan liger-kernel dan paket kernels Hugging Face yang digunakan oleh backend FlashRT. Liger bersifat opt-in dengan --policy.use_liger_kernels=true: ini mem-patch RoPE/GeGLU PaliGemma dari transformers untuk seluruh proses, sehingga kebijakan berbasis PaliGemma lain yang dimuat dalam proses yang sama juga berjalan dengan kernel yang difusi.
Siapkan data anotasi bahasa
FineART-VLA tidak menyimpulkan subtask yang diawasi dari dataset LeRobot biasa selama pelatihan. Dataset harus berisi target bahasa yang digunakan oleh resep yang dipilih di kolom opsional language_persistent dan language_events.
Minimalnya, anotasi timeline subtask yang kontinu sehingga setiap frame pelatihan memiliki instruksi tingkat rendah yang aktif. Tambahkan anotasi memory, VQA, interjeksi, dan ucapan hanya jika resep melatih kemampuan tersebut.
FineART-VLA menanamkan resep default-nya di FineARTVLAConfig, seperti EO-1. Ia mengambil sampel 30% prediksi tugas tingkat tinggi → subtask dan 70% pelatihan aksi yang dikondisikan oleh subtask tingkat rendah. Setiap konfigurasi memiliki kamus resepnya sendiri, dan checkpoint yang disimpan membawa kamus tersebut ke inferensi.
Gunakan --policy.recipe_path=/path/to/custom.yaml untuk menimpa default.
Resep bersama di src/lerobot/configs/recipes/ mempertahankan semantik main;
FineART-VLA tidak menggantikannya. Untuk pelatihan goal-only, gunakan resep inline dengan
satu pesan user low-level yang berisi ${task}, atau setel recipe=None dan
nonaktifkan loss text/FAST untuk pipeline PI05 biasa.
Secara default, inferensi difaktorisasi sebagai π(a|o, subtask)·π(subtask|o, task). Resep urutan gabungan kustom memerlukan pemroses runtime yang sesuai untuk merender tugas dan rentang asisten yang dihasilkan dengan tanda kausal yang sama seperti saat pelatihan. Pembangun prompt gabungan sisi kebijakan lama tidak lagi digunakan oleh rollout.
Rollout memiliki kendali atas jadwal perencanaan (--autosteer_interval_s=3), perintah interaktif, dan penjadwalan sinkron/RTC. FineART-VLA hanya menghasilkan teks saat diminta; panggilan aksi biasa tidak pernah menghasilkan subtask lain di belakang runtime.
Scratchpad memori/subtask gabungan bukan default dan memerlukan resep khusus plus pengendali runtime yang sadar memori. Pertahankan memory_scratchpad=false untuk generasi subtask biasa; checkpoint scratchpad lama mempertahankan penjagaan eksplisit mereka terhadap pengaliran respons gabungan secara langsung ke kontrol aksi.
Gunakan lerobot-annotate untuk menghasilkan kolom-kolom ini. Repositori ini mencakup peluncur Hugging Face Jobs yang dapat Anda edit untuk dataset sumber dan tujuan Anda. Untuk menjalankan anotasi secara lokal, pertama instal pip install -e ".[annotations]":
HF_TOKEN=hf_... uv run python examples/annotations/run_hf_job.py
Sebelum menjalankan pelatihan yang panjang, periksa beberapa episode dan pastikan bahwa subtask benar secara temporal serta mencakup seluruh demonstrasi. Lihat Pipeline Anotasi untuk generasi dan validasi, serta Language Columns and Recipes untuk skema dan recipe resolver.
If a dataset has no language columns, recipe rendering becomes a no-op and FineART-VLA falls back to the plain Pi05 prompt path. This is useful for compatibility but does not train the language planner.
Latih FineART-VLA
Contoh ini menginisialisasi FineART-VLA dari lerobot/fineart_vla_base, checkpoint yang dilatih di tengah proses pada FineART untuk memprediksi subtask berikutnya miliknya, dan melatih resep subtask 70/30 yang tertanam. --policy.path memuat konfigurasi milik checkpoint dasar itu sendiri, sehingga fine-tuning mempertahankan tata letak token FAST (fast_skip_tokens) dan resep yang digunakan saat pelatihan dasar; flag --policy.* lainnya menimpanya.
lerobot-train \
--dataset.repo_id=${HF_USER}/my_language_annotated_dataset \
--policy.path=lerobot/fineart_vla_base \
--policy.tokenizer_max_length=256 \
--policy.dtype=bfloat16 \
--policy.device=cuda \
--policy.freeze_vision_encoder=false \
--policy.gradient_checkpointing=true \
--batch_size=8 \
--steps=30000 \
--output_dir=outputs/fineart_vla \
--job_name=fineart_vla \
--trackio.enable=trueMulai dengan eksekusi kecil dan pastikan di dasbor Trackio bahwa kerugian berperilaku sesuai harapan sebelum memperluas skala.
Untuk memulai dari checkpoint PI0.5 polos, pertahankan konfigurasi default FineART-VLA dan arahkan --policy.pretrained_path ke checkpoint tersebut: --policy.type=fineart_vla --policy.pretrained_path=lerobot/pi05_base. Bobot berformat OpenPI dikonversi saat dimuat, dan kerugian teks serta FAST dimulai dari kepala bahasa PaliGemma, bukan dari pelatihan tengah FineART.
Kontrol pelatihan utama
| Opsi | Default | Tujuan |
|---|---|---|
policy.recipe_path | None | Override opsional untuk resep subtask 70/30 yang tertanam |
policy.text_loss_weight | 1.0 | Bobot cross-entropy untuk bahasa-head; 0 menonaktifkan pelatihan teks |
policy.flow_loss_weight | 10.0 | Bobot kerugian aliran aksi kontinu |
policy.enable_fast_action_loss | true | Menambahkan supervisi token aksi FAST diskrit |
policy.fast_action_loss_weight | 1.0 | Bobot entropi silang FAST |
policy.knowledge_insulation | true | Memblokir gradien aksi-kerugian melalui jalur K/V VLM |
policy.flow_num_repeats | 5 | Menggunakan ulang satu prefix VLM untuk target denoising yang independen |
policy.lm_head_lr_scale | 1.0 | Skala laju pembelajaran kepala bahasa; 1.0 menggunakan laju dasar |
policy.fast_skip_tokens | 1152 | FAST id offset; melewati <seg>+<loc> sehingga VQA dan FAST tidak pernah bertabrakan |
fast_skip_tokens=1152 menempatkan kode FAST di bawah rentang <loc> PaliGemma.
Konvensi pi0-FAST dari openpi adalah 128 (FAST menempati id <loc>); gunakan nilai
tersebut hanya untuk tetap kompatibel dengan bobot checkpoint yang dilatih dengan cara itu, dan
hindari menggabungkannya dengan resep VQA, karena target <loc> resep tersebut akan berbagi
baris embedding dengan kode FAST.
Bobot kerugian adalah titik awal, bukan konstanta yang independen dari dataset. Lacak kerugian aliran dan kerugian teks/FAST secara terpisah, dan periksa subtask yang dihasilkan, bukan hanya memilih checkpoint berdasarkan total kerugian saja.
Tokenizer FAST khusus dataset
Secara default (--policy.auto_fit_fast_tokenizer=true), pelatihan menyesuaikan FAST tokenizer pada dataset pelatihan, dimulai dari --policy.action_tokenizer_name, dan meng-cache-nya di --policy.fast_tokenizer_cache_dir. Hal ini juga berlaku saat fine-tuning dari checkpoint seperti lerobot/fineart_vla_base, sehingga target FAST sesuai dengan distribusi aksi robot baru. Tokenizer yang disesuaikan disimpan di dalam artefak processor checkpoint, sehingga inferensi memakainya kembali. Atur --policy.auto_fit_fast_tokenizer=false untuk menggunakan action_tokenizer_name tanpa perubahan.
Kinerja pelatihan
FineART-VLA menggunakan jalur pelatihan yang dioptimalkan secara default:
- batches mengulang target aliran dan proyeksi sufiks alih-alih memutar ulang operasi kecil di Python;
- mencache topeng aksi konstan dan menghitung posisi RoPE sekali per maju;
- memilih implementasi cross-entropy teks/FAST dari bentuk target dan sparsity;
- melewati backward VLM/vision yang secara matematis mati pada batch yang terisolasi pengetahuan dan hanya alur;
- menggunakan checkpointing lapisan SigLIP non-reentrant asli ketika checkpointing gradien diaktifkan; dan
- menjaga kernel Liger RoPE/GeGLU sambil menghindari patch LayerNorm yang lebih lambat pada bentuk SigLIP.
Backend pelatihan opsional dinonaktifkan secara default:
| Opsi | Kapan harus mencobanya |
|---|---|
policy.use_flashrt_adarms=true | Fused adaptive RMSNorm dan residu bergerbang pada GPU CUDA yang didukung |
policy.use_compiled_text_ce=true | Buckets CE logit-materialized yang dikompilasi |
policy.use_compiled_vision=true | Vision dikompilasi hanya ketika jalur vision tidak memiliki gradien |
policy.use_flex_attention=true | Setup CUDA yang diprofiling dengan isolasi pengetahuan dan flow_num_repeats > 1; selain itu, SDPA digunakan |
policy.use_manual_attention=true | Bentuk yang diprofilingkan secara eksplisit di mana perhatian yang dimaterialisasi lebih cepat |
policy.manual_attention_scope=action | Membatasi perhatian manual pada kueri aksi |
Jangan mengaktifkan setiap backend secara buta. Flex dan manual attention saling eksklusif, dan alternatif attention/AdaRMS memerlukan isolasi pengetahuan. Konfigurasi terbaik berdasarkan benchmark menggunakan compiled text CE dan FlashRT AdaRMS, dengan Flex/manual attention dan compiled vision dinonaktifkan.
Kinerja inferensi
FineART-VLA memiliki dua loop inferensi, dan keduanya menghindari pengkodean ulang prefix multimodal yang mahal secara berulang:
- Action denoising mengodekan prefix gambar/bahasa sekali, menggunakan ulang cache KV-nya di seluruh langkah flow, membangun mask suffix aksi di perangkat, dan memangkas K/V suffix sementara alih-alih mengkloning cache prefix. Jadwal timestep dibuat di perangkat sekali per chunk, mempertahankan aritmetika timestep historis. Detail implementasi ini tidak menjamin percepatan end-to-end tanpa benchmarking.
- Language decoding menggunakan penyangga KV autoregresif, sehingga setiap token baru hanya memproses token yang disampelkan terhadap kunci gambar/bahasa yang disangga, alih-alih menjalankan ulang seluruh prefiks.
Runtime bersama menjalankan bahasa dan aksi pada laju yang berbeda. Tingkatkan --autosteer_interval_s ketika subtask tetap valid lebih lama, atau gunakan /subtask untuk memberikan instruksi secara langsung tanpa generasi bahasa. Interval yang lebih panjang mengurangi biaya generasi tetapi juga memperlambat perencanaan ulang.
Jalankan checkpoint
Gunakan lerobot-rollout dengan konfigurasi robot/kamera yang sesuai dengan checkpoint, --interactive=true, dan --autosteer_interval_s=3. Pilih --inference.type=sync atau --inference.type=rtc. Di terminal interaktif, /autosteer <goal> mengaktifkan subtask yang dihasilkan, /subtask <instruction> menyediakan satu secara manual, dan /start memulai kontrol robot. Lihat Kontrol bahasa interaktif untuk pengaturan perangkat keras lengkap, perilaku keselamatan, dan kontrol perekaman. Opsi CLI adapter lama --sim, --mode, dan --high_level_hz tidak menjadi bagian dari antarmuka ini.
Pemecahan Masalah
- Gradien flow-loss yang besar: FineART-VLA menjalankan KI-off joint prefix/action attention pada backend matematika PyTorch SDPA dengan aritmetika attention FP32, lalu mengonversi kembali outputnya ke dtype model (PI0.5 standar mempertahankan eager attention-nya). Hal ini menghindari attention presisi-rendah, yang dapat mendestabilkan gradien pada timestep flow rendah dengan aktivasi query/key yang besar. Checkpoint yang ada dan lapisan normalisasi tidak berubah; KI-off tetap melatih melalui kunci dan nilai VLM. Pantau
flow_loss,text_loss, dan norma gradien sebelum pemotongan secara terpisah, alih-alih hanya mengandalkan total loss yang terbatas. - Tidak ada kerugian teks atau subtask yang dihasilkan: pastikan resep yang dipilih dapat mengikat anotasi pada frame yang diambil dan bahwa
policy.text_loss_weight > 0. - Subtask terlihat masuk akal tetapi aksi gagal: verifikasi batas subtask, statistik state/aksi yang dinormalisasi, dan bahwa sampel resep tingkat rendah ada.
- Teks runtuh menjadi token berulang atau token lokasi: periksa cakupan target teks, laju pembelajaran kepala bahasa, dan keseimbangan antara kerugian aliran, FAST, dan teks.
- Out of memory: kurangi ukuran batch terlebih dahulu, lalu aktifkan gradient checkpointing. Jangan aktifkan backend perhatian yang dikompilasi atau alternatif tanpa memprofilkan memori mereka pada jumlah kamera Anda.
- Rollout lambat: pisahkan latensi aksi dari latensi bahasa, lalu sesuaikan
--autosteer_interval_s(seberapa sering subtask baru dihasilkan) dan--policy.num_inference_steps(langkah denoising flow).
Sitasi
Jika Anda menggunakan FineART-VLA atau dataset FineART, silakan kutip:
@misc{choghari2026fineart,
title = {FineART: Fine-Grained Annotated Robotic Trajectory Dataset and Vision-Language-Action Model for Bimanual Manipulation},
author = {Choghari, Jade and Kooijmans, Pepijn and Agarwal, Mansi and Ciftci, Yusuf Umut and Doriwala, Aseem and Weaver, Catherine and Sivapurapu, Mouli and Yang, Kai and Lee, Jackson and Wolf, Thomas and Mannam, Pragna},
year = {2026},
}FineART-VLA dibangun di atas π₀.₅ dan knowledge insulation dari Physical Intelligence.
Lisensi
Model ini mengikuti Lisensi Apache 2.0, yang konsisten dengan repo OpenPI asli tempat backbone PI0.5 diadaptasi.
Update on GitHub