Ο πίνακας εκπαίδευσης AY-Robots με πέντε σειρές πολιτικών και τέσσερις στήλες ρομποτικών βραχιόνων, κάθε κελί συνδέεται με έναν συγκεκριμένο οδηγό εκπαίδευσης μοντέλου και βραχίονα
ACTSO-100lerobotμάθηση μίμησηςεκπαίδευση πολιτικής

Πώς να εκπαιδεύσετε το ACT στο SO-100 από το μηδέν

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

Εκπαιδεύστε έναν Action Chunking Transformer από το μηδέν σε ένα SO-100 με το lerobot: τη διαμόρφωση act, τα chunk_size και n_action_steps, το χρονοδιάγραμμα 100000 βημάτων, την εξαγωγή συμπερασμάτων σε 20 ms.

Το ACT είναι η εξαίρεση μεταξύ των πολιτικών SO-100. Τα GR00T N1.7 και N1.5 ξεκινούν από nvidia/GR00T-N1.7-3B και nvidia/GR00T-N1.5-3B, το Pi0.5 από lerobot/pi05_base. Το ACT ξεκινά από το μηδέν: δεν υπάρχει βασικό σημείο ελέγχου (checkpoint), επειδή δεν είναι ένα θεμελιώδες μοντέλο. Είναι ένας μετασχηματιστής περίπου 80 εκατομμυρίων παραμέτρων που εκπαιδεύετε από την αρχή σε μία εργασία, στον βραχίονά σας, υπό τον φωτισμό σας.

Αυτός είναι επίσης ο λόγος που εκτελεί ένα βήμα ελέγχου σε 20 ms, ενώ ένα VLA 3 δισεκατομμυρίων παραμέτρων χρειάζεται 152 έως 485 ms, και κοστίζει 1 έως 3 USD ανά εκτέλεση αντί για 4 έως 12. Αυτός ο οδηγός ακολουθεί τη χειροκίνητη διαδρομή με lerobot σε ένα SO-100: καταγραφή, η διαμόρφωση act config, τι ελέγχουν τα chunk_size και n_action_steps control, το πρόγραμμα 100000 βημάτων, την εκτέλεση (rollout). Στη συνέχεια, την ίδια εργασία στα AY-Robots, συμπεριλαμβανομένων των σημείων όπου η πλατφόρμα δεν βοηθά.

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

  • Το ACT εκπαιδεύεται από την αρχή: χωρίς βασικό μοντέλο, χωρίς προεκπαίδευση, χωρίς γλωσσική είσοδο. Ένα σημείο ελέγχου (checkpoint), μία εργασία.
  • Η δημοσίευση: περίπου 80 M παράμετροι, περίπου 5 ώρες σε μια RTX 2080 Ti 11 GB, 0.01 s συμπερασματολογία (inference).
  • Προεπιλογές lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000.
  • Στα AY-Robots: 20 ms ανά βήμα, το ταχύτερο από τα πέντε. Ελάχιστα 50 επεισόδια, LeRobot v3.0, μια κάρτα 24 GB, 1 έως 3 USD ανά εκτέλεση.
  • Κερδίζει σε μια εργασία που έχει δει, και χάνει τη στιγμή που θέλετε γλωσσική προϋπόθεση (language conditioning).
Ποιες εκδόσεις περιγράφει αυτό

Ελέγχθηκε στις 23 Αυγούστου 2026 έναντι του lerobot 0.6.x: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 August 2026. Ένα σεμινάριο που ξεκινά με python lerobot/scripts/train.py προηγείται των σημείων εισόδου κονσόλας lerobot-train, lerobot-record and lerobot-rollout.

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

Το Action Chunking with Transformers προέρχεται από την εργασία ALOHA, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, από τους Zhao, Kumar, Levine και Finn, arXiv, 23 Απριλίου 2023. Η διάταξη καταγράφει στα 50 Hz με τέσσερις κάμερες web που μεταδίδουν 480x640 στα 30 fps: δύο στους αρπάγες, μία πάνω, μία μπροστά. Η περίληψη αναφέρει έξι δεξιότητες με ποσοστό επιτυχίας 80 έως 90 τοις εκατό, μεταξύ των οποίων το άνοιγμα ενός ημιδιαφανούς δοχείου καρυκευμάτων και η τοποθέτηση μιας μπαταρίας, από 10 λεπτά επιδείξεων.

Το κυρίως κείμενο είναι πιο χρήσιμο κατά τον σχεδιασμό μιας συνεδρίας καταγραφής: 50 επιδείξεις ανά εργασία, εκτός από το Thread Velcro στις 100, που είναι 10 έως 20 λεπτά δεδομένων και 30 έως 60 λεπτά πραγματικού χρόνου μόλις μετρηθούν οι επαναφορές. Η επιτυχία δεν είναι ομοιόμορφη: το Thread Velcro καταλήγει στο 20 τοις εκατό, το Put On Shoe στο 92, το Cup Open στο 84, το Prep Tape στο 64.

