Η σελίδα του μοντέλου SmolVLA στο AY-Robots που δείχνει τον αριθμό παραμέτρων, το επίπεδο GPU, την καθυστέρηση συμπερασματολογίας ανά βήμα ενέργειας και τον ελάχιστο αριθμό επεισοδίων
SmolVLALeRobotΕκπαίδευση VLAΒελτιστοποίησηSO-100

Πώς να εκπαιδεύσετε το SmolVLA σε μια GPU 24 GB (lerobot 0.6.1)

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

Το SmolVLA είναι ένα VLA 450 εκατομμυρίων παραμέτρων που βελτιστοποιείται σε μία μόνο κάρτα 24 GB. Πραγματικές εντολές lerobot 0.6.1, οι πραγματικές προεπιλογές, οι παγίδες που κοστίζουν μια μέρα και τι κοστίζει μια εκτέλεση.

Το SmolVLA σε μία οθόνη

  • 450 M παράμετροι, περίπου 100 M από αυτές ένας ειδικός δράσης αντιστοίχισης ροής. Το lerobot εκπαιδεύει μόνο αυτόν τον ειδικό και διατηρεί το VLM παγωμένο, γι' αυτό και χωράει σε μία κάρτα.
  • Ο οδηγός υπολογιστικής ισχύος του LeRobot τοποθετεί την ομάδα smolvla σε περίπου 10 έως 16 GB μέγιστης VRAM σε batch 8 με AdamW. Επομένως 24 GB.
  • Το σημείο εισόδου είναι το lerobot-train. Η ανάρτηση ιστολογίου του SmolVLA του Ιουνίου 2025 εξακολουθεί να εκτυπώνει python lerobot/scripts/train.py, μια διαδρομή που δεν υπάρχει πλέον. Όλα τα παρακάτω αφορούν το lerobot 0.6.1.
  • Το πρόγραμμα συνημιτόνου είναι προκαθορισμένο να μειώνεται σε 30000 βήματα. Το lerobot 0.6.1 το αναπροσαρμόζει προς τα κάτω για μικρότερη εκτέλεση και το καταγράφει, αλλά ποτέ προς τα πάνω: η τυπική εκτέλεση 100000 βημάτων καταλήγει στο όριο 2.5e-6 για 70000 βήματα.
  • Τριάντα επεισόδια είναι το ελάχιστο των AY-Robots, σε ένα επίπεδο 24 GB που κοστίζει 1 έως 3 USD ανά εκτέλεση έναντι 4 έως 12 για τα μοντέλα 80 GB.

Οι περισσότεροι άνθρωποι που θέλουν ένα μοντέλο δράσης όρασης-γλώσσας σε έναν πραγματικό βραχίονα σταματούν στη γραμμή υλικού. GR00T N1.7 και Pi0.5 είναι περίπου τρία δισεκατομμύρια παράμετροι το καθένα και απαιτούν μια A100 80 GB ή μια H100. Αν αυτό που έχετε είναι ένας gaming υπολογιστής με RTX 4090, τότε αυτό είναι το τέλος του δρόμου. SmolVLA είναι η εξαίρεση: 450 M παράμετροι, εντός του LeRobot, κατασκευασμένο για λεπτομερή ρύθμιση σε μία κάρτα καταναλωτή και εξυπηρέτηση από CPU.

Πρώτα η χειροκίνητη διαδρομή: εγκαταστήστε το lerobot, τραβήξτε το lerobot/smolvla_base σημείο ελέγχου, εκτελέστε την πραγματική εντολή, διαβάστε την εκτέλεση καθώς συμβαίνει. Στη συνέχεια, η διαδρομή της πλατφόρμας, και πού δεν βοηθάει.

Τι είναι το SmolVLA, σε αριθμούς που μπορείτε να ελέγξετε

Το SmolVLA είναι ένα αντιστοίχιση ροής μοντέλο πολιτικής προσαρτημένο σε ένα μικρό μοντέλο γλώσσας όρασης. Η αρχιτεκτονική βάσης είναι το SmolVLM2-500M-Video-Instruct· η δημοσίευση διατηρεί μόνο τα πρώτα 16 επίπεδα του γλωσσικού του μοντέλου, περιορίζει κάθε καρέ κάμερας σε 64 οπτικά tokens με pixel shuffle αντί για image tiling, και εναλλάσσει την cross attention με ένα επίπεδο self attention κάθε δεύτερο μπλοκ. Το κόστος συμπερασματολογίας ήταν ένας περιορισμός σχεδιασμού, όχι μια εκ των υστέρων σκέψη.

