
Reglează fin Pi0.5, VLA-ul de tip flow-matching de la Physical Intelligence, pe propriile date de robot. Comenzi reale pentru openpi și lerobot pi05, capcanele formatului setului de date, limitele VRAM și ale latenței.
Pi0.5 este modelul la care apelezi atunci când o politică trebuie să funcționeze într-o încăpere pe care nu a mai văzut-o niciodată. Este, de asemenea, cea mai dificilă dintre cele cinci politici antrenabile de aici pentru a ajusta fin manual: depozitul upstream este în primul rând JAX, portul LeRobot a mutat implementarea din lerobot-record în 0.6.0 și a făcut instalarea de bază prea mică pentru antrenament, iar o ajustare fină completă nu încape pe un 4090. Mai jos: ce potrivire a fluxului costă la inferență, cele două rute de comandă și numărul de 485 ms care decide dacă rezultatul este utilizabil.
Ce trebuie să știți
- •Un VLA cu potrivire a fluxului: un VLM PaliGemma de 3B plus un expert de acțiune de 300M care decodifică fragmente continue de acțiune. Două rute pentru ajustarea sa fină, openpi și LeRobot pi05, la o distanță de 0.65 puncte pe media LIBERO.
- •Ajustarea fină completă necesită mai mult de 70 GB de VRAM. openpi listează LoRA la 22.5 GB, doar pe calea sa JAX.
- •Setul de date trebuie să fie LeRobotDataset v3.0 cu cuantilele q01 și q99 în meta/stats.json, altfel prima prelucrare pe lot va eșua.
- •Verificați mai întâi versiunea lerobot: 0.6.0 a făcut pachetul de bază ușor și a mutat implementarea din lerobot-record.
- •Aici rulează la 485 ms per pas de acțiune, necesită 50 de episoade și costă aproximativ 4 până la 12 USD per rulare.
Ce este de fapt Pi0.5
Physical Intelligence a publicat pi0 în octombrie 2024: un model de viziune-limbaj-acțiune cu potrivire a fluxului, bazat pe un VLM pre-antrenat: PaliGemma cu 3 miliarde de parametri plus un expert de acțiune de 300M inițializat de la zero, un total de 3.3 miliarde. Lucrarea raportează pre-antrenament pe peste 10.000 de ore de date robotice, pe 7 configurații de roboți și 68 de sarcini. Mai multe în articolul despre pi0.
Pi0.5 (arXiv 2504.16054, 22 aprilie 2025) păstrează acel schelet și schimbă dieta de antrenament: date web, detecție de obiecte, instrucțiuni verbale de la oameni care antrenează robotul, etichete de sub-sarcini, date inter-corporale de la roboți din multe case. Rezultatul este un robot care curăță bucătării în case care nu au făcut parte din setul de antrenament. Fișierul README al openpi adaugă un detaliu pe care titlul nu îl menționează: versiunea lansată a pi0.5 a fost antrenată cu izolare de cunoștințe (arXiv 2505.23705).
| Proprietate | pi0 | pi0.5 |
|---|---|---|
| Variantă de bază VLM | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Variantă de expert în acțiune | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| orizont de acțiune implicit | 50 | 50 |
| lungime maximă token | 48 | 200 |
| intrare stare discretă | false | true, starea discretizată în intervale în prompt |
| Punct de control de bază | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
Fișierul README al openpi este explicit: depozitul suportă doar capul de potrivire a fluxului, atât pentru antrenamentul, cât și pentru inferența pi0.5. Lucrarea descrie două etape, iar codul conține doar a doua: pre-antrenamentul reprezintă fiecare acțiune ca tokenuri discrete prin tokenizatorul FAST, iar la implementare modelul deduce o sub-sarcină de nivel înalt înainte de fiecare bloc de acțiune. Niciuna dintre acestea nu se află în depozit. Cardul lerobot/pi05_base oferă aceeași listă și adaugă RL, deși lucrarea pi0.5 nu descrie deloc o etapă de învățare prin consolidare. Portul LeRobot moștenește acest domeniu de aplicare, la fel ca și fiecare antrenor găzduit pe acesta, inclusiv cel de aici. Licențierea este, de asemenea, împărțită: pagina de documentație pi05 menționează Apache 2.0, cardul lerobot/pi05_base este etichetat license: gemma.
Ce schimbă potrivirea fluxului în antrenament și inferență
O politică pe care o poți antrena pe un SO-100 fie regresează acțiunile direct (ACT) fie le tokenizează și le decodează autoregresiv (pi0-FAST). Potrivirea fluxului nu face niciuna dintre acestea: învață un câmp vectorial care transportă zgomotul către un bloc de acțiuni curat, apoi îl integrează. Lucrarea pi0 utilizează 10 pași de integrare cu o dimensiune a pasului de 0.1; configurația pi05 a LeRobot conține același num_inference_steps: int = 10.
- Antrenament: pierderea regresează un bloc de acțiuni zgomotos. Fără tokenizator de ajustat, fără discretizare a unghiurilor articulațiilor.
- Inferență: un bloc costă zece treceri înainte prin expertul de acțiuni. Aceasta este o problemă structurală, nu una de ajustare.
- Ieșire: acțiuni continue de dimensiune 32, umplute intern, pierderea fiind calculată pe dimensiunile pe care le are robotul tău. Un braț cu 6-grade de libertate plus un gripper utilizează 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-ul PaliGemma și poarta din fața acestuia
PaliGemma (arXiv 2407.07726) este un codificator vizual SigLIP-So400m bazat pe un model lingvistic Gemma-2B, cu aproximativ 3 miliarde de parametri. Pi0.5 moștenește tokenizatorul său, iar acel tokenizator se află într-un depozit cu acces restricționat. Aceasta este cea mai comună modalitate prin care o primă rulare eșuează, înainte de primul pas de antrenament.
Documentația LeRobot pi05 o afirmă clar: pi0.5 utilizează tokenizatorul cu acces restricționat google/paligemma-3b-pt-224, așa că acceptați licența acestuia pe Hub și rulați mai întâi hf auth login. Accesul este acordat manual, nu instantaneu. Omiteți acest pas, porniți o rulare plătită în cloud și veți plăti pentru un pod care nu poate descărca un tokenizator.
Înainte de a începe: formatul setului de date, episoade, hardware
Pi0.5 în LeRobot citește un set de date LeRobot în formatul v3.0, care a apărut odată cu lerobot 0.4.0 în octombrie 2025: multe episoade per fișier Parquet și MP4 în loc de un fișier per episod, cu limite în meta/episodes/ în loc de nume de fișiere. Înregistrați cu clientul desktop sau urmați înregistrați primul dvs. set de date și îl veți avea.
| Mod | Memorie GPU necesară | Exemplu GPU |
|---|---|---|
| Inferență | mai mult de 8 GB | RTX 4090 |
| Fine-tuning, LoRA | mai mult de 22.5 GB | RTX 4090 |
| Fine-tuning, complet | mai mult de 70 GB | A100 80 GB sau H100 |
Pi0.5 și SmolVLA necesită LeRobot v3.0. GR00T N1.7 și GR00T N1.5 necesită v2.0 sau v2.1 și se blochează pe un set de date v3.0. O singură sesiune de înregistrare nu le poate alimenta pe ambele fără o conversie, iar eroarea nu indică "versiune greșită a setului de date". Vezi set de date respins: v3 necesar.
# 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 offsetsPlatforma necesită cel puțin 50 de episoade pentru Pi0.5, același prag ca pentru GR00T și ACT. Pre-antrenamentul face cea mai mare parte a muncii, așa că 50 de episoade curate sunt mai bune decât 200 de episoade neglijente. Ești nou în asta? Începe cu ghidul de colectare a datelor

