Ο πίνακας εκπαίδευσης AY-Robots με πέντε πολιτικές ως γραμμές και τέσσερις ρομποτικούς βραχίονες ως στήλες, κάθε κελί ένας σύνδεσμος προς έναν συγκεκριμένο οδηγό βελτιστοποίησης
Pi0.5Αντιστοίχιση ΡοήςΕκπαίδευση VLALeRobotΒελτιστοποίηση

Πώς να εκπαιδεύσετε το Pi0.5 με τα δικά σας δεδομένα ρομπότ

AY-Robots ResearchAugust 23, 202616 λεπτά ανάγνωσης

Βελτιστοποιήστε το Pi0.5, το VLA αντιστοίχισης ροής από την Physical Intelligence, με τα δικά σας δεδομένα ρομπότ. Πραγματικές εντολές για openpi και lerobot pi05, παγίδες μορφής συνόλου δεδομένων, όρια VRAM και καθυστέρησης.

Το Pi0.5 είναι το μοντέλο που επιλέγετε όταν μια πολιτική πρέπει να λειτουργήσει σε ένα δωμάτιο που δεν έχει ξαναδεί. Είναι επίσης το πιο δύσχρηστο από τις πέντε εκπαιδεύσιμες πολιτικές εδώ για να τελειοποιήσετε χειροκίνητα: το upstream αποθετήριο είναι αρχικά JAX, η μεταφορά του LeRobot μετέφερε την ανάπτυξη εκτός του lerobot-record στην έκδοση 0.6.0 και έκανε την βασική εγκατάσταση πολύ μικρή για εκπαίδευση, και μια πλήρης τελειοποίηση δεν χωράει σε μια 4090. Παρακάτω: τι αντιστοίχιση ροής κοστίζει στην εξαγωγή συμπερασμάτων, οι δύο διαδρομές εντολών, και ο αριθμός 485 ms που αποφασίζει αν το αποτέλεσμα είναι χρησιμοποιήσιμο.

Τι πρέπει να γνωρίζετε

  • Ένα VLA αντιστοίχισης ροής: ένα VLM PaliGemma 3B συν έναν ειδικό δράσης 300M που αποκωδικοποιεί συνεχή τμήματα δράσης. Δύο διαδρομές για την τελειοποίησή του, openpi και LeRobot pi05, με διαφορά 0,65 μονάδων στον μέσο όρο LIBERO.
  • Η πλήρης τελειοποίηση απαιτεί περισσότερα από 70 GB VRAM. Το openpi αναφέρει το LoRA στα 22.5 GB, μόνο στη διαδρομή JAX του.
  • Το σύνολο δεδομένων πρέπει να είναι LeRobotDataset v3.0 με ποσοστημόρια q01 και q99 στο meta/stats.json, αλλιώς η πρώτη παρτίδα θα αποτύχει.
  • Ελέγξτε πρώτα την έκδοση του lerobot σας: η 0.6.0 έκανε το βασικό πακέτο ελαφρύ και μετέφερε την ανάπτυξη εκτός του lerobot-record.
  • Εδώ τρέχει στα 485 ms ανά βήμα δράσης, απαιτεί 50 επεισόδια και κοστίζει περίπου 4 έως 12 USD ανά εκτέλεση.

Τι είναι στην πραγματικότητα το Pi0.5

Η Physical Intelligence δημοσίευσε το pi0 τον Οκτώβριο του 2024: ένα μοντέλο αντιστοίχισης ροής μοντέλο όρασης-γλώσσας-δράσης σε ένα προεκπαιδευμένο VLM: PaliGemma με 3 δισεκατομμύρια παραμέτρους συν έναν ειδικό δράσης 300M αρχικοποιημένο από το μηδέν, 3,3 δισεκατομμύρια συνολικά. Η εργασία αναφέρει προεκπαίδευση σε πάνω από 10.000 ώρες δεδομένων ρομπότ σε 7 διαμορφώσεις ρομπότ και 68 εργασίες. Περισσότερα στο το άρθρο για το pi0.

Το Pi0.5 (arXiv 2504.16054, 22 Απριλίου 2025) διατηρεί αυτόν τον σκελετό και αλλάζει τη διατροφή εκπαίδευσης: δεδομένα ιστού, ανίχνευση αντικειμένων, προφορικές οδηγίες από ανθρώπους που καθοδηγούν το ρομπότ, ετικέτες υποεργασιών, δεδομένα δια-ενσωμάτωσης από ρομπότ σε πολλά σπίτια. Το αποτέλεσμα είναι ένα ρομπότ που καθαρίζει κουζίνες σε σπίτια που δεν ήταν στο σύνολο εκπαίδευσης. Το README του openpi προσθέτει μια λεπτομέρεια που ο τίτλος δεν αναφέρει: το δημοσιευμένο pi0.5 εκπαιδεύτηκε με απομόνωση γνώσης (arXiv 2505.23705).

