
Tiksliai suderinkite Pi0.5, srauto atitikimo VLA iš Physical Intelligence, su savo roboto duomenimis. Tikros komandos openpi ir lerobot pi05, duomenų rinkinio formato spąstai, VRAM ir vėlavimo ribos.
Pi0.5 yra modelis, kurį pasirenkate, kai politika turi veikti kambaryje, kurio niekada nematė. Tai taip pat yra nepatogiausia iš penkių apmokomos politikos čia, kad tiksliai sureguliuotumėte rankiniu būdu: pirminė saugykla pirmiausia yra JAX, LeRobot prievadas perkėlė diegimą iš lerobot-record 0.6.0 versijoje ir padarė bazinį diegimą per mažą apmokymui, o pilnas tikslus sureguliavimas netelpa į 4090. Žemiau: ką srauto derinimas kainuoja išvados metu, du komandų maršrutai ir 485 ms skaičius, kuris nusprendžia, ar rezultatas yra tinkamas naudoti.
Ką reikia žinoti
- •Srauto derinimo VLA: 3B PaliGemma VLM plius 300M veiksmo ekspertas, dekoduojantis ištisinius veiksmo fragmentus. Du būdai jį tiksliai sureguliuoti: openpi ir LeRobot pi05, 0.65 punkto skirtumas LIBERO vidurkiu.
- •Visam tiksliam sureguliavimui reikia daugiau nei 70 GB VRAM. openpi nurodo LoRA 22.5 GB, tik JAX kelyje.
- •Duomenų rinkinys turi būti LeRobotDataset v3.0 su q01 ir q99 kvantiliais meta/stats.json, kitaip pirmoji partija sukels klaidą.
- •Pirmiausia patikrinkite savo lerobot versiją: 0.6.0 padarė bazinį paketą lengvą ir perkėlė diegimą iš lerobot-record.
- •Čia jis veikia 485 ms per veiksmo žingsnį, reikalauja 50 epizodų ir kainuoja apie 4–12 USD už paleidimą.
Kas iš tikrųjų yra Pi0.5
Physical Intelligence 2024 m. spalio mėn. paskelbė pi0: srauto derinimo regos-kalbos-veiksmo modelis ant iš anksto apmokyto VLM: PaliGemma su 3 milijardais parametrų plius 300M veiksmo ekspertas, inicializuotas nuo nulio, iš viso 3.3 milijardo. Straipsnyje pranešama apie išankstinį apmokymą naudojant daugiau nei 10 000 valandų roboto duomenų, apimančių 7 robotų konfigūracijas ir 68 užduotis. Daugiau pi0 straipsnyje.
Pi0.5 (arXiv 2504.16054, 2025 m. balandžio 22 d.) išlaiko tą karkasą ir keičia mokymo dietą: žiniatinklio duomenys, objektų aptikimas, žodinės instrukcijos iš žmonių, mokančių robotą, potaskių etiketės, kryžminio įkūnijimo duomenys iš robotų daugelyje namų. Rezultatas – robotas, valantis virtuves namuose, kurie nebuvo mokymo rinkinyje. „openpi README“ prideda detalę, kurios nėra pavadinime: išleistas pi0.5 buvo apmokytas su žinių izoliacija (arXiv 2505.23705).
| Savybė | pi0 | pi0.5 |
|---|---|---|
| VLM pagrindinio tinklo variantas | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Veiksmų eksperto variantas | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| numatytasis veiksmų horizontas | 50 | 50 |
| max_token_len | 48 | 200 |
| diskrečios būsenos įvestis | false | true, būsena diskretizuota į segmentus raginime |
| Bazinis kontrolinis taškas | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
„openpi README“ aiškiai nurodo: saugykla palaiko tik srauto atitikimo galvutę, skirtą pi0.5 mokymui ir išvadoms. Straipsnyje aprašomi du etapai, o kode yra tik antrasis: išankstinis mokymas kiekvieną veiksmą atvaizduoja kaip diskrečius žetonus per FAST tokenizatorių, o diegimo metu modelis numato aukšto lygio potaskį prieš kiekvieną veiksmų fragmentą. Nė vienas iš jų nėra saugykloje. Kortelė lerobot/pi05_base pateikia tą patį sąrašą ir prideda RL, nors pi0.5 straipsnyje apskritai neaprašomas joks stiprinimo mokymosi etapas. „LeRobot“ prievadas paveldi tą apimtį, kaip ir kiekvienas jame esantis prieglobos mokytojas, įskaitant šį čia. Licencijavimas taip pat padalintas: pi05 dokumentacijos puslapyje nurodoma Apache 2.0, kortelė lerobot/pi05_base pažymėta license: gemma.
Ką srauto atitikimas keičia mokyme ir išvadose
Politika, politiką, kurią galite apmokyti SO-100, tiesiogiai regresuoja veiksmus (ACT) arba juos tokenizuoja ir dekoduoja autoregresyviai (pi0-FAST). Srauto derinimas nedaro nei vieno iš šių: jis išmoksta vektorinį lauką, kuris perneša triukšmą į švarų veiksmų fragmentą, tada jį integruoja. pi0 straipsnyje naudojami 10 integravimo žingsnių, kurių žingsnio dydis yra 0.1; LeRobot pi05 konfigūracija turi tą patį `num_inference_steps: int = 10`.
- Apmokymas: nuostolis regresuoja triukšmingą veiksmų fragmentą. Nėra tokenizatoriaus, kurį reikėtų derinti, jokio jūsų sąnarių kampų diskretizavimo.
- Išvada: vienas fragmentas kainuoja dešimt tiesioginių perdavimų per veiksmų ekspertą. Tai yra struktūrinė, o ne derinimo problema.
- Išvestis: tolydūs 32 matmenų veiksmai, viduje užpildyti, nuostolis apskaičiuojamas pagal jūsų roboto matmenis. 6-Laisvės laipsnių ranka plius griebtuvas naudoja 7.
# openpi/src/openpi/models/pi0_config.py - the defaults every pi05 config inherits
@dataclasses.dataclass(frozen=True)
class Pi0Config(_model.BaseModelConfig):
dtype: str = "bfloat16"
paligemma_variant: _gemma.Variant = "gemma_2b"
action_expert_variant: _gemma.Variant = "gemma_300m"
action_dim: int = 32
action_horizon: int = 50
max_token_len: int = None # 200 if pi05 else 48
pi05: bool = False # flips discrete_state_input to TruePaliGemma pagrindas ir vartai prieš jį
PaliGemma (arXiv 2407.07726) yra SigLIP-So400m vaizdo kodavimo įrenginys, veikiantis su Gemma-2B kalbos modeliu, turinčiu apie 3B parametrų. Pi0.5 paveldi savo tokenizatorių, ir tas tokenizatorius yra uždaroje saugykloje. Tai yra dažniausias būdas, kaip pirmasis paleidimas žlunga, dar prieš pirmąjį mokymo žingsnį.
LeRobot pi05 dokumentacija aiškiai nurodo: pi0.5 naudoja uždarą google/paligemma-3b-pt-224 tokenizatorių, todėl pirmiausia priimkite jo licenciją Hub'e ir paleiskite hf auth login. Prieiga suteikiama rankiniu būdu, ne iš karto. Praleiskite tai, paleiskite mokamą debesies vykdymą ir mokėsite už pod'ą, kuris negali atsisiųsti tokenizatoriaus.
Prieš pradedant: duomenų rinkinio formatas, epizodai, aparatinė įranga
Pi0.5 LeRobot'e nuskaito LeRobot duomenų rinkinį v3.0 išdėstymu, kuris pasirodė su lerobot 0.4.0 2025 m. spalį: daug epizodų viename Parquet ir MP4 faile, o ne vienas failas vienam epizodui, su ribomis meta/episodes/ kataloge, o ne failų pavadinimuose. Įrašykite naudodami darbalaukio klientą arba sekite įrašykite savo pirmąjį duomenų rinkinį ir turėsite tai.
| Režimas | Reikalinga GPU atmintis | Pavyzdinė GPU |
|---|---|---|
| Inferencija | daugiau nei 8 GB | RTX 4090 |
| Tikslinimas, LoRA | daugiau nei 22.5 GB | RTX 4090 |
| Tikslinimas, pilnas | daugiau nei 70 GB | A100 80 GB or H100 |
Pi0.5 ir SmolVLA reikalauja LeRobot v3.0. GR00T N1.7 ir GR00T N1.5 reikalauja v2.0 arba v2.1 ir sugenda su v3.0 duomenų rinkiniu. Viena įrašymo sesija negali maitinti abiejų be konversijos, o klaida nenurodo "neteisinga duomenų rinkinio versija". Žr. duomenų rinkinys atmestas: reikalinga v3.
# 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 offsetsPlatforma reikalauja bent 50 epizodų Pi0.5, tas pats minimumas kaip GR00T ir ACT. Išankstinis apmokymas atlieka didžiąją dalį darbo, todėl 50 švarių epizodų yra geriau nei 200 aplaidžių. Naujokas šioje srityje? Pradėkite nuo duomenų rinkimo vadovo.