Ruta A: ajustare fină cu depozitul openpi
Implementarea de referință: JAX în primul rând, testată doar pe Ubuntu 22.04, ghidată de obiecte de configurare mai degrabă decât de flag-uri. O cale PyTorch a apărut în septembrie 2025, validată pe LIBERO. Trei pași: convertiți-vă datele, definiți o configurație, antrenați și serviți.
- 1Clonare și instalare
openpi utilizează uv. GIT_LFS_SKIP_SMUDGE este ceea ce permite LeRobot să fie o dependență fără blob-uri 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 . - 2Convertiți-vă datele într-un set de date LeRobot
Upstream-ul livrează convertoare pentru LIBERO și DROID și se așteaptă să adaptați unul. Munca constă în maparea cheilor.
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3Adăugați o configurație de antrenament
Configurațiile sunt intrări TrainConfig în src/openpi/training/config.py. Aceasta adaptează pi05_droid_finetune, cu încărcătorul de greutăți îndreptat către 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, ) - 4Calculați statisticile de normalizare
Rulează pe baza numelui configurației, nu a setului de date. Omiterea acestuia este prima eroare clasică aici.
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5Antrenare
Variabila permite JAX să utilizeze 90 la sută din memoria GPU în loc de valoarea implicită de 75. Pe o placă de 80 GB, acest lucru decide dacă rularea supraviețuiește.
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6Serviți-o
Serverul ascultă pe portul 8000 și răspunde la interogările de observație; runtime-ul robotului dumneavoastră este clientul.
bashuv run scripts/serve_policy.py policy:checkpoint \ --policy.config=pi05_so100 \ --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Implementarea PyTorch a openpi nu suportă pi0-FAST, precizie mixtă, FSDP, LoRA sau ponderi EMA, deci LoRA care atinge 22.5 GB este doar JAX, prin variantele gemma_2b_lora și gemma_300m_lora. Mai rău: configurarea copiază fișiere patch-uite peste transformatoarele 4.53.2 instalate, iar README-ul avertizează că, în modul implicit de hardlink al uv, acest lucru modifică permanent transformatoarele în cache-ul uv și poate afecta alte proiecte. Anulați cu uv cache clean transformers.
Ruta B: ajustare fină cu lerobot pi05
Portul LeRobot încapsulează aceleași ponderi în CLI-ul pe care îl utilizați deja pentru ACT și SmolVLA. Tot ce urmează a fost verificat cu lerobot 0.6.1, versiunea lansată pe 3 august 2026, și documentația pi05 din 23 august 2026. Versiunile contează aici: seturile de date v3.0 au apărut cu 0.4.0 în octombrie 2025, blogul 0.5.0 din 9 martie 2026 prezintă pi0-FAST și Real-Time Chunking, iar 0.6.0 din 6 iulie 2026 a făcut pachetul de bază ușor și a mutat implementarea la lerobot-rollout.
Un lucru nu s-a schimbat: lerobot-train și lerobot-record erau deja puncte de intrare în 0.3.2, august 2025. Un tutorial care încă apelează python -m lerobot.scripts.train este anterior unui an de modificări și merită să fie privit cu neîncredere și în rest.
- 1Instalare cu extra-urile corecte
Începând cu versiunea 0.6.0, instalarea de bază include doar dependențele ML esențiale, iar extra-ul pi nu adaugă cod pentru setul de date sau antrenament, astfel încât o ajustare fină necesită și extra-ul de antrenament. Comenzile mai vechi eșuează aici la 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]' - 2Autentificare
Acceptați licența paligemma-3b-pt-224 într-un browser, apoi conectați-vă pe mașina care efectuează antrenamentul.
bashhf auth login - 3Adăugați statistici de cuantili
Pi0.5 normalizează STATE și ACTION cu cuantili, deci meta/stats.json necesită q01 și q99. Seturile de date mai vechi conțin doar min, max, mean, std.
bashlerobot-edit-dataset \ --repo_id your_dataset \ --new_repo_id your_dataset \ --operation.type recompute_stats \ --operation.overwrite true - 4Ajustare fină de la lerobot/pi05_base
Setați dimensiunea lotului la ceea ce suportă placa dvs.; documentația utilizează 64 pe LIBERO la 80 GB. Transmiteți bfloat16 explicit, valoarea implicită a configurației este 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 - 5Rulați-l pe braț
În 0.6.x, aceasta este lerobot-rollout: lerobot-record refuză o politică și respinge numele seturilor de date eval_. Base controlează brațul, sentry înregistrează rularea.
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 | selectează Pi0.5 | obligatoriu cu pretrained_path, omiteți cu --policy.path |
| --policy.pretrained_path | încarcă doar ponderile | numele caracteristicilor din setul dvs. de date, setările stocate sunt resetate |
| --policy.path | ponderile plus fișierul config.json al punctului de control | setările stocate, cum ar fi n_action_steps, sunt moștenite |
| --policy.n_action_steps | pași consumați per bucată | revine la 50, niciodată peste chunk_size (implicit 50) |
| --policy.train_expert_only | îngheață VLM-ul, antrenează expertul | implicit false, mai puțină memorie, un anumit cost în succes |
| --policy.gradient_checkpointing | recalculează în loc să stocheze activările | implicit false, prima pârghie atunci când o rulare nu se va potrivi |
| --peft.method_type=LORA | adaptoare LoRA în loc de ponderi complete | necesită extra-ul peft, exemplul documentat este SmolVLA |
| --policy.rtc_training_max_delay | condiționare prefix-acțiune pentru RTC | doar pe ramura principală, nu în 0.6.1, trebuie să rămână sub chunk_size |
| --rename_map | mapează coloanele setului de date pe caracteristicile politicii | necesar atunci când cheile camerei dvs. diferă |
Fără cuantili veți primi ValueError: QUANTILES normalization mode requires q01 and q99 stats la primul lot. Recalculați statisticile, dar rezultatul ajunge în $HF_LEROBOT_HOME/your_dataset, nu în cache-ul citit de --dataset.repo_id, deci antrenați cu --dataset.root care indică acolo sau împingeți către Hub. Sau săriți peste cuantili cu --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', așa cum face comanda de referință LIBERO.
Trei seturi de valori implicite și care dintre ele ajung la antrenor
TrainConfig de la openpi este referința, PI05Config de la LeRobot este ceea ce folosește lerobot-train când nu specificați nimic, iar formularul de aici trimite un al treilea set. Surpriza este rata de învățare: ambele valori implicite upstream ating un vârf de 2.5e-5, în timp ce configurația pi05_libero a openpi și această platformă o ridică la 5e-5.
| Setare | openpi TrainConfig | lerobot pi05 și lerobot-train | AY-Robots trimite |
|---|---|---|---|
| Dimensiune lot | 32 | 8 | 1 |
| Rată de învățare maximă | 2.5e-5, cosine decay | optimizer_lr 2.5e-5 | 5e-5 |
| Pași de antrenament | 30,000 | 100,000 | 30,000 |
| Interval punct de salvare | 1,000 steps | 20,000 steps | nu în formular |
| Seed | 42 | 1,000 | în formular |
| Fragment de acțiune | action_horizon 50 | chunk_size 50, n_action_steps 50 | nu în formular |
| Tip de date pentru greutăți | bfloat16 | float32 until you pass --policy.dtype | nu în formular |
| Acumulare gradient | no such knob, fsdp_devices instead | absent from every release so far | 16, and it is dropped |
Este portarea fidelă? Echipa LeRobot a ajustat fin modelul de bază LIBERO pentru încă 6k pași și a comparat cu numerele de referință ale openpi pe patru suite: o medie de 97.5 procente față de 96.85, în față pe Libero 10, în urmă pe Spatial. Ruta este o alegere de instrumente, nu una de calitate.
- Peste 10,000 de ore de pre-antrenament robotizat în spate, deci 50 de episoade ale sarcinii dumneavoastră pot fi suficiente.
- Acțiuni continue: fără tokenizator de ajustat, fără prag de discretizare pe unghiurile articulațiilor dumneavoastră.
- Portarea LeRobot obține 97.5 procente la media LIBERO față de 96.85 a openpi, deci CLI-ul mai prietenos nu costă nimic măsurabil.
- Căi eficiente din punct de vedere al parametrilor pe ambele părți: variantele JAX LoRA ale openpi, integrarea PEFT a LeRobot.
- Ajustarea fină completă necesită mai mult de 70 GB. Cifra de 22.5 GB LoRA este numărul JAX al openpi; niciunul nu este publicat pentru pi05 sub PEFT.
- 485 ms per pas de acțiune, cel mai lent dintre cele cinci de aici: de două ori SmolVLA, de douăzeci și patru de ori ACT.
- LeRobot v3.0 este necesar, deci un set de date înregistrat pentru o rulare GR00T necesită conversie, și viceversa.
- Opțiunile noi ajung mai întâi pe ramura principală: memoria RTC și MEM din timpul antrenamentului nu sunt în 0.6.1, deci cele mai noi documente pot însemna instalarea din git.
Realitatea de 485 ms și punctul în care devine inutilizabilă
Acest lucru decide proiectul dumneavoastră, așadar precede tabelul de costuri. pe pas de acțiune măsurată aici pentru Pi0.5 este de 485 ms. Comparativ cu celelalte patru:
| Politică | Inferență pe pas de acțiune | Parametri | Nivel GPU | Episoade minime |
|---|---|---|---|---|
| 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 |