Ιδιότηταpi0pi0.5
Παραλλαγή VLM backbonegemma_2b (PaliGemma)gemma_2b (PaliGemma)
Παραλλαγή ειδικού δράσηςgemma_300mgemma_300m
action_dim3232
προεπιλογή action_horizon5050
max_token_len48200
discrete_state_inputfalsetrue, η κατάσταση διακριτοποιείται σε κάδους στην προτροπή
Βασικό σημείο ελέγχουgs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
Αυτό που είναι δημόσιο δεν είναι ολόκληρη η εργασία

Το README του openpi είναι σαφές: το αποθετήριο υποστηρίζει μόνο την κεφαλή αντιστοίχισης ροής (flow matching head), τόσο για την εκπαίδευση όσο και για την εξαγωγή συμπερασμάτων του pi0.5. Η εργασία περιγράφει δύο στάδια και ο κώδικας περιέχει μόνο το δεύτερο: η προ-εκπαίδευση αναπαριστά κάθε ενέργεια ως διακριτά tokens μέσω του FAST tokenizer, και κατά την ανάπτυξη το μοντέλο εξάγει συμπεράσματα για μια υποεργασία υψηλού επιπέδου πριν από κάθε τμήμα ενέργειας. Κανένα από αυτά δεν βρίσκεται στο αποθετήριο. Η κάρτα lerobot/pi05_base δίνει την ίδια λίστα και προσθέτει RL, αν και η εργασία pi0.5 δεν περιγράφει καθόλου στάδιο ενισχυτικής μάθησης. Η θύρα LeRobot κληρονομεί αυτό το πεδίο εφαρμογής, όπως και κάθε φιλοξενούμενος εκπαιδευτής σε αυτήν, συμπεριλαμβανομένου αυτού εδώ. Η αδειοδότηση είναι επίσης διαιρεμένη: η σελίδα τεκμηρίωσης του pi05 αναφέρει Apache 2.0, η κάρτα lerobot/pi05_base φέρει την ετικέτα license: gemma.

Τι αλλάζει η αντιστοίχιση ροής στην εκπαίδευση και την εξαγωγή συμπερασμάτων

Μια πολιτική που μπορείτε να εκπαιδεύσετε σε ένα SO-100 είτε παλινδρομεί ενέργειες απευθείας (ACT) είτε τις μετατρέπει σε tokens και τις αποκωδικοποιεί αυτοπαλινδρομικά (pi0-FAST). Το Flow matching δεν κάνει κανένα από τα δύο: μαθαίνει ένα διανυσματικό πεδίο που μεταφέρει θόρυβο σε ένα καθαρό κομμάτι ενέργειας, και στη συνέχεια το ενσωματώνει. Η εργασία pi0 χρησιμοποιεί 10 βήματα ολοκλήρωσης με μέγεθος βήματος 0.1. Η ρύθμιση pi05 του LeRobot φέρει την ίδια num_inference_steps: int = 10.

  • Εκπαίδευση: η απώλεια παλινδρομεί ένα θορυβώδες κομμάτι ενέργειας. Δεν υπάρχει tokeniser για ρύθμιση, ούτε διακριτοποίηση των γωνιών των αρθρώσεών σας.
  • Συμπερασματολογία: ένα κομμάτι κοστίζει δέκα εμπρόσθιες διελεύσεις μέσω του ειδικού ενέργειας. Αυτό είναι δομικό, όχι πρόβλημα ρύθμισης.
  • Έξοδος: συνεχείς ενέργειες διάστασης 32, εσωτερικά γεμισμένες, απώλεια που λαμβάνεται στις διαστάσεις που έχει το ρομπότ σας. Ένας βραχίονας 6-βαθμών ελευθερίας συν αρπάγη χρησιμοποιεί 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
Διαβάστηκε από το src/openpi/models/pi0_config.py στο κύριο branch του openpi, 23 Αυγούστου 2026.

Η ραχοκοκαλιά PaliGemma, και η πύλη μπροστά της

Το PaliGemma (arXiv 2407.07726) είναι ένας κωδικοποιητής όρασης SigLIP-So400m σε ένα γλωσσικό μοντέλο Gemma-2B, περίπου 3 δισεκατομμυρίων παραμέτρων. Το Pi0.5 κληρονομεί τον tokenizer του, και αυτός ο tokenizer βρίσκεται σε ένα περιορισμένο αποθετήριο. Αυτός είναι ο πιο συνηθισμένος τρόπος που μια πρώτη εκτέλεση αποτυγχάνει, πριν από το πρώτο βήμα εκπαίδευσης.

Αποδεχτείτε την περιορισμένη άδεια πριν νοικιάσετε μια GPU

Η τεκμηρίωση του LeRobot pi05 το αναφέρει ξεκάθαρα: το pi0.5 χρησιμοποιεί τον περιορισμένο tokenizer google/paligemma-3b-pt-224, οπότε αποδεχτείτε την άδειά του στο Hub και εκτελέστε πρώτα την εντολή hf auth login. Η πρόσβαση χορηγείται χειροκίνητα, όχι άμεσα. Παραλείψτε το, ξεκινήστε μια πληρωμένη εκτέλεση στο cloud, και θα πληρώσετε για έναν pod που δεν μπορεί να κατεβάσει έναν tokenizer.

