
Finetune Pi0.5, de flow-matching VLA van Physical Intelligence, met je eigen robotdata. Echte commando's voor openpi en lerobot pi05, valkuilen in datasetformaten, VRAM- en latentielimieten.
Pi0.5 is het model waar je naar grijpt wanneer een beleid moet werken in een ruimte die het nog nooit heeft gezien. Het is ook de meest onhandige van de vijf trainable policies hier om handmatig te fine-tunen: de upstream repository is JAX-georiënteerd, de LeRobot-poort verplaatste de implementatie uit lerobot-record in 0.6.0 en maakte de basisinstallatie te klein om mee te trainen, en een volledige fine-tune past niet op een 4090. Hieronder: wat flow matching kost bij inferentie, de twee commandoroutes, en het getal van 485 ms dat bepaalt of het resultaat bruikbaar is.
Wat je moet weten
- •Een flow-matching VLA: een 3B PaliGemma VLM plus een 300M actie-expert die continue actiechunks decodeert. Twee routes om het te fine-tunen, openpi en LeRobot pi05, 0.65 punten verschil op het LIBERO-gemiddelde.
- •Volledige fine-tuning vereist meer dan 70 GB VRAM. openpi vermeldt LoRA op 22.5 GB, alleen op zijn JAX-pad.
- •De dataset moet LeRobotDataset v3.0 zijn met q01 en q99 kwantielen in meta/stats.json, anders mislukt de eerste batch.
- •Controleer eerst je lerobot-versie: 0.6.0 maakte het basispakket lichtgewicht en verplaatste de implementatie uit lerobot-record.
- •Hier draait het op 485 ms per actiestap, vereist 50 afleveringen, en kost ongeveer 4 tot 12 USD per run.
Wat Pi0.5 werkelijk is
Physical Intelligence publiceerde pi0 in oktober 2024: een flow-matching visie-taal-actie-model op een voorgetraind VLM: PaliGemma met 3 miljard parameters plus een 300M actie-expert die vanaf nul is geïnitialiseerd, 3.3 miljard in totaal. Het artikel rapporteert pre-training op meer dan 10.000 uur robotdata verdeeld over 7 robotconfiguraties en 68 taken. Meer in het pi0-artikel.
Pi0.5 (arXiv 2504.16054, 22 april 2025) behoudt dat skelet en verandert het trainingsdieet: webgegevens, objectdetectie, verbale instructies van mensen die de robot coachen, subtaaklabels, cross-embodiment gegevens van robots in veel huizen. Het resultaat is een robot die keukens schoonmaakt in huizen die niet in de trainingsset zaten. De openpi README voegt een detail toe dat de titel niet vermeldt: de uitgebrachte pi0.5 werd getraind met kennisisolatie (arXiv 2505.23705).
| Eigenschap | pi0 | pi0.5 |
|---|---|---|
| VLM backbone variant | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Actie-expert variant | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| action_horizon standaard | 50 | 50 |
| max_token_len | 48 | 200 |
| discrete_state_input | false | true, toestand gediscretiseerd in bakken in de prompt |
| Basis checkpoint | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
De openpi README is expliciet: de repository ondersteunt alleen de flow matching head, voor zowel pi0.5 training als inferentie. Het artikel beschrijft twee fasen en de code bevat alleen de tweede: pre-training representeert elke actie als discrete tokens via de FAST tokenizer, en bij implementatie leidt het model een subtaak op hoog niveau af vóór elk actieblok. Geen van beide is in de repository te vinden. De lerobot/pi05_base kaart geeft dezelfde lijst en voegt RL toe, hoewel het pi0.5 artikel helemaal geen reinforcement learning fase beschrijft. De LeRobot poort erft die reikwijdte, en zo ook elke gehoste trainer erop, inclusief die hier. Licenties zijn ook gesplitst: de pi05 doc pagina zegt Apache 2.0, de lerobot/pi05_base kaart is getagd license: gemma.
Wat flow matching verandert aan training en inferentie
Een beleid dat je kunt trainen op een SO-100, regresseert acties direct (ACT) of tokeniseert ze en decodeert autoregressief (pi0-FAST). Flow matching doet geen van beide: het leert een vectorveld dat ruis transporteert naar een schone actiechunk, en integreert het vervolgens. Het pi0-artikel gebruikt 10 integratiestappen met een stapgrootte van 0.1; de pi05-configuratie van LeRobot heeft dezelfde num_inference_steps: int = 10.
- Training: het verlies regresseert een ruisige actiechunk. Geen tokenizer om af te stemmen, geen discretisatie van je gewrichtshoeken.
- Inference: één chunk kost tien forward passes door de actie-expert. Dat is structureel, geen afstemmingsprobleem.
- Output: continue acties van dimensie 32, intern opgevuld, verlies berekend op de dimensies die je robot heeft. Een 6-DoF arm plus grijper gebruikt 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 TrueDe PaliGemma-backbone, en de poort ervoor
PaliGemma (arXiv 2407.07726) is een SigLIP-So400m visuele encoder op een Gemma-2B taalmodel, met ongeveer 3B parameters. Pi0.5 erft zijn tokenizer, en die tokenizer bevindt zich in een afgeschermde repository. Dit is de meest voorkomende manier waarop een eerste run mislukt, vóór de eerste trainingsstap.
De LeRobot pi05 documentatie stelt het duidelijk: pi0.5 gebruikt de afgeschermde google/paligemma-3b-pt-224 tokenizer, dus accepteer de licentie op de Hub en voer eerst hf auth login uit. Toegang wordt handmatig verleend, niet direct. Sla dit over, start een betaalde cloud run, en u betaalt voor een pod die geen tokenizer kan downloaden.
Voordat u begint: datasetformaat, episodes, hardware
Pi0.5 in LeRobot leest een LeRobot dataset in v3.0-indeling, die met lerobot 0.4.0 in oktober 2025 is geïntroduceerd: veel episodes per Parquet- en MP4-bestand in plaats van één bestand per aflevering, met grenzen in meta/episodes/ in plaats van bestandsnamen. Neem op met de desktopclient of volg neem uw eerste dataset op en u heeft het.
| Modus | Vereist GPU-geheugen | Voorbeeld GPU |
|---|---|---|
| Inference | more than 8 GB | RTX 4090 |
| Fine-tuning, LoRA | more than 22.5 GB | RTX 4090 |
| Fine-tuning, volledig | more than 70 GB | A100 80 GB or H100 |
Pi0.5 en SmolVLA vereisen LeRobot v3.0. GR00T N1.7 en GR00T N1.5 vereisen v2.0 of v2.1 en crashen op een v3.0 dataset. Eén opnamesessie kan niet beide voeden zonder conversie, en de foutmelding vermeldt niet "verkeerde datasetversie". Zie dataset geweigerd: v3 vereist.
# 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 offsetsHet platform vereist minimaal 50 afleveringen voor Pi0.5, dezelfde ondergrens als GR00T en ACT. Pre-training doet het zware werk, dus 50 schone afleveringen zijn beter dan 200 slordige. Nieuw hiermee? Begin met de handleiding voor gegevensverzameling.

