AY-Robots træningsmatrix med fem politikker som rækker og fire robotarme som kolonner, hvor hver celle er et link til en specifik finjusteringsguide
Pi0.5Flow MatchingVLA TræningLeRobotFinjustering

Sådan træner du Pi0.5 med dine egne robotdata

AY-Robots ResearchAugust 23, 202616 min læsning

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

Egenskabpi0pi0.5
VLM backbone-variantgemma_2b (PaliGemma)gemma_2b (PaliGemma)
Action-ekspertvariantgemma_300mgemma_300m
action_dim3232
action_horizon standard5050
max_token_len48200
discrete_state_inputfalsetrue, tilstand diskretiseret i beholdere i prompten
Basis-checkpointgs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
Hvad der er offentligt, er ikke hele artiklen

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

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

Accepter den lukkede licens, før du lejer en GPU

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.

TilstandNødvendig GPU-hukommelseEksempel på GPU
Inferencemore than 8 GBRTX 4090
Finjustering, LoRAmore than 22.5 GBRTX 4090
Finjustering, fuldmore than 70 GBA100 80 GB or H100
Versionsfælden der koster en dag

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.

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

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

AY-Robots politikside, der sammenligner de fem trænérbare politikker efter parametre, GPU-lag, latenstid og minimum antal episoder
Pi0.5 sidder i A100- og H100-laget med 485 ms pr. handlingstrin, med et minimum på 50 episoder.

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.

  1. 1
    Klon og installer

    openpi bruger uv. GIT_LFS_SKIP_SMUDGE er det, der lader LeRobot komme ind som en afhængighed uden 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 dine data til et LeRobot-datasæt

    Upstream leverer konvertere til LIBERO og DROID og forventer, at du tilpasser en. Arbejdet er nøglemappingen.

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

    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 normstatistikker

    Kører mod konfigurationsnavnet, ikke datasættet. At springe det over er den klassiske første fejl her.

    bash
    uv run scripts/compute_norm_stats.py --config-name pi05_so100
  5. 5
    Træ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.

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

    Serveren lytter på port 8000 og besvarer observationsforespørgsler; din robot-runtime 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-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.

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

    Accepter paligemma-3b-pt-224-licensen i en browser, og log derefter ind på maskinen, der træner.

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

    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

    Indstil batchstørrelsen til det, dit kort kan klare; dokumentationen bruger 64 på LIBERO ved 80 GB. Send bfloat16 eksplicit, standardkonfigurationen 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
    Kø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.

    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
FlagHvad det gørBemærk
--policy.type=pi05vælger Pi0.5påkrævet med pretrained_path, udelad med --policy.path
--policy.pretrained_pathindlæser kun vægtefunktionsnavne fra dit datasæt, gemte indstillinger nulstilles
--policy.pathvægte plus checkpoint config.jsongemte indstillinger som n_action_steps arves
--policy.n_action_stepstrin forbrugt pr. chunkfalder tilbage til 50, aldrig over chunk_size (standard 50)
--policy.train_expert_onlyfryser VLM, træner ekspertenstandard false, mindre hukommelse, en vis omkostning i succes
--policy.gradient_checkpointinggenberegner i stedet for at gemme aktiveringerstandard false, den første løftestang når en kørsel ikke passer
--peft.method_type=LORALoRA-adaptere i stedet for fulde vægtekræver peft-ekstra, dokumenteret eksempel er SmolVLA
--policy.rtc_training_max_delayaction-prefix konditionering for RTCkun main branch, ikke i 0.6.1, skal forblive under chunk_size
--rename_mapmapper datasætskolonner til politikfunktionernødvendigt når dine kameranøgler afviger
Fejlen de fleste første kørsler støder på

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.

Indstillingopenpi TrainConfiglerobot pi05 and lerobot-trainAY-Robots sender
Batchstørrelse3281
Maksimal indlæringshastighed2.5e-5, cosinus-faldoptimizer_lr 2.5e-55e-5
Træningstrin30,000100,00030,000
Kontrolpunktinterval1.000 trin20.000 trinikke i formularen
Seed421,000i formularen
Handlingssegmentaction_horizon 50chunk_size 50, n_action_steps 50ikke i formularen
Vægt dtypebfloat16float32 indtil du passerer --policy.dtypeikke i formularen
Gradientakkumuleringingen sådan knap, fsdp_devices i stedetfraværende i alle udgivelser indtil videre16, 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.

Finjustering af Pi0.5 på dine egne data
Fordele
  • 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.
Kompromiser
  • 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:

PolitikInferens per handlingstrinParametreGPU-niveauMinimum 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' direkte sammenligningsside for GR00T N1.7 mod Pi0.5, med parametre, GPU-niveau, latenstid og datasætformat
Samme GPU-niveau, samme minimum antal episoder, forskellig datasætversion, trefoldig latenstidforskel.
Inference skal sidde ved siden af servoerne

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:

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 trin fra det forrige segment det nye skal stemme overens med; RTC-dokumentationen angiver 8 til 12 som det sædvanlige interval. Standard inferens-backend er --inference.type=sync.

Det 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.
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 formular kører, og pip kan ikke installere: træningstids-RTC er et flag fra main-branchen.

Når det ikke virker

SymptomMest sandsynlige årsag
Kørsel afvist før startDatasæt v2.1, men Pi0.5 ønsker v3.0, eller omvendt for GR00T
ImportError, 'datasets'-pakke manglerlerobot 0.6.x uden 'training extra'
ValueError om q01 og q99 på batch etIngen kvartiler i meta/stats.json; genberegn eller brug MEAN_STD
CUDA løb tør for hukommelse ved trin 0Fuld finjustering under 70 GB; prøv checkpointing eller train_expert_only
401 eller gated repo-fejlPaliGemma tokenizer-licens ikke accepteret
Loss falder, robotten gør intetNormaliseringsuoverensstemmelse, eller politikken kopierer tilstanden
Armen pauser mellem bidderLatency pr. trin plus retur; chunk-køen løber tør
Virker i én opsætning, fejler i en andenFor få episoder, eller alle i én konfiguration

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.

KategoriPolitikkerTypisk kørselPris pr. timeOmkostning pr. kørsel
A100 80 GB eller H100Pi0.5, GR00T N1.7, GR00T N1.53 til 6 timer1.20 til 2.00 USDcirka 4 til 12 USD
RTX 4090 eller ethvert 24 GB kortSmolVLA, ACT2 til 5 timer0.30 til 0.60 USDcirka 1 til 3 USD
AY-Robots omkostningstabel, der viser, hvilken GPU hver politik kræver, den typiske køretid og pris, og hvor mange episoder der er nødvendige, før en politik er brugbar
De samme to niveauer på produktsiden: Pi0.5 lejer 80 GB-kortet, SmolVLA og ACT passer på en 4090.

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æningsvejledningerne
Kan 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started