Πριν ξεκινήσετε: μορφή συνόλου δεδομένων, επεισόδια, υλικό

Το Pi0.5 στο LeRobot διαβάζει ένα σύνολο δεδομένων LeRobot σε διάταξη v3.0, η οποία κυκλοφόρησε με το lerobot 0.4.0 τον Οκτώβριο του 2025: πολλά επεισόδια ανά αρχείο Parquet και MP4 αντί για ένα αρχείο ανά επεισόδιο, με όρια στο meta/episodes/ αντί για ονόματα αρχείων. Καταγράψτε με τον πελάτη επιφάνειας εργασίας ή ακολουθήστε το καταγράψτε το πρώτο σας σύνολο δεδομένων και το έχετε.

ΛειτουργίαΑπαιτούμενη μνήμη GPUΠαράδειγμα GPU
Συμπερασματολογίαmore than 8 GBRTX 4090
Εκλεπτυσμένη ρύθμιση, LoRAmore than 22.5 GBRTX 4090
Εκλεπτυσμένη ρύθμιση, πλήρηςmore than 70 GBA100 80 GB or H100
Η παγίδα έκδοσης που κοστίζει μια μέρα

Το Pi0.5 και το SmolVLA απαιτούν LeRobot v3.0. Το GR00T N1.7 και το GR00T N1.5 απαιτούν v2.0 ή v2.1 και καταρρέουν σε ένα σύνολο δεδομένων v3.0. Μια συνεδρία καταγραφής δεν μπορεί να τροφοδοτήσει και τα δύο χωρίς μετατροπή, και το σφάλμα δεν αναφέρει "λάθος έκδοση συνόλου δεδομένων". Δείτε dataset rejected: v3 required.

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
Από την τεκμηρίωση του LeRobotDataset v3.0.

Η πλατφόρμα απαιτεί τουλάχιστον 50 επεισόδια για το Pi0.5, το ίδιο ελάχιστο με τα GR00T και ACT. Η προ-εκπαίδευση κάνει τη βαριά δουλειά, οπότε 50 καθαρά επεισόδια είναι καλύτερα από 200 πρόχειρα. Είστε νέοι σε αυτό; Ξεκινήστε με τον οδηγό συλλογής δεδομένων.

Η σελίδα πολιτικών της AY-Robots που συγκρίνει τις πέντε εκπαιδεύσιμες πολιτικές ανά παραμέτρους, κατηγορία GPU, καθυστέρηση και ελάχιστα επεισόδια
Το Pi0.5 βρίσκεται στην κατηγορία A100 και H100 με 485 ms ανά βήμα ενέργειας, με ελάχιστο όριο 50 επεισοδίων.

Διαδρομή Α: λεπτομερής ρύθμιση με το αποθετήριο openpi

Η υλοποίηση αναφοράς: JAX πρώτα, δοκιμασμένη μόνο σε Ubuntu 22.04, καθοδηγούμενη από αντικείμενα διαμόρφωσης αντί για σημαίες. Μια διαδρομή PyTorch έφτασε τον Σεπτέμβριο του 2025, επικυρωμένη στο LIBERO. Τρία βήματα: μετατροπή των δεδομένων σας, ορισμός διαμόρφωσης, εκπαίδευση και εξυπηρέτηση.

  1. 1
    Κλωνοποίηση και εγκατάσταση

    Το openpi χρησιμοποιεί uv. Το GIT_LFS_SKIP_SMUDGE είναι αυτό που επιτρέπει στο LeRobot να εισέλθει ως εξάρτηση χωρίς LFS blobs.

    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
    Μετατροπή των δεδομένων σας σε σύνολο δεδομένων LeRobot

    Το upstream παρέχει μετατροπείς για LIBERO και DROID και αναμένει να προσαρμόσετε έναν. Η εργασία είναι η αντιστοίχιση κλειδιών.

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    Προσθήκη διαμόρφωσης εκπαίδευσης

    Οι διαμορφώσεις είναι καταχωρήσεις TrainConfig στο src/openpi/training/config.py. Αυτή προσαρμόζει το pi05_droid_finetune, με τον φορτωτή βαρών να δείχνει στο 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
    Υπολογισμός στατιστικών κανονικοποίησης

    Εκτελείται έναντι του ονόματος διαμόρφωσης, όχι του συνόλου δεδομένων. Η παράλειψή του είναι η κλασική πρώτη αποτυχία εδώ.

    bash
    uv run scripts/compute_norm_stats.py --config-name pi05_so100
  5. 5
    Εκπαίδευση

    Η μεταβλητή επιτρέπει στο JAX να χρησιμοποιεί το 90 τοις εκατό της μνήμης GPU αντί για το προεπιλεγμένο 75. Σε μια κάρτα 80 GB αυτό καθορίζει αν η εκτέλεση θα επιβιώσει.

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    Εξυπηρέτηση

    Ο διακομιστής ακούει στη θύρα 8000 και απαντά σε ερωτήματα παρατήρησης· το runtime του ρομπότ σας είναι ο πελάτης.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