ΙδιότηταΤιμήΠηγή
Συνολικές παράμετροιabout 450 Mpaper
Ειδικός δράσηςabout 100 M, flow matchingpaper
Αρχιτεκτονική βάσης VLMHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
Χρησιμοποιούμενα επίπεδα VLMτα πρώτα 16 του γλωσσικού μοντέλουnum_vlm_layers = 16
Οπτικά tokens ανά καρέ64, pixel shuffle, no tilingpaper
Προεκπαίδευση481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUspaper

Τα benchmarks είναι ο λόγος που οι άνθρωποι ασχολούνται με ένα μοντέλο 450 M. Στο LIBERO έχει μέσο όρο 87.3 τοις εκατό έναντι 76.5 για το OpenVLA στα 7 B και 86.0 για ένα προεκπαιδευμένο στην ρομποτική Pi0 στα 3.3 B· στο Meta-World, 57.3 έναντι 47.9. Σε πραγματικό υλικό SO-100, η εκπαίδευση πολλαπλών εργασιών δίνει 75 τοις εκατό στην επιλογή και τοποθέτηση, 90 στην στοίβαξη, 70 στην ταξινόμηση, με μέσο όρο 78.3, όπου ACT εκπαιδευμένο ανά εργασία είχε μέσο όρο 48.3. Οι ίδιες σειρές βρίσκονται δίπλα σε κάθε δημοσιευμένο VLA στην καταχώριση του SmolVLA στην αρένα και στην σύγκριση ACT έναντι SmolVLA.

Η ειλικρινής εκδοχή του ισχυρισμού μεγέθους

Το SmolVLA δεν είναι καλύτερο από ένα μοντέλο 3 B σε όλα. Ο πίνακας SO-101 της ίδιας της δημοσίευσης είναι αποκαλυπτικός: 90 τοις εκατό επιτυχία εντός κατανομής, 50 τοις εκατό εκτός αυτής, σε μια πλατφόρμα στην οποία δεν είχε προεκπαιδευτεί ποτέ. Αυτό που ισχυρίζεται, και υποστηρίζει, είναι ότι έναντι του Pi0 εκπαιδεύεται περίπου 40 τοις εκατό γρηγορότερα με 6 φορές λιγότερη μνήμη.

Γιατί μια κάρτα 24 GB είναι η σωστή επιλογή για την πρώτη εκτέλεση

Το LeRobot παρέχει έναν οδηγό μεγέθους υπολογιστικής ισχύος, την πιο χρήσιμη σελίδα στο αποθετήριο για αυτό. Ομαδοποιεί τις πολιτικές ανά μέγεθος backbone και δίνει ένα όριο VRAM ανά ομάδα, μετρημένο σε μέγεθος batch 8 με AdamW, την προεπιλογή του lerobot. Η κατάσταση του βελτιστοποιητή και μόνο προσθέτει 30 έως 100 τοις εκατό σε σχέση με ένα απλό forward και backward πέρασμα, οπότε αυτά δεν είναι στοιχεία μόνο για βάρη.

ΟμάδαΠολιτικέςΜέγιστη VRAM (batch 8, AdamW)Αρχικές GPUs
Ελαφρύ BCact, vqbet, tdmpcπερίπου 2 έως 6 GBRTX 3060, L4
Διάχυσηdiffusion, multi_task_ditπερίπου 8 έως 14 GBRTX 4070+, L4
Μικρό VLAsmolvlaπερίπου 10 έως 16 GBRTX 4080+, L4, A10G
Μεγάλο VLApi0, pi0_fast, pi05, xvla, wall_xπερίπου 24 έως 40 GBA100 40 GB+
Πολυτροπικόgroot, eo1περίπου 24 έως 40 GBA100 40 GB+

Δέκα έως δεκαέξι gigabytes σε batch 8 είναι το επιχείρημα: μια κάρτα 24 GB χωράει αυτό συν τον dataloader. Η AY-Robots τοποθετεί το SmolVLA στην RTX 4090 ή σε οποιαδήποτε κάρτα 24 GB, ελάχιστο 30 επεισόδια, LeRobot v3.0 δεδομένα, 245 ms ανά βήμα ενέργειας. Ενοικιαζόμενο, αυτό είναι 2 έως 5 ώρες με 0.30 έως 0.60 USD την ώρα, περίπου 1 έως 3 USD ανά λεπτορρύθμιση εκτέλεση, έναντι 4 έως 12 USD στην κατηγορία 80 GB που χρειάζονται τα GR00T και Pi0.5 (τιμολόγηση). Μια αποτυχημένη εκτέλεση SmolVLA είναι ένας καφές· μια αποτυχημένη εκτέλεση GR00T, μεσημεριανό.

