Die AY-Robots Trainingsmatrix mit fünf Policies als Zeilen und vier Roboterarmen als Spalten, wobei jede Zelle ein Link zu einer spezifischen Fine-Tuning-Anleitung ist
Pi0.5Flow MatchingVLA-TrainingLeRobotFine-Tuning

Wie man Pi0.5 mit eigenen Roboterdaten trainiert

AY-Robots Research23. August 202616 Min. Lesezeit

Fine-tune Pi0.5, das Flow-Matching VLA von Physical Intelligence, mit Ihren eigenen Roboterdaten. Echte Befehle für openpi und lerobot pi05, Fallstricke im Datensatzformat, VRAM- und Latenzgrenzen.

Pi0.5 ist das Modell der Wahl, wenn eine Policy in einem Raum funktionieren muss, den sie noch nie zuvor gesehen hat. Es ist auch das umständlichste der fünf trainierbaren Policies hier, um manuell feinabzustimmen: Das Upstream-Repository ist primär JAX, der LeRobot-Port hat die Bereitstellung in 0.6.0 aus lerobot-record verschoben und die Basisinstallation zu klein gemacht, um damit zu trainieren, und ein vollständiges Fine-Tuning passt nicht auf eine 4090. Unten: was Flow Matching bei der Inferenz kostet, die beiden Befehlsrouten und die Zahl von 485 ms, die entscheidet, ob das Ergebnis nutzbar ist.

Was Sie wissen müssen

  • Ein Flow-Matching VLA: ein 3B PaliGemma VLM plus ein 300M Action Expert, der kontinuierliche Aktions-Chunks dekodiert. Zwei Wege zum Fine-Tuning, openpi und LeRobot pi05, 0.65 Punkte Unterschied im LIBERO-Durchschnitt.
  • Ein vollständiges Fine-Tuning benötigt mehr als 70 GB VRAM. openpi listet LoRA mit 22.5 GB, nur auf seinem JAX-Pfad.
  • Der Datensatz muss LeRobotDataset v3.0 mit q01- und q99-Quantilen in meta/stats.json sein, sonst schlägt der erste Batch fehl.
  • Überprüfen Sie zuerst Ihre lerobot-Version: 0.6.0 hat das Basispaket leichtgewichtig gemacht und die Bereitstellung aus lerobot-record verschoben.
  • Hier läuft es mit 485 ms pro Aktionsschritt, benötigt 50 Episoden und kostet etwa 4 bis 12 USD pro Lauf.

Was Pi0.5 tatsächlich ist

Physical Intelligence veröffentlichte pi0 im Oktober 2024: ein Flow-Matching Vision-Sprache-Aktions-Modell auf einem vortrainierten VLM: PaliGemma mit 3 Milliarden Parametern plus einem 300M Action Expert, der von Grund auf initialisiert wurde, insgesamt 3.3 Milliarden. Das Paper berichtet über ein Vortraining mit über 10.000 Stunden Robotikdaten über 7 Roboterkonfigurationen und 68 Aufgaben hinweg. Mehr dazu im pi0-Artikel.

Pi0.5 (arXiv 2504.16054, 22. April 2025) behält dieses Skelett bei und ändert die Trainingsdiät: Webdaten, Objekterkennung, verbale Anweisungen von Menschen, die den Roboter coachen, Unteraufgaben-Labels, Cross-Embodiment-Daten von Robotern in vielen Haushalten. Das Ergebnis ist ein Roboter, der Küchen in Häusern reinigt, die nicht im Trainingsdatensatz waren. Die openpi README fügt ein Detail hinzu, das der Titel nicht enthält: Das veröffentlichte pi0.5 wurde mit Wissensisolation (arXiv 2505.23705) trainiert.

Eigenschaftpi0pi0.5
VLM-Backbone-Variantegemma_2b (PaliGemma)gemma_2b (PaliGemma)
Aktions-Experten-Variantegemma_300mgemma_300m
action_dim3232
Aktionshorizont Standard5050
max_token_len48200
discrete_state_inputfalsetrue, Zustand in Bins im Prompt diskretisiert
Basis-Checkpointgs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
Was öffentlich ist, ist nicht das gesamte Paper