Η διαδρομή PyTorch δεν είναι η διαδρομή JAX

Η υλοποίηση PyTorch του openpi δεν υποστηρίζει βάρη pi0-FAST, μικτή ακρίβεια, FSDP, LoRA ή EMA, οπότε το LoRA που φτάνει τα 22.5 GB είναι μόνο JAX, μέσω των παραλλαγών gemma_2b_lora και gemma_300m_lora. Χειρότερα: η εγκατάσταση αντιγράφει τροποποιημένα αρχεία πάνω από το εγκατεστημένο σας transformers 4.53.2, και το README προειδοποιεί ότι με την προεπιλεγμένη λειτουργία hardlink του uv, αυτό τροποποιεί μόνιμα τα transformers στην κρυφή μνήμη του uv και μπορεί να επηρεάσει άλλα έργα. Αναιρέστε το με uv cache clean transformers.

Διαδρομή Β: λεπτομερής ρύθμιση με lerobot pi05

Η θύρα LeRobot ενσωματώνει τα ίδια βάρη στο CLI που ήδη χρησιμοποιείτε για ACT και SmolVLA. Όλα τα παρακάτω ελέγχθηκαν έναντι του lerobot 0.6.1, της έκδοσης από τις 3 Αυγούστου 2026, και των εγγράφων του pi05 στις 23 Αυγούστου 2026. Οι εκδόσεις έχουν σημασία εδώ: τα σύνολα δεδομένων v3.0 έφτασαν με την έκδοση 0.4.0 τον Οκτώβριο του 2025, το blog 0.5.0 της 9ης Μαρτίου 2026 παρουσιάζει το pi0-FAST και το Real-Time Chunking, και η έκδοση 0.6.0 στις 6 Ιουλίου 2026 έκανε το βασικό πακέτο ελαφρύ και μετέφερε την ανάπτυξη στο lerobot-rollout.

Ένα πράγμα δεν άλλαξε: τα lerobot-train και lerobot-record ήταν ήδη σημεία εισόδου στην έκδοση 0.3.2, τον Αύγουστο του 2025. Ένα σεμινάριο που εξακολουθεί να καλεί python -m lerobot.scripts.train προηγείται ενός έτους αλλαγών και αξίζει να το δυσπιστείτε και για τα υπόλοιπα.

  1. 1
    Εγκατάσταση με τα σωστά πρόσθετα

    Από την έκδοση 0.6.0, η βασική εγκατάσταση περιλαμβάνει μόνο τις βασικές εξαρτήσεις ML, και το πρόσθετο pi δεν προσθέτει κώδικα δεδομένων ή εκπαίδευσης, οπότε μια λεπτομερής ρύθμιση (fine-tune) χρειάζεται και το πρόσθετο εκπαίδευσης. Παλαιότερες εντολές μιας γραμμής αποτυγχάνουν εδώ κατά τον χρόνο εισαγωγής.

    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
    Έλεγχος ταυτότητας

    Αποδεχτείτε την άδεια χρήσης paligemma-3b-pt-224 σε ένα πρόγραμμα περιήγησης και, στη συνέχεια, συνδεθείτε στον υπολογιστή που εκπαιδεύει.

    bash
    hf auth login
  3. 3
    Προσθήκη στατιστικών ποσοστημορίων

    Το Pi0.5 κανονικοποιεί το STATE και το ACTION με ποσοστημόρια (quantiles), οπότε το meta/stats.json χρειάζεται q01 και q99. Παλαιότερα σύνολα δεδομένων περιέχουν μόνο 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
    Λεπτομερής ρύθμιση από lerobot/pi05_base

    Ορίστε το μέγεθος δέσμης (batch size) σε αυτό που αντέχει η κάρτα σας· η τεκμηρίωση χρησιμοποιεί 64 στο LIBERO στα 80 GB. Περάστε το bfloat16 ρητά, η προεπιλογή της διαμόρφωσης είναι 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
    Εκτέλεση στον βραχίονα

    Στην έκδοση 0.6.x αυτό είναι το lerobot-rollout: το lerobot-record αρνείται μια πολιτική και απορρίπτει ονόματα συνόλων δεδομένων eval_. Το Base οδηγεί τον βραχίονα, το sentry καταγράφει την εκτέλεση.

    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
