Matricea de antrenament AY-Robots cu cinci politici pe rânduri și patru brațe robotice pe coloane, fiecare celulă fiind un link către un ghid specific de reglare fină
Pi0.5Flow MatchingAntrenament VLALeRobotReglare fină

Cum să antrenezi Pi0.5 pe propriile date de robot

AY-Robots ResearchAugust 23, 202616 min de citit

Reglează fin Pi0.5, VLA-ul de tip flow-matching de la Physical Intelligence, pe propriile date de robot. Comenzi reale pentru openpi și lerobot pi05, capcanele formatului setului de date, limitele VRAM și ale latenței.

Pi0.5 este modelul la care apelezi atunci când o politică trebuie să funcționeze într-o încăpere pe care nu a mai văzut-o niciodată. Este, de asemenea, cea mai dificilă dintre cele cinci politici antrenabile de aici pentru a ajusta fin manual: depozitul upstream este în primul rând JAX, portul LeRobot a mutat implementarea din lerobot-record în 0.6.0 și a făcut instalarea de bază prea mică pentru antrenament, iar o ajustare fină completă nu încape pe un 4090. Mai jos: ce potrivire a fluxului costă la inferență, cele două rute de comandă și numărul de 485 ms care decide dacă rezultatul este utilizabil.

Ce trebuie să știți

  • Un VLA cu potrivire a fluxului: un VLM PaliGemma de 3B plus un expert de acțiune de 300M care decodifică fragmente continue de acțiune. Două rute pentru ajustarea sa fină, openpi și LeRobot pi05, la o distanță de 0.65 puncte pe media LIBERO.
  • Ajustarea fină completă necesită mai mult de 70 GB de VRAM. openpi listează LoRA la 22.5 GB, doar pe calea sa JAX.
  • Setul de date trebuie să fie LeRobotDataset v3.0 cu cuantilele q01 și q99 în meta/stats.json, altfel prima prelucrare pe lot va eșua.
  • Verificați mai întâi versiunea lerobot: 0.6.0 a făcut pachetul de bază ușor și a mutat implementarea din lerobot-record.
  • Aici rulează la 485 ms per pas de acțiune, necesită 50 de episoade și costă aproximativ 4 până la 12 USD per rulare.

Ce este de fapt Pi0.5

Physical Intelligence a publicat pi0 în octombrie 2024: un model de viziune-limbaj-acțiune cu potrivire a fluxului, bazat pe un VLM pre-antrenat: PaliGemma cu 3 miliarde de parametri plus un expert de acțiune de 300M inițializat de la zero, un total de 3.3 miliarde. Lucrarea raportează pre-antrenament pe peste 10.000 de ore de date robotice, pe 7 configurații de roboți și 68 de sarcini. Mai multe în articolul despre pi0.

Pi0.5 (arXiv 2504.16054, 22 aprilie 2025) păstrează acel schelet și schimbă dieta de antrenament: date web, detecție de obiecte, instrucțiuni verbale de la oameni care antrenează robotul, etichete de sub-sarcini, date inter-corporale de la roboți din multe case. Rezultatul este un robot care curăță bucătării în case care nu au făcut parte din setul de antrenament. Fișierul README al openpi adaugă un detaliu pe care titlul nu îl menționează: versiunea lansată a pi0.5 a fost antrenată cu izolare de cunoștințe (arXiv 2505.23705).

Proprietatepi0pi0.5
Variantă de bază VLMgemma_2b (PaliGemma)gemma_2b (PaliGemma)
Variantă de expert în acțiunegemma_300mgemma_300m
action_dim3232
orizont de acțiune implicit5050
lungime maximă token48200
intrare stare discretăfalsetrue, starea discretizată în intervale în prompt
Punct de control de bazăgs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
Ce este public nu este întreaga lucrare