Die openpi README ist explizit: Das Repository unterstützt nur den Flow-Matching-Head, sowohl für das Training als auch für die Inferenz von pi0.5. Das Paper beschreibt zwei Stufen, und der Code enthält nur die zweite: Das Vortraining stellt jede Aktion als diskrete Tokens über den FAST-Tokenizer dar, und bei der Bereitstellung leitet das Modell eine übergeordnete Unteraufgabe vor jedem Aktions-Chunk ab. Keines davon ist im Repository enthalten. Die lerobot/pi05_base-Karte gibt dieselbe Liste an und fügt RL hinzu, obwohl das pi0.5-Paper überhaupt keine Reinforcement-Learning-Stufe beschreibt. Der LeRobot-Port erbt diesen Umfang, ebenso wie jeder darauf gehostete Trainer, einschließlich des hier. Die Lizenzierung ist ebenfalls geteilt: Die pi05-Dokumentationsseite sagt Apache 2.0, die lerobot/pi05_base-Karte ist mit license: gemma getaggt.

Was Flow Matching an Training und Inferenz ändert

Eine Policy die Sie auf einem SO-100 trainieren können, regrediert entweder Aktionen direkt (ACT) oder tokenisiert sie und dekodiert autoregressiv (pi0-FAST). Flow Matching tut keines von beidem: Es lernt ein Vektorfeld, das Rauschen zu einem sauberen Aktions-Chunk, und integriert es dann. Das pi0-Paper verwendet 10 Integrationsschritte mit einer Schrittgröße von 0.1; LeRobots pi05-Konfiguration enthält dieselbe num_inference_steps: int = 10.

  • Training: Der Verlust regrediert einen verrauschten Aktions-Chunk. Kein Tokenizer zum Abstimmen, keine Diskretisierung Ihrer Gelenkwinkel.
  • Inferenz: Ein Chunk kostet zehn Vorwärtsdurchläufe durch den Aktions-Experten. Das ist strukturell, kein Abstimmungsproblem.
  • Ausgabe: Kontinuierliche Aktionen der Dimension 32, intern aufgefüllt, Verlust wird auf den Dimensionen berechnet, die Ihr Roboter hat. Ein 6-DoF-Arm plus Greifer verwendet 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
Gelesen aus src/openpi/models/pi0_config.py auf dem openpi main branch, 23. August 2026.

Das PaliGemma-Backbone und das Gate davor

PaliGemma (arXiv 2407.07726) ist ein SigLIP-So400m Vision-Encoder auf einem Gemma-2B Sprachmodell mit etwa 3 Milliarden Parametern. Pi0.5 erbt seinen Tokenizer, und dieser Tokenizer befindet sich in einem geschützten Repository. Dies ist der häufigste Grund, warum ein erster Durchlauf scheitert, noch vor dem ersten Trainingsschritt.

Akzeptieren Sie die geschützte Lizenz, bevor Sie eine GPU mieten

Die LeRobot pi05 Dokumentation besagt es deutlich: pi0.5 verwendet den geschützten google/paligemma-3b-pt-224 Tokenizer, akzeptieren Sie daher dessen Lizenz auf dem Hub und führen Sie zuerst hf auth login aus. Der Zugriff wird manuell gewährt, nicht sofort. Überspringen Sie dies, starten Sie einen kostenpflichtigen Cloud-Lauf, und Sie bezahlen für einen Pod, der keinen Tokenizer herunterladen kann.

Bevor Sie beginnen: Datensatzformat, Episoden, Hardware

Pi0.5 in LeRobot liest einen LeRobot-Datensatz im v3.0-Layout, das mit lerobot 0.4.0 im Oktober 2025 eingeführt wurde: viele Episoden pro Parquet- und MP4-Datei anstelle einer Datei pro Episode, mit Begrenzungen in meta/episodes/ anstatt in Dateinamen. Nehmen Sie mit dem Desktop-Client auf oder folgen Sie Aufnahme Ihres ersten Datensatzes und Sie haben es.

ModusBenötigter GPU-SpeicherBeispiel-GPU
Inferenzmehr als 8 GBRTX 4090
Feinabstimmung, LoRAmehr als 22,5 GBRTX 4090
Feinabstimmung, vollständigmehr als 70 GBA100 80 GB oder H100
Die Versionsfalle, die einen Tag kostet