ΣημαίαΤι κάνειΣημείωση
--policy.type=pi05επιλέγει Pi0.5απαιτείται με pretrained_path, παραλείψτε με --policy.path
--policy.pretrained_pathφορτώνει μόνο βάρηονόματα χαρακτηριστικών από το σύνολο δεδομένων σας, οι αποθηκευμένες ρυθμίσεις επαναφέρονται
--policy.pathβάρη συν το αρχείο config.json του checkpointκληρονομούνται αποθηκευμένες ρυθμίσεις όπως το n_action_steps
--policy.n_action_stepsβήματα που καταναλώνονται ανά κομμάτιεπιστρέφει στην τιμή 50, ποτέ πάνω από το chunk_size (προεπιλογή 50)
--policy.train_expert_onlyπαγώνει το VLM, εκπαιδεύει τον ειδικόπροεπιλογή false, λιγότερη μνήμη, κάποιο κόστος στην επιτυχία
--policy.gradient_checkpointingεπανυπολογισμός αντί αποθήκευσης ενεργοποιήσεωνπροεπιλογή false, ο πρώτος μοχλός όταν μια εκτέλεση δεν χωράει
--peft.method_type=LORAπροσαρμογείς LoRA αντί για πλήρη βάρηχρειάζεται το πρόσθετο peft, τεκμηριωμένο παράδειγμα είναι το SmolVLA
--policy.rtc_training_max_delayπροϋπόθεση προθέματος ενέργειας για RTCμόνο στο main branch, όχι στην 0.6.1, πρέπει να παραμείνει κάτω από το chunk_size
--rename_mapαντιστοιχίζει στήλες συνόλου δεδομένων σε χαρακτηριστικά πολιτικήςαπαιτείται όταν τα κλειδιά της κάμεράς σας διαφέρουν
Το σφάλμα που αντιμετωπίζουν οι περισσότερες πρώτες εκτελέσεις

Χωρίς ποσοστημόρια θα λάβετε ValueError: QUANTILES normalization mode requires q01 and q99 stats στην πρώτη δέσμη. Επανυπολογίστε τα στατιστικά, αλλά το αποτέλεσμα καταλήγει στο $HF_LEROBOT_HOME/your_dataset, όχι στην κρυφή μνήμη που διαβάζει το --dataset.repo_id, οπότε εκπαιδεύστε με το --dataset.root να δείχνει εκεί ή ανεβάστε στο Hub. Ή παραλείψτε τα ποσοστημόρια με --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', όπως κάνει η εντολή αναφοράς του LIBERO.

Τρία σύνολα προεπιλογών, και ποια από αυτά φτάνουν στον εκπαιδευτή

Το TrainConfig του openpi είναι η αναφορά, το PI05Config του LeRobot είναι αυτό που χρησιμοποιεί το lerobot-train όταν δεν λέτε τίποτα, και η φόρμα εδώ στέλνει ένα τρίτο σύνολο. Η έκπληξη είναι ο ρυθμός μάθησης: και οι δύο προεπιλογές upstream κορυφώνονται στο 2.5e-5, ενώ η δική του διαμόρφωση pi05_libero του openpi και αυτή η πλατφόρμα τον ανεβάζουν στο 5e-5.

Ρύθμισηopenpi TrainConfiglerobot pi05 και lerobot-trainAY-Robots στέλνει
Μέγεθος batch3281
Μέγιστος ρυθμός μάθησης2.5e-5, cosine decayoptimizer_lr 2.5e-55e-5
Βήματα εκπαίδευσης30,000100,00030,000
Διάστημα σημείου ελέγχου1,000 steps20,000 stepsδεν περιλαμβάνεται στη φόρμα
Seed421,000στη φόρμα
Action chunkaction_horizon 50chunk_size 50, n_action_steps 50δεν περιλαμβάνεται στη φόρμα
Τύπος δεδομένων βάρουςbfloat16float32 until you pass --policy.dtypeδεν περιλαμβάνεται στη φόρμα
Συσσώρευση κλίσηςδεν υπάρχει τέτοια ρύθμιση, fsdp_devices αντ' αυτούabsent from every release so far16, και απορρίπτεται

Είναι πιστή η μεταφορά; Η ομάδα του LeRobot ρύθμισε περαιτέρω το βασικό μοντέλο LIBERO για επιπλέον 6k βήματα και συνέκρινε με τους αριθμούς αναφοράς του openpi σε τέσσερις σουίτες: 97.5 τοις εκατό μέσος όρος έναντι 96.85, μπροστά στο Libero 10, πίσω στο Spatial. Η διαδρομή είναι επιλογή εργαλείων, όχι ποιότητας.

Βελτιστοποίηση του Pi0.5 με τα δικά σας δεδομένα
Πλεονεκτήματα
  • Περισσότερες από 10,000 ώρες προ-εκπαίδευσης ρομπότ βρίσκονται πίσω του, οπότε 50 επεισόδια της εργασίας σας μπορεί να είναι αρκετά.
  • Συνεχείς ενέργειες: κανένας tokenizer για ρύθμιση, κανένα όριο διακριτοποίησης στις γωνίες των αρθρώσεών σας.
  • Η μεταφορά του LeRobot σημειώνει 97.5 τοις εκατό στον μέσο όρο LIBERO έναντι του 96.85 του openpi, οπότε το πιο φιλικό CLI δεν κοστίζει τίποτα μετρήσιμο.
  • Διαδρομές αποδοτικές ως προς τις παραμέτρους και στις δύο πλευρές: παραλλαγές JAX LoRA του openpi, ενσωμάτωση PEFT του LeRobot.