Πίνακας κόστους AY-Robots: κάρτα ανά πολιτική, χρόνος εκτέλεσης, τιμή ανά εκτέλεση, απαιτούμενα επεισόδια
Τα SmolVLA και ACT βρίσκονται στη σειρά των 24 GB, τα τρία μοντέλα 3 B στη σειρά των 80 GB.
Ξεκινώντας με το SmolVLA αντί για ένα μοντέλο 3 B
Τι κερδίζετε
  • Ταιριάζει σε υλικό που μπορεί να έχετε ήδη: περίπου 10 έως 16 GB σε batch 8.
  • Μια χαμένη εκτέλεση κοστίζει ώρες και μονοψήφια δολάρια, οπότε μπορείτε να αντέξετε οικονομικά να κάνετε λάθος σχετικά με το σύνολο δεδομένων.
  • Προεκπαιδευμένο σε κοινοτικά σύνολα δεδομένων που μοιράζονται με την ετικέτα lerobot, με πραγματικά αποτελέσματα SO-100 και SO-101.
  • Ζει στο ίδιο το lerobot: χωρίς αποθετήριο προμηθευτή, και το smolvla_base δεν είναι περιορισμένο.
Τι χάνετε
  • Το 450 M παραμένει 450 M: η επιτυχία εκτός κατανομής πέφτει από 90 σε 50 τοις εκατό στον πίνακα SO-101 της εργασίας.
  • Θέλει δεδομένα LeRobot v3.0· μια καταγραφή v2.1 πρέπει να μετατραπεί (απορρίφθηκε το σύνολο δεδομένων v3).
  • Τα 245 ms ανά βήμα ενέργειας είναι ένας ικανός ελεγκτής επιλογής και τοποθέτησης, όχι ένας αντιδραστικός.
  • Το παράδειγμα των εγγράφων εκτελεί batch 64 σε μια A100· στα 24 GB ανταλλάσσετε το batch με τον πραγματικό χρόνο.

Βήμα 0: το σύνολο δεδομένων καθορίζει την εκτέλεση, όχι οι σημαίες

Τίποτα από τα παρακάτω δεν έχει σημασία αν η καταγραφή είναι κακή. Η σελίδα LeRobot SmolVLA είναι ξεκάθαρη: το σύνολο δεδομένων αναφοράς ήταν 50 επεισόδια σε 5 θέσεις κύβων, 10 ανά θέση, και η ίδια εργασία σε 25 επεισόδια απέδωσε άσχημα. Η επανάληψη ανά παραλλαγή γενικεύει, ο ακατέργαστος αριθμός επεισοδίων όχι. Δεν έχετε καταγράψει ποτέ; Ξεκινήστε από το καταγράψτε το πρώτο σας σύνολο δεδομένων, με τον πελάτη επιφάνειας εργασίας, ο οποίος γράφει τη μορφή LeRobot από μια συνεδρία τηλελειτουργίας, ή δανειστείτε ένα από τον κατάλογο συνόλων δεδομένων.

  • Τουλάχιστον 30 επεισόδια σε AY-Robots, περίπου 50 για την συνταγή αναφοράς LeRobot.
  • Κάθε παραλλαγή που αναμένετε κατά την ανάπτυξη, επαναλαμβανόμενη αρκετές φορές.
  • Μία συμβολοσειρά εργασίας, γραμμένη πανομοιότυπα κατά την καταγραφή και την ανάπτυξη. Το μοντέλο είναι προσαρμοσμένο σε αυτό το κείμενο.
  • Σταθερές κάμερες. Μια κάμερα που μετακινήθηκε μεταξύ καταγραφής και ανάπτυξης είναι ο πιο κοινός λόγος που μια καθαρή καμπύλη απώλειας δίνει έναν ακίνητο βραχίονα.
  • Μια παραλλαγή που δεν έχετε εκπαιδεύσει ποτέ, ώστε να έχετε κάτι ειλικρινές για να δοκιμάσετε.
Η παγίδα του συνόλου δεδομένων που κοστίζει μια μέρα

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

bash
# v2.1 -> v3.0: aggregates per-episode files into shards and writes the episode offsets
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=${HF_USER}/so100_pick_place
Ο μετατροπέας περιλαμβάνεται στο lerobot, οπότε δεν χρειάζεται να εγκαταστήσετε τίποτα επιπλέον. Δεν υπάρχει μετατροπέας προς την αντίθετη κατεύθυνση στο πακέτο.

Περισσότερα για αυτό στο πώς να συλλέξετε δεδομένα εκπαίδευσης VLA υψηλής ποιότητας. Η σύντομη εκδοχή: 30 έως 50 καθαρά επεισόδια μιας εργασίας με σκόπιμη παραλλαγή υπερτερούν 200 πρόχειρων επεισοδίων τριών, με ένα περιθώριο που κανένας υπερπαράμετρος δεν κλείνει.

Εγκατάσταση lerobot 0.6.1

bash
# LeRobot needs Python 3.12 or newer as of 0.6.x
conda create -y -n lerobot python=3.12
conda activate lerobot

