
Dostrój Pi0.5, model VLA z dopasowaniem przepływu od Physical Intelligence, na własnych danych robota. Prawdziwe polecenia dla openpi i lerobot pi05, pułapki formatu zbioru danych, limity VRAM i opóźnień.
Pi0.5 to model, po który sięgasz, gdy polityka musi działać w pomieszczeniu, którego nigdy nie widziała. Jest to również najbardziej kłopotliwa z pięciu szkolonych polityk tutaj, aby dostroić ręcznie: repozytorium nadrzędne jest przede wszystkim JAX, port LeRobot przeniósł wdrożenie poza lerobot-record w wersji 0.6.0 i sprawił, że podstawowa instalacja jest zbyt mała do trenowania, a pełne dostrojenie nie mieści się na karcie 4090. Poniżej: co dopasowanie przepływu kosztuje podczas wnioskowania, dwie ścieżki poleceń i liczba 485 ms, która decyduje o tym, czy wynik jest użyteczny.
Co musisz wiedzieć
- •VLA z dopasowaniem przepływu: 3B PaliGemma VLM plus 300M ekspert akcji dekodujący ciągłe fragmenty akcji. Dwie ścieżki do jego dostrojenia, openpi i LeRobot pi05, różniące się o 0.65 punktu w średniej LIBERO.
- •Pełne dostrojenie wymaga ponad 70 GB VRAM. openpi wymienia LoRA na 22.5 GB, tylko na swojej ścieżce JAX.
- •Zbiór danych musi być LeRobotDataset v3.0 z kwantylami q01 i q99 w meta/stats.json, w przeciwnym razie pierwsza partia wyrzuci błąd.
- •Najpierw sprawdź swoją wersję lerobot: 0.6.0 sprawiło, że pakiet podstawowy stał się lekki i przeniósł wdrożenie poza lerobot-record.
- •Tutaj działa z prędkością 485 ms na krok akcji, wymaga 50 epizodów i kosztuje około 4 do 12 USD za uruchomienie.
Czym właściwie jest Pi0.5
Physical Intelligence opublikowało pi0 w październiku 2024 roku: model z dopasowaniem przepływu model wizualno-językowo-akcyjny oparty na wstępnie wytrenowanym VLM: PaliGemma z 3 miliardami parametrów plus 300M ekspert akcji zainicjowany od zera, łącznie 3.3 miliarda. Artykuł donosi o wstępnym trenowaniu na ponad 10 000 godzin danych robota w 7 konfiguracjach robotów i 68 zadaniach. Więcej w artykule o pi0.
Pi0.5 (arXiv 2504.16054, 22 kwietnia 2025) zachowuje ten szkielet i zmienia dietę treningową: dane z sieci, detekcja obiektów, instrukcje werbalne od ludzi szkolących robota, etykiety podzadań, dane międzycielesne od robotów w wielu domach. Rezultatem jest robot sprzątający kuchnie w domach, które nie były w zestawie treningowym. Plik README openpi dodaje szczegół, którego nie ma w tytule: wydany pi0.5 został wytrenowany z izolacją wiedzy (arXiv 2505.23705).
| Właściwość | pi0 | pi0.5 |
|---|---|---|
| Wariant szkieletu VLM | gemma_2b (PaliGemma) | gemma_2b (PaliGemma) |
| Wariant eksperta akcji | gemma_300m | gemma_300m |
| action_dim | 32 | 32 |
| action_horizon default | 50 | 50 |
| max_token_len | 48 | 200 |
| discrete_state_input | false | true, stan zdyskretyzowany na przedziały w prompcie |
| Punkt kontrolny bazowy | gs://openpi-assets/checkpoints/pi0_base | gs://openpi-assets/checkpoints/pi05_base |
Plik README openpi jasno stwierdza: repozytorium obsługuje tylko głowicę dopasowania przepływu (flow matching head), zarówno do treningu, jak i wnioskowania pi0.5. Artykuł opisuje dwa etapy, a kod zawiera tylko drugi: wstępne szkolenie reprezentuje każdą akcję jako dyskretne tokeny za pomocą tokenizera FAST, a podczas wdrożenia model wnioskuje o podzadaniu wysokiego poziomu przed każdym fragmentem akcji. Żaden z tych etapów nie znajduje się w repozytorium. Karta lerobot/pi05_base podaje tę samą listę i dodaje RL, chociaż artykuł o pi0.5 w ogóle nie opisuje etapu uczenia wzmacniającego. Port LeRobot dziedziczy ten zakres, podobnie jak każdy hostowany na nim trener, w tym ten tutaj. Licencjonowanie jest również podzielone: strona dokumentacji pi05 mówi Apache 2.0, karta lerobot/pi05_base jest oznaczona jako license: gemma.
Co dopasowanie przepływu zmienia w treningu i wnioskowaniu
Polityka którą można trenować na SO-100, albo bezpośrednio regresuje akcje (ACT) albo je tokenizuje i dekoduje autoregresywnie (pi0-FAST). Dopasowanie przepływu nie robi żadnej z tych rzeczy: uczy się pola wektorowego, które przenosi szum do czystego fragmentu akcji, a następnie go integruje. Artykuł pi0 wykorzystuje 10 kroków integracji o rozmiarze kroku 0.1; konfiguracja pi05 LeRobot zawiera to samo num_inference_steps: int = 10.
- Trening: funkcja straty regresuje zaszumiony fragment akcji. Brak tokenizatora do strojenia, brak dyskretyzacji kątów stawów.
- Inferencja: jeden fragment kosztuje dziesięć przejść do przodu przez eksperta akcji. Jest to strukturalne, a nie problem strojenia.
- Wyjście: ciągłe akcje o wymiarze 32, wewnętrznie wypełnione, strata obliczana na wymiarach, które posiada twój robot. Ramię 6-DoF plus chwytak wykorzystuje 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 TrueRdzeń PaliGemma i brama przed nim
PaliGemma (arXiv 2407.07726) to koder wizyjny SigLIP-So400m oparty na modelu językowym Gemma-2B, liczący około 3B parametrów. Pi0.5 dziedziczy swój tokenizer, a ten tokenizer znajduje się w repozytorium z ograniczonym dostępem. Jest to najczęstszy sposób, w jaki pierwsze uruchomienie kończy się niepowodzeniem, jeszcze przed pierwszym krokiem treningowym.
Dokumentacja LeRobot pi05 jasno stwierdza: pi0.5 używa tokenizera google/paligemma-3b-pt-224 z ograniczonym dostępem, więc najpierw zaakceptuj jego licencję na Hubie i uruchom hf auth login. Dostęp jest przyznawany ręcznie, nie natychmiastowo. Pomiń to, uruchom płatne zadanie w chmurze, a zapłacisz za poda, który nie może pobrać tokenizera.
Zanim zaczniesz: format zbioru danych, epizody, sprzęt
Pi0.5 w LeRobot odczytuje zbiór danych LeRobot w układzie v3.0, który pojawił się wraz z lerobot 0.4.0 w październiku 2025: wiele epizodów na plik Parquet i MP4 zamiast jednego pliku na epizod, z granicami w meta/episodes/ zamiast w nazwach plików. Nagrywaj za pomocą klienta desktopowego lub postępuj zgodnie z nagrywaniem pierwszego zbioru danych i masz to.
| Tryb | Wymagana pamięć GPU | Przykładowa karta GPU |
|---|---|---|
| Inferencja | more than 8 GB | RTX 4090 |
| Dostrajanie, LoRA | more than 22.5 GB | RTX 4090 |
| Dostrajanie, pełne | more than 70 GB | A100 80 GB or H100 |
Pi0.5 i SmolVLA wymagają LeRobot v3.0. GR00T N1.7 i GR00T N1.5 wymagają v2.0 lub v2.1 i ulegają awarii na zbiorze danych v3.0. Jedna sesja nagraniowa nie może zasilać obu bez konwersji, a błąd nie informuje "niewłaściwa wersja zbioru danych". Zobacz zbiór danych odrzucony: wymagana 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 wymaga co najmniej 50 epizodów dla Pi0.5, co jest takim samym minimum jak dla GR00T i ACT. Wstępne trenowanie wykonuje większość pracy, więc 50 czystych epizodów jest lepsze niż 200 niedbałych. Jesteś nowy w tym temacie? Zacznij od przewodnika po zbieraniu danych.

