
Finjuster Pi0.5, den flow-matching VLA fra Physical Intelligence, med dine egne robotdata. Reelle kommandoer til openpi og lerobot pi05, faldgruber i datasætformat, VRAM- og latenstbegrænsninger.
Pi0.5 er den model, du griber til, når en politik skal fungere i et rum, den aldrig har set. Det er også den mest besværlige af de fem trænbare politikker her til at finjustere manuelt: det upstream-repository er JAX først, LeRobot-porten flyttede deployment ud af lerobot-record i 0.6.0 og gjorde basisinstallationen for lille til at træne med, og en fuld finjustering passer ikke på en 4090. Nedenfor: hvad flow matching koster ved inferens, de to kommandoruter og tallet 485 ms, der afgør, om resultatet er brugbart.
Hvad du skal vide
- •En flow-matching VLA: en 3B PaliGemma VLM plus en 300M action-ekspert, der afkoder kontinuerlige handlingsklumper. To ruter til at finjustere den, openpi og LeRobot pi05, 0.65 point fra hinanden på LIBERO-gennemsnittet.
- •Fuld finjustering kræver mere end 70 GB VRAM. openpi angiver LoRA til 22.5 GB, kun på dens JAX-sti.
- •Datasættet skal være LeRobotDataset v3.0 med q01- og q99-kvantiler i meta/stats.json, ellers fejler den første batch.
- •Tjek din lerobot-version først: 0.6.0 gjorde basispakken letvægts og flyttede deployment ud af lerobot-record.
- •Her kører den med 485 ms per handlingstrin, kræver 50 episoder og koster omkring 4 til 12 USD per kørsel.
Hvad Pi0.5 egentlig er
Physical Intelligence udgav pi0 i oktober 2024: en flow-matching vision-sprog-handlingsmodel på en fortrænet VLM: PaliGemma med 3 milliarder parametre plus en 300M action-ekspert initialiseret fra bunden, 3.3 milliarder i alt. Artiklen rapporterer fortræning på over 10.000 timers robotdata på tværs af 7 robotkonfigurationer og 68 opgaver. Mere i pi0-artiklen.
Pi0.5 (arXiv 2504.16054, 22. april 2025) bevarer det skelet og ændrer træningskosten: webdata, objektdetektion, verbale instruktioner fra mennesker, der coacher robotten, undertaskelabels, tværgående data fra robotter i mange hjem. Resultatet er en robot, der rengør køkkener i huse, som ikke var en del af træningssættet. openpi README tilføjer en detalje, som titlen ikke gør: den udgivne pi0.5 blev trænet med knowledge insulation (arXiv 2505.23705).
| Egenskab | pi0 | pi0.5 |
|---|---|---|
| VLM backbone-variant | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Action-ekspertvariant | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| action_horizon standard | 50 | 50 |
| max_token_len | 48 | 200 |
| discrete_state_input | false | true, tilstand diskretiseret i beholdere i prompten |
| Basis-checkpoint | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
openpi README er eksplicit: repository'et understøtter kun flow matching head, til både pi0.5 træning og inferens. Artiklen beskriver to stadier, og koden indeholder kun det andet: forhåndstræning repræsenterer hver handling som diskrete tokens via FAST tokenizer, og ved implementering udleder modellen en højniveau-undertaske før hver handlingsklump. Ingen af disse er i repository'et. Den lerobot/pi05_base-kortet giver den samme liste og tilføjer RL, selvom pi0.5-artiklen slet ikke beskriver et reinforcement learning-stadie. LeRobot-porten arver dette omfang, og det gør enhver hostet træner på den også, inklusive denne her. Licensering er også opdelt: pi05-dokumentsiden siger Apache 2.0, lerobot/pi05_base-kortet er tagget license: gemma.
Hvad flow matching ændrer ved træning og inferens
En politik du kan træne på en SO-100, enten regredierer handlinger direkte (ACT) eller tokeniserer dem og afkoder autoregressivt (pi0-FAST). Flow matching gør ingen af delene: den lærer et vektorfelt, der transporterer støj til en ren handlingsklump, og integrerer den derefter. pi0-artiklen bruger 10 integrationstrin med trinlængde 0.1; LeRobots pi05-konfiguration indeholder den samme num_inference_steps: int = 10.
- Træning: tabet regredierer en støjfyldt handlingsklump. Ingen tokenizer at finjustere, ingen diskretisering af dine ledvinkler.
- Inference: én klump koster ti forward passes gennem handlingseksperten. Det er strukturelt, ikke et finjusteringsproblem.
- Output: kontinuerlige handlinger af dimension 32, internt polstret, tab beregnet på de dimensioner din robot har. En 6-DoF arm plus griber bruger 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-rygraden og porten foran den
PaliGemma (arXiv 2407.07726) er en SigLIP-So400m vision-encoder på en Gemma-2B sprogmodel, omkring 3B parametre. Pi0.5 arver dens tokenizer, og den tokenizer ligger i et lukket repository. Dette er den mest almindelige måde, et første kørsel dør på, før det første træningstrin.
LeRobot pi05-dokumentationen angiver det klart: pi0.5 bruger den lukkede google/paligemma-3b-pt-224 tokenizer, så accepter dens licens på Hub'en og kør hf auth login først. Adgang gives manuelt, ikke øjeblikkeligt. Spring det over, start en betalt cloud-kørsel, og du betaler for en pod, der ikke kan downloade en tokenizer.
Før du starter: datasætformat, episoder, hardware
Pi0.5 i LeRobot læser et LeRobot datasæt i v3.0-layout, som landede med lerobot 0.4.0 i oktober 2025: mange episoder pr. Parquet- og MP4-fil i stedet for én fil pr. episode, med grænser i meta/episodes/ i stedet for filnavne. Optag med desktopklient eller følg optag dit første datasæt og du har det.
| Tilstand | Nødvendig GPU-hukommelse | Eksempel på GPU |
|---|---|---|
| Inference | more than 8 GB | RTX 4090 |
| Finjustering, LoRA | more than 22.5 GB | RTX 4090 |
| Finjustering, fuld | more than 70 GB | A100 80 GB or H100 |
Pi0.5 og SmolVLA kræver LeRobot v3.0. GR00T N1.7 og GR00T N1.5 kræver **v2.0 eller v2.1** og går ned på et v3.0 datasæt. Én optagelsessession kan ikke bruges til begge uden en konvertering, og fejlen siger ikke "forkert datasætversion". Se datasæt afvist: v3 påkrævet.
# 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 offsetsPlatformen kræver mindst 50 episoder til Pi0.5, samme minimum som GR00T og ACT. Forhåndstræning udfører det tunge arbejde, så 50 rene episoder er bedre end 200 sjuskede. Ny inden for dette? Start med vejledningen til dataindsamling.

