
Lakukan fine-tuning Pi0.5, VLA pencocokan aliran dari Physical Intelligence, dengan data robot Anda sendiri. Perintah nyata untuk openpi dan lerobot pi05, jebakan format dataset, batas VRAM dan latensi.
Pi0.5 adalah model yang Anda gunakan ketika sebuah kebijakan harus bekerja di ruangan yang belum pernah dilihatnya. Ini juga merupakan yang paling canggung dari lima kebijakan yang dapat dilatih di sini untuk melakukan fine-tune secara manual: repositori hulu adalah JAX terlebih dahulu, port LeRobot memindahkan deployment keluar dari lerobot-record di 0.6.0 dan membuat instalasi dasar terlalu kecil untuk dilatih, dan fine-tune penuh tidak muat di 4090. Di bawah: berapa biaya pencocokan aliran pada inferensi, dua rute perintah, dan angka 485 ms yang menentukan apakah hasilnya dapat digunakan.
Yang perlu Anda ketahui
- •VLA pencocokan aliran: VLM PaliGemma 3B ditambah ahli tindakan 300M yang mendekode potongan tindakan berkelanjutan. Dua rute untuk melakukan fine-tune, openpi dan LeRobot pi05, terpisah 0.65 poin pada rata-rata LIBERO.
- •Fine-tuning penuh membutuhkan lebih dari 70 GB VRAM. openpi mencantumkan LoRA pada 22.5 GB, hanya pada jalur JAX-nya.
- •Dataset harus LeRobotDataset v3.0 dengan kuantil q01 dan q99 di meta/stats.json, atau batch pertama akan error.
- •Periksa versi lerobot Anda terlebih dahulu: 0.6.0 membuat paket dasar ringan dan memindahkan deployment keluar dari lerobot-record.
- •Di sini ia berjalan pada 485 ms per langkah tindakan, membutuhkan 50 episode, dan biayanya sekitar 4 hingga 12 USD per eksekusi.
Apa sebenarnya Pi0.5 itu
Physical Intelligence menerbitkan pi0 pada Oktober 2024: sebuah model visi-bahasa-tindakan pencocokan aliran pada VLM yang telah dilatih sebelumnya: PaliGemma dengan 3 miliar parameter ditambah ahli tindakan 300M yang diinisialisasi dari awal, total 3.3 miliar. Makalah tersebut melaporkan pra-pelatihan lebih dari 10.000 jam data robot di 7 konfigurasi robot dan 68 tugas. Lebih lanjut di artikel pi0.
Pi0.5 (arXiv 2504.16054, 22 April 2025) mempertahankan kerangka tersebut dan mengubah pola pelatihan: data web, deteksi objek, instruksi verbal dari manusia yang melatih robot, label subtugas, data lintas-embodimen dari robot di banyak rumah. Hasilnya adalah robot yang membersihkan dapur di rumah-rumah yang tidak termasuk dalam set pelatihan. README openpi menambahkan detail yang tidak disebutkan dalam judul: pi0.5 yang dirilis dilatih dengan isolasi pengetahuan (arXiv 2505.23705).
| Properti | pi0 | pi0.5 |
|---|---|---|
| Varian backbone VLM | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Varian pakar aksi | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| action_horizon default | 50 | 50 |
| max_token_len | 48 | 200 |
| discrete_state_input | false | true, status didiskretisasi menjadi bin dalam prompt |
| Base checkpoint | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
README openpi secara eksplisit menyatakan: repositori hanya mendukung kepala pencocokan aliran (flow matching head), baik untuk pelatihan maupun inferensi pi0.5. Makalah ini menjelaskan dua tahap dan kode hanya menjalankan tahap kedua: pra-pelatihan merepresentasikan setiap aksi sebagai token diskrit melalui tokenizer FAST, dan saat penerapan model menyimpulkan subtugas tingkat tinggi sebelum setiap potongan aksi. Tidak satu pun dari itu ada di repositori. Kartu lerobot/pi05_base memberikan daftar yang sama dan menambahkan RL, meskipun makalah pi0.5 sama sekali tidak menjelaskan tahap pembelajaran penguatan (reinforcement learning). Port LeRobot mewarisi cakupan tersebut, begitu pula setiap pelatih yang di-host di dalamnya, termasuk yang ada di sini. Perizinan juga terbagi: halaman dokumen pi05 menyatakan Apache 2.0, kartu lerobot/pi05_base ditandai license: gemma.
Apa yang diubah oleh pencocokan aliran (flow matching) tentang pelatihan dan inferensi
Sebuah kebijakan yang dapat Anda latih pada SO-100 baik meregresi tindakan secara langsung (ACT) atau melakukan tokenisasi dan mendekode secara autoregresif (pi0-FAST). Pencocokan aliran tidak melakukan keduanya: ia mempelajari medan vektor yang mengangkut derau ke sebuah chunk tindakan yang bersih, kemudian mengintegrasikannya. Makalah pi0 menggunakan 10 langkah integrasi dengan ukuran langkah 0.1; konfigurasi pi05 LeRobot memiliki nilai `num_inference_steps: int = 10` yang sama.
- Pelatihan: loss meregresi chunk tindakan yang berderau. Tidak ada tokenizer untuk disetel, tidak ada diskretisasi sudut sendi Anda.
- Inferensi: satu chunk membutuhkan sepuluh forward pass melalui action expert. Itu bersifat struktural, bukan masalah penyetelan.
- Output: tindakan kontinu berdimensi 32, di-padding secara internal, loss diambil pada dimensi yang dimiliki robot Anda. Lengan 6-DoF ditambah gripper menggunakan 7.
# openpi/src/openpi/models/pi0_config.py - the defaults every pi05 config inherits
@dataclasses.dataclass(frozen=True)
class Pi0Config(_model.BaseModelConfig):
dtype: str = "bfloat16"
paligemma_variant: _gemma.Variant = "gemma_2b"
action_expert_variant: _gemma.Variant = "gemma_300m"
action_dim: int = 32
action_horizon: int = 50
max_token_len: int = None # 200 if pi05 else 48
pi05: bool = False # flips discrete_state_input to TrueBackbone PaliGemma, dan gerbang di depannya
PaliGemma (arXiv 2407.07726) adalah encoder visi SigLIP-So400m pada model bahasa Gemma-2B, sekitar 3B parameter. Pi0.5 mewarisi tokenizernya, dan tokenizer tersebut berada di repositori berpagar. Ini adalah cara paling umum sebuah percobaan pertama gagal, sebelum langkah pelatihan.
Dokumentasi LeRobot pi05 menyatakannya dengan jelas: pi0.5 menggunakan tokenizer google/paligemma-3b-pt-224 yang berpagar, jadi terima lisensinya di Hub dan jalankan hf auth login terlebih dahulu. Akses diberikan secara manual, tidak instan. Lewati ini, mulai jalankan cloud berbayar, dan Anda membayar untuk pod yang tidak dapat mengunduh tokenizer.
Sebelum Anda memulai: format dataset, episode, perangkat keras
Pi0.5 di LeRobot membaca dataset LeRobot dalam tata letak v3.0, yang hadir dengan lerobot 0.4.0 pada Oktober 2025: banyak episode per file Parquet dan MP4 alih-alih satu file per episode, dengan batasan di meta/episodes/ daripada nama file. Rekam dengan klien desktop atau ikuti rekam dataset pertama Anda dan Anda memilikinya.
| Mode | Memori GPU yang dibutuhkan | Contoh GPU |
|---|---|---|
| Inferensi | more than 8 GB | RTX 4090 |
| Fine-tuning, LoRA | more than 22.5 GB | RTX 4090 |
| Fine-tuning, penuh | more than 70 GB | A100 80 GB or H100 |
Pi0.5 dan SmolVLA membutuhkan LeRobot v3.0. GR00T N1.7 dan GR00T N1.5 membutuhkan **v2.0 atau v2.1** dan akan mengalami crash pada dataset v3.0. Satu sesi perekaman tidak dapat digunakan untuk keduanya tanpa konversi, dan pesan kesalahan tidak menyatakan "wrong dataset version". Lihat dataset ditolak: v3 diperlukan.
# v2.1 -> v3.0, run against a dataset already on the Hub
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=<HF_USER/DATASET_ID>
# aggregates episode-0000.parquet, episode-0001.parquet, ... -> file-0000.parquet
# aggregates episode-0000.mp4, episode-0001.mp4, ... -> file-0000.mp4
# rewrites meta/episodes/* with per-episode lengths, tasks and offsetsPlatform ini membutuhkan setidaknya 50 episode untuk Pi0.5, jumlah minimum yang sama dengan GR00T dan ACT. Pra-pelatihan melakukan sebagian besar pekerjaan, jadi 50 episode yang bersih lebih baik daripada 200 episode yang ceroboh. Baru mengenal ini? Mulailah dengan panduan pengumpulan data.