Αντισταθμίσεις
  • Η πλήρης βελτιστοποίηση απαιτεί περισσότερα από 70 GB. Το μέγεθος LoRA των 22.5 GB είναι ο αριθμός JAX του openpi. Δεν έχει δημοσιευτεί κανένας για το pi05 υπό PEFT.
  • 485 ms ανά βήμα ενέργειας, το πιο αργό από τα πέντε εδώ: διπλάσιο από το SmolVLA, είκοσι τέσσερις φορές το ACT.
  • Απαιτείται LeRobot v3.0, οπότε ένα σύνολο δεδομένων που καταγράφηκε για μια εκτέλεση GR00T χρειάζεται μετατροπή, και το αντίστροφο.
  • Οι νέες επιλογές προσγειώνονται πρώτα στο main: η μνήμη RTC και MEM κατά τον χρόνο εκπαίδευσης δεν περιλαμβάνονται στην έκδοση 0.6.1, οπότε τα νεότερα έγγραφα μπορεί να σημαίνουν εγκατάσταση από το git.

Η πραγματικότητα των 485 ms, και πού παύει να είναι χρησιμοποιήσιμη

Αυτό καθορίζει το έργο σας, οπότε προηγείται του πίνακα κόστους. Η ανά βήμα ενέργειας που μετρήθηκε εδώ για το Pi0.5 είναι 485 ms. Έναντι των άλλων τεσσάρων:

ΠολιτικήΣυμπερασματολογία ανά βήμα ενέργειαςΠαράμετροιΕπίπεδο GPUΕλάχιστα επεισόδια
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
Η σελίδα σύγκρισης AY-Robots για το GR00T N1.7 έναντι του Pi0.5, με παραμέτρους, επίπεδο GPU, καθυστέρηση και μορφή συνόλου δεδομένων
Ίδιο επίπεδο GPU, ίδιο κατώτατο όριο επεισοδίων, διαφορετική έκδοση συνόλου δεδομένων, τριπλάσιο χάσμα καθυστέρησης.
Η συμπερασματολογία πρέπει να βρίσκεται δίπλα στους σερβοκινητήρες

Ο βρόχος ελέγχου σε αυτά τα πέντε μοντέλα εκτελείται σε 20 έως 485 ms ανά βήμα ενέργειας. Οι διαδρομές μετ' επιστροφής στο δημόσιο διαδίκτυο, επιπλέον των 485 ms, μετατρέπουν μια λειτουργική πολιτική σε διστακτική. Η απομακρυσμένη συμπερασματολογία είναι βιώσιμη για αργές κινήσεις pick-and-place, όχι για γρήγορη αντιδραστική κίνηση. Θα προτιμούσαμε να το πούμε αυτό παρά να πουλήσουμε μια επίδειξη που λειτουργεί μόνο σε LAN. Εάν ο βραχίονας σας σταματάει μεταξύ των τμημάτων, ξεκινήστε από η πολιτική παγώνει στη μέση της κίνησης.

Το upstream έχει μια απάντηση, και το μισό της βρίσκεται ήδη στην έκδοση που μπορείτε να εγκαταστήσετε. Το Real-Time Chunking δημιουργεί το επόμενο τμήμα ενώ ο βραχίονας εκτελεί ακόμα το τρέχον, και στη συνέχεια καθοδηγεί τα επικαλυπτόμενα βήματα του νέου τμήματος να παραμείνουν κοντά στο ήδη εκτελεσμένο μέρος, ώστε ο βραχίονας να μην κολλήσει ή να τρανταχτεί στην ένωση. Η μορφή χρόνου συμπερασματολογίας που κυκλοφόρησε στο changelog 0.4.2 για τα Pi0, Pi0.5 και SmolVLA είναι ένα rollout flag, όχι μια επανεκπαίδευση:

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 είναι πόσα βήματα του προηγούμενου τμήματος πρέπει να συμφωνεί το νέο· τα έγγραφα του RTC δίνουν 8 έως 12 ως το συνηθισμένο εύρος. Το προεπιλεγμένο backend συμπερασματολογίας είναι --inference.type=sync.

Δεν κάνει το μοντέλο ταχύτερο. Κρύβει το κενό: τα 485 ms εξακολουθούν να δαπανώνται, αλλά εκτός της κρίσιμης διαδρομής, οπότε η ουρά δεν αδειάζει μεταξύ των τμημάτων. Η παραλλαγή χρόνου εκπαίδευσης από το arXiv 2512.05964 προχωράει περαιτέρω: το μοντέλο μαθαίνει να εξαρτάται από ένα καθαρό πρόθεμα ενέργειας, οπότε κατά τη συμπερασματολογία η επικάλυψη είναι σκληρά 'ζωγραφισμένη' με χρονοβήματα ροής ανά ενέργεια αντί για καθοδηγούμενη, και η αντίστροφη διέλευση καθοδήγησης εξαφανίζεται. Κατά την εκπαίδευση, δειγματοληπτεί ένα μήκος προθέματος ανά παράδειγμα και υπολογίζει την απώλεια ροής στο υπόλοιπο επίθεμα. Αυτό το flag υπάρχει μόνο στο main, όχι στην έκδοση 0.6.1, και η καθυστέρηση για την οποία εκπαιδεύετε πρέπει να παραμείνει κάτω από το chunk_size.