ΥπερπαράμετροςΕργασία ALOHA, Πίνακας IIIlerobot στο main
ρυθμός μάθησης1e-5optimizer_lr = 1e-5
μέγεθος batch8batch_size = 8, in TrainPipelineConfig not ACTConfig
επίπεδα κωδικοποιητή / αποκωδικοποιητή4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
μέγεθος κομματιού k100chunk_size = 100
λανθάνουσα διάσταση του zαπούσα· Το Σχ. 11 δείχνει μια προβολή 32 σε 512latent_dim = 32
χρονική ομαδοποίησηαπούσα· --temporal_agg στον κώδικα αναφοράςtemporal_ensemble_coeff = None
Η σειρά των επιπέδων αποκωδικοποιητή δεν είναι τυπογραφικό λάθος

Η δημοσίευση αναφέρει 7 επίπεδα αποκωδικοποιητή, το lerobot παραδίδει 1, σκόπιμα. Το σχόλιο στο configuration_act.py αναφέρει ότι η αρχική υλοποίηση έχει ένα σφάλμα που σημαίνει ότι χρησιμοποιείται μόνο το πρώτο επίπεδο, επικαλούμενο το ζήτημα 25 στο tonyzhaozh/act: η κεφαλή δράσης διαβάζει το hs[0], οπότε και τα επτά επίπεδα εκτελούνται, αλλά μόνο η πρώτη έξοδος φτάνει στην πρόβλεψη. Αυτό το ζήτημα είναι ανοιχτό και αναπάντητο από τις 23 Απριλίου 2024. Το lerobot ταιριάζει με τη συμπεριφορά που παρήγαγε τα δημοσιευμένα αποτελέσματα, όχι με τον τυπωμένο αριθμό. Αυξήστε το --policy.n_decoder_layers και θα εκπαιδεύσετε ένα μοντέλο που η δημοσίευση δεν αξιολόγησε ποτέ.

Η ομαδοποίηση ενεργειών είναι η όλη ιδέα

Η συνηθισμένη κλωνοποίηση συμπεριφοράς αντιστοιχίζει μία παρατήρηση σε μία ενέργεια, και τα σφάλματα συσσωρεύονται: μια απόκλιση θέτει τον βραχίονα εκτός κατανομής, παράγοντας μια χειρότερη ενέργεια, και τριάντα βήματα αργότερα η λαβίδα δεν βρίσκεται πουθενά κοντά στο αντικείμενο. Ομαδοποίηση ενεργειών προβλέπει k ενέργειες ταυτόχρονα και τις εκτελεί, μειώνοντας τον αποτελεσματικό ορίζοντα κατά έναν παράγοντα k. Επίσης, χειρίζεται μια ενόχληση ειδική στα ανθρώπινα δεδομένα: οι τηλεχειριστές κάνουν παύσεις, και μια μονοβήματη Μαρκοβιανή πολιτική δεν μπορεί να μοντελοποιήσει μια παύση που εξαρτάται από το τι προηγήθηκε.

Η δημοσίευση διερευνά το k αντί να το επιβεβαιώνει. Με απενεργοποιημένο το χρονικό ensembling, κατά μέσο όρο σε τέσσερις ρυθμίσεις, η επιτυχία αυξάνεται από 1 τοις εκατό στο k = 1 σε 44 τοις εκατό στο k = 100, και στη συνέχεια μειώνεται στα 200 και 400 καθώς η πολιτική πλησιάζει τον έλεγχο ανοιχτού βρόχου. Αυτή η καμπύλη είναι ο λόγος που η προεπιλογή είναι 100.

  • chunk_size: πόσες μελλοντικές ενέργειες προβλέπει ο αποκωδικοποιητής ανά forward pass. Προεπιλογή 100.
  • n_action_steps: πόσες από αυτές εκτελείτε πριν κάνετε ξανά ερώτημα. Προεπιλογή 100, οπότε το lerobot εκτελεί ολόκληρο το chunk σε ανοιχτό βρόχο.
  • Το lerobot επικυρώνει ότι n_action_steps <= chunk_size και εγείρει ένα ValueError αν το βάλετε ανάποδα.

Αυτό που έχει σημασία λειτουργικά είναι το chunk_size διαιρούμενο με το ρυθμό καρέ. Στα 30 fps που χρησιμοποιούν τα παραδείγματα SO-100 του lerobot, ένα chunk 100 δεσμεύει περίπου 3.3 δευτερόλεπτα από μία παρατήρηση. Αν η εργασία χρειάζεται διόρθωση μέσα σε αυτό το παράθυρο, μειώστε το n_action_steps, όχι το chunk_size: διατηρείτε τη μακρά πρόβλεψη και παρατηρείτε ξανά πιο συχνά.