Bucla de control pentru aceste cinci modele rulează între 20 și 485 ms per pas de acțiune. Timpii de răspuns ai internetului public, adăugați peste 485 ms, transformă o politică funcțională într-una ezitantă. Inferența la distanță este viabilă pentru operațiuni lente de tip pick-and-place, nu pentru mișcări reactive rapide. Am prefera să spunem asta decât să vindem o demonstrație care funcționează doar într-o rețea locală (LAN). Dacă brațul tău se oprește între segmente, începe de la înghețarea politicii în timpul mișcării.
Upstream are un răspuns, iar jumătate din el este deja în versiunea pe care o puteți instala. Real-Time Chunking generează următorul segment în timp ce brațul execută încă pe cel curent, apoi ghidează pașii suprapuși ai noului segment pentru a rămâne aproape de partea deja executată, astfel încât brațul să nu se blocheze sau să smucească la îmbinare. Forma de inferență la timp real a fost inclusă în changelog-ul 0.4.2 pentru Pi0, Pi0.5 și SmolVLA și este un flag de rollout, nu o reantrenare:
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=60Nu face modelul mai rapid. Ascunde decalajul: cele 485 ms sunt încă cheltuite, dar în afara căii critice, astfel încât coada nu se golește între segmente. Varianta de antrenament din arXiv 2512.05964 merge mai departe: modelul învață să se condiționeze pe un prefix de acțiune curat, astfel încât la inferență suprapunerea este completată forțat cu pași de timp de flux per acțiune în loc să fie ghidată, iar trecerea înapoi a ghidării dispare. În timpul antrenamentului, eșantionează o lungime de prefix per exemplu și calculează pierderea de flux pe postfixul rămas. Acest flag există doar pe ramura principală (main), nu în 0.6.1, iar întârzierea pentru care antrenați trebuie să rămână sub chunk_size.
Două moduri de a obține un checkpoint Pi0.5
Închiriezi sau deții o placă de 80 GB, instalezi unul dintre stack-urile de mai sus, convertești setul de date și supraveghezi rularea. Păstrezi controlul asupra fiecărui parametru: JAX LoRA de la openpi, adaptoarele PEFT de la LeRobot, acțiuni relative, mapări personalizate de taste. Păstrezi, de asemenea, fiecare eșec.
- Hardware: A100 80 GB sau H100, sau o placă de 24 GB pe calea JAX LoRA de la openpi.
- Configurare: o după-amiază pentru prima rulare, în principal maparea tastelor și tokenizer-ul cu acces restricționat.
- Nu sunt disponibile în formularul găzduit: adaptoare PEFT, acțiuni relative, RTC la timpul antrenării, memorie 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=1000Alegi modelul și setul de date în formularul de antrenare, backend-ul închiriază un GPU pe o piață spot în funcție de VRAM-ul necesar, rulează antrenorul și scrie checkpoint-uri în stocarea de obiecte. Pi0.5 este disponibil doar în cloud aici. Există ghiduri pentru SO-100, SO-101, Koch v1.1 și LeKiwi.
| Setare | Ce trimite platforma pentru Pi0.5 |
|---|---|
| Base checkpoint | lerobot/pi05_base |
| Policy type | pi05 |
| Batch size | 1 |
| Learning rate | 5e-5 |
| Max steps | 30000 |
| Gradient accumulation | 16, but see the warning below |
| Extra knobs in the form | seed, logFreq |
| Dataset format | LeRobot v3.0 |
| GPU tier | A100 80 GB or H100 80 GB |
Antrenorul trimite o valoare de acumulare a gradientului de 16, iar lerobot 0.5.1 nu are un flag pentru a o primi, deci este ignorată. Niciun lerobot lansat nu are așa ceva: parametrul există doar pe ramura principală, ca --accelerator.gradient_accumulation.steps. Dimensiunea efectivă a batch-ului aici este 1, față de 256 cât utilizează configurația pi05_libero de la openpi. Merită știut înainte de a citi o curbă de pierdere. Parametrul se aplică pentru rulările GR00T N1.7 și GR00T N1.5.
Inferența funcționează în același mod: un pod este provizionat pentru a servi politica, iar clientul tău local comunică cu acesta. Pod-ul are un watchdog de inactivitate și se distruge singur, astfel încât o filă uitată nu generează costuri în mod silențios. Avertismentul privind latența se aplică, motiv pentru care ACT la 20 ms câștigă adesea o sarcină rapidă.
Când nu funcționează
| Simptom | Cea mai probabilă cauză |
|---|---|
| Rulare respinsă înainte de a începe | Set de date v2.1, dar Pi0.5 necesită v3.0, sau invers pentru GR00T |
| ImportError, pachetul datasets lipsește | lerobot 0.6.x fără extra-ul de antrenare |
| ValueError privind q01 și q99 la primul batch | Nu există cuantile în meta/stats.json; recomputați sau utilizați MEAN_STD |
| CUDA fără memorie la pasul 0 | Fine-tune complet sub 70 GB; încercați checkpointing sau train_expert_only |
| Eroare 401 sau eroare de repo cu acces restricționat | Licența tokenizer-ului PaliGemma nu este acceptată |
| Pierderea scade, robotul nu face nimic | Incompatibilitate de normalizare, sau politica copiază starea |
| Brațul se oprește între fragmente | Latență per-pas plus timp de răspuns; coada de fragmente se golește |
| Funcționează într-o configurație, eșuează în alta | Prea puține episoade, sau toate într-o singură configurație |
- Set de date respins: v3 necesar
- Memorie insuficientă în timpul antrenamentului
- Pierderea scade, dar politica nu face nimic
- Politica se blochează în mijlocul mișcării
- Politica funcționează doar într-o singură configurație
- Jobul de antrenament blocat în coadă
Cât costă o singură rulare
Pi0.5 se încadrează în nivelul scump deoarece necesită o placă de 80 GB, iar prețurile spot fluctuează, astfel încât cifra este o plajă, nu un preț. Pentru multe sarcini SO-100, antrenați SmolVLA sau ACT pe nivelul de 24 GB mai întâi, confirmați că sarcina este deloc învățabilă, apoi petreceți ore A100 pe ea. Antrenați-vă prima politică parcurge acea buclă mai ieftină, iar prețurile conțin nivelurile curente.
| Nivel | Politici | Rulare tipică | Preț pe oră | Cost pe rulare |
|---|---|---|---|---|
| A100 80 GB sau H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 până la 6 ore | 1.20 până la 2.00 USD | aproximativ 4 până la 12 USD |
| RTX 4090 sau orice placă de 24 GB | SmolVLA, ACT | 2 până la 5 ore | 0.30 până la 0.60 USD | aproximativ 1 până la 3 USD |