Fișierul README al openpi este explicit: depozitul suportă doar capul de potrivire a fluxului, atât pentru antrenamentul, cât și pentru inferența pi0.5. Lucrarea descrie două etape, iar codul conține doar a doua: pre-antrenamentul reprezintă fiecare acțiune ca tokenuri discrete prin tokenizatorul FAST, iar la implementare modelul deduce o sub-sarcină de nivel înalt înainte de fiecare bloc de acțiune. Niciuna dintre acestea nu se află în depozit. Cardul lerobot/pi05_base oferă aceeași listă și adaugă RL, deși lucrarea pi0.5 nu descrie deloc o etapă de învățare prin consolidare. Portul LeRobot moștenește acest domeniu de aplicare, la fel ca și fiecare antrenor găzduit pe acesta, inclusiv cel de aici. Licențierea este, de asemenea, împărțită: pagina de documentație pi05 menționează Apache 2.0, cardul lerobot/pi05_base este etichetat license: gemma.

Ce schimbă potrivirea fluxului în antrenament și inferență

O politică pe care o poți antrena pe un SO-100 fie regresează acțiunile direct (ACT) fie le tokenizează și le decodează autoregresiv (pi0-FAST). Potrivirea fluxului nu face niciuna dintre acestea: învață un câmp vectorial care transportă zgomotul către un bloc de acțiuni curat, apoi îl integrează. Lucrarea pi0 utilizează 10 pași de integrare cu o dimensiune a pasului de 0.1; configurația pi05 a LeRobot conține același num_inference_steps: int = 10.

  • Antrenament: pierderea regresează un bloc de acțiuni zgomotos. Fără tokenizator de ajustat, fără discretizare a unghiurilor articulațiilor.
  • Inferență: un bloc costă zece treceri înainte prin expertul de acțiuni. Aceasta este o problemă structurală, nu una de ajustare.
  • Ieșire: acțiuni continue de dimensiune 32, umplute intern, pierderea fiind calculată pe dimensiunile pe care le are robotul tău. Un braț cu 6-grade de libertate plus un gripper utilizează 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
Citit din src/openpi/models/pi0_config.py pe ramura principală openpi, 23 august 2026.

Backbone-ul PaliGemma și poarta din fața acestuia

PaliGemma (arXiv 2407.07726) este un codificator vizual SigLIP-So400m bazat pe un model lingvistic Gemma-2B, cu aproximativ 3 miliarde de parametri. Pi0.5 moștenește tokenizatorul său, iar acel tokenizator se află într-un depozit cu acces restricționat. Aceasta este cea mai comună modalitate prin care o primă rulare eșuează, înainte de primul pas de antrenament.

Acceptați licența cu acces restricționat înainte de a închiria un GPU

Documentația LeRobot pi05 o afirmă clar: pi0.5 utilizează tokenizatorul cu acces restricționat google/paligemma-3b-pt-224, așa că acceptați licența acestuia pe Hub și rulați mai întâi hf auth login. Accesul este acordat manual, nu instantaneu. Omiteți acest pas, porniți o rulare plătită în cloud și veți plăti pentru un pod care nu poate descărca un tokenizator.

Înainte de a începe: formatul setului de date, episoade, hardware

Pi0.5 în LeRobot citește un set de date LeRobot în formatul v3.0, care a apărut odată cu lerobot 0.4.0 în octombrie 2025: multe episoade per fișier Parquet și MP4 în loc de un fișier per episod, cu limite în meta/episodes/ în loc de nume de fișiere. Înregistrați cu clientul desktop sau urmați înregistrați primul dvs. set de date și îl veți avea.

ModMemorie GPU necesarăExemplu GPU
Inferențămai mult de 8 GBRTX 4090
Fine-tuning, LoRAmai mult de 22.5 GBRTX 4090
Fine-tuning, completmai mult de 70 GBA100 80 GB sau H100
Capcana versiunilor care costă o zi