# TorchCodec decodes the dataset videos and wants ffmpeg
conda install ffmpeg -c conda-forge

# Base package is deliberately thin; extras pull the rest
pip install 'lerobot[smolvla,training,core_scripts]'

# Sanity check: prints the lerobot version, the GPU torch sees, and the console scripts you got
lerobot-info
Η διαδρομή PyPI. Για να εφαρμόσετε patch στον εκπαιδευτή, κλωνοποιήστε το αποθετήριο και χρησιμοποιήστε το pip install -e ".[smolvla,training]" αντ' αυτού.

Η βασική lerobot εγκατάσταση είναι ελαφριά και περιορίζει τις βαριές εξαρτήσεις πίσω από πρόσθετα (extras): smolvla προσθέτει transformers, num2words και accelerate, training τη στοίβα δεδομένων και το wandb, core_scripts τις εξαρτήσεις υλικού και οπτικοποίησης. Στο Linux, η διαδρομή εγκατάστασης καθορίζει επίσης το CUDA wheel σας: η προεπιλογή του PyPI είναι ένα cu130 wheel με ελάχιστο όριο οδηγού 580.65, οπότε σε έναν παλαιότερο οδηγό εγκαταστήστε το torch από το cu128 index πρώτα, και μετά το lerobot.

Τα <code>policy.path</code> και <code>policy.type</code> δεν είναι η ίδια σημαία

--policy.path=lerobot/smolvla_base φορτώνει το προεκπαιδευμένο checkpoint 450 M και το ρυθμίζει λεπτομερώς (fine-tunes). --policy.type=smolvla δημιουργεί ένα νέο SmolVLA, και η προεπιλογή ρύθμισης load_vlm_weights = False σημαίνει ότι δεν τραβάει καν τα βάρη του backbone SmolVLM2 εκτός αν το ζητήσετε. Αν το κάνετε λάθος, η εκτέλεση εκπαιδεύεται κανονικά, κοστίζει το ίδιο και δεν μαθαίνει τίποτα μεταβιβάσιμο.

Η εκτέλεση της εκπαίδευσης, εντολή προς εντολή

  1. 1
    Αυθεντικοποίηση στο Hub

    Το βασικό σημείο ελέγχου προέρχεται από το Hub, και πιθανότατα και το σύνολο δεδομένων σας.

    bash
    hf auth login
  2. 2
    Διαβάστε τις επιλογές μία φορά

    Κάθε πεδίο της διαμόρφωσης της διοχέτευσης και της πολιτικής είναι μια σημαία. Ρίξτε μια ματιά πριν εμβαθύνετε στον κώδικα.

    bash
    lerobot-train --help
  3. 3
    Ξεκινήστε το fine-tune

    Το παράδειγμα των εγγράφων εκτελεί παρτίδα 64 σε μία A100· η δική του A100 40 GB αναφορά του οδηγού υπολογισμού είναι παρτίδα 16, και το 8 είναι το αντίστοιχο των 24 GB. Καμία σημαία χρονοπρογραμματιστή εδώ επίτηδες, δείτε παρακάτω.

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=${HF_USER}/so100_pick_place \
      --batch_size=8 \
      --steps=20000 \
      --save_freq=2000 \
      --log_freq=200 \
      --seed=1000 \
      --output_dir=outputs/train/smolvla_pick_place \
      --job_name=smolvla_pick_place \
      --policy.device=cuda \
      --wandb.enable=true
  4. 4
    Διαβάστε τη γραμμή καταγραφής, όχι μόνο την απώλεια

    Κάθε --log_freq βήματα το lerobot εκτυπώνει loss, grdn, lr, updt_s, data_s, smp/s και, σε CUDA, mem_gb. Το mem_gb δείχνει αν χωράει η παρτίδα, το lr αν το πρόγραμμα μειώνεται, και το data_s που πλησιάζει το updt_s σημαίνει ότι ο dataloader είναι το σημείο συμφόρησης, όχι η GPU.

    bash
    # if data_s creeps toward updt_s
    lerobot-train ... --num_workers=8
  5. 5
    Συλλέξτε σημεία ελέγχου που μπορείτε να συγκρίνετε

    Το save_freq έχει προεπιλεγμένη τιμή 20000, οπότε μια εκτέλεση 20000 βημάτων αφήνει ένα σημείο ελέγχου και τίποτα για να το συγκρίνετε. Ορίστε 2000. Η προώθηση στο Hub απαιτεί --policy.repo_id.

    bash
    --save_freq=2000 \
    --policy.repo_id=${HF_USER}/smolvla_pick_place \
    --save_checkpoint_to_hub=true
  6. 6
    Συνέχιση αν η μηχανή σταματήσει

    Δείξτε το --config_path στο train_config.json δίπλα στο σημείο ελέγχου. Το lerobot αρνείται να ξεκινήσει σε έναν υπάρχοντα output_dir εκτός αν συνεχίζετε, οπότε δεν μπορείτε να αντικαταστήσετε μια εκτέλεση κατά λάθος.

    bash
    lerobot-train \
      --config_path=<path to the saved train_config.json> \
      --resume=true