Δύο τρόποι για να αποκτήσετε ένα checkpoint Pi0.5

Νοικιάζετε ή έχετε στην κατοχή σας μια κάρτα 80 GB, εγκαθιστάτε μία από τις παραπάνω στοίβες, μετατρέπετε το σύνολο δεδομένων σας και επιβλέπετε την εκτέλεση. Διατηρείτε κάθε ρύθμιση: το JAX LoRA του openpi, τους προσαρμογείς PEFT του LeRobot, τις σχετικές ενέργειες, τις προσαρμοσμένες αντιστοιχίσεις πλήκτρων. Διατηρείτε επίσης κάθε αποτυχία.

  • Υλικό: A100 80 GB ή H100, ή μια κάρτα 24 GB στην διαδρομή JAX LoRA του openpi.
  • Ρύθμιση: ένα απόγευμα για την πρώτη εκτέλεση, κυρίως αντιστοίχιση πλήκτρων και ο gated tokenizer.
  • Δεν είναι διαθέσιμο στην φιλοξενούμενη φόρμα: προσαρμογείς PEFT, σχετικές ενέργειες, RTC κατά τον χρόνο εκπαίδευσης, μνήμη 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
Η εντολή που καμία φιλοξενούμενη φόρμα δεν εκτελεί, και το pip δεν μπορεί να εγκαταστήσει: το training-time RTC είναι ένα flag του main branch.

Όταν δεν λειτουργεί

ΣύμπτωμαΠιθανότερη αιτία
Η εκτέλεση απορρίφθηκε πριν ξεκινήσειΣύνολο δεδομένων v2.1 αλλά το Pi0.5 θέλει v3.0, ή το αντίστροφο για το GR00T
ImportError, λείπει το πακέτο datasetslerobot 0.6.x χωρίς το training extra
ValueError σχετικά με τα q01 και q99 στο batch έναΔεν υπάρχουν ποσοστημόρια στο meta/stats.json· υπολογίστε ξανά ή χρησιμοποιήστε MEAN_STD
CUDA εκτός μνήμης στο βήμα 0Πλήρης λεπτομερής ρύθμιση κάτω από 70 GB· δοκιμάστε checkpointing ή train_expert_only
Σφάλμα 401 ή gated repoΗ άδεια του PaliGemma tokenizer δεν έγινε αποδεκτή
Η απώλεια πέφτει, το ρομπότ δεν κάνει τίποταΑσυμφωνία κανονικοποίησης, ή η πολιτική αντιγράφει την κατάσταση
Ο βραχίονας σταματά μεταξύ των τμημάτωνΚαθυστέρηση ανά βήμα συν χρόνος μετάδοσης· η ουρά τμημάτων αδειάζει
Λειτουργεί σε μια ρύθμιση, αποτυγχάνει σε άλληΠολύ λίγα επεισόδια, ή όλα σε μία διαμόρφωση

Τι κοστίζει μία εκτέλεση

Το Pi0.5 βρίσκεται στην ακριβή κατηγορία επειδή απαιτεί κάρτα 80 GB, και οι τιμές spot μεταβάλλονται, οπότε το ποσό είναι ένα εύρος και όχι μία τιμή. Για πολλές εργασίες SO-100, εκπαιδεύστε SmolVLA ή ACT στην κατηγορία 24 GB πρώτα, επιβεβαιώστε ότι η εργασία είναι εκπαιδεύσιμη, και μετά αφιερώστε ώρες A100 σε αυτήν. Εκπαιδεύστε την πρώτη σας πολιτική περιγράφει αυτόν τον φθηνότερο κύκλο, και τιμολόγηση περιλαμβάνει τις τρέχουσες κατηγορίες.

ΚατηγορίαΠολιτικέςΤυπική εκτέλεσηΤιμή ανά ώραΚόστος ανά εκτέλεση
A100 80 GB ή H100Pi0.5, GR00T N1.7, GR00T N1.53 έως 6 ώρες1.20 έως 2.00 USDπερίπου 4 έως 12 USD
RTX 4090 ή οποιαδήποτε κάρτα 24 GBSmolVLA, ACT2 έως 5 ώρες0.30 έως 0.60 USDπερίπου 1 έως 3 USD
Ο πίνακας κόστους των AY-Robots που δείχνει ποια GPU χρειάζεται κάθε πολιτική, τον τυπικό χρόνο εκτέλεσης και την τιμή, και πόσα επεισόδια απαιτούνται πριν μια πολιτική γίνει χρήσιμη
Οι ίδιες δύο βαθμίδες στη σελίδα προϊόντος: Το Pi0.5 νοικιάζει την κάρτα 80 GB, τα SmolVLA και ACT χωράνε σε μια 4090.