Pi0.5 und SmolVLA benötigen LeRobot v3.0. GR00T N1.7 und GR00T N1.5 benötigen v2.0 oder v2.1 und stürzen bei einem v3.0-Datensatz ab. Eine Aufnahmesitzung kann nicht beide ohne Konvertierung versorgen, und der Fehler meldet nicht "falsche Datensatzversion". Siehe Datensatz abgelehnt: v3 erforderlich.

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
Aus der LeRobotDataset v3.0 Dokumentation.

Die Plattform benötigt mindestens 50 Episoden für Pi0.5, die gleiche Untergrenze wie für GR00T und ACT. Das Vortraining leistet die Hauptarbeit, daher sind 50 saubere Episoden besser als 200 schlampige. Neu hier? Beginnen Sie mit dem Leitfaden zur Datenerfassung.

Die AY-Robots Richtlinienseite, die die fünf trainierbaren Richtlinien nach Parametern, GPU-Klasse, Latenz und Mindestepisoden vergleicht
Pi0.5 befindet sich in der A100- und H100-Klasse mit 485 ms pro Aktionsschritt und einer Untergrenze von 50 Episoden.

Route A: Feinabstimmung mit dem openpi-Repository

Die Referenzimplementierung: Zuerst JAX, nur unter Ubuntu 22.04 getestet, gesteuert durch Konfigurationsobjekte statt Flags. Ein PyTorch-Pfad kam im September 2025, validiert auf LIBERO. Drei Schritte: Daten konvertieren, Konfiguration definieren, trainieren und bereitstellen.

  1. 1
    Klonen und installieren

    openpi verwendet uv. GIT_LFS_SKIP_SMUDGE ermöglicht es LeRobot, als Abhängigkeit ohne LFS-Blobs zu fungieren.

    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
    Ihre Daten in ein LeRobot-Dataset konvertieren

    Upstream liefert Konverter für LIBERO und DROID und erwartet, dass Sie einen davon anpassen. Die Arbeit besteht in der Schlüsselzuordnung.

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    Eine Trainingskonfiguration hinzufügen

    Konfigurationen sind TrainConfig-Einträge in src/openpi/training/config.py. Diese hier passt pi05_droid_finetune an, wobei der Weight Loader auf pi05_base zeigt.

    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
    Normierungsstatistiken berechnen

    Läuft gegen den Konfigurationsnamen, nicht gegen das Dataset. Diesen Schritt zu überspringen, ist hier der klassische erste Fehler.

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

    Die Variable lässt JAX 90 Prozent des GPU-Speichers nutzen, anstatt der standardmäßigen 75. Auf einer 80-GB-Karte entscheidet dies, ob der Lauf überlebt.

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

    Der Server lauscht auf Port 8000 und beantwortet Beobachtungsanfragen; Ihre Roboter-Laufzeitumgebung ist der Client.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Der PyTorch-Pfad ist nicht der JAX-Pfad

openpi's PyTorch-Implementierung unterstützt keine pi0-FAST, Mixed Precision, FSDP, LoRA oder EMA-Gewichte, daher ist die LoRA, die 22.5 GB erreicht, nur JAX-basiert, über die Varianten gemma_2b_lora und gemma_300m_lora. Schlimmer noch: Das Setup kopiert gepatchte Dateien über Ihre installierten transformers 4.53.2, und die README warnt, dass dies im Standard-Hardlink-Modus von uv transformers im uv-Cache dauerhaft modifiziert und in andere Projekte eindringen kann. Machen Sie dies rückgängig mit uv cache clean transformers.

Route B: Fine-Tuning mit lerobot pi05

Der LeRobot-Port kapselt dieselben Gewichte in der CLI, die Sie bereits für ACT und SmolVLA. Alles Folgende wurde mit lerobot 0.6.1, der Veröffentlichung vom 3. August 2026, und den pi05-Dokumenten vom 23. August 2026 überprüft. Versionen sind hier wichtig: v3.0-Datensätze kamen mit 0.4.0 im Oktober 2025, der 0.5.0-Blog vom 9. März 2026 stellt pi0-FAST und Real-Time Chunking vor, und 0.6.0 vom 6. Juli 2026 machte das Basispaket leichtgewichtig und verlagerte die Bereitstellung auf lerobot-rollout.