Route A: fine-tunen met de openpi repository
De referentie-implementatie: eerst JAX, alleen getest op Ubuntu 22.04, aangestuurd door configuratieobjecten in plaats van vlaggen. Een PyTorch-pad arriveerde in september 2025, gevalideerd op LIBERO. Drie stappen: converteer uw gegevens, definieer een configuratie, train en serveer.
- 1Klonen en installeren
openpi gebruikt uv. GIT_LFS_SKIP_SMUDGE zorgt ervoor dat LeRobot als afhankelijkheid kan worden opgenomen zonder 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 . - 2Converteer uw gegevens naar een LeRobot-dataset
Upstream levert converters voor LIBERO en DROID en verwacht dat u er één aanpast. Het werk zit in de sleutelmapping.
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3Voeg een trainingsconfiguratie toe
Configuraties zijn TrainConfig-vermeldingen in src/openpi/training/config.py. Deze past pi05_droid_finetune aan, waarbij de gewichtslader verwijst naar 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, ) - 4Bereken normstatistieken
Wordt uitgevoerd tegen de configuratienaam, niet de dataset. Dit overslaan is hier de klassieke eerste fout.
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5Trainen
De variabele laat JAX 90 procent van het GPU-geheugen gebruiken in plaats van de standaard 75. Op een 80 GB kaart bepaalt dat of de uitvoering overleeft.
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6Dien het op
De server luistert op poort 8000 en beantwoordt observatievragen; uw robotruntime is de client.
bashuv run scripts/serve_policy.py policy:checkpoint \ --policy.config=pi05_so100 \ --policy.dir=checkpoints/pi05_so100/my_experiment/20000
openpi's PyTorch-implementatie ondersteunt geen pi0-FAST, mixed precision, FSDP, LoRA of EMA-gewichten, dus de LoRA die 22.5 GB bereikt, is alleen JAX, via de gemma_2b_lora en gemma_300m_lora varianten. Erger nog: de setup kopieert gepatchte bestanden over uw geïnstalleerde transformers 4.53.2, en de README waarschuwt dat met uv's standaard hardlink-modus dit transformers permanent wijzigt in de uv-cache en kan doorsijpelen naar andere projecten. Maak dit ongedaan met uv cache clean transformers.
Route B: fine-tunen met lerobot pi05
De LeRobot-poort omvat dezelfde gewichten in de CLI die u al gebruikt voor ACT en SmolVLA. Alles hieronder is gecontroleerd tegen lerobot 0.6.1, de release sinds 3 augustus 2026, en de pi05-documentatie van 23 augustus 2026. Versies zijn hier belangrijk: v3.0 datasets kwamen met 0.4.0 in oktober 2025, de 0.5.0 blog van 9 maart 2026 presenteert pi0-FAST en Real-Time Chunking, en 0.6.0 op 6 juli 2026 maakte het basispakket lichtgewicht en verplaatste de deployment naar lerobot-rollout.
Eén ding is niet veranderd: lerobot-train en lerobot-record waren al entry points in 0.3.2, augustus 2025. Een tutorial die nog steeds python -m lerobot.scripts.train aanroept, dateert van vóór een jaar van veranderingen en is ook voor de rest het wantrouwen waard.
- 1Installeren met de juiste extra's
Sinds 0.6.0 bevat de basisinstallatie alleen kern-ML-afhankelijkheden, en de pi-extra voegt geen dataset- of trainingscode toe, dus een fine-tune heeft ook de training-extra nodig. Oudere one-liners falen hier bij importtijd.
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]' - 2Authenticeren
Accepteer de paligemma-3b-pt-224 licentie in een browser en log vervolgens in op de machine die traint.
bashhf auth login - 3Kwantielstatistieken toevoegen
Pi0.5 normaliseert STATE en ACTION met kwantielen, dus meta/stats.json heeft q01 en q99 nodig. Oudere datasets bevatten alleen min, max, gemiddelde, std.
bashlerobot-edit-dataset \ --repo_id your_dataset \ --new_repo_id your_dataset \ --operation.type recompute_stats \ --operation.overwrite true - 4Fine-tunen vanuit lerobot/pi05_base
Stel de batchgrootte in op wat uw kaart aankan; de documentatie gebruikt 64 op LIBERO bij 80 GB. Geef bfloat16 expliciet door, de standaardconfiguratie is 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 - 5Uitvoeren op de arm
In 0.6.x is dit lerobot-rollout: lerobot-record weigert een policy en accepteert geen eval_ datasetnamen. Base stuurt de arm aan, sentry neemt de rollout op.
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
| Vlag | Wat het doet | Opmerking |
|---|---|---|
| --policy.type=pi05 | selecteert Pi0.5 | vereist met pretrained_path, weglaten met --policy.path |
| --policy.pretrained_path | laadt alleen gewichten | featurenamen van uw dataset, opgeslagen instellingen gereset |
| --policy.path | gewichten plus de checkpoint config.json | opgeslagen instellingen zoals n_action_steps worden overgenomen |
| --policy.n_action_steps | stappen verbruikt per chunk | valt terug op 50, nooit boven chunk_size (standaard 50) |
| --policy.train_expert_only | bevriest de VLM, traint de expert | standaard false, minder geheugen, enige kosten in succes |
| --policy.gradient_checkpointing | herberekenen in plaats van activaties opslaan | standaard false, de eerste hendel wanneer een run niet past |
| --peft.method_type=LORA | LoRA-adapters in plaats van volledige gewichten | heeft de peft-extra nodig, gedocumenteerd voorbeeld is SmolVLA |
| --policy.rtc_training_max_delay | actie-prefix conditionering voor RTC | alleen main branch, niet in 0.6.1, moet onder chunk_size blijven |
| --rename_map | wijst datasetkolommen toe aan policy features | nodig wanneer uw cameratoetsen verschillen |
Zonder kwantielen krijgt u ValueError: QUANTILES normalization mode requires q01 and q99 stats bij de eerste batch. Herbereken de statistieken, maar het resultaat komt terecht in $HF_LEROBOT_HOME/your_dataset, niet in de cache die --dataset.repo_id leest, dus train met --dataset.root dat daarheen wijst of push naar de Hub. Of sla kwantielen over met --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', zoals het LIBERO referentiecommando doet.
Drie sets standaardwaarden, en welke de trainer bereiken
openpi's TrainConfig is de referentie, LeRobot's PI05Config is wat lerobot-train gebruikt als je niets zegt, en het formulier hier stuurt een derde set. De verrassing is de leersnelheid: beide upstream defaults pieken op 2.5e-5, terwijl openpi's eigen pi05_libero config en dit platform deze verhogen naar 5e-5.
| Instelling | openpi TrainConfig | lerobot pi05 en lerobot-train | AY-Robots stuurt |
|---|---|---|---|
| Batchgrootte | 32 | 8 | 1 |
| Piekleersnelheid | 2.5e-5, cosine decay | optimizer_lr 2.5e-5 | 5e-5 |
| Trainingsstappen | 30,000 | 100,000 | 30,000 |
| Checkpointinterval | 1,000 steps | 20,000 steps | niet in het formulier |
| Seed | 42 | 1,000 | in het formulier |
| Actiechunk | action_horizon 50 | chunk_size 50, n_action_steps 50 | niet in het formulier |
| Gewicht dtype | bfloat16 | float32 until you pass --policy.dtype | niet in het formulier |
| Gradiëntaccumulatie | geen dergelijke instelling, fsdp_devices in plaats daarvan | absent from every release so far | 16, en het wordt weggelaten |
Is de poort getrouw? Het LeRobot-team heeft het LIBERO-basismodel verder 6k stappen gefine-tuned en vergeleken met openpi's referentiecijfers op vier suites: gemiddeld 97.5 procent tegen 96.85, voor op Libero 10, achter op Spatial. De route is een keuze voor tooling, niet voor kwaliteit.
- Meer dan 10.000 uur robot pre-training erachter, dus 50 afleveringen van jouw taak kunnen voldoende zijn.
- Continue acties: geen tokenizer om af te stemmen, geen discretisatiebeperking op je gewrichtshoeken.
- De LeRobot-poort scoort 97.5 procent op het LIBERO-gemiddelde tegen openpi's 96.85, dus de vriendelijkere CLI kost niets meetbaars.
- Parameter-efficiënte paden aan beide zijden: openpi's JAX LoRA-varianten, LeRobot's PEFT-integratie.
- Volledige fine-tuning vereist meer dan 70 GB. Het 22.5 GB LoRA-cijfer is openpi's JAX-getal; er is geen gepubliceerd voor pi05 onder PEFT.
- 485 ms per actiestap, de langzaamste van de vijf hier: twee keer SmolVLA, vierentwintig keer ACT.
- LeRobot v3.0 is vereist, dus een dataset opgenomen voor een GR00T-run moet worden geconverteerd, en vice versa.
- Nieuwe opties komen eerst op main: training-time RTC en MEM geheugen zitten niet in 0.6.1, dus de nieuwste documentatie kan betekenen dat je vanuit git moet installeren.
De 485 ms realiteit, en waar het onbruikbaar wordt
Dit bepaalt je project, dus het komt vóór de kostentabel. De per actiestap gemeten hier voor Pi0.5 is 485 ms. Tegen de andere vier:
| Beleid | Inferentie per actiestap | Parameters | GPU-klasse | Minimum aantal afleveringen |
|---|---|---|---|---|
| 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 |