Rute A: fine-tune dengan repositori openpi
Implementasi referensi: JAX pertama, diuji hanya pada Ubuntu 22.04, didorong oleh objek konfigurasi daripada flag. Jalur PyTorch tiba pada September 2025, divalidasi pada LIBERO. Tiga langkah: konversi data Anda, definisikan konfigurasi, latih dan sajikan.
- 1Kloning dan instal
openpi menggunakan uv. GIT_LFS_SKIP_SMUDGE adalah yang memungkinkan LeRobot masuk sebagai dependensi tanpa blob LFS.
bashgit clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git cd openpi GIT_LFS_SKIP_SMUDGE=1 uv sync GIT_LFS_SKIP_SMUDGE=1 uv pip install -e . - 2Konversi data Anda ke dataset LeRobot
Upstream menyediakan konverter untuk LIBERO dan DROID dan mengharapkan Anda untuk mengadaptasi salah satunya. Pekerjaannya adalah pemetaan kunci.
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3Tambahkan konfigurasi pelatihan
Konfigurasi adalah entri TrainConfig di src/openpi/training/config.py. Yang ini mengadaptasi pi05_droid_finetune, dengan pemuat bobot diarahkan ke pi05_base.
pythonTrainConfig( name="pi05_so100", model=pi0_config.Pi0Config( pi05=True, action_dim=32, # pi05 is trained with 32-dim actions action_horizon=16, ), # Copy LeRobotLiberoDataConfig in the same file and rewrite the key # mapping for your camera names, then reference your copy here. data=LeRobotLiberoDataConfig( repo_id="your_hf_username/my_so100_dataset", base_config=DataConfig(prompt_from_task=True), ), weight_loader=weight_loaders.CheckpointWeightLoader( "gs://openpi-assets/checkpoints/pi05_base/params" ), batch_size=32, num_train_steps=20_000, ) - 4Hitung statistik normalisasi
Berjalan terhadap nama konfigurasi, bukan dataset. Melewatkannya adalah kegagalan pertama yang klasik di sini.
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5Latih
Variabel ini memungkinkan JAX menggunakan 90 persen memori GPU alih-alih default 75. Pada kartu 80 GB, ini menentukan apakah proses berjalan akan bertahan.
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6Sajikan
Server mendengarkan di port 8000 dan menjawab kueri observasi; runtime robot Anda adalah kliennya.
bashuv run scripts/serve_policy.py policy:checkpoint \ --policy.config=pi05_so100 \ --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Implementasi PyTorch openpi tidak mendukung bobot pi0-FAST, presisi campuran, FSDP, LoRA, atau EMA, sehingga LoRA yang mencapai 22.5 GB hanya tersedia di JAX, melalui varian gemma_2b_lora dan gemma_300m_lora. Lebih buruk lagi: pengaturan ini menyalin file yang ditambal ke atas transformers 4.53.2 yang Anda instal, dan README memperingatkan bahwa dengan mode hardlink default uv, ini secara permanen memodifikasi transformers di cache uv dan dapat bocor ke proyek lain. Batalkan dengan uv cache clean transformers.
Rute B: fine-tune dengan lerobot pi05
Port LeRobot membungkus bobot yang sama dalam CLI yang sudah Anda gunakan untuk ACT dan SmolVLA. Semua yang di bawah ini telah diperiksa terhadap lerobot 0.6.1, rilis sejak 3 Agustus 2026, dan dokumen pi05 pada 23 Agustus 2026. Versi penting di sini: dataset v3.0 tiba dengan 0.4.0 pada Oktober 2025, blog 0.5.0 pada 9 Maret 2026 menyajikan pi0-FAST dan Real-Time Chunking, dan 0.6.0 pada 6 Juli 2026 membuat paket dasar menjadi ringan dan memindahkan deployment ke lerobot-rollout.
Satu hal yang tidak berubah: lerobot-train dan lerobot-record sudah menjadi titik masuk di 0.3.2, Agustus 2025. Sebuah tutorial yang masih memanggil python -m lerobot.scripts.train mendahului perubahan selama setahun dan patut dicurigai juga pada bagian lainnya.
- 1Instal dengan Ekstra yang Tepat
Sejak 0.6.0, instalasi dasar hanya membawa dependensi ML inti, dan ekstra pi tidak menambahkan kode dataset atau pelatihan, sehingga fine-tune juga memerlukan ekstra pelatihan. Perintah satu baris yang lebih lama akan gagal pada saat import.
bash# policy dependencies plus the training stack pip install 'lerobot[pi,training]' # from a source checkout pip install -e ".[pi,training]" # driving an SO-100 afterwards needs the robot extras too pip install 'lerobot[core_scripts,feetech]' - 2Autentikasi
Terima lisensi paligemma-3b-pt-224 di browser, lalu masuk ke mesin yang melakukan pelatihan.
bashhf auth login - 3Tambahkan Statistik Kuantil
Pi0.5 menormalisasi STATE dan ACTION dengan kuantil, sehingga meta/stats.json memerlukan q01 dan q99. Dataset yang lebih lama hanya berisi min, max, mean, std.
bashlerobot-edit-dataset \ --repo_id your_dataset \ --new_repo_id your_dataset \ --operation.type recompute_stats \ --operation.overwrite true - 4Fine-tune dari lerobot/pi05_base
Atur ukuran batch sesuai kemampuan kartu Anda; dokumentasi menggunakan 64 pada LIBERO dengan 80 GB. Berikan bfloat16 secara eksplisit, default konfigurasi adalah float32.
bashlerobot-train \ --dataset.repo_id=${HF_USER}/my_so100_dataset \ --policy.type=pi05 \ --policy.pretrained_path=lerobot/pi05_base \ --policy.gradient_checkpointing=true \ --policy.dtype=bfloat16 \ --policy.device=cuda \ --policy.push_to_hub=false \ --output_dir=./outputs/pi05_so100 \ --job_name=pi05_so100 \ --batch_size=4 \ --num_workers=8 \ --steps=30000 \ --save_freq=5000 \ --seed=1000 - 5Jalankan di Lengan Robot
Pada 0.6.x ini adalah lerobot-rollout: lerobot-record menolak kebijakan dan menolak nama dataset eval_. Base menggerakkan lengan, sentry merekam rollout.
bashlerobot-rollout \ --strategy.type=base \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \ --task="Put lego brick into the transparent box" \ --duration=60 # same run, recorded into an eval_ dataset lerobot-rollout \ --strategy.type=sentry \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --dataset.repo_id=${HF_USER}/eval_so100 \ --dataset.single_task="Put lego brick into the transparent box" \ --duration=600
| Flag | What it does | Note |
|---|---|---|
| --policy.type=pi05 | memilih Pi0.5 | diperlukan dengan pretrained_path, hilangkan dengan --policy.path |
| --policy.pretrained_path | hanya memuat bobot | nama fitur dari dataset Anda, pengaturan yang tersimpan direset |
| --policy.path | bobot ditambah config.json checkpoint | pengaturan yang tersimpan seperti n_action_steps diwarisi |
| --policy.n_action_steps | langkah yang dikonsumsi per chunk | kembali ke 50, tidak pernah di atas chunk_size (default 50) |
| --policy.train_expert_only | membekukan VLM, melatih pakar | default false, memori lebih sedikit, ada biaya dalam keberhasilan |
| --policy.gradient_checkpointing | hitung ulang alih-alih menyimpan aktivasi | default false, tuas pertama ketika sebuah proses tidak muat |
| --peft.method_type=LORA | adapter LoRA alih-alih bobot penuh | membutuhkan ekstra peft, contoh yang didokumentasikan adalah SmolVLA |
| --policy.rtc_training_max_delay | kondisi awalan aksi untuk RTC | hanya di branch utama, tidak di 0.6.1, harus tetap di bawah chunk_size |
| --rename_map | memetakan kolom dataset ke fitur kebijakan | diperlukan ketika kunci kamera Anda berbeda |
Tanpa kuantil, Anda akan mendapatkan ValueError: QUANTILES normalization mode requires q01 and q99 stats pada batch pertama. Hitung ulang statistik, tetapi hasilnya akan berada di $HF_LEROBOT_HOME/your_dataset, bukan cache yang dibaca oleh --dataset.repo_id, jadi latih dengan --dataset.root yang menunjuk ke sana atau dorong ke Hub. Atau lewati kuantil dengan --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', seperti yang dilakukan perintah referensi LIBERO.
Tiga set default, dan mana yang mencapai pelatih
openpi's TrainConfig adalah referensi, PI05Config LeRobot adalah apa yang digunakan lerobot-train ketika Anda tidak mengatakan apa-apa, dan formulir di sini mengirimkan set ketiga. Kejutan ada pada laju pembelajaran: kedua default upstream mencapai puncaknya pada 2.5e-5, sementara konfigurasi pi05_libero milik openpi sendiri dan platform ini menaikkannya menjadi 5e-5.
| Pengaturan | openpi TrainConfig | lerobot pi05 dan lerobot-train | AY-Robots mengirimkan |
|---|---|---|---|
| Ukuran batch | 32 | 8 | 1 |
| Laju pembelajaran puncak | 2.5e-5, penurunan kosinus | optimizer_lr 2.5e-5 | 5e-5 |
| Langkah pelatihan | 30,000 | 100,000 | 30,000 |
| Interval checkpoint | 1,000 steps | 20,000 steps | tidak ada di formulir |
| Seed | 42 | 1,000 | ada di formulir |
| Potongan aksi | action_horizon 50 | chunk_size 50, n_action_steps 50 | tidak ada di formulir |
| Tipe data bobot | bfloat16 | float32 until you pass --policy.dtype | tidak ada di formulir |
| Akumulasi gradien | tidak ada pengaturan seperti itu, fsdp_devices sebagai gantinya | absent from every release so far | 16, dan itu dihilangkan |
Apakah porting-nya akurat? Tim LeRobot menyempurnakan model dasar LIBERO selama 6 ribu langkah lebih lanjut dan membandingkannya dengan angka referensi openpi pada empat suite: rata-rata 97,5 persen berbanding 96,85, unggul pada Libero 10, tertinggal pada Spatial. Rute ini adalah pilihan perkakas, bukan pilihan kualitas.
- Lebih dari 10.000 jam pra-pelatihan robot di baliknya, jadi 50 episode tugas Anda bisa cukup.
- Aksi berkelanjutan: tidak ada tokenizer untuk disetel, tidak ada batas diskretisasi pada sudut sendi Anda.
- Port LeRobot mencetak 97,5 persen pada rata-rata LIBERO dibandingkan 96,85 milik openpi, jadi CLI yang lebih ramah tidak memakan biaya yang terukur.
- Jalur efisien parameter di kedua sisi: varian JAX LoRA openpi, integrasi PEFT LeRobot.
- Penyempurnaan penuh membutuhkan lebih dari 70 GB. Angka LoRA 22,5 GB adalah angka JAX openpi; tidak ada yang dipublikasikan untuk pi05 di bawah PEFT.
- 485 ms per langkah aksi, paling lambat dari lima di sini: dua kali SmolVLA, dua puluh empat kali ACT.
- LeRobot v3.0 diperlukan, jadi dataset yang direkam untuk eksekusi GR00T perlu dikonversi, dan sebaliknya.
- Opsi baru mendarat di main terlebih dahulu: memori RTC dan MEM waktu pelatihan tidak ada di 0.6.1, jadi dokumen terbaru bisa berarti menginstal dari git.
Realitas 485 ms, dan di mana ia berhenti dapat digunakan
Ini menentukan proyek Anda, jadi ini ditempatkan sebelum tabel biaya. per langkah tindakan yang diukur di sini untuk Pi0.5 adalah 485 ms. Dibandingkan dengan empat lainnya:
| Kebijakan | Inferensi per langkah tindakan | Parameter | Tingkat GPU | Episode Minimum |
|---|---|---|---|---|
| ACT | 20 ms | ~80 M | RTX 4090 or any 24 GB card | 50 |
| GR00T N1.7 | 152 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| GR00T N1.5 | 165 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| SmolVLA | 245 ms | ~450 M | RTX 4090 or any 24 GB card | 30 |
| Pi0.5 | 485 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |

Loop kontrol di kelima model ini berjalan 20 hingga 485 ms per langkah aksi. Perjalanan pulang-pergi internet publik di atas 485 ms mengubah kebijakan yang berfungsi menjadi ragu-ragu. Inferensi jarak jauh dapat dilakukan untuk tugas ambil-dan-letakkan yang lambat, bukan untuk gerakan reaktif yang cepat. Kami lebih suka mengatakan itu daripada menjual demo yang hanya berfungsi di LAN. Jika lengan Anda berhenti di antara potongan, mulailah dari kebijakan membeku di tengah gerakan.
Upstream memiliki jawaban, dan separuhnya sudah ada dalam rilis yang dapat Anda instal. Real-Time Chunking menghasilkan potongan berikutnya saat lengan masih mengeksekusi potongan saat ini, kemudian memandu langkah-langkah yang tumpang tindih dari potongan baru agar tetap dekat dengan bagian yang sudah dieksekusi, sehingga lengan tidak macet atau tersentak di sambungan. Bentuk waktu inferensi yang disertakan dalam changelog 0.4.2 untuk Pi0, Pi0.5, dan SmolVLA adalah flag rollout, bukan retrain:
lerobot-rollout \
--strategy.type=base \
--policy.path=${HF_USER}/my_policy \
--inference.type=rtc \
--inference.rtc.execution_horizon=10 \
--inference.rtc.max_guidance_weight=10.0 \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM1 \
--robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
--task="Put lego brick into the transparent box" \
--duration=60Ini tidak membuat model lebih cepat. Ini menyembunyikan celah: 485 ms masih dihabiskan, tetapi di luar jalur kritis, sehingga antrean tidak kosong di antara potongan. Varian waktu pelatihan dari arXiv 2512.05964 melangkah lebih jauh: model belajar untuk mengkondisikan awalan aksi yang bersih, sehingga pada inferensi tumpang tindih di-inpainting secara keras dengan timestep aliran per-aksi alih-alih dipandu, dan lintasan mundur panduan menghilang. Selama pelatihan, ia mengambil sampel panjang awalan per contoh dan mengambil kerugian aliran pada postfix yang tersisa. Flag itu hanya ada di main, bukan di 0.6.1, dan penundaan yang Anda latih harus tetap di bawah chunk_size.
Dua cara untuk mendapatkan checkpoint Pi0.5
Anda menyewa atau memiliki kartu 80 GB, menginstal salah satu stack di atas, mengonversi dataset Anda, dan mengawasi jalannya proses. Anda mempertahankan setiap kontrol: JAX LoRA dari openpi, adapter PEFT dari LeRobot, tindakan relatif, pemetaan kunci kustom. Anda juga menanggung setiap kegagalan.
- Perangkat Keras: A100 80 GB atau H100, atau kartu 24 GB pada jalur JAX LoRA openpi.
- Pengaturan: satu sore untuk percobaan pertama, sebagian besar untuk pemetaan kunci dan tokenizer berpagar.
- Tidak tersedia di formulir yang di-host: adapter PEFT, tindakan relatif, RTC waktu pelatihan, memori MEM.
lerobot-train \
--dataset.repo_id=${HF_USER}/my_so100_dataset \
--policy.type=pi05 \
--policy.pretrained_path=lerobot/pi05_base \
--policy.rtc_training_max_delay=10 \
--policy.gradient_checkpointing=true \
--policy.dtype=bfloat16 \
--batch_size=4 --steps=30000 --seed=1000Anda memilih model dan dataset di formulir pelatihan, backend menyewa GPU di pasar spot berdasarkan VRAM yang dibutuhkan, menjalankan trainer, dan menulis checkpoint ke penyimpanan objek. Pi0.5 hanya tersedia di cloud di sini. Panduan tersedia untuk SO-100, SO-101, Koch v1.1 dan LeKiwi.
| Pengaturan | Apa yang dikirim platform untuk Pi0.5 |
|---|---|
| Base checkpoint | lerobot/pi05_base |
| Tipe kebijakan | pi05 |
| Ukuran batch | 1 |
| Laju pembelajaran | 5e-5 |
| Langkah maksimum | 30000 |
| Akumulasi gradien | 16, tetapi lihat peringatan di bawah |
| Kontrol tambahan di formulir | seed, logFreq |
| Format dataset | LeRobot v3.0 |
| Tingkat GPU | A100 80 GB atau H100 80 GB |
Trainer mengirimkan nilai akumulasi gradien 16 dan lerobot 0.5.1 tidak memiliki flag untuk menerimanya, sehingga diabaikan. Tidak ada lerobot yang dirilis yang memilikinya: kontrol ini hanya ada di main, sebagai --accelerator.gradient_accumulation.steps. Ukuran batch efektif di sini adalah 1, dibandingkan dengan 256 yang digunakan oleh konfigurasi pi05_libero openpi. Penting untuk diketahui sebelum Anda membaca kurva kerugian. Kontrol ini berlaku pada GR00T N1.7 dan GR00T N1.5.
Inferensi bekerja dengan cara yang sama: sebuah pod disediakan untuk melayani kebijakan dan klien lokal Anda berkomunikasi dengannya. Pod memiliki watchdog idle dan menghancurkan dirinya sendiri, sehingga tab yang terlupakan tidak akan menagih secara diam-diam. Peringatan latensi berlaku, itulah sebabnya ACT pada 20 ms sering memenangkan tugas cepat.
Ketika tidak berfungsi
| Gejala | Penyebab paling mungkin |
|---|---|
| Eksekusi ditolak sebelum dimulai | Dataset v2.1 tetapi Pi0.5 menginginkan v3.0, atau sebaliknya untuk GR00T |
| ImportError, paket datasets hilang | lerobot 0.6.x tanpa training extra |
| ValueError tentang q01 dan q99 pada batch satu | Tidak ada kuantil di meta/stats.json; hitung ulang atau gunakan MEAN_STD |
| CUDA kehabisan memori pada langkah 0 | Fine-tune penuh di bawah 70 GB; coba checkpointing atau train_expert_only |
| Error 401 atau gated repo | Lisensi tokenizer PaliGemma tidak diterima |
| Loss turun, robot tidak melakukan apa-apa | Ketidakcocokan normalisasi, atau kebijakan menyalin state |
| Lengan berhenti di antara chunk | Latensi per langkah ditambah round trip; antrean chunk kosong |
| Berfungsi di satu pengaturan, gagal di pengaturan lain | Terlalu sedikit episode, atau semuanya dalam satu konfigurasi |
- Dataset ditolak: v3 diperlukan
- Memori habis saat pelatihan
- Loss menurun tetapi kebijakan tidak melakukan apa-apa
- Kebijakan membeku di tengah gerakan
- Kebijakan hanya berfungsi dalam satu pengaturan
- Pekerjaan pelatihan macet dalam antrean
Berapa biaya satu kali jalankan
Pi0.5 berada di tingkat mahal karena membutuhkan kartu 80 GB, dan harga spot bergerak, sehingga angkanya adalah rentang daripada harga. Untuk banyak tugas SO-100, latih SmolVLA atau ACT pada tingkat 24 GB terlebih dahulu, pastikan tugas tersebut dapat dipelajari sama sekali, lalu habiskan jam A100 untuk itu. Latih kebijakan pertama Anda menjelaskan alur yang lebih murah itu, dan harga menampilkan tingkat saat ini.
| Tingkat | Kebijakan | Jalankan tipikal | Harga per jam | Biaya per jalankan |
|---|---|---|---|---|
| A100 80 GB atau H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 hingga 6 jam | 1.20 hingga 2.00 USD | sekitar 4 hingga 12 USD |
| RTX 4090 atau kartu 24 GB apa pun | SmolVLA, ACT | 2 hingga 5 jam | 0.30 hingga 0.60 USD | sekitar 1 hingga 3 USD |

Sebelum menghabiskan malam: GR00T N1.7 against Pi0.5 dan Pi0.5 against SmolVLA menyajikan angka-angka yang sama secara langsung. Arena berisi 85 model VLA dengan 332 hasil benchmark, masing-masing terhubung ke sumbernya, dan latar belakang tentang keluarga tersebut ada di ikhtisar VLA kami.
Latih Pi0.5 tanpa membangun tumpukan
Pilih dataset dan hyperparameter dalam sebuah formulir. Backend menyewa kartu 80 GB di pasar spot, menjalankan trainer, dan menulis checkpoint ke penyimpanan objek. Panduan untuk SO-100, SO-101, Koch v1.1, dan LeKiwi.
Buka panduan pelatihanBisakah saya melakukan fine-tune Pi0.5 pada RTX 4090?▾
Bukan fine-tune penuh: openpi mencantumkan lebih dari 70 GB untuk itu, jadi A100 80 GB atau H100. Angka LoRA 22.5 GB miliknya termasuk dalam jalur JAX; implementasi PyTorch tidak memiliki LoRA. Integrasi PEFT LeRobot ada, tetapi contoh yang didokumentasikan adalah SmolVLA dan tidak ada angka VRAM yang dipublikasikan untuk pi05.
Berapa banyak episode yang saya butuhkan?▾
Lima puluh, batas bawah yang sama dengan GR00T dan ACT; hanya SmolVLA yang lebih rendah, yaitu 30. Checkpoint dasar membawa lebih dari 10.000 jam pra-pelatihan, sehingga fine-tune beradaptasi daripada belajar dari nol: 50 episode yang bersih dan bervariasi mengalahkan dua ratus episode dari satu konfigurasi.
Apa perbedaan antara --policy.path dan --policy.pretrained_path?▾
--policy.path memuat bobot dan config.json checkpoint, sehingga pengaturan yang tersimpan seperti n_action_steps diwarisi dan --policy.type harus dihilangkan. --policy.pretrained_path hanya memuat bobot: nama fitur berasal dari dataset Anda, pengaturan yang tersimpan direset, --policy.type diperlukan. Itulah mengapa perintah LIBERO secara eksplisit meneruskan n_action_steps=10 dan empty_cameras=1; jika tidak, mereka akan kembali ke 50 dan 0.
Apakah versi terbuka memberikan saya Pi0.5 penuh dari makalah?▾
Tidak. Keduanya hanya mendukung kepala aksi pencocokan aliran. Tahap pra-pelatihan token diskrit dengan tokenizer aksi FAST dan prediksi subtugas tingkat tinggi tidak dirilis, dan kartu lerobot/pi05_base menambahkan RL ke daftar itu meskipun makalah pi0.5 tidak menjelaskan tahap pembelajaran penguatan. Anda melatih kebijakan tingkat rendah yang dikondisikan pada string bahasa yang Anda berikan, bukan model yang menguraikan tugas panjang itu sendiri.
Panduan ini ditulis berdasarkan versi berapa?▾
openpi di main dan lerobot 0.6.1, rilis sejak 3 Agustus 2026, keduanya dibaca pada 23 Agustus 2026. Dataset v3.0 tiba dengan 0.4.0 pada Oktober 2025. 0.6.0 membuat paket dasar ringan, sehingga lerobot[pi] saja tidak lagi menginstal tumpukan pelatihan, dan memindahkan deployment ke lerobot-rollout. RTC waktu pelatihan hanya ada di main; trainer yang di-host di sini menjalankan 0.5.1.
Sources
- Physical-Intelligence/openpi: open-source models and packages for robotics
- openpi training configs, including pi05_libero and pi05_droid_finetune
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- pi0.5: a Vision-Language-Action Model with Open-World Generalization
- Knowledge Insulating Vision-Language-Action Models: Train Fast, Run Fast, Generalize Better
- PaliGemma: A versatile 3B VLM for transfer
- Training-Time Action Conditioning for Efficient Real-Time Chunking
- LeRobot pi05 documentation on the main branch, including training-time RTC
- LeRobot documentation: parameter efficient fine-tuning with PEFT
- LeRobotDataset v3.0 format documentation
- LeRobot release notes: v0.3.2 through v0.6.1, with the v0.6.0 breaking changes
- LeRobot v0.5.0: Scaling Every Dimension
- lerobot/pi05_base model card
- LeRobot documentation: Real-Time Chunking (RTC)
- openpi Pi0Config: the model defaults pi0 and pi05 inherit
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started