Eines hat sich nicht geändert: lerobot-train und lerobot-record waren bereits in 0.3.2, August 2025, Einstiegspunkte. Ein Tutorial, das immer noch python -m lerobot.scripts.train aufruft, ist älter als ein Jahr voller Änderungen und sollte auch im Übrigen misstrauisch betrachtet werden.

  1. 1
    Installation mit den richtigen Extras

    Seit 0.6.0 enthält die Basisinstallation nur die Kern-ML-Abhängigkeiten, und das Pi-Extra fügt keinen Datensatz- oder Trainingscode hinzu, daher benötigt ein Fine-Tuning auch das Trainings-Extra. Ältere Einzeiler schlagen hier zur Importzeit fehl.

    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
    Authentifizieren

    Akzeptieren Sie die paligemma-3b-pt-224-Lizenz in einem Browser und melden Sie sich dann auf der Trainingsmaschine an.

    bash
    hf auth login
  3. 3
    Quantilstatistiken hinzufügen

    Pi0.5 normalisiert STATE und ACTION mit Quantilen, daher benötigt meta/stats.json q01 und q99. Ältere Datensätze enthalten nur 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
    Fine-Tuning von lerobot/pi05_base

    Stellen Sie die Batch-Größe so ein, dass Ihre Karte damit zurechtkommt; die Dokumentation verwendet 64 auf LIBERO bei 80 GB. Übergeben Sie bfloat16 explizit, der Standardwert der Konfiguration ist 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
    Auf dem Arm ausführen

    In 0.6.x ist dies lerobot-rollout: lerobot-record lehnt eine Policy ab und weist eval_-Datensatznamen zurück. Base steuert den Arm, sentry zeichnet den Rollout auf.

    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
FlagWas es tutHinweis
--policy.type=pi05wählt Pi0.5 auserforderlich mit pretrained_path, weglassen mit --policy.path
--policy.pretrained_pathlädt nur GewichteFeature-Namen aus Ihrem Datensatz, gespeicherte Einstellungen werden zurückgesetzt
--policy.pathGewichte plus die Checkpoint config.jsongespeicherte Einstellungen wie n_action_steps werden übernommen
--policy.n_action_stepsSchritte pro Chunk verbrauchtfällt auf 50 zurück, nie über chunk_size (Standard 50)
--policy.train_expert_onlyfriert das VLM ein, trainiert den ExpertenStandard false, weniger Speicher, einige Kosten im Erfolg
--policy.gradient_checkpointingNeuberechnung statt Speicherung von AktivierungenStandard false, der erste Hebel, wenn ein Lauf nicht passt
--peft.method_type=LORALoRA-Adapter anstelle vollständiger Gewichtebenötigt das peft-Extra, dokumentiertes Beispiel ist SmolVLA
--policy.rtc_training_max_delayAction-Präfix-Konditionierung für RTCnur im Main-Branch, nicht in 0.6.1, muss unter chunk_size bleiben
--rename_mapordnet Datensatzspalten Policy-Features zuerforderlich, wenn Ihre Kameratasten abweichen
Der Fehler, auf den die meisten ersten Läufe stoßen

Ohne Quantile erhalten Sie ValueError: QUANTILES normalization mode requires q01 and q99 stats im ersten Batch. Berechnen Sie die Statistiken neu, aber das Ergebnis landet in $HF_LEROBOT_HOME/your_dataset, nicht im Cache, den --dataset.repo_id liest. Trainieren Sie also mit --dataset.root, das dorthin zeigt, oder pushen Sie es zum Hub. Oder überspringen Sie Quantile mit --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', wie es der LIBERO-Referenzbefehl tut.

Drei Sätze von Standardwerten und welche davon den Trainer erreichen

openpis TrainConfig ist die Referenz, LeRobots PI05Config wird von lerobot-train verwendet, wenn Sie nichts angeben, und das Formular hier sendet einen dritten Satz. Die Überraschung ist die Lernrate: Beide Upstream-Standardwerte erreichen 2.5e-5, während openpis eigene pi05_libero Konfiguration und diese Plattform sie auf 5e-5 erhöhen.