De besturingslus van deze vijf modellen loopt 20 tot 485 ms per actiestap. Roundtrips via het openbare internet bovenop 485 ms maken van een werkend beleid een aarzelend beleid. Inferentie op afstand is haalbaar voor langzame pick-and-place, niet voor snelle reactieve beweging. We zeggen dat liever dan een demo te verkopen die alleen op een LAN werkt. Als uw arm pauzeert tussen brokken, begin dan bij beleid bevriest midden in de beweging.
Upstream heeft een antwoord, en de helft ervan zit al in de release die u kunt installeren. Real-Time Chunking genereert het volgende brok terwijl de arm nog het huidige uitvoert, en leidt vervolgens de overlappende stappen van het nieuwe brok om dicht bij het reeds uitgevoerde deel te blijven, zodat de arm niet stopt of schokt bij de naad. De inferentie-tijd vorm is geleverd in de 0.4.2 changelog voor Pi0, Pi0.5 en SmolVLA en is een rollout-vlag, geen hertraining:
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=60Het maakt het model niet sneller. Het verbergt de kloof: de 485 ms wordt nog steeds besteed, maar buiten het kritieke pad, zodat de wachtrij niet leeg raakt tussen brokken. De trainingstijdvariant van arXiv 2512.05964 gaat verder: het model leert te conditioneren op een schoon actievoorvoegsel, zodat bij inferentie de overlap hard wordt ingevuld met per-actie flow-tijdstappen in plaats van geleid, en de guidance backward pass verdwijnt. Tijdens de training sampelt het een voorvoegsellengte per voorbeeld en neemt het het flowverlies op de resterende postfix. Die vlag leeft alleen op main, niet in 0.6.1, en de vertraging waarvoor u traint, moet onder chunk_size blijven.
Twee manieren om een Pi0.5 checkpoint te verkrijgen
Je huurt of bezit een 80 GB kaart, installeert een van de bovenstaande stacks, converteert je dataset en begeleidt de run. Je behoudt elke instelling: openpi's JAX LoRA, LeRobot's PEFT adapters, relatieve acties, aangepaste toetsenmapping. Je behoudt ook elke fout.
- Hardware: A100 80 GB of H100, of een 24 GB kaart via openpi's JAX LoRA pad.
- Setup: een middag voor de eerste run, voornamelijk toetsenmapping en de gated tokenizer.
- Niet beschikbaar op het gehoste formulier: PEFT adapters, relatieve acties, training-time RTC, MEM geheugen.
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=1000Je kiest model en dataset in het trainingsformulier, de backend huurt een GPU op een spotmarkt op basis van de vereiste VRAM, voert de trainer uit en schrijft checkpoints naar objectopslag. Pi0.5 is hier alleen cloud-gebaseerd. Gidsen bestaan voor SO-100, SO-101, Koch v1.1 en LeKiwi.
| Instelling | Wat het platform verstuurt voor Pi0.5 |
|---|---|
| Base checkpoint | lerobot/pi05_base |
| Policy type | pi05 |
| Batch size | 1 |
| Learning rate | 5e-5 |
| Max steps | 30000 |
| Gradient accumulatie | 16, maar zie de waarschuwing hieronder |
| Extra instellingen in het formulier | seed, logFreq |
| Dataset format | LeRobot v3.0 |
| GPU tier | A100 80 GB or H100 80 GB |
De trainer stuurt een gradient accumulatie waarde van 16 en lerobot 0.5.1 heeft geen vlag om deze te ontvangen, dus deze wordt genegeerd. Geen enkele uitgebrachte lerobot heeft er een: de instelling bestaat alleen op main, als --accelerator.gradient_accumulation.steps. De effectieve batchgrootte hier is 1, tegenover de 256 die openpi's pi05_libero config gebruikt. Goed om te weten voordat je een loss curve leest. De instelling is wel van toepassing op GR00T N1.7 en GR00T N1.5 runs.
Inference werkt op dezelfde manier: een pod wordt geprovisioneerd om het beleid te dienen en je lokale client communiceert ermee. De pod heeft een idle watchdog en vernietigt zichzelf, zodat een vergeten tabblad niet stilletjes kosten maakt. Het latency voorbehoud is van toepassing, daarom wint ACT met 20 ms vaak een snelle taak.
Wanneer het niet werkt
| Symptoom | Meest waarschijnlijke oorzaak |
|---|---|
| Run afgewezen voordat deze start | Dataset v2.1 maar Pi0.5 wil v3.0, of omgekeerd voor GR00T |
| ImportError, datasets pakket ontbreekt | lerobot 0.6.x without the training extra |
| ValueError over q01 en q99 op batch één | Geen kwantielen in meta/stats.json; herberekenen of MEAN_STD gebruiken |
| CUDA out of memory bij stap 0 | Full fine-tune below 70 GB; try checkpointing or train_expert_only |
| 401 of gated repo fout | PaliGemma tokenizer license not accepted |
| Loss daalt, robot doet niets | Normalisatie mismatch, of het beleid kopieert de staat |
| Arm pauzeert tussen brokken | Per-step latency plus round trip; the chunk queue runs dry |
| Werkt in de ene setup, faalt in de andere | Te weinig afleveringen, of allemaal in één configuratie |
- Dataset geweigerd: v3 vereist
- Onvoldoende geheugen tijdens training
- Verlies daalt, maar het beleid doet niets
- Beleid bevriest midden in de beweging
- Beleid werkt slechts in één opstelling
- Trainingstaak blijft in wachtrij staan
Wat één run kost
Pi0.5 bevindt zich in de dure categorie omdat het een 80 GB kaart nodig heeft, en spotprijzen fluctueren, dus het cijfer is een bereik in plaats van een vaste prijs. Voor veel SO-100 taken, train SmolVLA of ACT op de 24 GB categorie eerst, bevestig dat de taak überhaupt leerbaar is, en besteed er dan A100-uren aan. Train uw eerste beleid doorloopt die goedkopere lus, en prijzen toont de huidige categorieën.
| Categorie | Beleidsregels | Typische run | Prijs per uur | Kosten per run |
|---|---|---|---|---|
| A100 80 GB of H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 to 6 hours | 1.20 to 2.00 USD | about 4 to 12 USD |
| RTX 4090 of elke 24 GB kaart | SmolVLA, ACT | 2 to 5 hours | 0.30 to 0.60 USD | about 1 to 3 USD |