bash
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --policy.chunk_size=100 \
  --policy.n_action_steps=25 \
  --policy.device=cuda
Συντόμευση του εκτελούμενου μέρους του chunk χωρίς συντόμευση της πρόβλεψης.
Η παγίδα του χρονικού ensembling

Ορίστε το --policy.temporal_ensemble_coeff και το lerobot απαιτεί n_action_steps = 1, εγείροντας NotImplementedError διαφορετικά. Το Ensembling κάνει ερωτήματα στην πολιτική σε κάθε χρονικό βήμα και αναμειγνύει τις επικαλυπτόμενες προβλέψεις για αυτό το χρονικό βήμα με βάρη w_i = exp(-m * i), με το παλαιότερο να παίρνει το w_0. Η εργασία το τοποθετεί στο 3.3 τοις εκατό για το ACT: πραγματικό αλλά μέτριο, και πολλαπλασιάζει τον αριθμό των συμπερασμάτων επί το μήκος του chunk. Προσιτό στα 20 ms ανά βήμα, όχι στα 485 ms. Δείτε καθυστέρηση συμπερασμάτων.

Όταν το ACT ξεπερνά ένα θεμελιώδες μοντέλο

Οι πέντε εκπαιδεύσιμες πολιτικές δίπλα-δίπλα, με τους αριθμούς που μετρά και χρησιμοποιεί η AY-Robots για να καθορίσει το μέγεθος της GPU που νοικιάζει.

ΠολιτικήΟικογένειαΠαράμετροιΑνά βήμαΕπίπεδο GPUΕλάχιστα επεισόδιαΣύνολο δεδομένων
ACTΜετασχηματιστής τεμαχισμού, από το μηδέν~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAΣυμπαγές VLA~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7Βάση VLA, κεφαλή διάχυσης~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5Βάση VLA, προκάτοχος~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5VLA αντιστοίχισης ροής, βλέπε αντιστοίχιση ροής~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
Η σελίδα πολιτικών της AY-Robots που δείχνει έναν πίνακα σύγκρισης των ACT, SmolVLA, GR00T N1.5, GR00T N1.7 και Pi0.5 με αριθμούς παραμέτρων, απαιτήσεις GPU, καθυστέρηση συμπερασματολογίας και ελάχιστους αριθμούς επεισοδίων
Ο πίνακας /policies: Το ACT έχει τον μικρότερο αριθμό παραμέτρων και τον συντομότερο χρόνο βήματος.
Εκπαίδευση του ACT από το μηδέν
Πλεονεκτήματα
  • 20 ms ανά βήμα δράσης, το ταχύτερο από τα πέντε, σε κάρτα 24 GB και όχι σε A100.
  • 1 έως 3 USD ανά εκτέλεση έναντι 4 έως 12 για την κατηγορία 3 B.
  • Ακριβές σε εργασίες με πλούσια επαφή που έχει δει: 88 και 96 τοις εκατό στα Slide Ziploc και Slot Battery, όπου οι προηγούμενες μέθοδοι δεν πέρασαν ποτέ το πρώτο στάδιο.
Αντισταθμίσεις
  • Χωρίς γλωσσική προσαρμογή: η συμβολοσειρά εργασίας αγνοείται, οπότε ένα σημείο ελέγχου αντιστοιχεί σε μία εργασία.
  • Χωρίς σημασιολογικές προηγούμενες γνώσεις: όλα όσα γνωρίζει προήλθαν από τα 50 επεισόδιά σας.
  • Περιορισμένη γενίκευση: μετακινήστε μια κάμερα και χρειάζεται επανεκπαίδευση.
  • Αποτυγχάνει αθόρυβα: η απώλεια μειώνεται, ο βραχίονας δεν κάνει τίποτα, τα αρχεία καταγραφής δεν λένε τίποτα.
  • Το πλεονέκτημα ταχύτητας βοηθά μόνο αν η εξαγωγή συμπερασμάτων βρίσκεται δίπλα στους σερβοκινητήρες.

Επιλέξτε ACT όταν η εργασία και η σκηνή είναι σταθερές και η κίνηση πρέπει να είναι γρήγορη και ακριβής. Επιλέξτε ένα , όταν ένα σημείο ελέγχου πρέπει να καλύπτει πολλές οδηγίες. Δύο σελίδες εξετάζουν την απόφαση αντιμέτωπες: και . Για δημοσιευμένα benchmarks, συνδέει κάθε αριθμό με την πηγή του.

Τι χρειάζεστε πριν ξεκινήσετε