Rute A: finjuster med openpi-repository'et
Referenceimplementeringen: JAX først, kun testet på Ubuntu 22.04, drevet af konfigurationsobjekter snarere end flag. En PyTorch-sti ankom i september 2025, valideret på LIBERO. Tre trin: konverter dine data, definer en konfiguration, træn og servér.
- 1Klon og installer
openpi bruger uv. GIT_LFS_SKIP_SMUDGE er det, der lader LeRobot komme ind som en afhængighed uden 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 dine data til et LeRobot-datasæt
Upstream leverer konvertere til LIBERO og DROID og forventer, at du tilpasser en. Arbejdet er nøglemappingen.
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3Tilføj en træningskonfiguration
Konfigurationer er TrainConfig-poster i src/openpi/training/config.py. Denne tilpasser pi05_droid_finetune, med vægtloaderen pegende på 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 normstatistikker
Kører mod konfigurationsnavnet, ikke datasættet. At springe det over er den klassiske første fejl her.
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5Træn
Variablen lader JAX bruge 90 procent af GPU-hukommelsen i stedet for standard 75. På et 80 GB kort afgør det, om kørslen overlever.
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6Servér den
Serveren lytter på port 8000 og besvarer observationsforespørgsler; din robot-runtime 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-implementering understøtter ikke pi0-FAST, mixed precision, FSDP, LoRA eller EMA-vægte, så den LoRA, der når 22.5 GB, er kun JAX, via gemma_2b_lora og gemma_300m_lora varianterne. Værre: opsætningen kopierer patch-filer over dine installerede transformers 4.53.2, og README advarer om, at med uv's standard hardlink-tilstand ændrer dette permanent transformers i uv-cachen og kan lække til andre projekter. Fortryd det med uv cache clean transformers.
Rute B: finjuster med lerobot pi05
LeRobot-porten indkapsler de samme vægte i den CLI, du allerede bruger til ACT og SmolVLA. Alt nedenfor blev kontrolleret mod lerobot 0.6.1, udgivelsen siden 3. august 2026, og pi05-dokumentationen den 23. august 2026. Versioner er vigtige her: v3.0 datasæt ankom med 0.4.0 i oktober 2025, 0.5.0-bloggen fra 9. marts 2026 præsenterer pi0-FAST og Real-Time Chunking, og 0.6.0 den 6. juli 2026 gjorde basispakken letvægtig og flyttede deployment til lerobot-rollout.
Én ting flyttede sig ikke: lerobot-train og lerobot-record var allerede entry points i 0.3.2, august 2025. En tutorial, der stadig kalder python -m lerobot.scripts.train, er forældet i forhold til et års ændringer og er også værd at mistro på resten.
- 1Installer med de rigtige ekstraer
Siden 0.6.0 indeholder basisinstallationen kun kerne-ML-afhængigheder, og pi-ekstra tilføjer ingen datasæt- eller træningskode, så en finjustering kræver også trænings-ekstra. Ældre one-liners fejler her ved importtidspunktet.
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]' - 2Autentificer
Accepter paligemma-3b-pt-224-licensen i en browser, og log derefter ind på maskinen, der træner.
bashhf auth login - 3Tilføj kvartilstatistik
Pi0.5 normaliserer STATE og ACTION med kvartiler, så meta/stats.json kræver q01 og q99. Ældre datasæt indeholder kun min, max, gennemsnit, 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
Indstil batchstørrelsen til det, dit kort kan klare; dokumentationen bruger 64 på LIBERO ved 80 GB. Send bfloat16 eksplicit, standardkonfigurationen 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 - 5Kør det på armen
I 0.6.x er dette lerobot-rollout: lerobot-record afviser en politik og afviser eval_ datasætnavne. Base styrer armen, sentry optager udrulningen.
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 | Hvad det gør | Bemærk |
|---|---|---|
| --policy.type=pi05 | vælger Pi0.5 | påkrævet med pretrained_path, udelad med --policy.path |
| --policy.pretrained_path | indlæser kun vægte | funktionsnavne fra dit datasæt, gemte indstillinger nulstilles |
| --policy.path | vægte plus checkpoint config.json | gemte indstillinger som n_action_steps arves |
| --policy.n_action_steps | trin forbrugt pr. chunk | falder tilbage til 50, aldrig over chunk_size (standard 50) |
| --policy.train_expert_only | fryser VLM, træner eksperten | standard false, mindre hukommelse, en vis omkostning i succes |
| --policy.gradient_checkpointing | genberegner i stedet for at gemme aktiveringer | standard false, den første løftestang når en kørsel ikke passer |
| --peft.method_type=LORA | LoRA-adaptere i stedet for fulde vægte | kræver peft-ekstra, dokumenteret eksempel er SmolVLA |
| --policy.rtc_training_max_delay | action-prefix konditionering for RTC | kun main branch, ikke i 0.6.1, skal forblive under chunk_size |
| --rename_map | mapper datasætskolonner til politikfunktioner | nødvendigt når dine kameranøgler afviger |
Uden kvartiler får du ValueError: QUANTILES normalization mode requires q01 and q99 stats på batch et. Genberegn statistikken, men resultatet lander i $HF_LEROBOT_HOME/your_dataset, ikke cachen --dataset.repo_id læser fra, så træn med --dataset.root pegende dertil eller push til Hub'en. Eller spring kvartiler over med --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', som LIBERO referencekommandoen gør.
Tre sæt standardindstillinger, og hvilke der når træneren
openpi's TrainConfig er referencen, LeRobot's PI05Config er hvad lerobot-train bruger, når du ikke angiver noget, og formularen her sender et tredje sæt. Overraskelsen er indlæringshastigheden: begge upstream-standarder topper ved 2.5e-5, mens openpi's egen pi05_libero konfiguration og denne platform hæver den til 5e-5.
| Indstilling | openpi TrainConfig | lerobot pi05 and lerobot-train | AY-Robots sender |
|---|---|---|---|
| Batchstørrelse | 32 | 8 | 1 |
| Maksimal indlæringshastighed | 2.5e-5, cosinus-fald | optimizer_lr 2.5e-5 | 5e-5 |
| Træningstrin | 30,000 | 100,000 | 30,000 |
| Kontrolpunktinterval | 1.000 trin | 20.000 trin | ikke i formularen |
| Seed | 42 | 1,000 | i formularen |
| Handlingssegment | action_horizon 50 | chunk_size 50, n_action_steps 50 | ikke i formularen |
| Vægt dtype | bfloat16 | float32 indtil du passerer --policy.dtype | ikke i formularen |
| Gradientakkumulering | ingen sådan knap, fsdp_devices i stedet | fraværende i alle udgivelser indtil videre | 16, og den droppes |
Er porten trofast? LeRobot-teamet finjusterede LIBERO-basemodellen i yderligere 6k trin og sammenlignede med openpi's referencetal på fire suiter: 97,5 procent i gennemsnit mod 96,85, foran på Libero 10, bagud på Spatial. Ruten er et værktøjsvalg, ikke et kvalitetsvalg.
- Mere end 10.000 timers robot-for-træning bag sig, så 50 episoder af din opgave kan være nok.
- Kontinuerlige handlinger: ingen tokenizer at finjustere, ingen diskretiseringsgrænse for dine ledvinkler.
- LeRobot-porten scorer 97,5 procent på LIBERO-gennemsnittet mod openpi's 96,85, så den mere brugervenlige CLI koster intet målbart.
- Parametereffektive stier på begge sider: openpi's JAX LoRA-varianter, LeRobot's PEFT-integration.
- Fuld finjustering kræver mere end 70 GB. Tallet på 22,5 GB for LoRA er openpi's JAX-tal; intet er offentliggjort for pi05 under PEFT.
- 485 ms per handlingstrin, langsomst af de fem her: dobbelt så langsom som SmolVLA, fireogtyve gange ACT.
- LeRobot v3.0 er påkrævet, så et datasæt optaget til en GR00T kørsel skal konverteres, og omvendt.
- Nye muligheder lander først på main: træningstids RTC og MEM hukommelse er ikke i 0.6.1, så de nyeste dokumenter kan betyde installation fra git.
De 485 ms virkelighed, og hvor det holder op med at være brugbart
Dette afgør dit projekt, så det kommer før omkostningstabellen. Den per handlingstrin målt her for Pi0.5 er 485 ms. Mod de fire andre:
| Politik | Inferens per handlingstrin | Parametre | GPU-niveau | Minimum 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 |