Voordat u een avond investeert: en leggen dezelfde cijfers naast elkaar. De bevat 85 VLA-modellen met 332 benchmarkresultaten, elk gekoppeld aan de bron, en achtergrondinformatie over de familie vindt u in .
Train Pi0.5 zonder de stack op te bouwen
Kies de dataset en de hyperparameters in een formulier. De backend huurt een 80 GB kaart op de spotmarkt, draait de trainer en schrijft de checkpoints naar objectopslag. Gidsen voor SO-100, SO-101, Koch v1.1 en LeKiwi.
Open de trainingsgidsenKan ik Pi0.5 fine-tunen op een RTX 4090?▾
Geen volledige fine-tune: openpi vermeldt daarvoor meer dan 70 GB, dus een A100 80 GB of een H100. Het 22.5 GB LoRA-cijfer behoort tot het JAX-pad; de PyTorch-implementatie heeft geen LoRA. De PEFT-integratie van LeRobot bestaat, maar het gedocumenteerde voorbeeld is SmolVLA en er is geen VRAM-cijfer gepubliceerd voor pi05.
Hoeveel afleveringen heb ik nodig?▾
Vijftig, hetzelfde minimum als GR00T en ACT; alleen SmolVLA gaat lager, op 30. Het basischeckpoint bevat meer dan 10.000 uur pre-training, dus de fine-tune past zich aan in plaats van van nul te leren: 50 schone, gevarieerde afleveringen verslaan tweehonderd uit één configuratie.
Wat is het verschil tussen --policy.path en --policy.pretrained_path?▾
--policy.path laadt gewichten en de config.json van het checkpoint, dus opgeslagen instellingen zoals n_action_steps worden overgenomen en --policy.type moet worden weggelaten. --policy.pretrained_path laadt alleen gewichten: featurenamen komen van uw dataset, opgeslagen instellingen worden gereset, --policy.type is vereist. Daarom geeft de LIBERO-opdracht n_action_steps=10 en empty_cameras=1 expliciet door; anders vallen ze terug op 50 en 0.
Geeft de open versie mij de volledige Pi0.5 uit het artikel?▾
Nee. Beide ondersteunen alleen de flow matching action head. De discrete-token pre-training fase met de FAST action tokenizer en de high-level subtaakvoorspelling zijn niet vrijgegeven, en de lerobot/pi05_base kaart voegt RL toe aan die lijst, hoewel het pi0.5-artikel geen reinforcement learning fase beschrijft. U traint een low-level beleid geconditioneerd op een taalstring die u aanlevert, niet een model dat zelf een lange taak ontleedt.
Tegen welke versies is deze gids geschreven?▾
openpi op main en lerobot 0.6.1, de release sinds 3 augustus 2026, beide gelezen op 23 augustus 2026. v3.0 datasets arriveerden met 0.4.0 in oktober 2025. 0.6.0 maakte het basispakket lichtgewicht, dus lerobot[pi] alleen installeert geen trainingsstack meer, en verplaatste de deployment naar lerobot-rollout. Training-time RTC is alleen op main; de gehoste trainer hier draait 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