Ένας βραχίονας ακόλουθος, ένας βραχίονας οδηγός για , τουλάχιστον μία κάμερα, μια GPU 24 GB. Το ACT διαβάζει μόνο εικόνες και θέσεις αρθρώσεων. Δύο κάμερες είναι το ιδανικό: μια σταθερή μπροστινή όψη για το πού βρίσκονται τα πράγματα, μια κάμερα καρπού για το τι πρόκειται να αγγίξει ο , όπως στο ALOHA.

ΒραχίοναςΣέρβοΤάσηΚόστος εξαρτημάτωνΚατάσταση
SO-100Feetech STS32157.4 V~110 to 150 EURΠλήρης υποστήριξη, βραχίονας αναφοράς
SO-101Feetech STS32157.4 V~130 to 170 EURΠλήρης υποστήριξη
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails~250 to 350 EURΣυμβατό
LeKiwiFeetech STS3215 (arm)7.4 V arm, 12 V base~400 to 500 EURΣυμβατό
7.4 V, όχι 12 V

Τα SO-100 και SO-101 χρησιμοποιούν σέρβο Feetech STS3215 σε ράγα 7.4 V. Η τροφοδοσία τους με 12 V τα καταστρέφει, αρκετά αθόρυβα ώστε οι άνθρωποι να κατηγορούν πρώτα το λογισμικό, και ένα τροφοδοτικό Koch 12 V ταιριάζει φυσικά σε μια πλακέτα SO-100. Ελέγξτε την ετικέτα. Συμπτώματα: το σέρβο δεν ανταποκρίνεται, ο βραχίονας τραντάζεται και μετά χαλαρώνει. Επίσης SO-100 έναντι SO-101.

Από τον γυμνό βραχίονα στο καταγεγραμμένο σύνολο δεδομένων

Η παρακάτω ροή είναι lerobot 0.6.x. Παραλείψτε την αν έχετε έναν βαθμονομημένο βραχίονα και ένα σύνολο δεδομένων. Διαφορετικά, ο οδηγός έναρξης SO-100, καλύπτει τη συναρμολόγηση, η αναλυτική περιγραφή καταγραφής καλύπτει την καταγραφή και τα έγγραφα συνόλου δεδομένων τη μορφή.

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

    Η καταγραφή χρειάζεται core_scripts, η εκπαίδευση training, οι σερβοκινητήρες Feetech feetech. Python 3.12+.

    bash
    conda create -y -n lerobot python=3.12
    conda activate lerobot
    conda install ffmpeg -c conda-forge
    
    pip install 'lerobot[core_scripts,training,feetech]'
    lerobot-info
  2. 2
    Βρείτε τη θύρα USB κάθε μπράτσου

    Εκτελέστε το με και τα δύο μπράτσα συνδεδεμένα, αποσυνδέοντας το ένα όταν σας ζητηθεί. Σε Linux ίσως χρειαστεί να ανοίξετε τα δικαιώματα του κόμβου.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Ορίστε τα αναγνωριστικά κινητήρα και το baudrate

    Στο SO-100 αυτό συμβαίνει πριν τη συναρμολόγηση: σε αντίθεση με το SO-101, οι σύνδεσμοι είναι απρόσιτοι μόλις κατασκευαστεί. Το script διασχίζει το bus έναν κινητήρα τη φορά από τον αρπάγη, γράφοντας αναγνωριστικά στην EEPROM.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    Βαθμονόμηση και των δύο μπράτσων

    Ρυθμίστε κάθε άρθρωση στη μέση του εύρους της, πατήστε Enter και, στη συνέχεια, σαρώστε την πλήρη εμβέλειά της. Η βαθμονόμηση επιτρέπει σε μια πολιτική που έχει εκπαιδευτεί σε ένα μπράτσο να λειτουργεί σε ένα άλλο. Επαναχρησιμοποιήστε το ίδιο id.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader
  5. 5
    Τηλεχειρισμός μία φορά με τις κάμερες ενεργοποιημένες

    Ο εμπειρικός κανόνας του lerobot: θα πρέπει να μπορείτε να εκτελέσετε την εργασία κοιτάζοντας μόνο τις εικόνες της κάμερας. Αν δεν μπορείτε, ούτε το ACT μπορεί. Αυτό εντοπίζει περισσότερα κακά σύνολα δεδομένων από ό,τι ο μεταγενέστερος εντοπισμός σφαλμάτων.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --display_data=true
  6. 6
    Καταγράψτε 50 επεισόδια

    Το 50 είναι το ελάχιστο των AY-Robots και αυτό που χρησιμοποιούσε το ALOHA ανά εργασία. Το lerobot συμβουλεύει 10 ανά θέση αντικειμένου, σταθερές κάμερες, σταθερή λαβή. Το n τερματίζει ένα επεισόδιο, το r επανεγγράφει, το q σταματά και κωδικοποιεί.

    bash
    HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')
    
    lerobot-record \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --dataset.repo_id=${HF_USER}/so100_cube \
        --dataset.num_episodes=50 \
        --dataset.single_task="Grab the black cube and put it in the bin" \
        --display_data=true