Einstellungopenpi TrainConfiglerobot pi05 und lerobot-trainAY-Robots sendet
Batch-Größe3281
Maximale Lernrate2.5e-5, Cosinus-Zerfalloptimizer_lr 2.5e-55e-5
Trainingsschritte30,000100,00030,000
Checkpoint-Intervall1,000 Schritte20,000 Schrittenicht im Formular
Seed421,000im Formular
Aktions-Chunkaction_horizon 50chunk_size 50, n_action_steps 50nicht im Formular
Gewichts-Datentypbfloat16float32 until you pass --policy.dtypenicht im Formular
Gradientenakkumulationkein solcher Regler, stattdessen fsdp_devicesbisher in keiner Version vorhanden16, und es wird verworfen

Ist der Port originalgetreu? Das LeRobot-Team hat das LIBERO-Basismodell für weitere 6k Schritte feinabgestimmt und mit den Referenzzahlen von openpi auf vier Suiten verglichen: 97.5 Prozent im Durchschnitt gegenüber 96.85, vorne bei Libero 10, hinten bei Spatial. Die Route ist eine Werkzeugwahl, keine Qualitätswahl.

Feinabstimmung von Pi0.5 mit eigenen Daten
Vorteile
  • Mehr als 10,000 Stunden Roboter-Vortraining dahinter, sodass 50 Episoden Ihrer Aufgabe ausreichen können.
  • Kontinuierliche Aktionen: kein Tokenizer zum Abstimmen, keine Diskretisierungsuntergrenze für Ihre Gelenkwinkel.
  • Der LeRobot-Port erreicht 97.5 Prozent im LIBERO-Durchschnitt gegenüber openpis 96.85, sodass die benutzerfreundlichere CLI keine messbaren Kosten verursacht.
  • Parameter-effiziente Pfade auf beiden Seiten: openpis JAX LoRA-Varianten, LeRobots PEFT-Integration.
Kompromisse
  • Vollständiges Fine-Tuning benötigt mehr als 70 GB. Die 22.5 GB LoRA-Zahl ist openpis JAX-Wert; für pi05 unter PEFT ist keine veröffentlicht.
  • 485 ms pro Aktionsschritt, der langsamste der fünf hier: doppelt so langsam wie SmolVLA, vierundzwanzigmal so langsam wie ACT.
  • LeRobot v3.0 ist erforderlich, daher muss ein für einen GR00T-Lauf aufgezeichneter Datensatz konvertiert werden und umgekehrt.
  • Neue Optionen landen zuerst auf main: RTC- und MEM-Speicher zur Trainingszeit sind nicht in 0.6.1 enthalten, daher kann die neueste Dokumentation eine Installation von git bedeuten.

Die 485 ms Realität und wo sie unbrauchbar wird

Dies entscheidet über Ihr Projekt, daher steht es vor der Kostentabelle. Die pro Aktionsschritt, hier für Pi0.5 gemessen, beträgt 485 ms. Im Vergleich zu den anderen vier:

PolicyInferenz pro AktionsschrittParameterGPU-KlasseMinimale Episoden
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
Die AY-Robots Vergleichsseite für GR00T N1.7 gegen Pi0.5, mit Parametern, GPU-Klasse, Latenz und Datensatzformat
Gleiche GPU-Klasse, gleiche Episodenuntergrenze, unterschiedliche Datensatzversion, dreifache Latenzlücke.
Inferenz muss neben den Servos sitzen

Die Regelschleife dieser fünf Modelle läuft 20 bis 485 ms pro Aktionsschritt. Öffentliche Internet-Roundtrips zusätzlich zu den 485 ms verwandeln eine funktionierende Policy in eine zögerliche. Remote-Inferenz ist für langsames Pick-and-Place praktikabel, nicht für schnelle reaktive Bewegungen. Das sagen wir lieber, als eine Demo zu verkaufen, die nur im LAN funktioniert. Wenn Ihr Arm zwischen den Chunks pausiert, beginnen Sie bei Policy friert mitten in der Bewegung ein.