A maršrutas: tikslinimas naudojant openpi saugyklą
Etaloninė implementacija: pirmiausia JAX, išbandyta tik Ubuntu 22.04, valdoma konfigūracijos objektais, o ne vėliavėlėmis. PyTorch kelias atsirado 2025 m. rugsėjį, patvirtintas LIBERO. Trys žingsniai: konvertuokite duomenis, apibrėžkite konfigūraciją, apmokykite ir paleiskite.
- 1Klonuoti ir įdiegti
openpi naudoja uv. GIT_LFS_SKIP_SMUDGE leidžia LeRobot būti priklausomybe be LFS didelių dvejetainių failų.
bashgit clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git cd openpi GIT_LFS_SKIP_SMUDGE=1 uv sync GIT_LFS_SKIP_SMUDGE=1 uv pip install -e . - 2Konvertuokite savo duomenis į LeRobot duomenų rinkinį
Aukštesnio lygio tiekėjas pateikia konverterius LIBERO ir DROID ir tikisi, kad pritaikysite vieną iš jų. Darbas yra raktų susiejimas.
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3Pridėti apmokymo konfigūraciją
Konfigūracijos yra TrainConfig įrašai src/openpi/training/config.py. Ši pritaiko pi05_droid_finetune, o svorio įkėliklis nukreiptas į pi05_base.
pythonTrainConfig( name="pi05_so100", model=pi0_config.Pi0Config( pi05=True, action_dim=32, # pi05 is trained with 32-dim actions action_horizon=16, ), # Copy LeRobotLiberoDataConfig in the same file and rewrite the key # mapping for your camera names, then reference your copy here. data=LeRobotLiberoDataConfig( repo_id="your_hf_username/my_so100_dataset", base_config=DataConfig(prompt_from_task=True), ), weight_loader=weight_loaders.CheckpointWeightLoader( "gs://openpi-assets/checkpoints/pi05_base/params" ), batch_size=32, num_train_steps=20_000, ) - 4Apskaičiuoti normos statistiką
Vykdoma pagal konfigūracijos pavadinimą, o ne duomenų rinkinį. Praleidus tai, čia yra klasikinė pirmoji klaida.
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5Apmokyti
Šis kintamasis leidžia JAX naudoti 90 procentų GPU atminties vietoj numatytųjų 75. 80 GB kortelėje tai lemia, ar paleidimas išgyvens.
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6Pateikti
Serveris klausosi 8000 prievado ir atsako į stebėjimo užklausas; jūsų roboto vykdymo aplinka yra klientas.
bashuv run scripts/serve_policy.py policy:checkpoint \ --policy.config=pi05_so100 \ --policy.dir=checkpoints/pi05_so100/my_experiment/20000
openpi PyTorch implementacija nepalaiko pi0-FAST, mišraus tikslumo, FSDP, LoRA ar EMA svorių, todėl LoRA, kuri pasiekia 22.5 GB, yra tik JAX, per gemma_2b_lora ir gemma_300m_lora variantus. Blogiau: sąranka nukopijuoja pataisytus failus ant jūsų įdiegtų transformers 4.53.2, o README įspėja, kad naudojant uv numatytąjį kietosios nuorodos režimą tai visam laikui modifikuoja transformers uv talpykloje ir gali paveikti kitus projektus. Atšaukite tai su uv cache clean transformers.
B maršrutas: tikslus derinimas su lerobot pi05
LeRobot prievadas apjungia tuos pačius svorius CLI, kurį jau naudojate ACT ir SmolVLA. Viskas toliau buvo patikrinta su lerobot 0.6.1, išleistu nuo 2026 m. rugpjūčio 3 d., ir pi05 dokumentacija 2026 m. rugpjūčio 23 d. Versijos čia svarbios: v3.0 duomenų rinkiniai pasirodė su 0.4.0 2025 m. spalį, 2026 m. kovo 9 d. 0.5.0 tinklaraštis pristato pi0-FAST ir Real-Time Chunking, o 0.6.0 2026 m. liepos 6 d. padarė bazinį paketą lengvą ir perkėlė diegimą į lerobot-rollout.
Vienas dalykas nepasikeitė: lerobot-train ir lerobot-record jau buvo įėjimo taškai 0.3.2 versijoje, 2025 m. rugpjūtį. Mokomoji medžiaga, kuri vis dar naudoja python -m lerobot.scripts.train, yra senesnė nei metų pokyčiai ir ja neverta pasitikėti ir dėl kitų dalykų.
- 1Įdiekite su tinkamais priedais
Nuo 0.6.0 bazinis diegimas apima tik pagrindines ML priklausomybes, o „pi“ priedas neprideda duomenų rinkinio ar mokymo kodo, todėl smulkiam derinimui reikalingas ir mokymo priedas. Senesnės vienos eilutės komandos čia nepavyksta importavimo metu.
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]' - 2Autentifikuoti
Naršyklėje priimkite paligemma-3b-pt-224 licenciją, tada prisijunkite prie mašinos, kuri treniruoja.
bashhf auth login - 3Pridėti kvantilių statistiką
Pi0.5 normalizuoja STATE ir ACTION su kvantiliais, todėl meta/stats.json reikalingi q01 ir q99. Senesni duomenų rinkiniai turi tik min, max, mean, std.
bashlerobot-edit-dataset \ --repo_id your_dataset \ --new_repo_id your_dataset \ --operation.type recompute_stats \ --operation.overwrite true - 4Smulkus derinimas iš lerobot/pi05_base
Nustatykite paketo dydį pagal tai, ką jūsų kortelė gali atlaikyti; dokumentuose naudojama 64 LIBERO su 80 GB. Aiškiai nurodykite bfloat16, numatytasis konfigūracijos nustatymas yra float32.
bashlerobot-train \ --dataset.repo_id=${HF_USER}/my_so100_dataset \ --policy.type=pi05 \ --policy.pretrained_path=lerobot/pi05_base \ --policy.gradient_checkpointing=true \ --policy.dtype=bfloat16 \ --policy.device=cuda \ --policy.push_to_hub=false \ --output_dir=./outputs/pi05_so100 \ --job_name=pi05_so100 \ --batch_size=4 \ --num_workers=8 \ --steps=30000 \ --save_freq=5000 \ --seed=1000 - 5Paleiskite ant roboto rankos
0.6.x versijoje tai yra lerobot-rollout: lerobot-record atmeta politiką ir atmeta eval_ duomenų rinkinių pavadinimus. Bazė valdo ranką, sentry įrašo išleidimą.
bashlerobot-rollout \ --strategy.type=base \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \ --task="Put lego brick into the transparent box" \ --duration=60 # same run, recorded into an eval_ dataset lerobot-rollout \ --strategy.type=sentry \ --policy.path=${HF_USER}/my_policy \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM1 \ --dataset.repo_id=${HF_USER}/eval_so100 \ --dataset.single_task="Put lego brick into the transparent box" \ --duration=600
| Flag | Ką tai daro | Pastaba |
|---|---|---|
| --policy.type=pi05 | pasirenka Pi0.5 | reikalingas su pretrained_path, praleisti su --policy.path |
| --policy.pretrained_path | įkelia tik svorius | funkcijų pavadinimai iš jūsų duomenų rinkinio, išsaugoti nustatymai atstatomi |
| --policy.path | svoriai ir kontrolinio taško config.json | išsaugoti nustatymai, tokie kaip n_action_steps, yra paveldimi |
| --policy.n_action_steps | žingsniai, sunaudoti vienam gabalui | grįžta prie 50, niekada neviršija chunk_size (numatytasis 50) |
| --policy.train_expert_only | užšaldo VLM, apmoko ekspertą | numatytasis false, mažiau atminties, tam tikra sėkmės kaina |
| --policy.gradient_checkpointing | perskaičiuoti vietoj aktyvacijų saugojimo | numatytasis false, pirmasis svertas, kai paleidimas netelpa |
| --peft.method_type=LORA | LoRA adapteriai vietoj pilnų svorių | reikalingas peft priedas, dokumentuotas pavyzdys yra SmolVLA |
| --policy.rtc_training_max_delay | veiksmo-priešdėlio sąlygojimas RTC | tik pagrindinėje šakoje, ne 0.6.1, turi likti žemiau chunk_size |
| --rename_map | susieja duomenų rinkinio stulpelius su politikos funkcijomis | reikalingas, kai jūsų kameros raktai skiriasi |
Be kvantilių gausite ValueError: QUANTILES normalization mode requires q01 and q99 stats pirmoje partijoje. Perskaičiuokite statistiką, bet rezultatas atsidurs $HF_LEROBOT_HOME/your_dataset, o ne talpykloje, kurią skaito --dataset.repo_id, todėl treniruokite su --dataset.root, nukreipiančiu ten, arba įkelkite į Hub. Arba praleiskite kvantilius su --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', kaip tai daro LIBERO nuorodos komanda.
Trys numatytųjų nustatymų rinkiniai ir kurie iš jų pasiekia treniruoklį
openpi TrainConfig yra etalonas, LeRobot PI05Config yra tai, ką lerobot-train naudoja, kai nieko nenurodote, o čia esanti forma siunčia trečią rinkinį. Staigmena yra mokymosi sparta: abi aukštesnio lygio numatytosios reikšmės pasiekia 2.5e-5, o openpi pi05_libero konfigūracija ir ši platforma ją padidina iki 5e-5.
| Nustatymas | openpi TrainConfig | lerobot pi05 ir lerobot-train | AY-Robots siunčia |
|---|---|---|---|
| Paketo dydis | 32 | 8 | 1 |
| Didžiausia mokymosi sparta | 2.5e-5, kosinusinis mažėjimas | optimizer_lr 2.5e-5 | 5e-5 |
| Mokymo žingsniai | 30,000 | 100,000 | 30,000 |
| Kontrolinio taško intervalas | 1 000 žingsnių | 20 000 žingsnių | nėra formoje |
| Sėkla | 42 | 1,000 | formoje |
| Veiksmo gabalas | action_horizon 50 | chunk_size 50, n_action_steps 50 | nėra formoje |
| Svorio duomenų tipas | bfloat16 | float32 until you pass --policy.dtype | nėra formoje |
| Gradiento kaupimas | tokio nustatymo nėra, vietoj to fsdp_devices | iki šiol nebuvo nė viename leidime | 16, ir jis atmetamas |
Ar perkėlimas yra tikslus? LeRobot komanda toliau derino LIBERO bazinį modelį 6 tūkst. žingsnių ir palygino su openpi etaloniniais skaičiais keturiuose rinkiniuose: 97.5 procento vidurkis prieš 96.85, pirmauja Libero 10, atsilieka Spatial. Kelias yra įrankių, o ne kokybės pasirinkimas.
- Už jo slypi daugiau nei 10 000 valandų roboto išankstinio mokymo, todėl 50 jūsų užduoties epizodų gali būti pakankamai.
- Nepertraukiami veiksmai: nereikia derinti tokenizatoriaus, nėra diskretizacijos ribos jūsų jungčių kampams.
- LeRobot perkėlimas pasiekia 97.5 procento LIBERO vidurkio, palyginti su openpi 96.85, todėl patogesnis CLI nieko apčiuopiamo nekainuoja.
- Parametrų efektyvūs keliai abiejose pusėse: openpi JAX LoRA variantai, LeRobot PEFT integracija.
- Visam tikslinimui reikia daugiau nei 70 GB. 22.5 GB LoRA skaičius yra openpi JAX skaičius; pi05 pagal PEFT nėra paskelbta jokio.
- 485 ms vienam veiksmo žingsniui, lėčiausias iš penkių čia: dvigubai lėtesnis už SmolVLA, dvidešimt keturis kartus lėtesnis už ACT.
- Reikalinga LeRobot v3.0, todėl duomenų rinkinys, įrašytas GR00T paleidimui, turi būti konvertuojamas, ir atvirkščiai.
- Naujos parinktys pirmiausia atsiranda pagrindinėje šakoje: mokymo laiko RTC ir MEM atmintis nėra 0.6.1 versijoje, todėl naujausi dokumentai gali reikšti diegimą iš git.
485 ms realybė ir kur ji nustoja būti tinkama naudoti
Tai lemia jūsų projektą, todėl tai pateikiama prieš išlaidų lentelę. vienam veiksmo žingsniui, išmatuotas čia Pi0.5 modeliui, yra 485 ms. Palyginus su kitais keturiais:
| Politika | Išvadų vėlavimas vienam veiksmo žingsniui | Parametrai | GPU lygis | Minimalus epizodų skaičius |
|---|---|---|---|---|
| ACT | 20 ms | ~80 M | RTX 4090 or any 24 GB card | 50 |
| GR00T N1.7 | 152 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| GR00T N1.5 | 165 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |
| SmolVLA | 245 ms | ~450 M | RTX 4090 or any 24 GB card | 30 |
| Pi0.5 | 485 ms | ~3 B | A100 80 GB or H100 80 GB | 50 |

Valdymo ciklas per šiuos penkis modelius veikia 20–485 ms per veiksmo žingsnį. Viešojo interneto kelionės pirmyn ir atgal, viršijančios 485 ms, paverčia veikiančią politiką nedrąsia. Nuotolinės išvados yra tinkamos lėtam paėmimui ir padėjimui, bet ne greitam reaktyviam judesiui. Verčiau tai pasakytume, nei parduotume demonstracinę versiją, kuri veikia tik LAN tinkle. Jei jūsų ranka sustoja tarp dalių, pradėkite nuo politika sustoja judesio viduryje.
Aukštesnis lygis turi atsakymą, ir pusė jo jau yra leidime, kurį galite įdiegti. Realaus laiko skaidymas (Real-Time Chunking) generuoja kitą dalį, kol ranka dar vykdo dabartinę, tada nukreipia persidengiančius naujos dalies žingsnius, kad jie liktų arti jau įvykdytos dalies, todėl ranka nestringa ir netrūkčioja ties sujungimu. Išvadų laiko forma, pristatyta 0.4.2 pakeitimų žurnale, skirta Pi0, Pi0.5 ir SmolVLA, yra diegimo (rollout) vėliavėlė, o ne pertrainavimas:
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=60Tai nepagreitina modelio. Tai paslepia tarpą: 485 ms vis dar išleidžiama, bet ne kritiniame kelyje, todėl eilė neišsenka tarp dalių. Mokymo laiko variantas iš arXiv 2512.05964 eina toliau: modelis mokosi sąlygoti švarų veiksmo prefiksą, todėl išvadų metu persidengimas yra griežtai įterpiamas su veiksmo srauto laiko žingsniais, o ne nukreipiamas, ir nukreipimo atgalinis perdavimas dingsta. Mokymo metu jis pavyzdžiui parenka prefikso ilgį ir apskaičiuoja srauto nuostolius likusiam postfiksui. Ši vėliavėlė yra tik pagrindinėje versijoje, ne 0.6.1, ir vėlavimas, kuriam treniruojate, turi likti mažesnis nei chunk_size.
Du būdai gauti Pi0.5 kontrolinį tašką
Nuomojatės arba turite 80 GB kortelę, įdiegiate vieną iš aukščiau nurodytų rinkinių, konvertuojate savo duomenų rinkinį ir prižiūrite vykdymą. Jūs išlaikote kiekvieną nustatymą: openpi JAX LoRA, LeRobot PEFT adapterius, santykinius veiksmus, pasirinktinius klavišų susiejimus. Jūs taip pat išlaikote kiekvieną gedimą.
- Aparatinė įranga: A100 80 GB arba H100, arba 24 GB kortelė openpi JAX LoRA kelyje.
- Nustatymas: popietė pirmajam paleidimui, daugiausia klavišų susiejimas ir uždaras tokenizatorius.
- Nepasiekiami hostingo formoje: PEFT adapteriai, santykiniai veiksmai, mokymo laiko RTC, MEM atmintis.
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=1000Modelį ir duomenų rinkinį pasirenkate mokymo formoje, o užpakalinė sistema išnuomoja GPU vietoje pagal reikalingą VRAM, paleidžia treniruoklį ir įrašo kontrolinius taškus į objektų saugyklą. Pi0.5 čia yra tik debesyje. Yra vadovų, skirtų SO-100, SO-101, Koch v1.1 ir LeKiwi.
| Nustatymas | Ką platforma siunčia Pi0.5 |
|---|---|
| Bazinis kontrolinis taškas | lerobot/pi05_base |
| Politikos tipas | pi05 |
| Paketo dydis | 1 |
| Mokymosi sparta | 5e-5 |
| Maksimalūs žingsniai | 30000 |
| Gradiento kaupimas | 16, bet žr. įspėjimą žemiau |
| Papildomi nustatymai formoje | seed, logFreq |
| Duomenų rinkinio formatas | LeRobot v3.0 |
| GPU lygis | A100 80 GB arba H100 80 GB |
Treniruoklis siunčia gradiento kaupimo vertę 16, o lerobot 0.5.1 neturi vėliavėlės jai priimti, todėl ji yra atmetama. Joks išleistas lerobot neturi tokios: nustatymas egzistuoja tik pagrindinėje šakoje, kaip --accelerator.gradient_accumulation.steps. Efektyvus paketo dydis čia yra 1, palyginti su 256, kuriuos naudoja openpi pi05_libero konfigūracija. Verta žinoti prieš skaitant nuostolių kreivę. Šis nustatymas taikomas GR00T N1.7 ir GR00T N1.5 vykdymams.
Išvados veikia taip pat: sukuriamas pod'as, skirtas aptarnauti politiką, ir jūsų vietinis klientas su juo bendrauja. Pod'as turi tuščiosios eigos stebėjimo sistemą ir sunaikina save, todėl pamiršta kortelė nesiskaitys tyliai. Taikomas vėlavimo įspėjimas, todėl ACT su 20 ms dažnai laimi greitą užduotį.
Kai neveikia
| Simptomas | Tikėtina priežastis |
|---|---|
| Vykdymas atmestas prieš pradedant | Duomenų rinkinys v2.1, bet Pi0.5 nori v3.0, arba atvirkščiai GR00T atveju |
| ImportError, trūksta datasets paketo | lerobot 0.6.x be mokymo priedo |
| ValueError dėl q01 ir q99 pirmajame pakete | Nėra kvantilių meta/stats.json; perskaičiuokite arba naudokite MEAN_STD |
| CUDA atminties trūkumas 0 žingsnyje | Pilnas tikslinimas žemiau 70 GB; pabandykite kontrolinius taškus arba train_expert_only |
| 401 arba uždaro repozitorijos klaida | PaliGemma tokenizatoriaus licencija nepriimta |
| Nuostoliai krenta, robotas nieko nedaro | Normalizavimo neatitikimas, arba politika kopijuoja būseną |
| Ranka sustoja tarp gabalų | Vėlavimas per žingsnį plius kelionė pirmyn ir atgal; gabalų eilė ištuštėja |
| Veikia vienoje konfigūracijoje, neveikia kitoje | Per mažai epizodų, arba visi vienoje konfigūracijoje |
- Duomenų rinkinys atmestas: reikalinga v3
- Trūksta atminties apmokymo metu
- Nuostolis mažėja, bet politika nieko nedaro
- Politika sustingsta judesio viduryje
- Politika veikia tik vienoje konfigūracijoje
- Apmokymo užduotis įstrigo eilėje
Kiek kainuoja vienas vykdymas
Pi0.5 patenka į brangią pakopą, nes jam reikalinga 80 GB kortelė, o momentinės kainos kinta, todėl nurodyta suma yra diapazonas, o ne konkreti kaina. Daugeliui SO-100 užduočių, pirmiausia apmokykite SmolVLA arba ACT 24 GB pakopoje, patvirtinkite, kad užduotis apskritai yra išmokstama, tada skirkite jai A100 valandų. Apmokykite savo pirmąją politiką paaiškina tą pigesnį ciklą, o kainodara nurodo dabartines pakopas.
| Pakopa | Politikos | Įprastas vykdymas | Kaina už valandą | Kaina už vykdymą |
|---|---|---|---|---|
| A100 80 GB arba H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3–6 valandos | 1.20 to 2.00 USD | apie 4–12 USD |
| RTX 4090 arba bet kokia 24 GB kortelė | SmolVLA, ACT | 2–5 valandos | 0.30 to 0.60 USD | apie 1–3 USD |

Prieš skiriant vakarą: GR00T N1.7 prieš Pi0.5 ir Pi0.5 prieš SmolVLA pateikia tuos pačius skaičius palyginimui. Arena talpina 85 VLA modelius su 332 etaloniniais rezultatais, kiekvienas susietas su savo šaltiniu, o informacija apie šeimą yra mūsų VLA apžvalgoje.
Treniruokite Pi0.5 nestatydami sistemos
Formoje pasirinkite duomenų rinkinį ir hiperparametrus. Užpakalinė sistema nuomojasi 80 GB kortelę neatidėliotinų sandorių rinkoje, paleidžia treniruoklį ir įrašo kontrolinius taškus į objektų saugyklą. Vadovai SO-100, SO-101, Koch v1.1 ir LeKiwi.
Atidaryti mokymo vadovusAr galiu tikslinti Pi0.5 su RTX 4090?▾
Ne pilnas tikslinimas: openpi tam nurodo daugiau nei 70 GB, taigi A100 80 GB arba H100. Jo 22,5 GB LoRA skaičius priklauso JAX keliui; PyTorch implementacija neturi LoRA. LeRobot PEFT integracija egzistuoja, tačiau jos dokumentuotas pavyzdys yra SmolVLA ir nėra paskelbta VRAM reikšmė pi05.
Kiek epizodų man reikia?▾
Penkiasdešimt, tas pats minimumas kaip GR00T ir ACT; tik SmolVLA yra mažiau, 30. Bazinis kontrolinis taškas turi daugiau nei 10 000 valandų išankstinio apmokymo, todėl tikslinimas prisitaiko, o ne mokosi nuo nulio: 50 švarių, įvairių epizodų yra geriau nei du šimtai iš vienos konfigūracijos.
Kuo skiriasi --policy.path ir --policy.pretrained_path?▾
--policy.path įkelia svorius ir kontrolinio taško config.json, todėl paveldimi išsaugoti nustatymai, tokie kaip n_action_steps, o --policy.type turi būti praleistas. --policy.pretrained_path įkelia tik svorius: funkcijų pavadinimai gaunami iš jūsų duomenų rinkinio, išsaugoti nustatymai atstatomi, --policy.type yra privalomas. Štai kodėl LIBERO komanda aiškiai perduoda n_action_steps=10 ir empty_cameras=1; priešingu atveju jie grįžta prie 50 ir 0.
Ar atvira versija suteikia man visą Pi0.5 iš straipsnio?▾
Ne. Abu palaiko tik srauto atitikimo veiksmų galvutę. Diskrečiųjų žetonų išankstinio apmokymo etapas su FAST veiksmų žetonizatoriumi ir aukšto lygio užduočių prognozavimas nebuvo išleisti, o lerobot/pi05_base kortelė prideda RL į tą sąrašą, nors pi0.5 darbe nėra aprašytas joks sustiprinimo mokymosi etapas. Jūs treniruojate žemo lygio politiką, sąlygotą jūsų pateiktos kalbos eilutės, o ne modelį, kuris pats suskaido ilgą užduotį.
Prieš kokias versijas parašytas šis vadovas?▾
openpi pagrindinėje versijoje ir lerobot 0.6.1, išleista nuo 2026 m. rugpjūčio 3 d., abi perskaitytos 2026 m. rugpjūčio 23 d. v3.0 duomenų rinkiniai pasirodė su 0.4.0 2025 m. spalį. 0.6.0 padarė bazinį paketą lengvą, todėl vien lerobot[pi] nebeįdiegia mokymo sistemos ir perkėlė diegimą į lerobot-rollout. Mokymo laiko RTC yra tik pagrindinėje versijoje; čia esantis hostintas treniruoklis veikia 0.5.1.
Sources
- Physical-Intelligence/openpi: open-source models and packages for robotics
- openpi training configs, including pi05_libero and pi05_droid_finetune
- pi0: A Vision-Language-Action Flow Model for General Robot Control
- pi0.5: a Vision-Language-Action Model with Open-World Generalization
- Knowledge Insulating Vision-Language-Action Models: Train Fast, Run Fast, Generalize Better
- PaliGemma: A versatile 3B VLM for transfer
- Training-Time Action Conditioning for Efficient Real-Time Chunking
- LeRobot pi05 documentation on the main branch, including training-time RTC
- LeRobot documentation: parameter efficient fine-tuning with PEFT
- LeRobotDataset v3.0 format documentation
- LeRobot release notes: v0.3.2 through v0.6.1, with the v0.6.0 breaking changes
- LeRobot v0.5.0: Scaling Every Dimension
- lerobot/pi05_base model card
- LeRobot documentation: Real-Time Chunking (RTC)
- openpi Pi0Config: the model defaults pi0 and pi05 inherit
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started