
Finjuster Pi0.5, den flyt-matchende VLA-en fra Physical Intelligence, på dine egne robotdata. Ekte kommandoer for openpi og lerobot pi05, fallgruver for datasettformat, VRAM- og latensgrenser.
Pi0.5 er modellen du velger når en policy må fungere i et rom den aldri har sett. Det er også den mest tungvinte av de fem trenbare policyer her for å finjustere manuelt: det oppstrøms depotet er JAX-først, LeRobot-porten flyttet distribusjon ut av lerobot-record i 0.6.0 og gjorde basisinstallasjonen for liten til å trene med, og en full finjustering passer ikke på et 4090. Nedenfor: hva flytmatching koster ved inferens, de to kommandorutene, og tallet 485 ms som avgjør om resultatet er brukbart.
Hva du trenger å vite
- •En flytmatchings-VLA: en 3B PaliGemma VLM pluss en 300M handlings-ekspert som dekoder kontinuerlige handlingsbiter. To ruter for å finjustere den, openpi og LeRobot pi05, 0.65 poeng fra hverandre på LIBERO-gjennomsnittet.
- •Full finjustering krever mer enn 70 GB VRAM. openpi lister LoRA til 22.5 GB, kun på sin JAX-sti.
- •Datasettet må være LeRobotDataset v3.0 med q01- og q99-kvantiler i meta/stats.json, ellers kaster batch én feil.
- •Sjekk din lerobot-versjon først: 0.6.0 gjorde basispakken lettvektig og flyttet distribusjon ut av lerobot-record.
- •Her kjører den på 485 ms per handlingstrinn, krever 50 episoder, og koster omtrent 4 til 12 USD per kjøring.
Hva Pi0.5 faktisk er
Physical Intelligence publiserte pi0 i oktober 2024: en flytmatchings visjon-språk-handling-modell på en forhåndstrent VLM: PaliGemma med 3 milliarder parametere pluss en 300M handlings-ekspert initialisert fra bunnen av, totalt 3.3 milliarder. Artikkelen rapporterer forhåndstrening på over 10 000 timer med robotdata fordelt på 7 robotkonfigurasjoner og 68 oppgaver. Mer i pi0-artikkelen.
Pi0.5 (arXiv 2504.16054, 22 April 2025) beholder det skjelettet og endrer treningsdietten: webdata, objektdeteksjon, verbale instruksjoner fra mennesker som veileder roboten, deloppgaveetiketter, tverr-kroppsdata fra roboter i mange hjem. Resultatet er en robot som rengjør kjøkken i hus som ikke var i treningssettet. openpi README legger til en detalj som tittelen ikke gjør: den utgitte pi0.5 ble trent med kunnskapsisolasjon (arXiv 2505.23705).
| Egenskap | pi0 | pi0.5 |
|---|---|---|
| VLM ryggrads-variant | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Handlings-ekspertvariant | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| action_horizon default | 50 | 50 |
| max_token_len | 48 | 200 |
| discrete_state_input | false | true, tilstand diskretisert i beholdere i prompten |
| Grunnleggende sjekkpunkt | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
openpi README er eksplisitt: depotet støtter kun flow matching-hodet, for både pi0.5 trening og inferens. Artikkelen beskriver to stadier og koden inneholder kun det andre: forhåndstrening representerer hver handling som diskrete tokens gjennom FAST-tokenisatoren, og ved utrulling utleder modellen en høynivå deloppgave før hver handlingsbit. Ingen av disse er i depotet. lerobot/pi05_base-kortet gir den samme listen og legger til RL, selv om pi0.5-artikkelen ikke beskriver noe forsterkningslæringsstadium i det hele tatt. LeRobot-porten arver dette omfanget, og det gjør også hver hostede trener på den, inkludert denne her. Lisensieringen er også delt: pi05 dokumentsiden sier Apache 2.0, lerobot/pi05_base-kortet er merket license: gemma.
Hva flow matching endrer ved trening og inferens
En policy du kan trene på en SO-100 enten regredierer handlinger direkte (ACT) eller tokeniserer dem og dekoder autoregressivt (pi0-FAST). Flow matching gjør ingen av delene: den lærer et vektorfelt som transporterer støy til en ren handlingsbit, og integrerer den deretter. Pi0-artikkelen bruker 10 integrasjonstrinn med trinnstørrelse 0.1; LeRobots pi05-konfigurasjon har den samme num_inference_steps: int = 10.
- Trening: tapet regredierer en støybelagt handlingsbit. Ingen tokeniserer å justere, ingen diskretisering av leddvinklene dine.
- Inferens: én bit koster ti fremoverpasseringer gjennom handlingseksperten. Dette er strukturelt, ikke et justeringsproblem.
- Utdata: kontinuerlige handlinger av dimensjon 32, internt polstret, tap tatt på dimensjonene roboten din har. En 6-DoF arm pluss griper bruker 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 TruePaliGemma-ryggraden, og porten foran den
PaliGemma (arXiv 2407.07726) er en SigLIP-So400m visjonsenkoder på en Gemma-2B språkmodell, med omtrent 3B parametere. Pi0.5 arver sin tokeniserer, og denne tokenisereren ligger i et lukket (gated) repository. Dette er den vanligste måten et første forsøk feiler på, før det første treningssteget.
LeRobot pi05-dokumentasjonen sier det tydelig: pi0.5 bruker den lukkede google/paligemma-3b-pt-224 tokenisereren, så godta lisensen på Hub-en og kjør hf auth login først. Tilgang gis manuelt, ikke umiddelbart. Hopp over det, start en betalt skykjøring, og du betaler for en pod som ikke kan laste ned en tokeniserer.
Før du starter: datasettformat, episoder, maskinvare
Pi0.5 i LeRobot leser et LeRobot-datasett i v3.0-layout, som kom med lerobot 0.4.0 i oktober 2025: mange episoder per Parquet- og MP4-fil i stedet for én fil per episode, med grenser i meta/episodes/ i stedet for filnavn. Ta opp med skrivebordsklienten eller følg ta opp ditt første datasett og du har det.
| Modus | Nødvendig GPU-minne | Eksempel-GPU |
|---|---|---|
| Inferens | more than 8 GB | RTX 4090 |
| Finjustering, LoRA | more than 22.5 GB | RTX 4090 |
| Finjustering, full | more than 70 GB | A100 80 GB or H100 |
Pi0.5 og SmolVLA krever LeRobot v3.0. GR00T N1.7 og GR00T N1.5 krever v2.0 eller v2.1 og krasjer på et v3.0 datasett. Én opptaksøkt kan ikke mate begge uten en konvertering, og feilen sier ikke "feil datasettversjon". Se datasett avvist: v3 kreves.
# 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 offsetsPlattformen krever minst 50 episoder for Pi0.5, samme minimum som for GR00T og ACT. Forhåndstrening gjør det meste av jobben, så 50 rene episoder er bedre enn 200 slurvete. Ny på dette? Start med datainnsamlingsguiden.