Kontrolsløjfen på tværs af disse fem modeller kører 20 til 485 ms per handlingstrin. Offentlige internet-round trips oveni 485 ms forvandler en fungerende politik til en tøvende. Fjerninferens er levedygtig for langsom pick-and-place, ikke for hurtig reaktiv bevægelse. Vi vil hellere sige det end sælge en demo, der kun virker på et LAN. Hvis din arm pauser mellem segmenter, start ved politik fryser midt i bevægelsen.
Upstream har et svar, og halvdelen af det er allerede i den udgivelse, du kan installere. Real-Time Chunking genererer det næste segment, mens armen stadig udfører det nuværende, og guider derefter de overlappende trin i det nye segment til at forblive tæt på den del, der allerede er udført, så armen ikke går i stå eller rykker ved samlingen. Den inferens-tidsform, der blev leveret i 0.4.2 changelog for Pi0, Pi0.5 og SmolVLA, er et rollout-flag, ikke en gentræning:
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 gør ikke modellen hurtigere. Det skjuler hullet: de 485 ms bruges stadig, men uden for den kritiske vej, så køen ikke løber tør mellem segmenter. Træningstidsvarianten fra arXiv 2512.05964 går videre: modellen lærer at konditionere på et rent handlingspræfiks, så ved inferens er overlapningen hårdt-indmalet med flow-tidstrin per handling i stedet for guidet, og guidance backward pass forsvinder. Under træning sampler den en præfikslængde per eksempel og tager flow-tabet på den resterende postfix. Det flag findes kun på main, ikke i 0.6.1, og den forsinkelse, du træner for, skal forblive under chunk_size.
To måder at få et Pi0.5 checkpoint på
Du lejer eller ejer et 80 GB kort, installerer en af ovenstående stakke, konverterer dit datasæt og overvåger kørslen. Du beholder alle indstillinger: openpi's JAX LoRA, LeRobot's PEFT-adaptere, relative handlinger, brugerdefinerede tastaturtilknytninger. Du beholder også alle fejl.
- Hardware: A100 80 GB eller H100, eller et 24 GB kort på openpi's JAX LoRA-sti.
- Opsætning: en eftermiddag til den første kørsel, primært tastaturtilknytning og den gated tokenizer.
- Ikke på den hostede formular: PEFT-adaptere, relative handlinger, træningstids-RTC, MEM-hukommelse.
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 vælger model og datasæt i træningsformularen, backend'en lejer en GPU på et spotmarked baseret på den krævede VRAM, kører træneren og skriver checkpoints til objektlager. Pi0.5 er kun cloud-baseret her. Vejledninger findes for SO-100, SO-101, Koch v1.1 og LeKiwi.
| Indstilling | Hvad platformen sender for Pi0.5 |
|---|---|
| Basis checkpoint | lerobot/pi05_base |
| Politiktype | pi05 |
| Batchstørrelse | 1 |
| Læringshastighed | 5e-5 |
| Maksimale trin | 30000 |
| Gradientakkumulering | 16, men se advarslen nedenfor |
| Ekstra indstillinger i formularen | seed, logFreq |
| Datasætformat | LeRobot v3.0 |
| GPU-niveau | A100 80 GB eller H100 80 GB |
Træneren sender en gradientakkumuleringsværdi på 16, og lerobot 0.5.1 har intet flag til at modtage den, så den ignoreres. Ingen udgivet lerobot har et: indstillingen findes kun på main, som --accelerator.gradient_accumulation.steps. Den effektive batchstørrelse her er 1, i modsætning til de 256, som openpi's pi05_libero-konfiguration bruger. Værd at vide, før du læser en loss-kurve. Indstillingen gælder dog for GR00T N1.7 og GR00T N1.5 kørsler.
Inference fungerer på samme måde: en pod provisioneres til at betjene politikken, og din lokale klient kommunikerer med den. Pod'en har en inaktiv watchdog og ødelægger sig selv, så en glemt fane ikke fakturerer i stilhed. Latency-forbeholdet gælder, hvilket er grunden til, at ACT med 20 ms ofte vinder en hurtig opgave.
Når det ikke virker
| Symptom | Mest sandsynlige årsag |
|---|---|
| Kørsel afvist før start | Datasæt v2.1, men Pi0.5 ønsker v3.0, eller omvendt for GR00T |
| ImportError, 'datasets'-pakke mangler | lerobot 0.6.x uden 'training extra' |
| ValueError om q01 og q99 på batch et | Ingen kvartiler i meta/stats.json; genberegn eller brug MEAN_STD |
| CUDA løb tør for hukommelse ved trin 0 | Fuld finjustering under 70 GB; prøv checkpointing eller train_expert_only |
| 401 eller gated repo-fejl | PaliGemma tokenizer-licens ikke accepteret |
| Loss falder, robotten gør intet | Normaliseringsuoverensstemmelse, eller politikken kopierer tilstanden |
| Armen pauser mellem bidder | Latency pr. trin plus retur; chunk-køen løber tør |
| Virker i én opsætning, fejler i en anden | For få episoder, eller alle i én konfiguration |
- Datasæt afvist: v3 påkrævet
- Ikke nok hukommelse under træning
- Tab falder, men politikken gør intet
- Politikken fryser midt i bevægelsen
- Politikken virker kun i én opsætning
- Træningsjob sidder fast i kø
Hvad en kørsel koster
Pi0.5 ligger i den dyre kategori, fordi den kræver et 80 GB kort, og spotpriserne bevæger sig, så tallet er et interval snarere end en pris. For mange SO-100 opgaver, træn SmolVLA eller ACT på 24 GB kategorien først, bekræft at opgaven overhovedet kan læres, og brug derefter A100 timer på den. Træn din første politik gennemgår den billigere løkke, og priser viser de nuværende kategorier.
| Kategori | Politikker | Typisk kørsel | Pris pr. time | Omkostning pr. kørsel |
|---|---|---|---|---|
| A100 80 GB eller H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 til 6 timer | 1.20 til 2.00 USD | cirka 4 til 12 USD |
| RTX 4090 eller ethvert 24 GB kort | SmolVLA, ACT | 2 til 5 timer | 0.30 til 0.60 USD | cirka 1 til 3 USD |