Pi0.5 și SmolVLA necesită LeRobot v3.0. GR00T N1.7 și GR00T N1.5 necesită v2.0 sau v2.1 și se blochează pe un set de date v3.0. O singură sesiune de înregistrare nu le poate alimenta pe ambele fără o conversie, iar eroarea nu indică "versiune greșită a setului de date". Vezi set de date respins: v3 necesar.

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
Din documentația LeRobotDataset v3.0.

Platforma necesită cel puțin 50 de episoade pentru Pi0.5, același prag ca pentru GR00T și ACT. Pre-antrenamentul face cea mai mare parte a muncii, așa că 50 de episoade curate sunt mai bune decât 200 de episoade neglijente. Ești nou în asta? Începe cu ghidul de colectare a datelor

Pagina de politici AY-Robots care compară cele cinci politici antrenabile după parametri, nivel GPU, latență și numărul minim de episoade
Pi0.5 se încadrează în nivelul A100 și H100 la 485 ms per pas de acțiune, cu un prag minim de 50 de episoade.

Ruta A: ajustare fină cu depozitul openpi

Implementarea de referință: JAX în primul rând, testată doar pe Ubuntu 22.04, ghidată de obiecte de configurare mai degrabă decât de flag-uri. O cale PyTorch a apărut în septembrie 2025, validată pe LIBERO. Trei pași: convertiți-vă datele, definiți o configurație, antrenați și serviți.

  1. 1
    Clonare și instalare

    openpi utilizează uv. GIT_LFS_SKIP_SMUDGE este ceea ce permite LeRobot să fie o dependență fără blob-uri LFS.

    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
    Convertiți-vă datele într-un set de date LeRobot

    Upstream-ul livrează convertoare pentru LIBERO și DROID și se așteaptă să adaptați unul. Munca constă în maparea cheilor.

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    Adăugați o configurație de antrenament

    Configurațiile sunt intrări TrainConfig în src/openpi/training/config.py. Aceasta adaptează pi05_droid_finetune, cu încărcătorul de greutăți îndreptat către 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
    Calculați statisticile de normalizare

    Rulează pe baza numelui configurației, nu a setului de date. Omiterea acestuia este prima eroare clasică aici.

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

    Variabila permite JAX să utilizeze 90 la sută din memoria GPU în loc de valoarea implicită de 75. Pe o placă de 80 GB, acest lucru decide dacă rularea supraviețuiește.

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    Serviți-o

    Serverul ascultă pe portul 8000 și răspunde la interogările de observație; runtime-ul robotului dumneavoastră este clientul.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Calea PyTorch nu este calea JAX

Implementarea PyTorch a openpi nu suportă pi0-FAST, precizie mixtă, FSDP, LoRA sau ponderi EMA, deci LoRA care atinge 22.5 GB este doar JAX, prin variantele gemma_2b_lora și gemma_300m_lora. Mai rău: configurarea copiază fișiere patch-uite peste transformatoarele 4.53.2 instalate, iar README-ul avertizează că, în modul implicit de hardlink al uv, acest lucru modifică permanent transformatoarele în cache-ul uv și poate afecta alte proiecte. Anulați cu uv cache clean transformers.

Ruta B: ajustare fină cu lerobot pi05

Portul LeRobot încapsulează aceleași ponderi în CLI-ul pe care îl utilizați deja pentru ACT și SmolVLA. Tot ce urmează a fost verificat cu lerobot 0.6.1, versiunea lansată pe 3 august 2026, și documentația pi05 din 23 august 2026. Versiunile contează aici: seturile de date v3.0 au apărut cu 0.4.0 în octombrie 2025, blogul 0.5.0 din 9 martie 2026 prezintă pi0-FAST și Real-Time Chunking, iar 0.6.0 din 6 iulie 2026 a făcut pachetul de bază ușor și a mutat implementarea la lerobot-rollout.