Înainte de a dedica o seară: GR00T N1.7 versus Pi0.5 și Pi0.5 versus SmolVLA prezintă aceleași numere cap la cap. Arena conține 85 de modele VLA cu 332 de rezultate de benchmark, fiecare legat de sursa sa, iar informații de fond despre familie se găsesc în prezentarea noastră generală a VLA.
Antrenați Pi0.5 fără a construi stiva
Alegeți setul de date și hiperparametrii într-un formular. Backend-ul închiriază o placă de 80 GB de pe piața spot, rulează antrenorul și scrie punctele de control în stocarea de obiecte. Ghiduri pentru SO-100, SO-101, Koch v1.1 și LeKiwi.
Deschideți ghidurile de antrenamentPot ajusta fin Pi0.5 pe un RTX 4090?▾
Nu o ajustare fină completă: openpi listează peste 70 GB pentru asta, deci un A100 de 80 GB sau un H100. Cifra sa LoRA de 22,5 GB aparține căii JAX; implementarea PyTorch nu are LoRA. Integrarea PEFT a LeRobot există, dar exemplul său documentat este SmolVLA și nu este publicată nicio cifră VRAM pentru pi05.
De câte episoade am nevoie?▾
Cincizeci, același prag ca GR00T și ACT; doar SmolVLA coboară mai jos, la 30. Punctul de control de bază conține peste 10.000 de ore de pre-antrenament, deci ajustarea fină se adaptează mai degrabă decât să învețe de la zero: 50 de episoade curate și variate sunt mai bune decât două sute dintr-o singură configurație.
Care este diferența dintre --policy.path și --policy.pretrained_path?▾
--policy.path încarcă ponderile și config.json al punctului de control, astfel încât setările stocate, cum ar fi n_action_steps, sunt moștenite și --policy.type trebuie omis. --policy.pretrained_path încarcă doar ponderile: numele caracteristicilor provin din setul dvs. de date, setările stocate sunt resetate, --policy.type este necesar. De aceea, comanda LIBERO transmite n_action_steps=10 și empty_cameras=1 explicit; altfel, acestea revin la 50 și 0.
Versiunea deschisă îmi oferă Pi0.5 complet din lucrare?▾
Nu. Ambele suportă doar capul de acțiune de tip flow matching. Etapa de pre-antrenament cu token discret, cu tokenizatorul de acțiune FAST și predicția sub-sarcinilor de nivel înalt nu au fost lansate, iar cardul lerobot/pi05_base adaugă RL la această listă, chiar dacă lucrarea pi0.5 nu descrie nicio etapă de învățare prin consolidare. Antrenați o politică de nivel scăzut condiționată de un șir de limbaj pe care îl furnizați, nu un model care descompune singur o sarcină lungă.
Pentru ce versiuni este scris acest ghid?▾
openpi pe main și lerobot 0.6.1, lansarea din 3 august 2026, ambele citite pe 23 august 2026. Seturile de date v3.0 au apărut cu 0.4.0 în octombrie 2025. 0.6.0 a făcut pachetul de bază ușor, astfel încât lerobot[pi] singur nu mai instalează o stivă de antrenament și a mutat implementarea la lerobot-rollout. RTC-ul la timpul antrenamentului este doar pe main; antrenorul găzduit aici rulează 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