Upstream hat eine Antwort, und die Hälfte davon ist bereits in der Release enthalten, die Sie installieren können. Real-Time Chunking generiert den nächsten Chunk, während der Arm noch den aktuellen ausführt, und führt dann die überlappenden Schritte des neuen Chunks so, dass sie nahe am bereits ausgeführten Teil bleiben, damit der Arm an der Nahtstelle nicht stoppt oder ruckelt. Die Inferenz-Zeit-Form wurde im 0.4.2 Changelog für Pi0, Pi0.5 und SmolVLA ausgeliefert und ist ein Rollout-Flag, kein Retrain:

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 gibt an, mit wie vielen Schritten des vorherigen Chunks der neue übereinstimmen muss; die RTC-Dokumentation nennt 8 bis 12 als üblichen Bereich. Das Standard-Inferenz-Backend ist --inference.type=sync.

Es macht das Modell nicht schneller. Es verbirgt die Lücke: Die 485 ms werden immer noch aufgewendet, aber außerhalb des kritischen Pfades, sodass die Warteschlange zwischen den Chunks nicht leerläuft. Die Trainingszeit-Variante von arXiv 2512.05964 geht noch weiter: Das Modell lernt, sich an ein sauberes Aktionspräfix zu konditionieren, sodass bei der Inferenz die Überlappung mit aktionsspezifischen Fluss-Zeitschritten hart eingefärbt wird, anstatt geführt zu werden, und der Guidance-Rückwärtspass verschwindet. Während des Trainings wird pro Beispiel eine Präfixlänge abgetastet und der Flussverlust auf dem verbleibenden Postfix berechnet. Dieses Flag existiert nur im Main-Branch, nicht in 0.6.1, und die Verzögerung, für die Sie trainieren, muss unter chunk_size bleiben.

Zwei Wege, einen Pi0.5-Checkpoint zu erhalten

Sie mieten oder besitzen eine 80-GB-Karte, installieren einen der oben genannten Stacks, konvertieren Ihren Datensatz und überwachen den Lauf. Sie behalten jede Einstellung: openpis JAX LoRA, LeRobots PEFT-Adapter, relative Aktionen, benutzerdefinierte Tastenbelegungen. Sie behalten auch jeden Fehler.

  • Hardware: A100 80 GB oder H100, oder eine 24-GB-Karte auf dem JAX LoRA-Pfad von openpi.
  • Setup: ein Nachmittag für den ersten Lauf, hauptsächlich Tastenbelegung und der gated Tokenizer.
  • Nicht im gehosteten Formular: PEFT-Adapter, relative Aktionen, Trainingszeit-RTC, MEM-Speicher.
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
Der Befehl, den kein gehostetes Formular ausführt und pip nicht installieren kann: Trainingszeit-RTC ist ein Flag des Hauptzweigs.

Wenn es nicht funktioniert

SymptomWahrscheinlichste Ursache
Lauf vor dem Start abgelehntDatensatz v2.1, aber Pi0.5 benötigt v3.0, oder umgekehrt für GR00T
ImportError, datasets-Paket fehltlerobot 0.6.x ohne das Trainings-Extra
ValueError bezüglich q01 und q99 bei Batch einsKeine Quantile in meta/stats.json; neu berechnen oder MEAN_STD verwenden
CUDA out of memory bei Schritt 0Volles Fine-Tuning unter 70 GB; versuchen Sie Checkpointing oder train_expert_only
401 oder gated Repo-FehlerPaliGemma Tokenizer-Lizenz nicht akzeptiert
Verlust fällt, Roboter tut nichtsNormalisierungs-Mismatch, oder die Policy kopiert den Zustand
Arm pausiert zwischen ChunksLatenz pro Schritt plus Roundtrip; die Chunk-Warteschlange läuft leer
Funktioniert in einem Setup, schlägt in einem anderen fehlZu wenige Episoden, oder alle in einer Konfiguration

Was ein Durchlauf kostet

Pi0.5 befindet sich in der teuren Stufe, da es eine 80-GB-Karte benötigt und die Spotpreise schwanken, sodass die Angabe eher eine Spanne als ein fester Preis ist. Für viele SO-100-Aufgaben trainieren Sie zunächst SmolVLA oder ACT auf der 24-GB-Stufe, um zu bestätigen, dass die Aufgabe überhaupt erlernbar ist, und investieren Sie dann A100-Stunden dafür. Trainieren Sie Ihre erste Policy beschreibt diesen günstigeren Ablauf, und Preise enthält die aktuellen Stufen.