Un lucru nu s-a schimbat: lerobot-train și lerobot-record erau deja puncte de intrare în 0.3.2, august 2025. Un tutorial care încă apelează python -m lerobot.scripts.train este anterior unui an de modificări și merită să fie privit cu neîncredere și în rest.

  1. 1
    Instalare cu extra-urile corecte

    Începând cu versiunea 0.6.0, instalarea de bază include doar dependențele ML esențiale, iar extra-ul pi nu adaugă cod pentru setul de date sau antrenament, astfel încât o ajustare fină necesită și extra-ul de antrenament. Comenzile mai vechi eșuează aici la import.

    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
    Autentificare

    Acceptați licența paligemma-3b-pt-224 într-un browser, apoi conectați-vă pe mașina care efectuează antrenamentul.

    bash
    hf auth login
  3. 3
    Adăugați statistici de cuantili

    Pi0.5 normalizează STATE și ACTION cu cuantili, deci meta/stats.json necesită q01 și q99. Seturile de date mai vechi conțin doar min, max, mean, std.

    bash
    lerobot-edit-dataset \
        --repo_id your_dataset \
        --new_repo_id your_dataset \
        --operation.type recompute_stats \
        --operation.overwrite true
  4. 4
    Ajustare fină de la lerobot/pi05_base

    Setați dimensiunea lotului la ceea ce suportă placa dvs.; documentația utilizează 64 pe LIBERO la 80 GB. Transmiteți bfloat16 explicit, valoarea implicită a configurației este 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
    Rulați-l pe braț

    În 0.6.x, aceasta este lerobot-rollout: lerobot-record refuză o politică și respinge numele seturilor de date eval_. Base controlează brațul, sentry înregistrează rularea.

    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
FlagWhat it doesNote
--policy.type=pi05selectează Pi0.5obligatoriu cu pretrained_path, omiteți cu --policy.path
--policy.pretrained_pathîncarcă doar ponderilenumele caracteristicilor din setul dvs. de date, setările stocate sunt resetate
--policy.pathponderile plus fișierul config.json al punctului de controlsetările stocate, cum ar fi n_action_steps, sunt moștenite
--policy.n_action_stepspași consumați per bucatărevine la 50, niciodată peste chunk_size (implicit 50)
--policy.train_expert_onlyîngheață VLM-ul, antrenează expertulimplicit false, mai puțină memorie, un anumit cost în succes
--policy.gradient_checkpointingrecalculează în loc să stocheze activărileimplicit false, prima pârghie atunci când o rulare nu se va potrivi
--peft.method_type=LORAadaptoare LoRA în loc de ponderi completenecesită extra-ul peft, exemplul documentat este SmolVLA
--policy.rtc_training_max_delaycondiționare prefix-acțiune pentru RTCdoar pe ramura principală, nu în 0.6.1, trebuie să rămână sub chunk_size
--rename_mapmapează coloanele setului de date pe caracteristicile politiciinecesar atunci când cheile camerei dvs. diferă
Eroarea întâlnită de majoritatea primelor rulări

Fără cuantili veți primi ValueError: QUANTILES normalization mode requires q01 and q99 stats la primul lot. Recalculați statisticile, dar rezultatul ajunge în $HF_LEROBOT_HOME/your_dataset, nu în cache-ul citit de --dataset.repo_id, deci antrenați cu --dataset.root care indică acolo sau împingeți către Hub. Sau săriți peste cuantili cu --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', așa cum face comanda de referință LIBERO.

Trei seturi de valori implicite și care dintre ele ajung la antrenor

TrainConfig de la openpi este referința, PI05Config de la LeRobot este ceea ce folosește lerobot-train când nu specificați nimic, iar formularul de aici trimite un al treilea set. Surpriza este rata de învățare: ambele valori implicite upstream ating un vârf de 2.5e-5, în timp ce configurația pi05_libero a openpi și această platformă o ridică la 5e-5.