Οι σημαίες που αλλάζουν πραγματικά το αποτέλεσμα

ΣημαίαΤι κάνειΣε 24 GB
--batch_sizeΔείγματα ανά βήμα, περίπου γραμμικά στην VRAM4 to 8
--stepsΣυνολικά βήματα βελτιστοποιητή20000 πρώτη διέλευση
--policy.scheduler_decay_stepsΜήκος κοσινοειδούς μείωσης, προκαθορισμένο 30000Ενεργοποιείται μόνο πάνω από 30000
--policy.use_ampΜικτή ακρίβεια· το SmolVLA δεν έχει πεδίο dtypetrue όταν η μνήμη είναι περιορισμένη
--num_workersΔιεργασίες Dataloader, προεπιλογή 4Αυξήστε μέχρι το data_s να σταματήσει να ανεβαίνει
--dataset.eval_splitΚλάσμα επεισοδίων που παρακρατούνται ανά εργασία0.1, with --eval_steps
--policy.freeze_vision_encoderΔιατηρεί τον πύργο όρασης παγωμένοtrue on 24 GB
--policy.train_expert_onlyΜόνο ο ειδικός των ~100 M λαμβάνει κλίσειςtrue αρχικά
Το χρονοδιάγραμμα: τι χειρίζεται η έκδοση 0.6.1 και τι όχι

Το SmolVLA προκαθορίζει ένα χρονοδιάγραμμα συνημιτόνου: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Παλαιότερες συμβουλές ανέφεραν ότι μια εκτέλεση 20000 βημάτων σταματούσε στη μέση της αποσύνθεσης. Στην έκδοση 0.6.1 δεν συμβαίνει αυτό: η `CosineDecayWithWarmupSchedulerConfig.build()` λαμβάνει το `--steps`, και κάτω από το `num_decay_steps` ανακλιμακώνει και τα δύο, την προθέρμανση από 1000 σε 666 και την αποσύνθεση από 30000 σε 20000, εκτυπώνοντας Auto-scaling LR scheduler καθώς το κάνει. Δεν ανακλιμακώνει ποτέ προς τα πάνω: η αποσύνθεση περιορίζεται με `min(current_step, decay_steps)`, οπότε το προκαθορισμένο `--steps=100000` παραμένει στο ελάχιστο από το βήμα 30000 μέχρι το τέλος, το 70 τοις εκατό της εκτέλεσης. Μόνο αυτή η μεγάλη πλευρά εξακολουθεί να χρειάζεται το `--policy.scheduler_decay_steps`. Η στήλη `lr` είναι εκεί που ελέγχετε.

Οι προεπιλογές που κληρονομείτε αν δεν αγγίξετε τίποτα

Μια ρύθμιση στο lerobot φέρει τη δική της προκαθορισμένη ρύθμιση βελτιστοποιητή και χρονοπρογραμματιστή, και εκτός αν ορίσετε use_policy_training_preset=false αυτές οι προκαθορισμένες ρυθμίσεις υπερισχύουν. Οι μισές από τις ερωτήσεις που κάνουν οι άνθρωποι σχετικά με την εκπαίδευση του SmolVLA απαντώνται από μια προεπιλογή που δεν γνώριζαν ότι υπήρχε.

ΡύθμισηΠροεπιλογή στο lerobot 0.6.1Ορισμένο στο
chunk_size / n_action_steps50 / 50SmolVLAConfig
num_steps (αποθορυβοποίηση αντιστοίχισης ροής)10SmolVLAConfig
optimizer_lr1e-4SmolVLAConfig
scheduler_warmup_steps1000SmolVLAConfig
scheduler_decay_steps30000SmolVLAConfig
scheduler_decay_lr2.5e-6SmolVLAConfig
freeze_vision_encodertrueSmolVLAConfig
train_expert_onlytrueSmolVLAConfig
batch_size / steps8 / 100000TrainPipelineConfig
seed / save_freq / num_workers1000 / 20000 / 4TrainPipelineConfig

Οι δύο γραμμές που εκπλήσσουν τους ανθρώπους είναι freeze_vision_encoder και train_expert_only, και οι δύο αληθείς. Εκτός συσκευασίας εκπαιδεύετε περίπου 100 M παραμέτρους, όχι 450 M, γι' αυτό και χωράει σε 24 GB. Η δική του αναφορά του LeRobot σε ένα σύμπλεγμα τεσσάρων GPU H100 τις αλλάζει και τις δύο σε false. Σε μία κάρτα 24 GB αυτό μετατρέπει μια λειτουργική εκτέλεση σε ένα σφάλμα έλλειψης μνήμης.