Η σελίδα του εκπαιδευτικού υλικού καταγραφής των AY-Robots που εξηγεί πώς να καταγράψετε ένα σύνολο δεδομένων μορφής LeRobot από μια συνεδρία τηλεχειρισμού
Το εκπαιδευτικό υλικό καταγραφής. Ο πελάτης επιφάνειας εργασίας γράφει την ίδια διάταξη με το lerobot-record.
Η παγίδα που τρώει μια μέρα: ένα ασυνεπές σύνολο δεδομένων

Το ACT δεν έχει προηγούμενες γνώσεις για να βασιστεί, οπότε κάθε ασυνέπεια γίνεται μόνιμη. Οι τρεις πιο δαπανηρές: μια κάμερα που μετακινήθηκε μεταξύ του επεισοδίου 20 και 21, φως που άλλαξε επειδή καταγράψατε το μισό σύνολο το απόγευμα, μια λαβή που έγινε με δύο τρόπους. Κάθε μία δίνει μια τέλεια καμπύλη απώλειας και ένα μπράτσο που πηγαίνει σε λάθος μέρος. Δείτε η απώλεια πέφτει, η πολιτική δεν κάνει τίποτα, η πολιτική λειτουργεί μόνο σε μία ρύθμιση και συλλογή δεδομένων εκπαίδευσης υψηλής ποιότητας.

Πριν την εκπαίδευση, αναπαράγετε τουλάχιστον πέντε επεισόδια. αποθηκεύει ροές κάμερας, καταστάσεις αρθρώσεων και ενέργειες ανά , και η αναπαραγωγή ωθεί αυτές τις ενέργειες πίσω στο μπράτσο. Εάν η αναπαραγωγή δεν εκτελεί την εργασία, τα δεδομένα δεν την περιέχουν και η εκπαίδευση δεν θα την επινοήσει.

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
Αναπαραγωγή επεισοδίου 0. Εάν αποτύχει, σταματήστε και επαναλάβετε την εγγραφή.

Εκπαίδευση της πολιτικής ACT

Αυτή είναι η πλήρης εντολή. Όλα τα ειδικά για το ACT είναι ήδη προεπιλεγμένα, γι' αυτό και η σελίδα ACT του lerobot λέει να ξεκινήσετε με αυτά.

bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_cube \
  --job_name=act_so100_cube \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_so100_cube
Η εντολή εκπαίδευσης από την τεκμηρίωση του lerobot 0.6.x, σε ένα σύνολο δεδομένων SO-100.

--policy.type=act φορτώνει το ACTConfig, το οποίο προσαρμόζεται στον αριθμό των κινητήρων και των καμερών που κατέγραψε το σύνολο δεδομένων σας, οπότε δεν δηλώνετε ποτέ το σχήμα παρατήρησης. --wandb.enable=true είναι προαιρετικό και αξίζει τον κόπο: η καμπύλη απώλειας είναι το μόνο φθηνό σήμα σε μια εκτέλεση 100000 βημάτων. Το χρονοδιάγραμμα προέρχεται από τη ρύθμιση εκπαίδευσης του lerobot, όχι από το ACTConfig: 100000 βήματα, batch 8, seed 1000, ένα σημείο ελέγχου κάθε 20000 βήματα, καταγραφή κάθε 200.

Μια πλήρης εκτέλεση αφήνει πέντε καταλόγους σημείων ελέγχου, από 020000 έως 100000, συν έναν τελευταίο συμβολικό σύνδεσμο. Κρατήστε τα όλα: η καλύτερη πολιτική συχνά δεν είναι η τελευταία.

Ρύθμισηlerobot defaultAY-Robots ACT formΣχόλιο
μέγεθος batch88Μειώστε το πρώτα αν φτάσετε στα όρια VRAM.
ρυθμός εκμάθησης1e-51e-5Ίδιο με την εργασία ALOHA.
μέγιστα βήματα100000100000Περίπου εκεί που ένα σύνολο 50 επεισοδίων σταματά να βελτιώνεται.
συσσώρευση κλίσης11, does not applyΑλλάξτε το μέγεθος batch αντ' αυτού.
seed1000exposedΤο σημείο εισόδου tyro του GR00T δεν έχει seed. Οι εκτελέσεις ACT είναι οι αναπαραγώγιμες.
chunk_size / n_action_steps100 / 100100 / 100, editableΟρίζοντας πρόβλεψης και εκτέλεσης. Μειώστε το δεύτερο, όχι το πρώτο.
συχνότητα σημείων ελέγχου20000not exposedΤο saveSteps είναι ένα ρυθμιστικό του GR00T εδώ.
Η έλλειψη μνήμης είναι πρόβλημα μεγέθους batch, όχι πρόβλημα κάρτας

