Macierz treningowa AY-Robots z pięcioma politykami jako wierszami i czterema ramionami robotycznymi jako kolumnami, każda komórka to link do konkretnego przewodnika po dostrajaniu
Pi0.5Dopasowanie PrzepływuTrening VLALeRobotDostrajanie

Jak trenować Pi0.5 na własnych danych robota

AY-Robots ResearchAugust 23, 202616 min czytania

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śćpi0pi0.5
Wariant szkieletu VLMgemma_2b (PaliGemma)gemma_2b (PaliGemma)
Wariant eksperta akcjigemma_300mgemma_300m
action_dim3232
action_horizon default5050
max_token_len48200
discrete_state_inputfalsetrue, stan zdyskretyzowany na przedziały w prompcie
Punkt kontrolny bazowygs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
Co jest publiczne, nie jest całą pracą

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.
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
Odczytano z src/openpi/models/pi0_config.py na głównej gałęzi openpi, 23 sierpnia 2026.

Rdzeń 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.

Zaakceptuj licencję z ograniczonym dostępem, zanim wynajmiesz GPU

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.

TrybWymagana pamięć GPUPrzykładowa karta GPU
Inferencjamore than 8 GBRTX 4090
Dostrajanie, LoRAmore than 22.5 GBRTX 4090
Dostrajanie, pełnemore than 70 GBA100 80 GB or H100
Pułapka wersji, która kosztuje dzień

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.

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
Z dokumentacji LeRobotDataset v3.0.

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

Strona polityk AY-Robots porównująca pięć trenowalnych polityk według parametrów, tieru GPU, opóźnienia i minimalnej liczby epizodów
Pi0.5 plasuje się w tierze A100 i H100 z czasem 485 ms na krok akcji, z minimum 50 epizodów.

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.

  1. 1
    Klonowanie 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.

    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
    Konwersja danych do zbioru danych LeRobot

    Upstream dostarcza konwertery dla LIBERO i DROID i oczekuje, że dostosujesz jeden z nich. Praca polega na mapowaniu kluczy.

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

    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
    Obliczanie statystyk norm

    Uruchamia się względem nazwy konfiguracji, a nie zbioru danych. Pominięcie tego to klasyczna pierwsza awaria w tym miejscu.

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

    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.

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

    Serwer nasłuchuje na porcie 8000 i odpowiada na zapytania obserwacyjne; środowisko uruchomieniowe twojego robota jest klientem.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Ścieżka PyTorch nie jest ścieżką JAX

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.

  1. 1
    Instalacja 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]'
  2. 2
    Uwierzytelnij się

    Zaakceptuj licencję paligemma-3b-pt-224 w przeglądarce, a następnie zaloguj się na maszynie, która trenuje.

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

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

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

    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
FlagaCo robiUwaga
--policy.type=pi05wybiera Pi0.5wymagane z pretrained_path, pomiń z --policy.path
--policy.pretrained_pathładuje tylko waginazwy cech z Twojego zbioru danych, zapisane ustawienia są resetowane
--policy.pathwagi plus plik config.json punktu kontrolnegodziedziczone są zapisane ustawienia, takie jak n_action_steps
--policy.n_action_stepskroki zużyte na fragmentdomyślnie 50, nigdy powyżej chunk_size (domyślnie 50)
--policy.train_expert_onlyzamraża VLM, trenuje ekspertadomyślnie false, mniej pamięci, pewien koszt w sukcesie
--policy.gradient_checkpointingprzelicza zamiast przechowywać aktywacjedomyślnie false, pierwsza dźwignia, gdy uruchomienie się nie zmieści
--peft.method_type=LORAadaptery LoRA zamiast pełnych wagwymaga dodatku peft, udokumentowany przykład to SmolVLA
--policy.rtc_training_max_delaywarunkowanie prefiksu akcji dla RTCtylko główna gałąź, brak w 0.6.1, musi pozostać poniżej chunk_size
--rename_mapmapuje kolumny zbioru danych na cechy politykipotrzebne, gdy klucze Twojej kamery się różnią
Błąd, który napotyka większość pierwszych uruchomień

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.

Ustawienieopenpi TrainConfiglerobot pi05 and lerobot-trainAY-Robots wysyła
Rozmiar partii3281
Szczytowa szybkość uczenia2.5e-5, cosine decayoptimizer_lr 2.5e-55e-5
Kroki treningowe30,000100,00030,000
Interwał punktów kontrolnych1,000 steps20,000 stepsnie w formularzu
Ziarno421,000w formularzu
Fragment akcjiaction_horizon 50chunk_size 50, n_action_steps 50nie w formularzu
Typ danych wagibfloat16float32 until you pass --policy.dtypenie w formularzu
Akumulacja gradientubrak takiej opcji, zamiast tego fsdp_devicesnieobecna w każdej dotychczasowej wersji16, 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.

Dostrajanie Pi0.5 na własnych danych
Zalety
  • 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.
Kompromisy
  • 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:

PolitykaWnioskowanie na krok akcjiParametryPoziom GPUMinimalna liczba epizodów
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
Strona porównawcza AY-Robots dla GR00T N1.7 kontra Pi0.5, z parametrami, poziomem GPU, opóźnieniem i formatem zbioru danych
Ten sam poziom GPU, ten sam próg epizodów, inna wersja zbioru danych, trzykrotna różnica w opóźnieniu.
Inferencja musi znajdować się obok serwomechanizmów

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:

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
<code>execution_horizon</code> określa, z iloma krokami poprzedniego fragmentu nowy musi się zgadzać; dokumentacja RTC podaje zakres od 8 do 12 jako typowy. Domyślny backend inferencji to <code>--inference.type=sync</code>.

Nie 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.
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
Polecenie, którego nie uruchamia żadna hostowana forma, a pip nie może zainstalować: RTC w czasie treningu to flaga głównej gałęzi.

Gdy to nie działa

ObjawNajbardziej prawdopodobna przyczyna
Uruchomienie odrzucone przed startemZestaw danych v2.1, ale Pi0.5 wymaga v3.0, lub odwrotnie dla GR00T
ImportError, brak pakietu datasetslerobot 0.6.x bez dodatku treningowego
ValueError dotyczący q01 i q99 w pierwszej partiiBrak kwantyli w meta/stats.json; przelicz lub użyj MEAN_STD
CUDA brak pamięci w kroku 0Peł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 robiNiezgodność normalizacji, lub polityka kopiuje stan
Ramię zatrzymuje się między fragmentamiOpóźnienie na krok plus czas podróży w obie strony; kolejka fragmentów wyczerpuje się
Działa w jednej konfiguracji, zawodzi w innejZbyt mało epizodów, lub wszystkie w jednej konfiguracji

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.

WarstwaPolitykiTypowe uruchomienieCena za godzinęKoszt uruchomienia
A100 80 GB lub H100Pi0.5, GR00T N1.7, GR00T N1.53 do 6 godzin1.20 do 2.00 USDokoło 4 do 12 USD
RTX 4090 lub dowolna karta 24 GBSmolVLA, ACT2 do 5 godzin0.30 do 0.60 USDokoło 1 do 3 USD
Tabela kosztów AY-Robots pokazująca, jakiej karty GPU potrzebuje każda polityka, typowy czas działania i cenę oraz ile epizodów jest potrzebnych, zanim polityka stanie się użyteczna
Te same dwa poziomy na stronie produktu: Pi0.5 wynajmuje kartę 80 GB, SmolVLA i ACT pasują na 4090.

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 szkoleniowe
Czy 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started