Trasa A: dostrajanie z repozytorium openpi
Implementacja referencyjna: najpierw JAX, testowana tylko na Ubuntu 22.04, sterowana obiektami konfiguracyjnymi zamiast flagami. Ścieżka PyTorch pojawiła się we wrześniu 2025 roku, zweryfikowana na LIBERO. Trzy kroki: konwersja danych, definicja konfiguracji, trenowanie i serwowanie.
- 1Klonowanie i instalacja
openpi używa uv. GIT_LFS_SKIP_SMUDGE to mechanizm, który pozwala LeRobotowi działać jako zależność bez obiektów LFS.
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 . - 2Konwersja danych do zbioru danych LeRobot
Upstream dostarcza konwertery dla LIBERO i DROID i oczekuje, że dostosujesz jeden z nich. Praca polega na mapowaniu kluczy.
bashuv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data - 3Dodanie konfiguracji treningowej
Konfiguracje to wpisy TrainConfig w src/openpi/training/config.py. Ta adaptuje pi05_droid_finetune, z ładowarką wag wskazującą na 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, ) - 4Obliczanie statystyk norm
Uruchamia się względem nazwy konfiguracji, a nie zbioru danych. Pominięcie tego to klasyczna pierwsza awaria w tym miejscu.
bashuv run scripts/compute_norm_stats.py --config-name pi05_so100 - 5Trenowanie
Zmienna pozwala JAX-owi używać 90 procent pamięci GPU zamiast domyślnych 75. Na karcie 80 GB to decyduje, czy uruchomienie zakończy się sukcesem.
bashXLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \ --exp-name=my_experiment \ --overwrite - 6Serwowanie
Serwer nasłuchuje na porcie 8000 i odpowiada na zapytania obserwacyjne; środowisko uruchomieniowe twojego robota jest klientem.
bashuv run scripts/serve_policy.py policy:checkpoint \ --policy.config=pi05_so100 \ --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Implementacja PyTorch openpi nie obsługuje wag pi0-FAST, mieszanej precyzji, FSDP, LoRA ani EMA, więc LoRA, która osiąga 22.5 GB, jest dostępna tylko w JAX, poprzez warianty gemma_2b_lora i gemma_300m_lora. Co gorsza: konfiguracja kopiuje załatane pliki do zainstalowanych transformers 4.53.2, a plik README ostrzega, że w domyślnym trybie twardych linków uv trwale modyfikuje to transformers w pamięci podręcznej uv i może przenikać do innych projektów. Cofnij to za pomocą uv cache clean transformers.
Trasa B: dostrajanie z lerobot pi05
Port LeRobot opakowuje te same wagi w interfejsie CLI, którego już używasz dla ACT i SmolVLA. Wszystko poniżej zostało sprawdzone w oparciu o lerobot 0.6.1, wydanie z 3 sierpnia 2026 roku, oraz dokumentację pi05 z 23 sierpnia 2026 roku. Wersje mają tu znaczenie: zestawy danych v3.0 pojawiły się z 0.4.0 w październiku 2025 roku, blog 0.5.0 z 9 marca 2026 roku przedstawia pi0-FAST i Real-Time Chunking, a 0.6.0 z 6 lipca 2026 roku uczynił pakiet bazowy lekkim i przeniósł wdrożenie do lerobot-rollout.
Jedna rzecz się nie zmieniła: lerobot-train i lerobot-record były już punktami wejścia w wersji 0.3.2, sierpień 2025. Samouczek, który nadal wywołuje python -m lerobot.scripts.train, pochodzi sprzed roku zmian i warto mu nie ufać również w pozostałych kwestiach.
- 1Instalacja z odpowiednimi dodatkami
Od wersji 0.6.0 podstawowa instalacja zawiera tylko kluczowe zależności ML, a dodatek pi nie zawiera kodu do obsługi zbiorów danych ani trenowania, więc dostrajanie wymaga również dodatku do trenowania. Starsze jednowierszowe polecenia zawiodą tutaj podczas importu.
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]' - 2Uwierzytelnij się
Zaakceptuj licencję paligemma-3b-pt-224 w przeglądarce, a następnie zaloguj się na maszynie, która trenuje.
bashhf auth login - 3Dodaj statystyki kwantylowe
Pi0.5 normalizuje STATE i ACTION za pomocą kwantyli, więc meta/stats.json wymaga q01 i q99. Starsze zbiory danych zawierają tylko min, max, mean, std.
bashlerobot-edit-dataset \ --repo_id your_dataset \ --new_repo_id your_dataset \ --operation.type recompute_stats \ --operation.overwrite true - 4Dostrój z lerobot/pi05_base
Ustaw rozmiar partii na taki, jaki wytrzyma Twoja karta; dokumentacja używa 64 na LIBERO przy 80 GB. Przekaż bfloat16 jawnie, domyślna konfiguracja to 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 - 5Uruchom na ramieniu
W wersji 0.6.x jest to lerobot-rollout: lerobot-record odrzuca politykę i nazwy zbiorów danych eval_. Base steruje ramieniem, sentry rejestruje przebieg.
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
| Flaga | Co robi | Uwaga |
|---|---|---|
| --policy.type=pi05 | wybiera Pi0.5 | wymagane z pretrained_path, pomiń z --policy.path |
| --policy.pretrained_path | ładuje tylko wagi | nazwy cech z Twojego zbioru danych, zapisane ustawienia są resetowane |
| --policy.path | wagi plus plik config.json punktu kontrolnego | dziedziczone są zapisane ustawienia, takie jak n_action_steps |
| --policy.n_action_steps | kroki zużyte na fragment | domyślnie 50, nigdy powyżej chunk_size (domyślnie 50) |
| --policy.train_expert_only | zamraża VLM, trenuje eksperta | domyślnie false, mniej pamięci, pewien koszt w sukcesie |
| --policy.gradient_checkpointing | przelicza zamiast przechowywać aktywacje | domyślnie false, pierwsza dźwignia, gdy uruchomienie się nie zmieści |
| --peft.method_type=LORA | adaptery LoRA zamiast pełnych wag | wymaga dodatku peft, udokumentowany przykład to SmolVLA |
| --policy.rtc_training_max_delay | warunkowanie prefiksu akcji dla RTC | tylko główna gałąź, brak w 0.6.1, musi pozostać poniżej chunk_size |
| --rename_map | mapuje kolumny zbioru danych na cechy polityki | potrzebne, gdy klucze Twojej kamery się różnią |
Bez kwantyli otrzymasz ValueError: QUANTILES normalization mode requires q01 and q99 stats w pierwszej partii. Przelicz statystyki, ale wynik trafi do $HF_LEROBOT_HOME/your_dataset, a nie do pamięci podręcznej, którą odczytuje --dataset.repo_id, więc trenuj z --dataset.root wskazującym na to miejsce lub wypchnij do Hub. Lub pomiń kwantyle za pomocą --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', tak jak robi to polecenie referencyjne LIBERO.
Trzy zestawy wartości domyślnych i które z nich docierają do trenera
TrainConfig od openpi jest referencją, PI05Config od LeRobot jest tym, czego używa lerobot-train, gdy nic nie określisz, a formularz tutaj wysyła trzeci zestaw. Zaskoczeniem jest szybkość uczenia: obie domyślne wartości upstream osiągają szczyt 2.5e-5, podczas gdy własna konfiguracja pi05_libero openpi i ta platforma podnoszą ją do 5e-5.
| Ustawienie | openpi TrainConfig | lerobot pi05 and lerobot-train | AY-Robots wysyła |
|---|---|---|---|
| Rozmiar partii | 32 | 8 | 1 |
| Szczytowa szybkość uczenia | 2.5e-5, cosine decay | optimizer_lr 2.5e-5 | 5e-5 |
| Kroki treningowe | 30,000 | 100,000 | 30,000 |
| Interwał punktów kontrolnych | 1,000 steps | 20,000 steps | nie w formularzu |
| Ziarno | 42 | 1,000 | w formularzu |
| Fragment akcji | action_horizon 50 | chunk_size 50, n_action_steps 50 | nie w formularzu |
| Typ danych wagi | bfloat16 | float32 until you pass --policy.dtype | nie w formularzu |
| Akumulacja gradientu | brak takiej opcji, zamiast tego fsdp_devices | nieobecna w każdej dotychczasowej wersji | 16, i jest pomijana |
Czy port jest wierny? Zespół LeRobot dostroił model bazowy LIBERO przez kolejne 6 tys. kroków i porównał go z referencyjnymi wynikami openpi na czterech zestawach: średnio 97,5 procenta wobec 96,85, wyprzedzając na Libero 10, pozostając w tyle na Spatial. Wybór ścieżki to kwestia narzędzi, nie jakości.
- Ponad 10 000 godzin wstępnego treningu robota, więc 50 epizodów Twojego zadania może być wystarczające.
- Ciągłe akcje: brak tokenizera do strojenia, brak progu dyskretyzacji dla kątów stawów.
- Port LeRobot osiąga 97,5 procenta średnio na LIBERO w porównaniu do 96,85 openpi, więc bardziej przyjazny CLI nie kosztuje nic mierzalnego.
- Ścieżki efektywne pod względem parametrów po obu stronach: warianty JAX LoRA openpi, integracja PEFT LeRobot.
- Pełne dostrajanie wymaga ponad 70 GB. Wartość 22,5 GB dla LoRA to liczba JAX openpi; żadna nie jest opublikowana dla pi05 pod PEFT.
- 485 ms na krok akcji, najwolniej z pięciu tutaj: dwa razy SmolVLA, dwadzieścia cztery razy ACT.
- Wymagany jest LeRobot v3.0, więc zestaw danych nagrany dla uruchomienia GR00T wymaga konwersji i odwrotnie.
- Nowe opcje trafiają najpierw do main: pamięć RTC i MEM w czasie treningu nie są dostępne w wersji 0.6.1, więc najnowsza dokumentacja może oznaczać instalację z git.
Rzeczywistość 485 ms i punkt, w którym przestaje być użyteczna
To decyduje o Twoim projekcie, więc jest przed tabelą kosztów. na krok akcji zmierzone tutaj dla Pi0.5 wynosi 485 ms. W porównaniu z pozostałymi czterema:
| Polityka | Wnioskowanie na krok akcji | Parametry | Poziom GPU | Minimalna liczba epizodów |
|---|---|---|---|---|
| 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 |