Rute A: finjuster med openpi-repositoriet
Referanseimplementeringen: JAX først, kun testet på Ubuntu 22.04, drevet av konfigurasjonsobjekter i stedet for flagg. En PyTorch-sti ankom i september 2025, validert på LIBERO. Tre trinn: konverter dataene dine, definer en konfigurasjon, tren og tjen.
- 1Klon og installer
openpi bruker uv. GIT_LFS_SKIP_SMUDGE er det som lar LeRobot komme inn som en avhengighet uten LFS-blobs.
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 . - 2Konverter dataene dine til et LeRobot-datasett
Oppstrøms leveres konvertere for LIBERO og DROID, og du forventes å tilpasse en. Arbeidet er nøkkelkartleggingen.
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3Legg til en treningskonfigurasjon
Konfigurasjoner er TrainConfig-oppføringer i src/openpi/training/config.py. Denne tilpasser pi05_droid_finetune, med vektlasteren pekt mot 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, ) - 4Beregn normaliseringsstatistikker
Kjører mot konfigurasjonsnavnet, ikke datasettet. Å hoppe over dette er den klassiske første feilen her.
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5Tren
Variabelen lar JAX bruke 90 prosent av GPU-minnet i stedet for standard 75. På et 80 GB kort avgjør det om kjøringen overlever.
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6Tjen den
Serveren lytter på port 8000 og svarer på observasjonsforespørsler; robotens kjøretid er klienten.
bashuv run scripts/serve_policy.py policy:checkpoint \ --policy.config=pi05_so100 \ --policy.dir=checkpoints/pi05_so100/my_experiment/20000
openpi's PyTorch-implementasjon støtter ikke pi0-FAST, blandet presisjon, FSDP, LoRA eller EMA-vekter, så LoRA som når 22.5 GB er kun JAX, via gemma_2b_lora og gemma_300m_lora variantene. Verre: oppsettet kopierer lappede filer over dine installerte transformers 4.53.2, og README advarer om at med uvs standard hardlink-modus endrer dette permanent transformers i uv-cachen og kan lekke inn i andre prosjekter. Angre det med uv cache clean transformers.
Rute B: finjuster med lerobot pi05
LeRobot-porten pakker de samme vektene i CLI-en du allerede bruker for ACT og SmolVLA. Alt nedenfor ble sjekket mot lerobot 0.6.1, utgivelsen siden 3. august 2026, og pi05-dokumentasjonen den 23. august 2026. Versjoner er viktige her: v3.0 datasett ankom med 0.4.0 i oktober 2025, 0.5.0-bloggen fra 9. mars 2026 presenterer pi0-FAST og Real-Time Chunking, og 0.6.0 den 6. juli 2026 gjorde basispakken lettvektig og flyttet distribusjon til lerobot-rollout.
Én ting flyttet ikke på seg: lerobot-train og lerobot-record var allerede inngangspunkter i 0.3.2, august 2025. En veiledning som fortsatt kaller python -m lerobot.scripts.train er eldre enn et år med endringer og er verdt å mistro på resten også.
- 1Installer med de riktige tilleggene
Siden 0.6.0 inneholder basisinstallasjonen kun kjerne-ML-avhengigheter, og pi-ekstraen legger ikke til datasett- eller treningskode, så en finjustering krever også trenings-ekstraen. Eldre enlinjere feiler her ved importtid.
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]' - 2Autentiser
Godta paligemma-3b-pt-224-lisensen i en nettleser, logg deretter inn på maskinen som trener.
bashhf auth login - 3Legg til kvantilstatistikk
Pi0.5 normaliserer STATE og ACTION med kvantiler, så meta/stats.json trenger q01 og q99. Eldre datasett inneholder kun min, maks, gjennomsnitt, std.
bashlerobot-edit-dataset \ --repo_id your_dataset \ --new_repo_id your_dataset \ --operation.type recompute_stats \ --operation.overwrite true - 4Finjuster fra lerobot/pi05_base
Sett batchstørrelsen til det kortet ditt tåler; dokumentasjonen bruker 64 på LIBERO med 80 GB. Send bfloat16 eksplisitt, standardkonfigurasjonen er 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 - 5Kjør det på armen
I 0.6.x er dette lerobot-rollout: lerobot-record nekter en policy og avviser eval_-datasettnavn. Base driver armen, sentry registrerer utrullingen.
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
| Flagg | Hva det gjør | Merknad |
|---|---|---|
| --policy.type=pi05 | velger Pi0.5 | påkrevd med pretrained_path, utelat med --policy.path |
| --policy.pretrained_path | laster kun vekter | funksjonsnavn fra datasettet ditt, lagrede innstillinger tilbakestilles |
| --policy.path | vekter pluss sjekkpunkt config.json | lagrede innstillinger som n_action_steps arves |
| --policy.n_action_steps | trinn forbrukt per del | faller tilbake til 50, aldri over chunk_size (standard 50) |
| --policy.train_expert_only | fryser VLM, trener eksperten | standard false, mindre minne, noe kostnad i suksess |
| --policy.gradient_checkpointing | rekalkuler i stedet for å lagre aktiveringer | standard false, den første spaken når en kjøring ikke passer |
| --peft.method_type=LORA | LoRA-adaptere i stedet for fulle vekter | krever peft-ekstraen, dokumentert eksempel er SmolVLA |
| --policy.rtc_training_max_delay | action-prefix-kondisjonering for RTC | kun hovedgren, ikke i 0.6.1, må forbli under chunk_size |
| --rename_map | mapper datasettkolonner til policyfunksjoner | nødvendig når kameranøklene dine avviker |
Uten kvantiler får du ValueError: QUANTILES normalization mode requires q01 and q99 stats på batch én. Rekalkuler statistikken, men resultatet havner i $HF_LEROBOT_HOME/your_dataset, ikke cachen --dataset.repo_id leser, så tren med --dataset.root som peker dit eller push til Hub. Eller hopp over kvantiler med --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', slik LIBERO-referansekommandoen gjør.
Tre sett med standardinnstillinger, og hvilke som når treneren
openpis TrainConfig er referansen, LeRobots PI05Config er det lerobot-train bruker når du ikke spesifiserer noe, og skjemaet her sender et tredje sett. Overraskelsen er læringsraten: begge oppstrøms standardinnstillinger topper på 2.5e-5, mens openpis egen pi05_libero-konfigurasjon og denne plattformen øker den til 5e-5.
| Innstilling | openpi TrainConfig | lerobot pi05 og lerobot-train | AY-Robots sender |
|---|---|---|---|
| Batchstørrelse | 32 | 8 | 1 |
| Maksimal læringsrate | 2.5e-5, cosinus-nedbrytning | optimizer_lr 2.5e-5 | 5e-5 |
| Treningssteg | 30,000 | 100,000 | 30,000 |
| Sjekkpunktintervall | 1,000 steg | 20,000 steg | ikke i skjemaet |
| Frøverdi | 42 | 1,000 | i skjemaet |
| Handlingsbit | action_horizon 50 | chunk_size 50, n_action_steps 50 | ikke i skjemaet |
| Vekt-dtype | bfloat16 | float32 til du sender --policy.dtype | ikke i skjemaet |
| Gradientakkumulering | ingen slik innstilling, fsdp_devices i stedet | fraværende i alle utgivelser så langt | 16, og den droppes |
Er porten trofast? LeRobot-teamet finjusterte LIBERO-basemodellen i ytterligere 6k steg og sammenlignet med openpis referansetall på fire suiter: 97.5 prosent gjennomsnitt mot 96.85, foran på Libero 10, bak på Spatial. Ruten er et verktøyvalg, ikke et kvalitetsvalg.
- Mer enn 10,000 timer med robot-forhåndstrening bak seg, så 50 episoder av oppgaven din kan være nok.
- Kontinuerlige handlinger: ingen tokeniserer å justere, ingen diskretiseringsgrense på leddvinklene dine.
- LeRobot-porten scorer 97.5 prosent på LIBERO-gjennomsnittet mot openpis 96.85, så den vennligere CLI-en koster ingenting målbart.
- Parameter-effektive veier på begge sider: openpis JAX LoRA-varianter, LeRobots PEFT-integrasjon.
- Full finjustering krever mer enn 70 GB. Tallet på 22.5 GB LoRA er openpis JAX-tall; ingen er publisert for pi05 under PEFT.
- 485 ms per handlingstrinn, tregest av de fem her: dobbelt så rask som SmolVLA, tjuefire ganger ACT.
- LeRobot v3.0 er påkrevd, så et datasett registrert for en GR00T-kjøring må konverteres, og omvendt.
- Nye alternativer lander på main først: trenings-tids RTC og MEM-minne er ikke i 0.6.1, så de nyeste dokumentene kan bety installasjon fra git.
485 ms-virkeligheten, og hvor den slutter å være brukbar
Dette avgjør prosjektet ditt, så det kommer før kostnadstabellen. inferenslatens per handlingstrinn målt her for Pi0.5 er 485 ms. Mot de fire andre:
| Policy | Inferens per handlingstrinn | Parametre | GPU-nivå | Minimum antall episoder |
|---|---|---|---|---|
| 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 |