StufePoliciesTypischer DurchlaufPreis pro StundeKosten pro Durchlauf
A100 80 GB or H100Pi0.5, GR00T N1.7, GR00T N1.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD
RTX 4090 or any 24 GB cardSmolVLA, ACT2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
Die AY-Robots Kostentabelle zeigt, welche GPU jede Policy benötigt, die typische Laufzeit und den Preis, und wie viele Episoden benötigt werden, bevor eine Policy nützlich ist.
Die gleichen zwei Stufen auf der Produktseite: Pi0.5 mietet die 80-GB-Karte, SmolVLA und ACT passen auf eine 4090.

Bevor Sie einen Abend investieren: und legen die gleichen Zahlen direkt gegenüber. Die enthält 85 VLA-Modelle mit 332 Benchmark-Ergebnissen, jedes mit seiner Quelle verknüpft, und Hintergrundinformationen zur Familie finden Sie in .

Pi0.5 trainieren, ohne den Stack aufzubauen

Wählen Sie den Datensatz und die Hyperparameter in einem Formular aus. Das Backend mietet eine 80-GB-Karte auf dem Spotmarkt, führt den Trainer aus und schreibt die Checkpoints in den Objektspeicher. Anleitungen für SO-100, SO-101, Koch v1.1 und LeKiwi.

Trainingsanleitungen öffnen
Kann ich Pi0.5 auf einer RTX 4090 feinabstimmen?

Kein vollständiges Fine-Tuning: openpi listet dafür mehr als 70 GB auf, also eine A100 80 GB oder eine H100. Die 22,5 GB LoRA-Angabe gehört zum JAX-Pfad; die PyTorch-Implementierung hat kein LoRA. Die PEFT-Integration von LeRobot existiert, aber das dokumentierte Beispiel ist SmolVLA und es wird keine VRAM-Angabe für pi05 veröffentlicht.

Wie viele Episoden benötige ich?

Fünfzig, die gleiche Untergrenze wie GR00T und ACT; nur SmolVLA geht tiefer, bei 30. Der Basis-Checkpoint enthält mehr als 10.000 Stunden Vortraining, sodass das Fine-Tuning eher anpasst als von Grund auf lernt: 50 saubere, abwechslungsreiche Episoden schlagen zweihundert aus einer Konfiguration.

Was ist der Unterschied zwischen --policy.path und --policy.pretrained_path?

--policy.path lädt Gewichte und die config.json des Checkpoints, sodass gespeicherte Einstellungen wie n_action_steps übernommen werden und --policy.type weggelassen werden muss. --policy.pretrained_path lädt nur Gewichte: Feature-Namen stammen aus Ihrem Datensatz, gespeicherte Einstellungen werden zurückgesetzt, --policy.type ist erforderlich. Deshalb übergibt der LIBERO-Befehl n_action_steps=10 und empty_cameras=1 explizit; andernfalls fallen sie auf 50 und 0 zurück.

Bietet mir die offene Version das vollständige Pi0.5 aus dem Paper?

Nein. Beide unterstützen nur den Flow-Matching-Action-Head. Die diskrete Token-Vortrainingsphase mit dem FAST-Action-Tokenizer und die High-Level-Subtask-Vorhersage wurden nicht veröffentlicht, und die lerobot/pi05_base-Karte fügt RL zu dieser Liste hinzu, obwohl das pi0.5-Paper keine Reinforcement-Learning-Phase beschreibt. Sie trainieren eine Low-Level-Policy, die auf einer von Ihnen bereitgestellten Sprachzeichenfolge konditioniert ist, nicht ein Modell, das eine lange Aufgabe selbst zerlegt.

Auf welche Versionen bezieht sich diese Anleitung?

openpi auf main und lerobot 0.6.1, die Veröffentlichung seit dem 3. August 2026, beide gelesen am 23. August 2026. v3.0-Datensätze kamen mit 0.4.0 im Oktober 2025. 0.6.0 machte das Basispaket leichtgewichtig, sodass lerobot[pi] allein keinen Trainings-Stack mehr installiert und die Bereitstellung auf lerobot-rollout verschob. Trainingszeit-RTC ist nur auf main; der hier gehostete Trainer läuft mit 0.5.1.

Bereit für hochwertige Robotik-Daten?

AY-Robots verbindet Ihre Roboter mit qualifizierten Operatoren weltweit.

Jetzt starten