Το κουμπί μνήμης που δεν υπάρχει

Η συμβουλή του οδηγού όταν περιορίζεστε από τη μνήμη είναι να μειώσετε το μέγεθος της δέσμης (batch size) και να χρησιμοποιήσετε τη συσσώρευση κλίσης (gradient accumulation) για να ανακτήσετε την αποτελεσματική δέσμη. Δεν υπάρχει συσσώρευση κλίσης στο lerobot 0.6.1: το TrainPipelineConfig δεν έχει τέτοιο πεδίο και η συμβολοσειρά δεν εμφανίζεται πουθενά στο δημοσιευμένο πακέτο. Η φόρμα AY-Robots δείχνει μια τιμή συσσώρευσης κλίσης 8 για το SmolVLA και δεν την εφαρμόζει ούτε αυτή. Οι μοχλοί σας στα 24 GB είναι το --batch_size, οι δύο προεπιλογές παγώματος (freeze defaults), και το --policy.use_amp.

Πόσο διαρκεί η εκτέλεση και πόσα βήματα είναι αρκετά

Το LeRobot δημοσιεύει σημεία αναφοράς πραγματικού χρόνου (wall-clock anchors) για πέντε εποχές σε ένα σύνολο δεδομένων περίπου 50 επεισοδίων, περίπου 45000 καρέ στα 30 fps. Είναι μεγέθη τάξης μεγέθους, λένε τα έγγραφα, αλλά αποτελούν τη διαφορά μεταξύ του να περιμένεις μία ώρα και μία ημέρα.

ΡύθμισηΠολιτικήΔέσμηΠραγματικός χρόνος
Single L4 / A10G (24 GB)smolvla4about 3 to 6 h
Single A100 40 GBsmolvla16about 1 to 2 h
4 x H100 80 GB with acceleratesmolvla32about 1 to 2 h
Single RTX 4090 / RTX 3090 (24 GB)act8about 30 to 60 min
Κάντε τους υπολογισμούς των εποχών πριν επιλέξετε το --steps

Ο κανόνας είναι 5 έως 10 εποχές πάνω από το σύνολο δεδομένων, όχι ένας σταθερός αριθμός βημάτων: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). Στο σύνολο δεδομένων αναφοράς που υποδεικνύουν τα έγγραφα, lerobot/svla_so100_pickplace, τα μεταδεδομένα αναφέρουν 50 επεισόδια και 19631 καρέ: μια δέσμη 8 δίνει περίπου 2454 βήματα ανά εποχή, οπότε 20000 βήματα είναι περίπου 8 εποχές. Μειώστε τη δέσμη στο μισό και ο ίδιος προϋπολογισμός αγοράζει τις μισές εποχές, οπότε επαναλάβετε αυτό κάθε φορά που αλλάζετε το `--batch_size`.

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

bash
lerobot-rollout \
  --strategy.type=base \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower_arm \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
  --task="Grasp the cube and put it in the box." \
  --policy.path=${HF_USER}/smolvla_pick_place
Η συμβολοσειρά εργασίας πρέπει να ταιριάζει με αυτήν που καταγράψατε. Το μοντέλο είναι προσαρμοσμένο σε αυτό το κείμενο, οπότε μια παράφραση είναι μια διαφορετική οδηγία.

Τα 245 ms ανά βήμα ενέργειας είναι εύκολο να παρερμηνευθούν: η πολιτική εκπέμπει chunk_size = 50 ενέργειες ανά πέρασμα προς τα εμπρός και εκτελεί n_action_steps = 50 από αυτές, οπότε το πόσο συχνά πληρώνετε αυτό το κόστος καθορίζεται από αυτούς τους διακόπτες, όχι από το πόσο συχνά οι σερβομηχανισμοί λαμβάνουν εντολή. Αυτό είναι που προσφέρει, και γιατί ένα μοντέλο 245 ms μπορεί να κινήσει έναν βραχίονα 30 Hz. Αυτό που απομένει είναι στο τέλος του τεμαχίου.

Μέτρηση (SmolVLA, πραγματικό SO-100)ΣύγχρονοΑσύγχρονο
Χρόνος ολοκλήρωσης, pick and place, 10 δοκιμές13.75 s9.70 s
Κύκλοι pick and place σε σταθερό χρονικό παράθυρο919
Ποσοστό επιτυχίας κατά μέσο όρο στις τρεις εργασίες78.3 %73.3 %