Setareopenpi TrainConfiglerobot pi05 și lerobot-trainAY-Robots trimite
Dimensiune lot3281
Rată de învățare maximă2.5e-5, cosine decayoptimizer_lr 2.5e-55e-5
Pași de antrenament30,000100,00030,000
Interval punct de salvare1,000 steps20,000 stepsnu în formular
Seed421,000în formular
Fragment de acțiuneaction_horizon 50chunk_size 50, n_action_steps 50nu în formular
Tip de date pentru greutățibfloat16float32 until you pass --policy.dtypenu în formular
Acumulare gradientno such knob, fsdp_devices insteadabsent from every release so far16, and it is dropped

Este portarea fidelă? Echipa LeRobot a ajustat fin modelul de bază LIBERO pentru încă 6k pași și a comparat cu numerele de referință ale openpi pe patru suite: o medie de 97.5 procente față de 96.85, în față pe Libero 10, în urmă pe Spatial. Ruta este o alegere de instrumente, nu una de calitate.

Ajustarea fină a Pi0.5 pe propriile date
Avantaje
  • Peste 10,000 de ore de pre-antrenament robotizat în spate, deci 50 de episoade ale sarcinii dumneavoastră pot fi suficiente.
  • Acțiuni continue: fără tokenizator de ajustat, fără prag de discretizare pe unghiurile articulațiilor dumneavoastră.
  • Portarea LeRobot obține 97.5 procente la media LIBERO față de 96.85 a openpi, deci CLI-ul mai prietenos nu costă nimic măsurabil.
  • Căi eficiente din punct de vedere al parametrilor pe ambele părți: variantele JAX LoRA ale openpi, integrarea PEFT a LeRobot.
Compromisuri
  • Ajustarea fină completă necesită mai mult de 70 GB. Cifra de 22.5 GB LoRA este numărul JAX al openpi; niciunul nu este publicat pentru pi05 sub PEFT.
  • 485 ms per pas de acțiune, cel mai lent dintre cele cinci de aici: de două ori SmolVLA, de douăzeci și patru de ori ACT.
  • LeRobot v3.0 este necesar, deci un set de date înregistrat pentru o rulare GR00T necesită conversie, și viceversa.
  • Opțiunile noi ajung mai întâi pe ramura principală: memoria RTC și MEM din timpul antrenamentului nu sunt în 0.6.1, deci cele mai noi documente pot însemna instalarea din git.

Realitatea de 485 ms și punctul în care devine inutilizabilă

Acest lucru decide proiectul dumneavoastră, așadar precede tabelul de costuri. pe pas de acțiune măsurată aici pentru Pi0.5 este de 485 ms. Comparativ cu celelalte patru:

PoliticăInferență pe pas de acțiuneParametriNivel GPUEpisoade minime
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
Pagina de comparație AY-Robots pentru GR00T N1.7 versus Pi0.5, cu parametri, nivel GPU, latență și formatul setului de date
Același nivel GPU, același număr minim de episoade, versiune diferită a setului de date, decalaj de latență de trei ori.
Inferența trebuie să fie lângă servomecanisme

Bucla de control pentru aceste cinci modele rulează între 20 și 485 ms per pas de acțiune. Timpii de răspuns ai internetului public, adăugați peste 485 ms, transformă o politică funcțională într-una ezitantă. Inferența la distanță este viabilă pentru operațiuni lente de tip pick-and-place, nu pentru mișcări reactive rapide. Am prefera să spunem asta decât să vindem o demonstrație care funcționează doar într-o rețea locală (LAN). Dacă brațul tău se oprește între segmente, începe de la înghețarea politicii în timpul mișcării.