Το ACT με μέγεθος batch 8 και δύο κάμερες 640x480 χωράει άνετα σε 24 GB. Σταματά να χωράει όταν οι χρήστες αυξάνουν το μέγεθος batch για ταχύτητα, ή του δίνουν τα καρέ 1920x1080 που δείχνει ένα παράδειγμα καταγραφής lerobot. Δύο backbones ResNet-18 στα 1080p έχουν ένα πολύ διαφορετικό προφίλ μνήμης. Μειώστε το --batch_size στο 4 πριν νοικιάσετε μια μεγαλύτερη κάρτα. Δείτε έλλειψη μνήμης στην εκπαίδευση.

Διάρκεια: περίπου 5 ώρες σε μια RTX 2080 Ti 11 GB σύμφωνα με την εργασία, μερικές ώρες για 100k βήματα ανά σελίδα ACT του lerobot, 2 έως 5 ώρες στην κατηγορία 24 GB των AY-Robots. Μην το συντομεύσετε. Το README του αποθετηρίου αναφοράς αναφέρει ότι μια πολιτική με σπασμωδική κίνηση ή παύσεις συνήθως χρειάζεται απλώς περισσότερη εκπαίδευση, επειδή η επιτυχία και η ομαλότητα συνεχίζουν να βελτιώνονται μετά την πλατό απώλειας: για δεδομένα πραγματικού κόσμου απαιτούνται τουλάχιστον 5000 εποχές, ή 3 έως 4 φορές το μήκος ξανά μετά το πλατό.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Συνέχιση μιας διακοπείσας εκτέλεσης από το τελευταίο της σημείο ελέγχου.

Εκτέλεση της εκπαιδευμένης πολιτικής στον βραχίονα

Η ανάπτυξη χρησιμοποιεί lerobot-rollout. Τα κλειδιά κάμερας πρέπει να ταιριάζουν με τα καταγεγραμμένα: μια πολιτική εκπαιδευμένη σε front και wrist δεν θα δεχτεί cam0 και cam1, και rename_map δεν βοηθά, καθώς χρειάζεται ένα προ-εκπαιδευμένο σημείο ελέγχου. Η συμβολοσειρά εργασίας μπορεί να παραλειφθεί· το παράδειγμα του lerobot την χαρακτηρίζει ως παραλείψιμη για το ACT.

bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_so100_cube \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
  --display_data=true \
  --duration=60
Αυτόνομη εκτέλεση χωρίς καταγραφή. Χρησιμοποιήστε το --strategy.type=sentry για να καταγράψετε τα επεισόδια αξιολόγησης.
Αυτή η εντολή μετονομάστηκε πρόσφατα, οπότε παλιά tutorials διαφωνούν

Η αξιολόγηση εκτελούνταν μέσω του lerobot-record --policy.path=.... Στην έκδοση 0.6.x είναι το lerobot-rollout με έναν επιλογέα --strategy.type: base, sentry (καταγραφή με αυτόματη μεταφόρτωση), highlight (κυκλικός buffer αποθηκευμένος με πάτημα πλήκτρου), dagger (άνθρωπος στον βρόχο) και episodic. Από τις 23 Αυγούστου 2026, η σελίδα τεκμηρίωσης του ACT εξακολουθεί να αναφέρει "χρησιμοποιώντας την εντολή lerobot-record" ακριβώς πάνω από ένα μπλοκ που εκτελεί το lerobot-rollout. Ακολουθήστε την εντολή, όχι την πρόταση.

Για να καρφιτσώσετε ένα σημείο ελέγχου αντί για το τελικό μοντέλο, προσθέστε --policy.pretrained_revision. Αυτό απαιτεί η εκτέλεση να έχει ξεκινήσει με --save_checkpoint_to_hub=true, απενεργοποιημένο από προεπιλογή: χωρίς αυτό το lerobot ανεβάζει το τελικό μοντέλο και τίποτα άλλο. Με αυτό, κάθε σημείο ελέγχου επισημαίνεται με το βήμα του με μηδενική συμπλήρωση, οπότε --policy.pretrained_revision=060000 ανακτά αυτό του βήματος 60000. Η σύγκριση του με το 100000 στον πραγματικό βραχίονα είναι το φθηνότερο διαθέσιμο πείραμα.

Δύο διαδρομές προς το ίδιο σημείο ελέγχου