Før du afsætter en aften: og præsenterer de samme tal side om side. indeholder 85 VLA-modeller med 332 benchmarkresultater, hver linket til sin kilde, og baggrund om familien findes i .
Træn Pi0.5 uden at bygge stacken
Vælg datasættet og hyperparametrene i en formular. Backend lejer et 80 GB-kort på spotmarkedet, kører træneren og skriver checkpoints til objektlager. Vejledninger til SO-100, SO-101, Koch v1.1 og LeKiwi.
Åbn træningsvejledningerneKan jeg finjustere Pi0.5 på et RTX 4090?▾
Ikke en fuld finjustering: openpi angiver mere end 70 GB til det, så en A100 80 GB eller en H100. Dets 22,5 GB LoRA-tal tilhører JAX-stien; PyTorch-implementeringen har ingen LoRA. LeRobots PEFT-integration eksisterer, men dets dokumenterede eksempel er SmolVLA, og der er ikke offentliggjort et VRAM-tal for pi05.
Hvor mange episoder har jeg brug for?▾
Halvtreds, det samme minimum som GR00T og ACT; kun SmolVLA går lavere, med 30. Basis-checkpointet indeholder mere end 10.000 timers forhåndstræning, så finjusteringen tilpasser sig snarere end lærer fra bunden: 50 rene, varierede episoder slår to hundrede fra én konfiguration.
Hvad er forskellen mellem --policy.path og --policy.pretrained_path?▾
--policy.path indlæser vægte og checkpointets config.json, så lagrede indstillinger som n_action_steps arves, og --policy.type skal udelades. --policy.pretrained_path indlæser kun vægte: funktionsnavne kommer fra dit datasæt, lagrede indstillinger nulstilles, --policy.type er påkrævet. Det er derfor, LIBERO-kommandoen eksplicit sender n_action_steps=10 og empty_cameras=1; ellers falder de tilbage til 50 og 0.
Giver den åbne version mig den fulde Pi0.5 fra papiret?▾
Nej. Begge understøtter kun flow matching action head. Den diskrete-token forhåndstræningsfase med FAST action tokenizer og den højniveau subtask-forudsigelse blev ikke frigivet, og lerobot/pi05_base-kortet tilføjer RL til den liste, selvom pi0.5-papiret ikke beskriver nogen forstærkningslæringsfase. Du træner en lavniveau-politik betinget af en sprogstreng, du leverer, ikke en model, der selv dekomponerer en lang opgave.
Hvilke versioner er denne vejledning skrevet til?▾
openpi på main og lerobot 0.6.1, udgivelsen siden 3. august 2026, begge læst den 23. august 2026. v3.0 datasæt ankom med 0.4.0 i oktober 2025. 0.6.0 gjorde basispakken letvægts, så lerobot[pi] alene installerer ikke længere en trænings-stack, og flyttede udrulning til lerobot-rollout. Træningstids-RTC er kun på main; den hostede træner her kø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