Upstream are un răspuns, iar jumătate din el este deja în versiunea pe care o puteți instala. Real-Time Chunking generează următorul segment în timp ce brațul execută încă pe cel curent, apoi ghidează pașii suprapuși ai noului segment pentru a rămâne aproape de partea deja executată, astfel încât brațul să nu se blocheze sau să smucească la îmbinare. Forma de inferență la timp real a fost inclusă în changelog-ul 0.4.2 pentru Pi0, Pi0.5 și SmolVLA și este un flag de rollout, nu o reantrenare:

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 reprezintă numărul de pași din segmentul anterior cu care cel nou trebuie să fie de acord; documentația RTC indică 8 până la 12 ca interval obișnuit. Backend-ul implicit de inferență este --inference.type=sync.

Nu face modelul mai rapid. Ascunde decalajul: cele 485 ms sunt încă cheltuite, dar în afara căii critice, astfel încât coada nu se golește între segmente. Varianta de antrenament din arXiv 2512.05964 merge mai departe: modelul învață să se condiționeze pe un prefix de acțiune curat, astfel încât la inferență suprapunerea este completată forțat cu pași de timp de flux per acțiune în loc să fie ghidată, iar trecerea înapoi a ghidării dispare. În timpul antrenamentului, eșantionează o lungime de prefix per exemplu și calculează pierderea de flux pe postfixul rămas. Acest flag există doar pe ramura principală (main), nu în 0.6.1, iar întârzierea pentru care antrenați trebuie să rămână sub chunk_size.

Două moduri de a obține un checkpoint Pi0.5

Închiriezi sau deții o placă de 80 GB, instalezi unul dintre stack-urile de mai sus, convertești setul de date și supraveghezi rularea. Păstrezi controlul asupra fiecărui parametru: JAX LoRA de la openpi, adaptoarele PEFT de la LeRobot, acțiuni relative, mapări personalizate de taste. Păstrezi, de asemenea, fiecare eșec.

  • Hardware: A100 80 GB sau H100, sau o placă de 24 GB pe calea JAX LoRA de la openpi.
  • Configurare: o după-amiază pentru prima rulare, în principal maparea tastelor și tokenizer-ul cu acces restricționat.
  • Nu sunt disponibile în formularul găzduit: adaptoare PEFT, acțiuni relative, RTC la timpul antrenării, memorie MEM.
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
Comanda pe care niciun formular găzduit nu o rulează, și pip nu o poate instala: RTC la timpul antrenării este un flag al ramurii principale.

Când nu funcționează

SimptomCea mai probabilă cauză
Rulare respinsă înainte de a începeSet de date v2.1, dar Pi0.5 necesită v3.0, sau invers pentru GR00T
ImportError, pachetul datasets lipseștelerobot 0.6.x fără extra-ul de antrenare
ValueError privind q01 și q99 la primul batchNu există cuantile în meta/stats.json; recomputați sau utilizați MEAN_STD
CUDA fără memorie la pasul 0Fine-tune complet sub 70 GB; încercați checkpointing sau train_expert_only
Eroare 401 sau eroare de repo cu acces restricționatLicența tokenizer-ului PaliGemma nu este acceptată
Pierderea scade, robotul nu face nimicIncompatibilitate de normalizare, sau politica copiază starea
Brațul se oprește între fragmenteLatență per-pas plus timp de răspuns; coada de fragmente se golește
Funcționează într-o configurație, eșuează în altaPrea puține episoade, sau toate într-o singură configurație

Cât costă o singură rulare

Pi0.5 se încadrează în nivelul scump deoarece necesită o placă de 80 GB, iar prețurile spot fluctuează, astfel încât cifra este o plajă, nu un preț. Pentru multe sarcini SO-100, antrenați SmolVLA sau ACT pe nivelul de 24 GB mai întâi, confirmați că sarcina este deloc învățabilă, apoi petreceți ore A100 pe ea. Antrenați-vă prima politică parcurge acea buclă mai ieftină, iar prețurile conțin nivelurile curente.