Όλα τα παραπάνω είναι η χειροκίνητη διαδρομή και λειτουργεί. Η διαδρομή μέσω πλατφόρμας ανταλλάσσει τον έλεγχο με την αποφυγή κατοχής GPU ή περιβάλλοντος Python.

  1. Εγκαταστήστε το lerobot 0.6.x με core_scripts, training, feetech, ffmpeg.
  2. Βρείτε θύρες, ορίστε αναγνωριστικά κινητήρων, βαθμονομήστε και τους δύο βραχίονες, καταγράψτε 50 επεισόδια.
  3. Αναπαράγετε μερικά επεισόδια για να επιβεβαιώσετε ότι τα δεδομένα περιέχουν την εργασία.
  4. Ενοικιάστε ή αποκτήστε μια GPU 24 GB, αντιστοιχίστε CUDA και PyTorch, εκτελέστε lerobot-train --policy.type=act.
  5. Περιμένετε μερικές ώρες, και μετά εκτελέστε lerobot-rollout στο μηχάνημα στον βραχίονα.
bash
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
  --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
  --dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
  --dataset.single_task="Grab the black cube"

lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
  --output_dir=outputs/train/act_so100_cube --policy.device=cuda
Τι σας προσφέρει αυτή η διαδρομή

Πλήρης έλεγχος: επεξεργαστείτε το configuration_act.py, προσθέστε μια κάμερα, κάντε fork τον εκπαιδευτή. Για έρευνα και όχι για την παράδοση μιας εργασίας, μια πλατφόρμα αποτελεί περισπασμό.

Ο πίνακας εκπαίδευσης του AY-Robots με πέντε σειρές πολιτικών και τέσσερις στήλες ρομποτικών βραχιόνων, όπου κάθε κελί συνδέεται με τον συγκεκριμένο οδηγό εκπαίδευσης για αυτόν τον συνδυασμό μοντέλου και βραχίονα.
Ο πίνακας στο /train. Η σειρά ACT έναντι της στήλης SO-100 είναι ο οδηγός αυτού του άρθρου.

Τι πάει πραγματικά στραβά

Σχεδόν κανένας πόνος δεν βρίσκεται στην εντολή εκπαίδευσης. Βρίσκεται στα πράγματα γύρω της, ταξινομημένα με βάση το πόσο συχνά εμφανίζονται για πρώτη φορά.

ΣύμπτωμαΣυνήθης αιτίαΣελίδα
lerobot-find-port δεν εμφανίζει τίποταΆδειες οδηγού, καλωδίου ή κόμβουο βραχίονας δεν ανιχνεύτηκε
Η κάμερα λείπει κατά την ώρα καταγραφήςΟ δείκτης άλλαξε μετά την επανεκκίνηση, ή δύο κάμερες σε έναν ελεγκτή USBη κάμερα δεν ανιχνεύτηκε
Η εκπαίδευση απορρίπτει το σύνολο δεδομένωνΤο ACT απαιτεί v3.0, το GR00T χρειάζεται v2.1το σύνολο δεδομένων απορρίφθηκε ως v3
CUDA εκτός μνήμηςΤο μέγεθος δέσμης αυξήθηκε, ή καρέ 1080p αντί για 480pεκτός μνήμης στην εκπαίδευση
Η απώλεια φαίνεται εξαιρετική, ο βραχίονας δεν κάνει τίποταΤα δεδομένα στερούνται την εργασία, ή μια κάμερα μετακινήθηκεη απώλεια πέφτει, η πολιτική δεν κάνει τίποτα
Απότομη κίνηση ή παύση στη μέση του επεισοδίουΥποεκπαιδευμένο, ένα μπλοκάρισμα ορίου τμήματος, ή μια κλήση συμπερασμάτων με χρονικό όριοη πολιτική παγώνει στη μέση της κίνησης

Δύο σειρές αξίζουν έμφαση. Το ACT εκπαιδεύεται στο LeRobot v3.0 ενώ ο φορτωτής του GR00T κολλάει σε αυτό και χρειάζεται v2.1, οπότε ένα σύνολο δεδομένων που εκπαιδεύει το ACT μπορεί να αποτύχει σε μια εκτέλεση GR00T. Και η τελευταία σειρά έχει δύο διορθώσεις: οι συγγραφείς του ACT αντιμετωπίζουν την απότομη κίνηση με περισσότερη εκπαίδευση, ενώ με n_action_steps στο 100 ένα πραγματικό μπλοκάρισμα προσγειώνεται σε ένα όριο τμήματος, μια ορατή παύση κάθε 3.3 δευτερόλεπτα στα 30 fps. Δύο ακόμη να γνωρίζετε: μια μόνο νεκρή άρθρωση είναι συνήθως ένα αναγνωριστικό σερβομηχανισμού που δεν γράφτηκε ποτέ, και ένας αρπάγας που πλησιάζει αλλά δεν κλείνει ποτέ σημαίνει πολύ μικρό εύρος αρπάγα στις επιδείξεις. Πλήρες ευρετήριο: οι σελίδες τρόπων αστοχίας.

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

