AY-Robots treningsmatrise med fem policyer som rader og fire robotarmer som kolonner, hver celle en lenke til en spesifikk finjusteringsguide
Pi0.5FlytmatchingVLA-treningLeRobotFinjustering

Hvordan trene Pi0.5 på dine egne robotdata

AY-Robots ResearchAugust 23, 202616 min lesetid

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

Egenskappi0pi0.5
VLM ryggrads-variantgemma_2b (PaliGemma)gemma_2b (PaliGemma)
Handlings-ekspertvariantgemma_300mgemma_300m
action_dim3232
action_horizon default5050
max_token_len48200
discrete_state_inputfalsetrue, tilstand diskretisert i beholdere i prompten
Grunnleggende sjekkpunktgs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
Det som er offentlig er ikke hele artikkelen

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.
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
Lest fra src/openpi/models/pi0_config.py på openpi main-grenen, 23. august 2026.

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

Godta den lukkede lisensen før du leier en GPU

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.

ModusNødvendig GPU-minneEksempel-GPU
Inferensmore than 8 GBRTX 4090
Finjustering, LoRAmore than 22.5 GBRTX 4090
Finjustering, fullmore than 70 GBA100 80 GB or H100
Versjonsfellen som koster en dag

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.

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
Fra LeRobotDataset v3.0-dokumentasjonen.

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

AY-Robots' retningslinjeside som sammenligner de fem trenbare retningslinjene etter parametere, GPU-nivå, latens og minimum antall episoder
Pi0.5 befinner seg i A100- og H100-nivået med 485 ms per handlingstrinn, med et minimum på 50 episoder.

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.

  1. 1
    Klon og installer

    openpi bruker uv. GIT_LFS_SKIP_SMUDGE er det som lar LeRobot komme inn som en avhengighet uten 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
    Konverter dataene dine til et LeRobot-datasett

    Oppstrøms leveres konvertere for LIBERO og DROID, og du forventes å tilpasse en. Arbeidet er nøkkelkartleggingen.

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

    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
    Beregn normaliseringsstatistikker

    Kjører mot konfigurasjonsnavnet, ikke datasettet. Å hoppe over dette er den klassiske første feilen her.

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

    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.

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    Tjen den

    Serveren lytter på port 8000 og svarer på observasjonsforespørsler; robotens kjøretid er klienten.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
PyTorch-stien er ikke JAX-stien

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

  1. 1
    Installer 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]'
  2. 2
    Autentiser

    Godta paligemma-3b-pt-224-lisensen i en nettleser, logg deretter inn på maskinen som trener.

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

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

    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
    Kjø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.

    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
FlaggHva det gjørMerknad
--policy.type=pi05velger Pi0.5påkrevd med pretrained_path, utelat med --policy.path
--policy.pretrained_pathlaster kun vekterfunksjonsnavn fra datasettet ditt, lagrede innstillinger tilbakestilles
--policy.pathvekter pluss sjekkpunkt config.jsonlagrede innstillinger som n_action_steps arves
--policy.n_action_stepstrinn forbrukt per delfaller tilbake til 50, aldri over chunk_size (standard 50)
--policy.train_expert_onlyfryser VLM, trener ekspertenstandard false, mindre minne, noe kostnad i suksess
--policy.gradient_checkpointingrekalkuler i stedet for å lagre aktiveringerstandard false, den første spaken når en kjøring ikke passer
--peft.method_type=LORALoRA-adaptere i stedet for fulle vekterkrever peft-ekstraen, dokumentert eksempel er SmolVLA
--policy.rtc_training_max_delayaction-prefix-kondisjonering for RTCkun hovedgren, ikke i 0.6.1, må forbli under chunk_size
--rename_mapmapper datasettkolonner til policyfunksjonernødvendig når kameranøklene dine avviker
Feilen de fleste første kjøringer støter på

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.

Innstillingopenpi TrainConfiglerobot pi05 og lerobot-trainAY-Robots sender
Batchstørrelse3281
Maksimal læringsrate2.5e-5, cosinus-nedbrytningoptimizer_lr 2.5e-55e-5
Treningssteg30,000100,00030,000
Sjekkpunktintervall1,000 steg20,000 stegikke i skjemaet
Frøverdi421,000i skjemaet
Handlingsbitaction_horizon 50chunk_size 50, n_action_steps 50ikke i skjemaet
Vekt-dtypebfloat16float32 til du sender --policy.dtypeikke i skjemaet
Gradientakkumuleringingen slik innstilling, fsdp_devices i stedetfraværende i alle utgivelser så langt16, 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.

Finjustering av Pi0.5 på egne data
Fordeler
  • 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.
Avveininger
  • 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:

PolicyInferens per handlingstrinnParametreGPU-nivåMinimum antall episoder
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
AY-Robots' sammenligningsside for GR00T N1.7 mot Pi0.5, med parametere, GPU-nivå, latens og datasettformat
Samme GPU-nivå, samme episodegulv, forskjellig datasettversjon, trefoldig latensforskjell.
Inferens må sitte ved siden av servoene

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:

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 er hvor mange trinn av den forrige biten den nye må stemme overens med; RTC-dokumentene angir 8 til 12 som det vanlige området. Standard inferens-backend er --inference.type=sync.

Det 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.
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
Kommandoen ingen hostet form kjører, og pip kan ikke installere: RTC under trening er et flagg i hovedgrenen.

Når det ikke fungerer

SymptomMest sannsynlige årsak
Kjøring avvist før den starterDatasett v2.1, men Pi0.5 krever v3.0, eller omvendt for GR00T
ImportError, datasets-pakke manglerlerobot 0.6.x uten treningsekstra
ValueError om q01 og q99 på batch énIngen kvantiler i meta/stats.json; beregn på nytt eller bruk MEAN_STD
CUDA tom for minne ved trinn 0Full finjustering under 70 GB; prøv sjekkpunkt eller train_expert_only
401 eller gated repo-feilPaliGemma tokenizer-lisens ikke akseptert
Tapet faller, roboten gjør ingentingNormaliseringsmismatch, eller policyen kopierer tilstanden
Armen pauser mellom biterLatens per trinn pluss tur-retur; bitkøen går tom
Fungerer i ett oppsett, feiler i et annetFor få episoder, eller alle i én konfigurasjon

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åPolicyerTypisk kjøringPris per timeKostnad per kjøring
A100 80 GB eller H100Pi0.5, GR00T N1.7, GR00T N1.53 til 6 timer1.20 to 2.00 USDomtrent 4 til 12 USD
RTX 4090 eller et hvilket som helst 24 GB kortSmolVLA, ACT2 til 5 timer0.30 to 0.60 USDomtrent 1 til 3 USD
AY-Robots kostnadstabell som viser hvilken GPU hver policy trenger, typisk kjøretid og pris, og hvor mange episoder som trengs før en policy er nyttig
De samme to nivåene på produktsiden: Pi0.5 leier 80 GB-kortet, SmolVLA og ACT passer på en 4090.

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

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started