NivelPoliticiRulare tipicăPreț pe orăCost pe rulare
A100 80 GB sau H100Pi0.5, GR00T N1.7, GR00T N1.53 până la 6 ore1.20 până la 2.00 USDaproximativ 4 până la 12 USD
RTX 4090 sau orice placă de 24 GBSmolVLA, ACT2 până la 5 ore0.30 până la 0.60 USDaproximativ 1 până la 3 USD
Tabelul de costuri AY-Robots care arată ce GPU necesită fiecare politică, timpul de rulare și prețul tipic, și câte episoade sunt necesare înainte ca o politică să fie utilă
Aceleași două niveluri pe pagina produsului: Pi0.5 închiriază placa de 80 GB, SmolVLA și ACT se potrivesc pe un 4090.

Înainte de a dedica o seară: GR00T N1.7 versus Pi0.5 și Pi0.5 versus SmolVLA prezintă aceleași numere cap la cap. Arena conține 85 de modele VLA cu 332 de rezultate de benchmark, fiecare legat de sursa sa, iar informații de fond despre familie se găsesc în prezentarea noastră generală a VLA.

Antrenați Pi0.5 fără a construi stiva

Alegeți setul de date și hiperparametrii într-un formular. Backend-ul închiriază o placă de 80 GB de pe piața spot, rulează antrenorul și scrie punctele de control în stocarea de obiecte. Ghiduri pentru SO-100, SO-101, Koch v1.1 și LeKiwi.

Deschideți ghidurile de antrenament
Pot ajusta fin Pi0.5 pe un RTX 4090?

Nu o ajustare fină completă: openpi listează peste 70 GB pentru asta, deci un A100 de 80 GB sau un H100. Cifra sa LoRA de 22,5 GB aparține căii JAX; implementarea PyTorch nu are LoRA. Integrarea PEFT a LeRobot există, dar exemplul său documentat este SmolVLA și nu este publicată nicio cifră VRAM pentru pi05.

De câte episoade am nevoie?

Cincizeci, același prag ca GR00T și ACT; doar SmolVLA coboară mai jos, la 30. Punctul de control de bază conține peste 10.000 de ore de pre-antrenament, deci ajustarea fină se adaptează mai degrabă decât să învețe de la zero: 50 de episoade curate și variate sunt mai bune decât două sute dintr-o singură configurație.

Care este diferența dintre --policy.path și --policy.pretrained_path?

--policy.path încarcă ponderile și config.json al punctului de control, astfel încât setările stocate, cum ar fi n_action_steps, sunt moștenite și --policy.type trebuie omis. --policy.pretrained_path încarcă doar ponderile: numele caracteristicilor provin din setul dvs. de date, setările stocate sunt resetate, --policy.type este necesar. De aceea, comanda LIBERO transmite n_action_steps=10 și empty_cameras=1 explicit; altfel, acestea revin la 50 și 0.

Versiunea deschisă îmi oferă Pi0.5 complet din lucrare?

Nu. Ambele suportă doar capul de acțiune de tip flow matching. Etapa de pre-antrenament cu token discret, cu tokenizatorul de acțiune FAST și predicția sub-sarcinilor de nivel înalt nu au fost lansate, iar cardul lerobot/pi05_base adaugă RL la această listă, chiar dacă lucrarea pi0.5 nu descrie nicio etapă de învățare prin consolidare. Antrenați o politică de nivel scăzut condiționată de un șir de limbaj pe care îl furnizați, nu un model care descompune singur o sarcină lungă.

Pentru ce versiuni este scris acest ghid?

openpi pe main și lerobot 0.6.1, lansarea din 3 august 2026, ambele citite pe 23 august 2026. Seturile de date v3.0 au apărut cu 0.4.0 în octombrie 2025. 0.6.0 a făcut pachetul de bază ușor, astfel încât lerobot[pi] singur nu mai instalează o stivă de antrenament și a mutat implementarea la lerobot-rollout. RTC-ul la timpul antrenamentului este doar pe main; antrenorul găzduit aici rulează 0.5.1.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started