Αυτή η τρίτη σειρά είναι αυτό που οι περισσότερες αναφορές παραλείπουν. Η ασύγχρονη συμπερασματολογία είναι περίπου 30 τοις εκατό ταχύτερη και σχεδόν διπλασιάζει την απόδοση σε ένα σταθερό χρονικό παράθυρο, και η εργασία αναφέρει ότι τα ποσοστά επιτυχίας είναι συγκρίσιμα, κάτι που κατά μέσο όρο ισχύει. Κάτω από αυτό, η ταξινόμηση έπεσε από 70 σε 50 τοις εκατό, ενώ το pick and place κέρδισε 5. Το lerobot 0.6.1 φέρει τον άλλο μοχλό στο ίδιο δυαδικό: --inference.type=rtc αλλάζει την εκτέλεση σε τεμαχισμό σε πραγματικό χρόνο, το οποίο το μπλοκ χρήσης του ίδιου του σεναρίου συνιστά για τα αργά VLA, Pi0, Pi0.5 και SmolVLA.

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

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

7.4 V, όχι 12 V

Εκτός θέματος για μια εκπαιδευτική εκτέλεση, αλλά τερματίζει περισσότερα έργα SO-100 από οποιαδήποτε υπερπαράμετρο. Οι σερβοκινητήρες Feetech STS3215 στα SO-100 και SO-101 λειτουργούν στα 7.4 V· τα 12 V τους καταστρέφουν. Το LeKiwi συνδυάζει έναν βραχίονα 7.4 V με μια βάση 12 V, έτσι βρίσκει η λάθος υποδοχή τροφοδοσίας τη λάθος πρίζα.

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

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

  • Ελέγχετε το CUDA wheel, τον οδηγό, την κατασκευή ffmpeg και τον dataloader.
  • Μπορείτε να εφαρμόσετε patch στο configuration_smolvla.py και να επανεκπαιδεύσετε το ίδιο απόγευμα.
  • Πληρώνετε σε ηλεκτρικό ρεύμα και χρόνο, όχι ανά εκτέλεση, και εντοπίζετε σφάλματα στο TorchCodec μόνοι σας.
bash
pip install 'lerobot[smolvla,training,core_scripts]'
hf auth login

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=${HF_USER}/so100_pick_place \
  --batch_size=8 --steps=20000 \
  --save_freq=2000 --seed=1000 \
  --output_dir=outputs/train/smolvla_pick_place \
  --job_name=smolvla_pick_place \
  --policy.device=cuda --wandb.enable=true
Ολόκληρη η χειροκίνητη διαδρομή σε ένα μπλοκ, lerobot 0.6.1.

Όταν το SmolVLA είναι η λάθος επιλογή

Το κριτήριο για το αν το SmolVLA ήταν η σωστή πρώτη εκτέλεση δεν είναι αν λειτούργησε, αλλά αν η αποτυχία σου είπε κάτι. Φτάστε το 60 ή 70 τοις εκατό και ένα μεγαλύτερο μοντέλο είναι μια λογική επόμενη επένδυση: τα δεδομένα φέρουν σήμα. Φτάστε το 10 τοις εκατό και ένα μοντέλο 3 B πιθανότατα φτάνει επίσης το 10 τοις εκατό, κάτι που μόλις μάθατε για τρία δολάρια αντί για δώδεκα.

Ο πίνακας εκπαίδευσης AY-Robots: πέντε πολιτικές ως γραμμές, τέσσερα ρομποτικά χέρια ως στήλες
Κάθε κελί είναι ο δικός του οδηγός. Το SmolVLA έχει ένα για κάθε ένα από τα τέσσερα ρομποτικά χέρια.

Αξίζει να διαβάσετε πριν ξοδέψετε περισσότερα: Pi0.5 έναντι SmolVLA για περισσότερη χωρητικότητα στην ίδια ιδέα, και GR00T N1.7 έναντι SmolVLA για τη διαδρομή της NVIDIA, και τα δύο στην κατηγορία 80 GB με 4 έως 12 USD ανά εκτέλεση. Ο άλλος τρόπος, ACT είναι η φθηνότερη βάση: 80 M παράμετροι, 20 ms ανά βήμα ενέργειας, χωρίς γλωσσική προσαρμογή. Και τα πέντε βρίσκονται στη σελίδα πολιτικών; την αρένα έχει 85 μοντέλα και 332 αποτελέσματα συγκριτικής αξιολόγησης.

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