Kontrollsløyfen på tvers av disse fem modellene kjører 20 til 485 ms per handlingstrinn. Offentlige internett-rundturer på toppen av 485 ms gjør en fungerende policy til en nølende en. Fjerninferens er levedyktig for langsom plukk-og-plasser, ikke for rask reaktiv bevegelse. Vi vil heller si det enn å selge en demo som bare fungerer på et LAN. Hvis armen din pauser mellom biter, start på policy fryser midt i bevegelsen.
Oppstrøms har et svar, og halvparten av det er allerede i utgivelsen du kan installere. Sanntids-chunking genererer neste bit mens armen fortsatt utfører den nåværende, og veileder deretter de overlappende trinnene i den nye biten til å holde seg nær den delen som allerede er utført, slik at armen ikke stopper eller rykker ved skjøten. Inferens-tidsformen ble levert i 0.4.2 endringsloggen for Pi0, Pi0.5 og SmolVLA og er et utrullingsflagg, ikke en omtrening:
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=60Det gjør ikke modellen raskere. Det skjuler gapet: de 485 ms brukes fortsatt, men utenfor den kritiske banen, slik at køen ikke går tom mellom bitene. Trenings-tidsvarianten fra arXiv 2512.05964 går lenger: modellen lærer å betinge seg på et rent handlingsprefiks, slik at ved inferens blir overlappingen hard-innmalt med flyt-tidstrinn per handling i stedet for veiledet, og veiledningens bakoverpass forsvinner. Under trening samples en prefikslengde per eksempel og flyttapet tas på den gjenværende postfixen. Dette flagget finnes kun på main, ikke i 0.6.1, og forsinkelsen du trener for må holde seg under chunk_size.
To måter å få et Pi0.5 sjekkpunkt
Du leier eller eier et 80 GB kort, installerer en av stakkene ovenfor, konverterer datasettet ditt og passer på kjøringen. Du beholder alle innstillinger: openpi's JAX LoRA, LeRobot's PEFT-adaptere, relative handlinger, tilpassede nøkkelkartlegginger. Du beholder også alle feil.
- Maskinvare: A100 80 GB eller H100, eller et 24 GB kort på openpi's JAX LoRA-sti.
- Oppsett: en ettermiddag for første kjøring, hovedsakelig nøkkelkartlegging og den gatede tokenisatoren.
- Ikke på det hostede skjemaet: PEFT-adaptere, relative handlinger, RTC under trening, MEM-minne.
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=1000Du velger modell og datasett i treningsskjemaet, bakenden leier en GPU på et spotmarked basert på nødvendig VRAM, kjører treneren og skriver sjekkpunkter til objektlagring. Pi0.5 er kun skybasert her. Guider finnes for SO-100, SO-101, Koch v1.1 og LeKiwi.
| Innstilling | Hva plattformen sender for Pi0.5 |
|---|---|
| Grunnleggende sjekkpunkt | lerobot/pi05_base |
| Policytype | pi05 |
| Batchstørrelse | 1 |
| Læringsrate | 5e-5 |
| Maks trinn | 30000 |
| Gradientakkumulering | 16, men se advarselen nedenfor |
| Ekstra innstillinger i skjemaet | seed, logFreq |
| Datasettformat | LeRobot v3.0 |
| GPU-nivå | A100 80 GB eller H100 80 GB |
Treneren sender en gradientakkumuleringsverdi på 16, og lerobot 0.5.1 har ingen flagg for å motta den, så den blir ignorert. Ingen utgitt lerobot har en slik: innstillingen eksisterer kun på main, som --accelerator.gradient_accumulation.steps. Effektiv batchstørrelse her er 1, mot de 256 openpi's pi05_libero-konfigurasjonen bruker. Verdt å vite før du leser en tapskurve. Innstillingen gjelder for GR00T N1.7 og GR00T N1.5 kjøringer.
Inferens fungerer på samme måte: en pod blir provisjonert for å tjene policyen, og din lokale klient kommuniserer med den. Poden har en inaktiv vaktbikkje og ødelegger seg selv, slik at en glemt fane ikke fakturerer i stillhet. Latensforbeholdet gjelder, og det er derfor ACT på 20 ms ofte vinner en rask oppgave.
Når det ikke fungerer
| Symptom | Mest sannsynlige årsak |
|---|---|
| Kjøring avvist før den starter | Datasett v2.1, men Pi0.5 krever v3.0, eller omvendt for GR00T |
| ImportError, datasets-pakke mangler | lerobot 0.6.x uten treningsekstra |
| ValueError om q01 og q99 på batch én | Ingen kvantiler i meta/stats.json; beregn på nytt eller bruk MEAN_STD |
| CUDA tom for minne ved trinn 0 | Full finjustering under 70 GB; prøv sjekkpunkt eller train_expert_only |
| 401 eller gated repo-feil | PaliGemma tokenizer-lisens ikke akseptert |
| Tapet faller, roboten gjør ingenting | Normaliseringsmismatch, eller policyen kopierer tilstanden |
| Armen pauser mellom biter | Latens per trinn pluss tur-retur; bitkøen går tom |
| Fungerer i ett oppsett, feiler i et annet | For få episoder, eller alle i én konfigurasjon |
- Datasett avvist: v3 påkrevd
- Utilstrekkelig minne under trening
- Tapet faller, men policyen gjør ingenting
- Policyen fryser midt i bevegelsen
- Policyen fungerer bare i ett oppsett
- Treningsjobb sitter fast i kø
Hva en kjøring koster
Pi0.5 er i det dyre sjiktet fordi den krever et 80 GB kort, og spotpriser varierer, så tallet er et intervall snarere enn en fast pris. For mange SO-100-oppgaver, tren SmolVLA eller ACT på 24 GB-nivået først, bekreft at oppgaven i det hele tatt er læringsbar, og bruk deretter A100-timer på den. Tren din første policy beskriver den billigere prosessen, og priser viser de nåværende nivåene.
| Nivå | Policyer | Typisk kjøring | Pris per time | Kostnad per kjøring |
|---|---|---|---|---|
| A100 80 GB eller H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 til 6 timer | 1.20 to 2.00 USD | omtrent 4 til 12 USD |
| RTX 4090 eller et hvilket som helst 24 GB kort | SmolVLA, ACT | 2 til 5 timer | 0.30 to 0.60 USD | omtrent 1 til 3 USD |