ΒαθμίδαΜοντέλαΧρόνος εκτέλεσηςΤιμή ανά ώραΚόστος ανά εκτέλεση
RTX 4090 / 24 GBACT, SmolVLA2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD

Αυτό είναι το επιχείρημα για να ξεκινήσετε με το ACT ακόμα κι αν θέλετε ένα VLA αργότερα. Μια αποτυχημένη εκτέλεση ACT κοστίζει όσο ένας καφές και σας λέει μέσα σε λίγες ώρες αν το σύνολο δεδομένων σας περιέχει την εργασία. Μια αποτυχημένη εκτέλεση GR00T κοστίζει τέσσερις φορές περισσότερο για το ίδιο μάθημα. Η μετάβαση σε GR00T N1.7 ή SmolVLA αργότερα είναι μια αλλαγή μορφής, όχι μια ανακατασκευή. Ιστορικό: μοντέλα όρασης-γλώσσας-δράσης, ο πλήρης οδηγός SO-100, εκπαιδεύστε την πρώτη σας πολιτική και μάθηση μέσω μίμησης. Χωρίς ρομποτικό βραχίονα; Η ζωντανή σελίδα μεταδίδει ένα πραγματικό SO-100 για οδήγηση χωρίς εγγραφή.

Εκπαιδεύστε το ACT στο SO-100 σας

Ο οδηγός για αυτόν τον ακριβή συνδυασμό: προεπιλογές, βαθμίδα GPU και τι κοστίζει μια εκτέλεση. Επιλέξτε το σύνολο δεδομένων, το backend νοικιάζει την κάρτα και γράφει τα σημεία ελέγχου.

Ανοίξτε τον οδηγό εκπαίδευσης
Υπάρχει ένα προεκπαιδευμένο μοντέλο ACT που μπορώ να ρυθμίσω αντί αυτού;

Όχι. Το ACT δεν έχει βασικό μοντέλο· υπάρχει μόνο αφού το εκπαιδεύσετε. Αυτό δεν είναι κενό στα εργαλεία, είναι αυτό που είναι το ACT: η δημοσίευση εκπαιδεύει μια πολιτική από το μηδέν ανά εργασία. Για ένα σημείο ελέγχου προμηθευτή, χρησιμοποιήστε το GR00T N1.7 ή το Pi0.5.

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

50: όσα κατέγραψε το ALOHA ανά εργασία (100 για το Thread Velcro, το πιο δύσκολο) και το ελάχιστο των AY-Robots. Το lerobot συμβουλεύει περίπου 10 ανά θέση αντικειμένου, με σταθερές κάμερες, και σταθερή λαβή. Πενήντα καθαρά επεισόδια είναι καλύτερα από εκατό όπου η κάμερα μετακινήθηκε.

Πρέπει να αλλάξω το chunk_size από 100;

Συνήθως όχι. Η αφαίρεση ανεβαίνει από 1 τοις εκατό στο k = 1 σε 44 τοις εκατό στο k = 100 και μειώνεται μετά, οπότε το 100 βρίσκεται κοντά στην κορυφή. Εάν ο βραχίονας δεσμεύεται για πολύ καιρό, μειώστε το n_action_steps αντ' αυτού: στα 30 fps, 25 επανα-ερωτήματα κάθε 0.8 δευτερόλεπτα.

Πόσο διαρκεί μια εκτέλεση εκπαίδευσης και μπορώ να τη σταματήσω νωρίτερα;

Δύο έως πέντε ώρες σε κάρτα 24 GB για 100000 βήματα. Τα σημεία ελέγχου δημιουργούνται κάθε 20000 βήματα και το --resume=true συνεχίζει μια εκτέλεση, οπότε η πρόωρη διακοπή είναι ασφαλής. Απλώς όχι στην πρώτη επίπεδη διαδρομή: η ομαλότητα βελτιώνεται αφού η απώλεια σταθεροποιηθεί.

Η απώλεια μειώθηκε και ο βραχίονας εξακολουθεί να αποτυγχάνει. Τι γίνεται τώρα;

Σχεδόν πάντα το σύνολο δεδομένων. Αναπαράγετε τα καταγεγραμμένα επεισόδια στον βραχίονα: εάν η αναπαραγωγή δεν εκτελεί την εργασία, τα δεδομένα δεν την περιέχουν. Στη συνέχεια, ελέγξτε αν κάτι μετακινήθηκε, ειδικά μια κάμερα. Το ACT δεν έχει προηγούμενες γνώσεις, οπότε ένα σπρώξιμο στο επεισόδιο 21 είναι μόνιμο.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started