De AY-Robots trainingsmatrix met vijf beleidsregels als rijen en vier robotarmen als kolommen, elke cel een link naar een specifieke finetuninggids
Pi0.5Flow MatchingVLA-trainingLeRobotFinetunen

Hoe Pi0.5 te trainen met je eigen robotdata

AY-Robots ResearchAugust 23, 202616 min leestijd

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).

Eigenschappi0pi0.5
VLM backbone variantgemma_2b (PaliGemma)gemma_2b (PaliGemma)
Actie-expert variantgemma_300mgemma_300m
action_dim3232
action_horizon standaard5050
max_token_len48200
discrete_state_inputfalsetrue, toestand gediscretiseerd in bakken in de prompt
Basis checkpointgs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
Wat openbaar is, is niet het hele artikel

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.
python
# 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 True
Gelezen uit src/openpi/models/pi0_config.py op de openpi main branch, 23 augustus 2026.

De 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.

Accepteer de afgeschermde licentie voordat u een GPU huurt

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.

ModusVereist GPU-geheugenVoorbeeld GPU
Inferencemore than 8 GBRTX 4090
Fine-tuning, LoRAmore than 22.5 GBRTX 4090
Fine-tuning, volledigmore than 70 GBA100 80 GB or H100
De versieval die een dag kost

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.

bash
# 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 offsets
Uit de LeRobotDataset v3.0 documentatie.

Het 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.

De AY-Robots beleidspagina die de vijf trainbare beleidsregels vergelijkt op basis van parameters, GPU-tier, latentie en minimum aantal afleveringen
Pi0.5 bevindt zich in de A100- en H100-tier met 485 ms per actiestap, met een minimum van 50 afleveringen.

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.

  1. 1
    Klonen en installeren

    openpi gebruikt uv. GIT_LFS_SKIP_SMUDGE zorgt ervoor dat LeRobot als afhankelijkheid kan worden opgenomen zonder LFS-blobs.

    bash
    git 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 .
  2. 2
    Converteer 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.

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    Voeg 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.

    python
    TrainConfig(
        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,
    )
  4. 4
    Bereken normstatistieken

    Wordt uitgevoerd tegen de configuratienaam, niet de dataset. Dit overslaan is hier de klassieke eerste fout.

    bash
    uv run scripts/compute_norm_stats.py --config-name pi05_so100
  5. 5
    Trainen

    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.

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    Dien het op

    De server luistert op poort 8000 en beantwoordt observatievragen; uw robotruntime is de client.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Het PyTorch-pad is niet het JAX-pad

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.

  1. 1
    Installeren 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]'
  2. 2
    Authenticeren

    Accepteer de paligemma-3b-pt-224 licentie in een browser en log vervolgens in op de machine die traint.

    bash
    hf auth login
  3. 3
    Kwantielstatistieken 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.

    bash
    lerobot-edit-dataset \
        --repo_id your_dataset \
        --new_repo_id your_dataset \
        --operation.type recompute_stats \
        --operation.overwrite true
  4. 4
    Fine-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.

    bash
    lerobot-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
  5. 5
    Uitvoeren 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.

    bash
    lerobot-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
VlagWat het doetOpmerking
--policy.type=pi05selecteert Pi0.5vereist met pretrained_path, weglaten met --policy.path
--policy.pretrained_pathlaadt alleen gewichtenfeaturenamen van uw dataset, opgeslagen instellingen gereset
--policy.pathgewichten plus de checkpoint config.jsonopgeslagen instellingen zoals n_action_steps worden overgenomen
--policy.n_action_stepsstappen verbruikt per chunkvalt terug op 50, nooit boven chunk_size (standaard 50)
--policy.train_expert_onlybevriest de VLM, traint de expertstandaard false, minder geheugen, enige kosten in succes
--policy.gradient_checkpointingherberekenen in plaats van activaties opslaanstandaard false, de eerste hendel wanneer een run niet past
--peft.method_type=LORALoRA-adapters in plaats van volledige gewichtenheeft de peft-extra nodig, gedocumenteerd voorbeeld is SmolVLA
--policy.rtc_training_max_delayactie-prefix conditionering voor RTCalleen main branch, niet in 0.6.1, moet onder chunk_size blijven
--rename_mapwijst datasetkolommen toe aan policy featuresnodig wanneer uw cameratoetsen verschillen
De fout die de meeste eerste runs tegenkomen

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.