Pętla sterowania w tych pięciu modelach działa w zakresie od 20 do 485 ms na krok akcji. Opóźnienia w publicznym internecie, dodane do 485 ms, zmieniają działającą politykę w niepewną. Zdalna inferencja jest wykonalna dla wolnych operacji typu 'pick-and-place', ale nie dla szybkich ruchów reaktywnych. Wolimy to powiedzieć, niż sprzedawać demo, które działa tylko w sieci LAN. Jeśli ramię zatrzymuje się między fragmentami, zacznij od polityka zawiesza się w trakcie ruchu.
Upstream ma odpowiedź, a połowa z niej jest już dostępna w wydaniu, które możesz zainstalować. Real-Time Chunking generuje następny fragment, podczas gdy ramię wciąż wykonuje bieżący, a następnie prowadzi nakładające się kroki nowego fragmentu, aby pozostały blisko już wykonanej części, dzięki czemu ramię nie zatrzymuje się ani nie szarpie na łączeniu. Wariant czasu inferencji został dostarczony w dzienniku zmian 0.4.2 dla Pi0, Pi0.5 i SmolVLA i jest flagą wdrożenia, a nie ponownego treningu:
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=60Nie przyspiesza to modelu. Ukrywa to lukę: 485 ms jest nadal zużywane, ale poza ścieżką krytyczną, więc kolejka nie wyczerpuje się między fragmentami. Wariant czasu treningu z arXiv 2512.05964 idzie dalej: model uczy się warunkować na czystym prefiksie akcji, więc podczas inferencji nakładanie się jest 'twardo' wypełniane krokami czasowymi przepływu dla każdej akcji zamiast być prowadzone, a wsteczne przejście prowadzenia znika. Podczas treningu próbkuje długość prefiksu dla każdego przykładu i oblicza stratę przepływu na pozostałym postfiksie. Ta flaga jest dostępna tylko w gałęzi głównej, nie w wersji 0.6.1, a opóźnienie, dla którego trenujesz, musi pozostać poniżej chunk_size.
Dwa sposoby na uzyskanie punktu kontrolnego Pi0.5
Wynajmujesz lub posiadasz kartę 80 GB, instalujesz jeden z powyższych stosów, konwertujesz swój zestaw danych i nadzorujesz uruchomienie. Zachowujesz każdą opcję: JAX LoRA od openpi, adaptery PEFT od LeRobot, akcje względne, niestandardowe mapowania klawiszy. Zachowujesz również każdą porażkę.
- Sprzęt: A100 80 GB lub H100, lub karta 24 GB na ścieżce JAX LoRA od openpi.
- Konfiguracja: jedno popołudnie na pierwsze uruchomienie, głównie mapowanie klawiszy i bramkowany tokenizer.
- Niedostępne w formie hostowanej: adaptery PEFT, akcje względne, RTC w czasie treningu, pamięć MEM.
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=1000Wybierasz model i zestaw danych w formularzu treningowym, backend wynajmuje GPU na rynku spot według wymaganego VRAM, uruchamia trener i zapisuje punkty kontrolne do pamięci obiektowej. Pi0.5 jest tutaj dostępny tylko w chmurze. Istnieją przewodniki dla SO-100, SO-101, Koch v1.1 i LeKiwi.
| Ustawienie | Co platforma wysyła dla Pi0.5 |
|---|---|
| Bazowy punkt kontrolny | lerobot/pi05_base |
| Typ polityki | pi05 |
| Rozmiar partii | 1 |
| Współczynnik uczenia | 5e-5 |
| Maksymalna liczba kroków | 30000 |
| Akumulacja gradientu | 16, ale zobacz ostrzeżenie poniżej |
| Dodatkowe opcje w formularzu | seed, logFreq |
| Format zestawu danych | LeRobot v3.0 |
| Poziom GPU | A100 80 GB or H100 80 GB |
Trener wysyła wartość akumulacji gradientu równą 16, a lerobot 0.5.1 nie ma flagi do jej odebrania, więc jest ona pomijana. Żaden wydany lerobot jej nie posiada: opcja istnieje tylko w gałęzi głównej, jako --accelerator.gradient_accumulation.steps. Efektywny rozmiar partii wynosi tutaj 1, w porównaniu do 256 używanych przez konfigurację pi05_libero openpi. Warto o tym wiedzieć, zanim odczytasz krzywą strat. Opcja ma zastosowanie w uruchomieniach GR00T N1.7 i GR00T N1.5.
Inferencia działa w ten sam sposób: pod jest udostępniany do obsługi polityki, a Twój lokalny klient się z nim komunikuje. Pod posiada mechanizm watchdog dla bezczynności i sam się niszczy, więc zapomniana zakładka nie generuje cichych rachunków. Obowiązuje zastrzeżenie dotyczące opóźnień, dlatego ACT przy 20 ms często wygrywa szybkie zadanie.
Gdy to nie działa
| Objaw | Najbardziej prawdopodobna przyczyna |
|---|---|
| Uruchomienie odrzucone przed startem | Zestaw danych v2.1, ale Pi0.5 wymaga v3.0, lub odwrotnie dla GR00T |
| ImportError, brak pakietu datasets | lerobot 0.6.x bez dodatku treningowego |
| ValueError dotyczący q01 i q99 w pierwszej partii | Brak kwantyli w meta/stats.json; przelicz lub użyj MEAN_STD |
| CUDA brak pamięci w kroku 0 | Pełne dostrojenie poniżej 70 GB; spróbuj punktów kontrolnych lub train_expert_only |
| Błąd 401 lub błąd repozytorium z bramką | Licencja tokenizera PaliGemma niezaakceptowana |
| Strata spada, robot nic nie robi | Niezgodność normalizacji, lub polityka kopiuje stan |
| Ramię zatrzymuje się między fragmentami | Opóźnienie na krok plus czas podróży w obie strony; kolejka fragmentów wyczerpuje się |
| Działa w jednej konfiguracji, zawodzi w innej | Zbyt mało epizodów, lub wszystkie w jednej konfiguracji |
- Zbiór danych odrzucony: wymagana wersja v3
- Brak pamięci podczas trenowania
- Spadek funkcji straty, ale polityka nic nie robi
- Polityka zawiesza się w trakcie ruchu
- Polityka działa tylko w jednej konfiguracji
- Zadanie treningowe utknęło w kolejce
Ile kosztuje jedno uruchomienie
Pi0.5 znajduje się w drogiej warstwie, ponieważ wymaga karty 80 GB, a ceny spotowe się zmieniają, więc podana wartość to zakres, a nie konkretna cena. Dla wielu zadań SO-100, trenuj SmolVLA lub ACT na warstwie 24 GB najpierw, upewnij się, że zadanie jest w ogóle możliwe do nauczenia, a następnie poświęć na nie godziny A100. Trenuj swoją pierwszą politykę przedstawia tę tańszą pętlę, a cennik zawiera aktualne warstwy.
| Warstwa | Polityki | Typowe uruchomienie | Cena za godzinę | Koszt uruchomienia |
|---|---|---|---|---|
| A100 80 GB lub H100 | Pi0.5, GR00T N1.7, GR00T N1.5 | 3 do 6 godzin | 1.20 do 2.00 USD | około 4 do 12 USD |
| RTX 4090 lub dowolna karta 24 GB | SmolVLA, ACT | 2 do 5 godzin | 0.30 do 0.60 USD | około 1 do 3 USD |