Πριν δεσμεύσετε ένα βράδυ: GR00T N1.7 έναντι Pi0.5 και Pi0.5 έναντι SmolVLA παραθέτουν τους ίδιους αριθμούς αντιμέτωπους. Η Αρένα περιέχει 85 μοντέλα VLA με 332 αποτελέσματα συγκριτικής αξιολόγησης, το καθένα συνδεδεμένο με την πηγή του, και πληροφορίες για την οικογένεια βρίσκονται στο την επισκόπηση VLA μας.

Εκπαιδεύστε το Pi0.5 χωρίς να χτίσετε το stack

Επιλέξτε το σύνολο δεδομένων και τους υπερπαραμέτρους σε μια φόρμα. Το backend νοικιάζει μια κάρτα 80 GB στην αγορά spot, εκτελεί τον εκπαιδευτή και γράφει τα σημεία ελέγχου σε αποθήκευση αντικειμένων. Οδηγοί για SO-100, SO-101, Koch v1.1 και LeKiwi.

Ανοίξτε τους οδηγούς εκπαίδευσης
Μπορώ να κάνω fine-tune το Pi0.5 σε μια RTX 4090;

Όχι πλήρες fine-tune: το openpi αναφέρει πάνω από 70 GB για αυτό, οπότε μια A100 80 GB ή μια H100. Το νούμερο LoRA των 22.5 GB ανήκει στη διαδρομή JAX. Η υλοποίηση PyTorch δεν έχει LoRA. Η ενσωμάτωση PEFT του LeRobot υπάρχει, αλλά το τεκμηριωμένο παράδειγμά της είναι το SmolVLA και δεν έχει δημοσιευτεί κανένα νούμερο VRAM για το pi05.

Πόσα επεισόδια χρειάζομαι;

Πενήντα, το ίδιο κατώφλι με τα GR00T και ACT. Μόνο το SmolVLA πηγαίνει χαμηλότερα, στα 30. Το βασικό σημείο ελέγχου φέρει πάνω από 10.000 ώρες προ-εκπαίδευσης, οπότε το fine-tune προσαρμόζεται αντί να μαθαίνει από το μηδέν: 50 καθαρά, ποικίλα επεισόδια είναι καλύτερα από διακόσια από μία μόνο διαμόρφωση.

Ποια είναι η διαφορά μεταξύ --policy.path και --policy.pretrained_path;

--policy.path φορτώνει βάρη και το config.json του σημείου ελέγχου, οπότε οι αποθηκευμένες ρυθμίσεις όπως το n_action_steps κληρονομούνται και το --policy.type πρέπει να παραλειφθεί. Το --policy.pretrained_path φορτώνει μόνο βάρη: τα ονόματα χαρακτηριστικών προέρχονται από το σύνολο δεδομένων σας, οι αποθηκευμένες ρυθμίσεις επαναφέρονται, το --policy.type απαιτείται. Γι' αυτό η εντολή LIBERO περνά ρητά τα n_action_steps=10 και empty_cameras=1. Διαφορετικά, αυτά επανέρχονται στα 50 και 0.

Η ανοιχτή έκδοση μου δίνει το πλήρες Pi0.5 από την εργασία;

Όχι. Και τα δύο υποστηρίζουν μόνο την κεφαλή δράσης flow matching. Το στάδιο προ-εκπαίδευσης διακριτών tokens με τον FAST action tokenizer και η πρόβλεψη υποεργασιών υψηλού επιπέδου δεν κυκλοφόρησαν, και η κάρτα lerobot/pi05_base προσθέτει RL σε αυτή τη λίστα, παρόλο που η εργασία pi0.5 δεν περιγράφει κανένα στάδιο ενισχυτικής μάθησης. Εκπαιδεύετε μια πολιτική χαμηλού επιπέδου υπό την προϋπόθεση μιας συμβολοσειράς γλώσσας που παρέχετε, όχι ένα μοντέλο που αποσυνθέτει μια μεγάλη εργασία από μόνο του.

Έναντι ποιων εκδόσεων έχει γραφτεί αυτός ο οδηγός;

openpi στο main και lerobot 0.6.1, η έκδοση από 3 Αυγούστου 2026, και οι δύο διαβάστηκαν στις 23 Αυγούστου 2026. Τα σύνολα δεδομένων v3.0 έφτασαν με την 0.4.0 τον Οκτώβριο του 2025. Η 0.6.0 έκανε το βασικό πακέτο ελαφρύ, οπότε το lerobot[pi] από μόνο του δεν εγκαθιστά πλέον ένα training stack, και μετέφερε την ανάπτυξη στο lerobot-rollout. Το Training-time RTC είναι μόνο στο main. Ο φιλοξενούμενος εκπαιδευτής εδώ τρέχει την 0.5.1.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started