Instellingopenpi TrainConfiglerobot pi05 en lerobot-trainAY-Robots stuurt
Batchgrootte3281
Piekleersnelheid2.5e-5, cosine decayoptimizer_lr 2.5e-55e-5
Trainingsstappen30,000100,00030,000
Checkpointinterval1,000 steps20,000 stepsniet in het formulier
Seed421,000in het formulier
Actiechunkaction_horizon 50chunk_size 50, n_action_steps 50niet in het formulier
Gewicht dtypebfloat16float32 until you pass --policy.dtypeniet in het formulier
Gradiëntaccumulatiegeen dergelijke instelling, fsdp_devices in plaats daarvanabsent from every release so far16, 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.

Pi0.5 fine-tunen op je eigen data
Voordelen
  • 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.
Afwegingen
  • 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:

BeleidInferentie per actiestapParametersGPU-klasseMinimum aantal afleveringen
ACT20 ms~80 MRTX 4090 or any 24 GB card50
GR00T N1.7152 ms~3 BA100 80 GB or H100 80 GB50
GR00T N1.5165 ms~3 BA100 80 GB or H100 80 GB50
SmolVLA245 ms~450 MRTX 4090 or any 24 GB card30
Pi0.5485 ms~3 BA100 80 GB or H100 80 GB50
De AY-Robots onderlinge vergelijkingspagina voor GR00T N1.7 tegen Pi0.5, met parameters, GPU-klasse, latentie en datasetformaat
Zelfde GPU-klasse, zelfde minimum aantal afleveringen, verschillende datasetversie, drievoudige latentiekloof.
Inferentie moet naast de servo's zitten

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:

bash
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=60
execution_horizon is hoeveel stappen van het vorige brok het nieuwe brok moet overeenkomen; de RTC-documenten geven 8 tot 12 als het gebruikelijke bereik. De standaard inferentie-backend is --inference.type=sync.

Het 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.
bash
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=1000
De opdracht die geen gehost formulier uitvoert, en pip niet kan installeren: training-time RTC is een vlag van de hoofdbranch.

Wanneer het niet werkt

SymptoomMeest waarschijnlijke oorzaak
Run afgewezen voordat deze startDataset v2.1 maar Pi0.5 wil v3.0, of omgekeerd voor GR00T
ImportError, datasets pakket ontbreektlerobot 0.6.x without the training extra
ValueError over q01 en q99 op batch éénGeen kwantielen in meta/stats.json; herberekenen of MEAN_STD gebruiken
CUDA out of memory bij stap 0Full fine-tune below 70 GB; try checkpointing or train_expert_only
401 of gated repo foutPaliGemma tokenizer license not accepted
Loss daalt, robot doet nietsNormalisatie mismatch, of het beleid kopieert de staat
Arm pauzeert tussen brokkenPer-step latency plus round trip; the chunk queue runs dry
Werkt in de ene setup, faalt in de andereTe weinig afleveringen, of allemaal in één configuratie

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.

CategorieBeleidsregelsTypische runPrijs per uurKosten per run
A100 80 GB of H100Pi0.5, GR00T N1.7, GR00T N1.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD
RTX 4090 of elke 24 GB kaartSmolVLA, ACT2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
De AY-Robots kostentabel die toont welke GPU elk beleid nodig heeft, de typische looptijd en prijs, en hoeveel afleveringen nodig zijn voordat een beleid bruikbaar is
Dezelfde twee niveaus op de productpagina: Pi0.5 huurt de 80 GB kaart, SmolVLA en ACT passen op een 4090.

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 trainingsgidsen
Kan 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started