Zanim poświęcisz wieczór: GR00T N1.7 kontra Pi0.5 i Pi0.5 kontra SmolVLA przedstawiają te same liczby w bezpośrednim porównaniu. Arena zawiera 85 modeli VLA z 332 wynikami benchmarków, każdy połączony ze swoim źródłem, a tło rodziny znajduje się w naszym przeglądzie VLA.
Trenuj Pi0.5 bez budowania stosu
Wybierz zestaw danych i hiperparametry w formularzu. Backend wynajmuje kartę 80 GB na rynku spot, uruchamia trener i zapisuje punkty kontrolne w pamięci obiektowej. Przewodniki dla SO-100, SO-101, Koch v1.1 i LeKiwi.
Otwórz przewodniki szkolenioweCzy mogę dostroić Pi0.5 na RTX 4090?▾
Nie pełne dostrajanie: openpi wymienia ponad 70 GB na to, więc A100 80 GB lub H100. Jego wartość LoRA 22.5 GB należy do ścieżki JAX; implementacja PyTorch nie ma LoRA. Integracja PEFT LeRobot istnieje, ale jej udokumentowany przykład to SmolVLA i nie opublikowano danych VRAM dla pi05.
Ile epizodów potrzebuję?▾
Pięćdziesiąt, ten sam próg co GR00T i ACT; tylko SmolVLA schodzi niżej, do 30. Bazowy punkt kontrolny zawiera ponad 10 000 godzin wstępnego treningu, więc dostrajanie adaptuje, a nie uczy się od zera: 50 czystych, zróżnicowanych epizodów przewyższa dwieście z jednej konfiguracji.
Jaka jest różnica między --policy.path a --policy.pretrained_path?▾
--policy.path ładuje wagi i config.json punktu kontrolnego, więc dziedziczone są zapisane ustawienia, takie jak n_action_steps, a --policy.type musi zostać pominięte. --policy.pretrained_path ładuje tylko wagi: nazwy cech pochodzą z twojego zestawu danych, zapisane ustawienia są resetowane, --policy.type jest wymagane. Dlatego polecenie LIBERO jawnie przekazuje n_action_steps=10 i empty_cameras=1; w przeciwnym razie wracają one do 50 i 0.
Czy otwarta wersja daje mi pełne Pi0.5 z artykułu?▾
Nie. Oba obsługują tylko głowicę akcji dopasowania przepływu. Etap wstępnego treningu z dyskretnymi tokenami z tokenizatorem akcji FAST i przewidywaniem podzadań wysokiego poziomu nie zostały wydane, a karta lerobot/pi05_base dodaje RL do tej listy, mimo że artykuł pi0.5 nie opisuje etapu uczenia wzmacniającego. Trenujesz politykę niskiego poziomu uwarunkowaną dostarczonym przez ciebie ciągiem językowym, a nie model, który sam dekomponuje długie zadanie.
W oparciu o które wersje napisano ten przewodnik?▾
openpi na main i lerobot 0.6.1, wydanie od 3 sierpnia 2026, oba odczytane 23 sierpnia 2026. Zestawy danych v3.0 pojawiły się z 0.4.0 w październiku 2025. 0.6.0 sprawiło, że pakiet bazowy stał się lekki, więc samo lerobot[pi] nie instaluje już stosu treningowego i przeniosło wdrożenie do lerobot-rollout. RTC w czasie treningu jest tylko na main; hostowany trener tutaj działa w wersji 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