Η λίστα ελέγχου πριν κλιμακώσετε οτιδήποτε

  1. Έφτασε το lr στο κατώτατο όριο των 2.5e-6; Κάτω από 30000 βήματα, το lerobot αναπροσαρμόζει την αποσύνθεση και το αναφέρει στην εκκίνηση. Πάνω από αυτό, ορίστε το --policy.scheduler_decay_steps μόνοι σας.
  2. Περισσότερα από ένα σημεία ελέγχου (checkpoint) και επεισόδια που κρατήθηκαν με το --dataset.eval_split ώστε η απώλεια αξιολόγησης να σημαίνει κάτι.
  3. Κινείται καθόλου η πολιτική; Μια πτώση της απώλειας με ένα ακίνητο χέρι έχει συγκεκριμένες αιτίες: η απώλεια πέφτει, η πολιτική δεν κάνει τίποτα.
  4. Επιβιώνει σε αλλαγή σκηνικού; Αν όχι: η πολιτική λειτουργεί μόνο σε μία ρύθμιση.
  5. Σημειώσατε το seed; Το lerobot έχει προεπιλογή το 1000, οπότε δύο ανέγγιχτες εκτελέσεις παραμένουν συγκρίσιμες.
  6. Μόνο τότε: περισσότερα επεισόδια, περισσότερη παραλλαγή ή ένα μεγαλύτερο μοντέλο. Με αυτή τη σειρά.

Γιατί υπάρχουν αυτά τα μοντέλα και τι κάνουν με την είσοδο γλώσσας, , είναι το υπόβαθρο. εκτελεί συναρμολόγηση μέσω μέχρι την πρώτη εκτέλεση. Για το ολοκληρωμένο σημείο ελέγχου (checkpoint), · αν το χέρι δεν εμφανιστεί ποτέ, .

Εκπαιδεύστε το SmolVLA στο δικό σας ρομποτικό βραχίονα

Επιλέξτε το μοντέλο και το ρομποτικό βραχίονα και ο οδηγός θα σας δώσει τις ακριβείς προεπιλογές, τη μορφή του συνόλου δεδομένων και το κόστος της εκτέλεσης. Το SmolVLA βρίσκεται στην κατηγορία των 24 GB με κόστος 1 έως 3 USD ανά εκτέλεση.

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

Ναι. Ο οδηγός υπολογιστικής ισχύος του LeRobot τοποθετεί το SmolVLA σε περίπου 10 έως 16 GB μέγιστης VRAM σε batch 8 με AdamW και αναφέρει ότι οι κάρτες καταναλωτών 24 GB είναι άνετες για αυτό. Το batch 64 στο παράδειγμα των εγγράφων συνδυάζεται με μία μόνο A100. Η μνήμη κλιμακώνεται περίπου γραμμικά με το batch, οπότε χρησιμοποιήστε 4 ή 8 και παρακολουθήστε το mem_gb.

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

Η AY-Robots ορίζει το ελάχιστο στα 30. Τα έγγραφα του LeRobot συνιστούν περίπου 50 και αναφέρουν ότι 25 επεισόδια της ίδιας εργασίας είχαν κακή απόδοση. Η δομή υπερτερεί του πλήθους: το σύνολο αναφοράς ήταν 5 θέσεις κύβων με 10 επεισόδια το καθένα, και αυτή η επανάληψη είναι αυτό που γενικεύεται.

Τα έγγραφα αναφέρουν batch 64, η πλατφόρμα στέλνει batch 2. Ποιο είναι το σωστό;

Και τα δύο, για διαφορετικό υλικό. Το παράδειγμα των εγγράφων χρησιμοποιεί batch 64 και αναφέρει περίπου 4 ώρες για 20000 βήματα σε μία μόνο A100· η αναφορά A100 40 GB του οδηγού υπολογιστικής ισχύος είναι batch 16. Το Batch 2 είναι αυτό που στέλνει η AY-Robots στην κατηγορία 24 GB. Τοπικά, το 4 έως 8 είναι η μέση τιμή, και η αριθμητική των εποχών αλλάζει με αυτό.

SmolVLA ή ACT για μια πρώτη εκτέλεση σε ένα SO-100;

ACT αν η εργασία είναι μία επαναλαμβανόμενη κίνηση και θέλετε τον ταχύτερο βρόχο: 20 ms ανά βήμα δράσης, 80 M παραμέτρους, χωρίς γλωσσική προσαρμογή. SmolVLA αν θέλετε γλωσσική προσαρμογή, πολλές συμβολοσειρές εργασιών σε ένα checkpoint, και μια προεκπαιδευμένη βάση. Και τα δύο βρίσκονται στην κατηγορία 24 GB, οπότε η επιλογή είναι η εργασία, όχι ο προϋπολογισμός.

Πρέπει να ορίσω το --policy.scheduler_decay_steps;

Μόνο όταν το --steps είναι πάνω από 30000. Το SmolVLA προκαθορίζει την κοσινοειδή μείωση στα 30000 βήματα, και το lerobot 0.6.1 το αναπροσαρμόζει προς τα κάτω από μόνο του για μια συντομότερη εκτέλεση, καταγράφοντας "Auto-scaling LR scheduler" όταν το κάνει. Ποτέ δεν κλιμακώνεται προς τα πάνω, οπότε το προεπιλεγμένο --steps=100000 αφήνει τα τελευταία 70000 βήματα στο κατώτατο όριο 2.5e-6.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started