Før du forplikter en kveld: GR00T N1.7 mot Pi0.5 og Pi0.5 mot SmolVLA legger de samme tallene frem side om side. Arenaen inneholder 85 VLA-modeller med 332 benchmark-resultater, hver lenket til sin kilde, og bakgrunn om familien finnes i vår VLA-oversikt.
Tren Pi0.5 uten å bygge stakken
Velg datasettet og hyperparametrene i et skjema. Backend leier et 80 GB-kort på spotmarkedet, kjører treneren og skriver sjekkpunktene til objektlagring. Guider for SO-100, SO-101, Koch v1.1 og LeKiwi.
Åpne treningsguideneKan jeg finjustere Pi0.5 på en RTX 4090?▾
Ikke en full finjustering: openpi lister mer enn 70 GB for det, så et A100 80 GB eller et H100. Dets 22.5 GB LoRA-tall tilhører JAX-banen; PyTorch-implementeringen har ingen LoRA. LeRobots PEFT-integrasjon eksisterer, men det dokumenterte eksemplet er SmolVLA og ingen VRAM-tall er publisert for pi05.
Hvor mange episoder trenger jeg?▾
Femti, samme minimum som GR00T og ACT; bare SmolVLA går lavere, på 30. Grunn-sjekkpunktet bærer mer enn 10 000 timer med forhåndstrening, så finjusteringen tilpasser seg heller enn å lære fra ingenting: 50 rene, varierte episoder slår to hundre fra én konfigurasjon.
Hva er forskjellen mellom --policy.path og --policy.pretrained_path?▾
--policy.path laster vekter og sjekkpunktets config.json, så lagrede innstillinger som n_action_steps arves og --policy.type må utelates. --policy.pretrained_path laster kun vekter: funksjonsnavn kommer fra datasettet ditt, lagrede innstillinger tilbakestilles, --policy.type er påkrevd. Det er derfor LIBERO-kommandoen eksplisitt sender n_action_steps=10 og empty_cameras=1; ellers faller de tilbake til 50 og 0.
Gir den åpne versjonen meg den fulle Pi0.5 fra artikkelen?▾
Nei. Begge støtter kun flow matching action head. Det diskrete-token forhåndstreningsstadiet med FAST action tokenizer og høynivå deloppgaveprediksjon ble ikke utgitt, og lerobot/pi05_base-kortet legger til RL på den listen selv om pi0.5-papiret ikke beskriver noe forsterkningslæringsstadium. Du trener en lavnivåpolicy betinget av en språkstreng du oppgir, ikke en modell som dekomponerer en lang oppgave selv.
Hvilke versjoner er denne guiden skrevet mot?▾
openpi på main og lerobot 0.6.1, utgivelsen siden 3. august 2026, begge lest 23. august 2026. v3.0 datasett ankom med 0.4.0 i oktober 2025. 0.6.0 gjorde basispakken lettvektig, så lerobot[pi] alene installerer ikke lenger en treningsstakk, og flyttet distribusjon til lerobot-rollout. Trenings-RTC er kun på main; den hostede treneren her kjører 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