
SmolVLA ist ein VLA mit 450 Millionen Parametern, das auf einer einzelnen 24 GB Karte feinabgestimmt werden kann. Echte lerobot 0.6.1 Befehle, die tatsächlichen Standardeinstellungen, die Fallstricke, die einen Tag kosten können, und was ein Durchlauf kostet.
SmolVLA auf einen Blick
- •450 M Parameter, davon etwa 100 M ein Flow-Matching-Aktions-Experte. lerobot trainiert nur diesen Experten und hält das VLM eingefroren, weshalb es auf eine Karte passt.
- •LeRobots Compute Guide beziffert die smolvla-Gruppe auf etwa 10 bis 16 GB Spitzen-VRAM bei Batch 8 mit AdamW. Daher 24 GB.
- •Der Einstiegspunkt ist lerobot-train. Der SmolVLA-Blogbeitrag vom Juni 2025 gibt immer noch python lerobot/scripts/train.py aus, ein Pfad, der nicht mehr existiert. Alles Folgende bezieht sich auf lerobot 0.6.1.
- •Der Cosinus-Zeitplan ist voreingestellt, um über 30000 Schritte abzufallen. lerobot 0.6.1 skaliert dies für einen kürzeren Lauf herunter und protokolliert es, aber niemals hoch: Der Standardlauf von 100000 Schritten endet auf dem 2.5e-6-Minimum für 70000 Schritte.
- •Dreißig Episoden sind das AY-Robots-Minimum, auf einer 24-GB-Stufe, die 1 bis 3 USD pro Lauf kostet, gegenüber 4 bis 12 USD für die 80-GB-Modelle.
Die meisten Leute, die ein Vision-Sprach-Aktionsmodell auf einem echten Arm wollen, scheitern an der Hardware. GR00T N1.7 und Pi0.5 haben jeweils etwa drei Milliarden Parameter und benötigen eine A100 80 GB oder eine H100. Wenn Sie einen Gaming-PC mit einer RTX 4090 besitzen, ist das das Ende der Fahnenstange. SmolVLA ist die Ausnahme: 450 M Parameter, innerhalb von LeRobot, entwickelt zum Fine-Tuning auf einer Consumer-Karte und zum Servieren von einer CPU.
Zuerst der manuelle Weg: lerobot installieren, den lerobot/smolvla_base Checkpoint herunterladen, den eigentlichen Befehl ausführen, den Lauf währenddessen verfolgen. Dann der Plattformweg und wo er nicht hilft.
Was SmolVLA ist, in überprüfbaren Zahlen
SmolVLA ist eine Flow-Matching Policy, die auf ein kleines Vision-Sprachmodell aufgesetzt ist. Das Rückgrat ist SmolVLM2-500M-Video-Instruct; das Paper behält nur die ersten 16 Schichten seines Sprachmodells bei, begrenzt jeden Kamerarahmen auf 64 visuelle Token mit einem Pixel-Shuffle anstelle von Bild-Tiling und verschränkt Cross-Attention mit einer Self-Attention-Schicht in jedem zweiten Block. Die Inferenzkosten waren eine Designbeschränkung, nicht ein nachträglicher Gedanke.
| Eigenschaft | Wert | Quelle |
|---|---|---|
| Gesamtparameter | etwa 450 M | paper |
| Aktionsexperte | etwa 100 M, Flow-Matching | paper |
| VLM-Rückgrat | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Verwendete VLM-Schichten | erste 16 des Sprachmodells | num_vlm_layers = 16 |
| Visuelle Token pro Frame | 64, Pixel-Shuffle, kein Tiling | paper |
| Vortraining | 481 Community-Datensätze, 22.9 K Episoden, 10.6 M Frames; 200000 Schritte bei globaler Batch-Größe 256 auf 4 GPUs | paper |
Die Benchmarks sind der Grund, warum man sich mit einem 450 M Modell beschäftigt. Auf LIBERO erreicht es durchschnittlich 87.3 Prozent gegenüber 76.5 für OpenVLA bei 7 B und 86.0 für ein robotik-vortrainiertes Pi0 bei 3.3 B; auf Meta-World, 57.3 gegenüber 47.9. Auf echter SO-100 Hardware liefert Multi-Task-Training 75 Prozent bei Pick-and-Place, 90 beim Stapeln, 70 beim Sortieren, im Durchschnitt 78.3, während ACT pro Aufgabe trainiert durchschnittlich 48.3 erreichte. Dieselben Zeilen stehen neben jedem veröffentlichten VLA im SmolVLA Arena-Eintrag und dem ACT gegen SmolVLA Vergleich.
SmolVLA ist nicht in allem besser als ein 3 B Modell. Die eigene SO-101 Tabelle des Papers ist aufschlussreich: 90 Prozent Erfolg in der Verteilung, 50 Prozent außerhalb davon, auf einer Plattform, auf der es nie vortrainiert wurde. Was es jedoch behauptet und unterstützt, ist, dass es im Vergleich zu Pi0 etwa 40 Prozent schneller trainiert und dabei 6-mal weniger Speicher benötigt.
Warum eine 24-GB-Karte der richtige erste Lauf ist
LeRobot liefert einen Leitfaden zur Berechnung der Größe, die nützlichste Seite im Repository hierfür. Er gruppiert Richtlinien nach Backbone-Größe und gibt pro Gruppe einen VRAM-Bedarf an, gemessen bei einer Batch-Größe von 8 mit AdamW, der Standardeinstellung von LeRobot. Der Optimiererzustand allein fügt 30 bis 100 Prozent über einen reinen Vorwärts- und Rückwärtsdurchlauf hinzu, sodass dies keine reinen Gewichtsangaben sind.
| Gruppe | Richtlinien | Spitzen-VRAM (Batch 8, AdamW) | Einsteiger-GPUs |
|---|---|---|---|
| Leichte BC | act, vqbet, tdmpc | ca. 2 bis 6 GB | RTX 3060, L4 |
| Diffusion | diffusion, multi_task_dit | ca. 8 bis 14 GB | RTX 4070+, L4 |
| Kleines VLA | smolvla | ca. 10 bis 16 GB | RTX 4080+, L4, A10G |
| Großes VLA | pi0, pi0_fast, pi05, xvla, wall_x | ca. 24 bis 40 GB | A100 40 GB+ |
| Multimodal | groot, eo1 | ca. 24 bis 40 GB | A100 40 GB+ |
Zehn bis sechzehn Gigabyte bei Batch 8 ist das Argument: Eine 24-GB-Karte passt dazu plus den Dataloader. AY-Robots setzt SmolVLA auf die RTX 4090 oder jede 24-GB-Karte, mindestens 30 Episoden, LeRobot v3.0 Daten, 245 ms pro Aktionsschritt. Gemietet sind das 2 bis 5 Stunden zu 0.30 bis 0.60 USD pro Stunde, etwa 1 bis 3 USD pro Fine-Tuning Lauf, gegenüber 4 bis 12 USD auf der 80-GB-Stufe, die GR00T und Pi0.5 benötigen (Preise). Ein fehlgeschlagener SmolVLA-Lauf ist ein Kaffee; ein fehlgeschlagener GR00T-Lauf, ein Mittagessen.

- Passt auf Hardware, die Sie möglicherweise bereits besitzen: ungefähr 10 bis 16 GB bei Batch 8.
- Ein verschwendeter Lauf kostet Stunden und einstellige Dollarbeträge, sodass Sie es sich leisten können, sich bezüglich des Datensatzes zu irren.
- Vortrainiert auf Community-Datensätzen, die unter dem lerobot-Tag geteilt werden, mit echten SO-100- und SO-101-Ergebnissen.
- Es lebt in lerobot selbst: kein Anbieter-Repo, und smolvla_base ist nicht gesperrt.
- 450 M sind immer noch 450 M: Der Erfolg außerhalb der Verteilung sinkt in der SO-101-Tabelle des Papers von 90 auf 50 Prozent.
- Es benötigt LeRobot v3.0-Daten; eine v2.1-Aufnahme muss konvertiert werden (dataset rejected v3).
- 245 ms pro Aktionsschritt ist ein kompetenter Pick-and-Place-Controller, kein reaktiver.
- Das Doku-Beispiel führt Batch 64 auf einer A100 aus; bei 24 GB tauschen Sie Batch gegen Wanduhrzeit.
Schritt 0: Der Datensatz entscheidet über den Lauf, nicht die Flags
Nichts davon ist relevant, wenn die Aufnahme schlecht ist. Die LeRobot SmolVLA-Seite ist deutlich: Der Referenzdatensatz umfasste 50 Episoden über 5 Würfelpositionen, 10 pro Position, und dieselbe Aufgabe mit 25 Episoden schnitt schlecht ab. Wiederholung pro Variation generalisiert, die reine Episodenanzahl nicht. Noch nie eine aufgenommen? Beginnen Sie bei nehmen Sie Ihren ersten Datensatz auf, mit dem Desktop-Client, der das LeRobot-Format aus einer Teleoperationssitzung-Sitzung, oder leihen Sie sich eine aus dem Datensatzverzeichnis.
- Mindestens 30 Episoden auf AY-Robots, etwa 50 für das LeRobot-Referenzrezept.
- Jede Variation, die Sie beim Rollout erwarten, mehrmals wiederholt.
- Ein Aufgaben-String, der bei der Aufzeichnung und beim Rollout identisch geschrieben ist. Das Modell wird auf diesen Text konditioniert.
- Feste Kameras. Eine Kamera, die zwischen Aufzeichnung und Rollout bewegt wurde, ist der häufigste Grund, warum eine saubere Verlustkurve zu einem bewegungslosen Arm führt.
- Eine zurückgehaltene Variation, die Sie nie trainiert haben, damit Sie etwas Echtes zum Testen haben.
SmolVLA, Pi0.5 und ACT benötigen LeRobot v3.0. GR00T N1.7 und N1.5 benötigen v2.0 oder v2.1, und ihr Loader stürzt bei v3.0 ab. Zeichnen Sie einmal auf, planen Sie, Modelle später zu vergleichen, und Sie werden so oder so konvertieren: Datensatz v3 abgelehnt.
# 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_placeMehr dazu in wie man hochwertige VLA-Trainingsdaten für die Robotermanipulation sammelt. Die Kurzversion: 30 bis 50 saubere Episoden einer Aufgabe mit bewusster Variation schlagen 200 schlampige Episoden von dreien, und zwar mit einem Vorsprung, den kein Hyperparameter schließen kann.
lerobot 0.6.1 installieren
# 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-infoDie Basis-lerobot-Installation ist schlank und schirmt schwere Abhängigkeiten hinter Extras ab: smolvla fügt Transformers, num2words und Accelerate hinzu, training den Datensatz-Stack und wandb, core_scripts die Hardware- und Visualisierungsabhängigkeiten. Unter Linux entscheidet der Installationspfad auch über Ihr CUDA-Wheel: Der PyPI-Standard ist ein cu130-Wheel mit einer Treiberuntergrenze von 580.65. Installieren Sie daher bei einem älteren Treiber zuerst Torch vom cu128-Index und dann lerobot.
--policy.path=lerobot/smolvla_base lädt den vortrainierten 450 M Checkpoint und feintunt ihn. --policy.type=smolvla erstellt ein neues SmolVLA, und der Konfigurationsstandard load_vlm_weights = False bedeutet, dass es die SmolVLM2-Backbone-Gewichte nicht einmal herunterlädt, es sei denn, Sie fordern dies an. Wenn Sie es falsch machen, trainiert der Lauf fröhlich, kostet dasselbe und lernt nichts Übertragbares.
Der Trainingslauf, Befehl für Befehl
- 1Authentifizierung am Hub
Der Basis-Checkpoint stammt vom Hub, und Ihr Datensatz wahrscheinlich auch.
bashhf auth login - 2Optionen einmal lesen
Jedes Feld der Pipeline- und Policy-Konfiguration ist ein Flag. Überfliegen Sie es, bevor Sie sich in den Quellcode vertiefen.
bashlerobot-train --help - 3Das Fine-Tuning starten
Das Dokumentationsbeispiel verwendet Batch 64 auf einer einzelnen A100; der eigene A100 40 GB Anker des Compute-Guides ist Batch 16, und 8 ist das 24 GB Äquivalent. Absichtlich kein Scheduler-Flag hier, siehe unten.
bashlerobot-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 - 4Die Log-Zeile lesen, nicht nur den Verlust
Alle --log_freq Schritte gibt lerobot loss, grdn, lr, updt_s, data_s, smp/s und, auf CUDA, mem_gb aus. mem_gb zeigt an, ob der Batch passt, lr ob der Zeitplan abnimmt, und data_s, das sich updt_s nähert, bedeutet, dass der Dataloader der Engpass ist, nicht die GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Checkpoints sammeln, die Sie vergleichen können
save_freq ist standardmäßig 20000, daher hinterlässt ein 20000-Schritte-Lauf einen Checkpoint und nichts zum Vergleich. Setzen Sie 2000. Das Pushen zum Hub erfordert --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Fortsetzen, wenn die Maschine ausfällt
Richten Sie --config_path auf die train_config.json neben dem Checkpoint. lerobot weigert sich, in ein bestehendes output_dir zu starten, es sei denn, Sie setzen fort, sodass Sie einen Lauf nicht versehentlich überschreiben können.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Die Flags, die das Ergebnis tatsächlich ändern
| Flag | Was es bewirkt | Auf 24 GB |
|---|---|---|
| --batch_size | Samples pro Schritt, ungefähr linear im VRAM | 4 bis 8 |
| --steps | Gesamtzahl der Optimierungsschritte | 20000 erster Durchlauf |
| --policy.scheduler_decay_steps | Länge des Cosine Decay, voreingestellt 30000 | Wirkt nur über 30000 |
| --policy.use_amp | Gemischte Präzision; SmolVLA hat kein dtype-Feld | true bei knappem Speicher |
| --num_workers | Dataloader-Prozesse, Standard 4 | Erhöhen, bis data_s nicht mehr steigt |
| --dataset.eval_split | Anteil der pro Aufgabe zurückgehaltenen Episoden | 0.1, mit --eval_steps |
| --policy.freeze_vision_encoder | Hält den Vision-Encoder eingefroren | true auf 24 GB |
| --policy.train_expert_only | Nur der ~100 M Experte erhält Gradienten | true zuerst |
SmolVLA voreingestellt einen Cosinus-Zeitplan: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Ältere Ratschläge besagen, dass ein 20000-Schritte-Lauf daher mitten im Abfall stagniert. In 0.6.1 ist das nicht der Fall: `CosineDecayWithWarmupSchedulerConfig.build()` erhält `--steps`, und unterhalb von `num_decay_steps` skaliert es beides neu, Warmup 1000 auf 666 und Decay 30000 auf 20000, wobei es Auto-scaling LR scheduler ausgibt. Es skaliert niemals nach oben: der Abfall wird mit `min(current_step, decay_steps)` begrenzt, sodass der Standard `--steps=100000` von Schritt 30000 bis zum Ende, 70 Prozent des Laufs, auf dem Minimum verbleibt. Nur diese lange Seite benötigt noch `--policy.scheduler_decay_steps`. Die Spalte `lr` ist der Ort, an dem Sie dies überprüfen können.
Die Standardwerte, die Sie übernehmen, wenn Sie nichts ändern
Eine Richtlinien-Konfiguration in lerobot enthält eigene Optimizer- und Scheduler-Voreinstellungen, und sofern Sie nicht use_policy_training_preset=false setzen, haben diese Voreinstellungen Vorrang. Die Hälfte der Fragen, die Leute zum SmolVLA-Training stellen, werden durch einen Standard beantwortet, dessen Existenz sie nicht kannten.
| Einstellung | Standard in lerobot 0.6.1 | Definiert in |
|---|---|---|
| chunk_size / n_action_steps | 50 / 50 | SmolVLAConfig |
| num_steps (flow matching denoise) | 10 | SmolVLAConfig |
| optimizer_lr | 1e-4 | SmolVLAConfig |
| scheduler_warmup_steps | 1000 | SmolVLAConfig |
| scheduler_decay_steps | 30000 | SmolVLAConfig |
| scheduler_decay_lr | 2.5e-6 | SmolVLAConfig |
| freeze_vision_encoder | true | SmolVLAConfig |
| train_expert_only | true | SmolVLAConfig |
| batch_size / steps | 8 / 100000 | TrainPipelineConfig |
| seed / save_freq / num_workers | 1000 / 20000 / 4 | TrainPipelineConfig |
Die beiden Zeilen, die überraschen, sind freeze_vision_encoder und train_expert_only, beide auf 'true' gesetzt. Standardmäßig trainieren Sie etwa 100 M Parameter, nicht 450 M, weshalb es auf 24 GB passt. LeRobot's eigener Referenzlauf auf einem H100-Cluster mit vier GPUs setzt beide auf 'false'; auf einer 24-GB-Karte verwandelt dies einen funktionierenden Lauf in einen Out-of-Memory-Absturz.
Der Rat des Leitfadens, wenn Sie speicherbegrenzt sind, ist, die Batch-Größe zu reduzieren und Gradientenakkumulation zu verwenden, um den effektiven Batch wiederherzustellen. Es gibt keine Gradientenakkumulation in lerobot 0.6.1: TrainPipelineConfig hat kein solches Feld und der String erscheint nirgendwo im veröffentlichten Paket. Das AY-Robots-Formular zeigt einen Gradientenakkumulationswert von 8 für SmolVLA und wendet ihn ebenfalls nicht an. Ihre Hebel auf 24 GB sind --batch_size, die beiden Freeze-Standardwerte und --policy.use_amp.
Wie lange der Lauf dauert und wie viele Schritte ausreichend sind
LeRobot veröffentlicht Echtzeit-Anker für fünf Epochen über einen Datensatz von etwa 50 Episoden, etwa 45000 Frames bei 30 fps. Größenordnungszahlen, so die Dokumentation, aber sie machen den Unterschied aus, ob man eine Stunde oder einen Tag erwartet.
| Einrichtung | Policy | Batch | Reine Rechenzeit |
|---|---|---|---|
| Einzelne L4 / A10G (24 GB) | smolvla | 4 | ca. 3 bis 6 h |
| Einzelne A100 40 GB | smolvla | 16 | ca. 1 bis 2 h |
| 4 x H100 80 GB mit accelerate | smolvla | 32 | ca. 1 bis 2 h |
| Einzelne RTX 4090 / RTX 3090 (24 GB) | act | 8 | ca. 30 bis 60 min |
Die Regel sind 5 bis 10 Epochen über dem Datensatz, nicht eine feste Schrittzahl: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). Auf dem Referenzdatensatz, auf den die Dokumentation verweist, lerobot/svla_so100_pickplace, melden die Metadaten 50 Episoden und 19631 Frames: Batch 8 ergibt etwa 2454 Schritte pro Epoche, sodass 20000 Schritte ungefähr 8 Epochen entsprechen. Halbieren Sie den Batch, und das gleiche Budget ermöglicht die Hälfte der Epochen. Wiederholen Sie dies also, wann immer Sie --batch_size ändern.
Ausführen der feinabgestimmten Policy auf dem Arm
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_placeDie 245 ms pro Aktionsschritt sind leicht misszuverstehen: Die Policy emittiert chunk_size = 50 Aktionen pro Forward-Pass und führt n_action_steps = 50 davon aus, wie oft diese Kosten anfallen, wird also durch diese Parameter bestimmt, nicht dadurch, wie oft die Servos einen Befehl erhalten. Das ist es, was bringt, und warum ein 245 ms Modell einen 30 Hz Arm steuern kann. Was übrig bleibt, ist die am Ende des Chunks.
| Messung (SmolVLA, echter SO-100) | Synchron | Asynchron |
|---|---|---|
| Abschlusszeit, Pick-and-Place, 10 Versuche | 13.75 s | 9.70 s |
| Pick-and-Place-Zyklen in einem festen Zeitfenster | 9 | 19 |
| Erfolgsrate gemittelt über die drei Aufgaben | 78.3 % | 73.3 % |
Diese dritte Zeile wird in den meisten Berichten übersprungen. Asynchrone Inferenz ist etwa 30 Prozent schneller und verdoppelt die Durchsatzrate in einem festen Zeitfenster, und das Paper bezeichnet die Erfolgsraten als vergleichbar, was sie im Durchschnitt auch sind. Darunter fiel das Sortieren von 70 auf 50 Prozent, während Pick-and-Place um 5 Prozent zulegte. lerobot 0.6.1 enthält den anderen Hebel im selben Binary: --inference.type=rtc schaltet den Rollout auf Echtzeit-Chunking um, was der eigene Nutzungsblock des Skripts für die langsamen VLAs, Pi0, Pi0.5 und SmolVLA empfiehlt.
Die Regelschleife beträgt je nach Modell 20 bis 485 ms pro Aktionsschritt, und zusätzliche Roundtrips über das öffentliche Internet verwandeln eine funktionierende Policy in eine zögerliche. Remote-Inferenz ist für langsames Pick-and-Place praktikabel, nicht für schnelle reaktive Bewegungen: Wenn die Aufgabe schnelle Korrekturen erfordert, gehört die GPU in dasselbe LAN wie der Arm.
Abseits des Themas für einen Trainingslauf, aber es beendet mehr SO-100-Projekte als jeder Hyperparameter. Die Feetech STS3215 Servos im SO-100 und SO-101 laufen mit 7.4 V; 12 V zerstört sie. Der LeKiwi kombiniert einen 7.4 V Arm mit einer 12 V Basis, wodurch der falsche Hohlstecker die falsche Buchse findet.
Zwei Wege zum selben Checkpoint
Sie besitzen die Maschine, die Umgebung und das Debugging. Die einzige Cloud-Abhängigkeit ist der Hub-Download des Basis-Checkpoints. Der richtige Weg, wenn Sie die Policy ändern möchten, wenn die Daten Ihr Netzwerk nicht verlassen dürfen oder wenn die Karte ungenutzt ist.
- Sie steuern das CUDA-Wheel, den Treiber, den ffmpeg-Build und den Dataloader.
- Sie können configuration_smolvla.py patchen und noch am selben Nachmittag neu trainieren.
- Sie zahlen in Strom und Zeit, nicht pro Lauf, und debuggen TorchCodec selbst.
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=trueDerselbe Lauf hinter einem Formular: Sie wählen Modell und Datensatz, das Backend mietet eine GPU nach benötigtem VRAM, führt den Trainer aus und schreibt Checkpoints in den Objektspeicher. Der Datensatz kann von einer Hugging Face Repo-ID, dem öffentlichen Verzeichnis, oder Ihrer Maschine stammen. Beginnen Sie bei SmolVLA auf SO-100, oder der Matrix auf der Trainingsseite.
| Feld | Standardwert, den die Plattform für SmolVLA sendet | Hinweis |
|---|---|---|
| Batch-Größe | 2 | Konservativ für die 24 GB-Stufe |
| Lernrate | 1e-4 | Die lerobot-Voreinstellung |
| Max. Schritte | 20000 | Der Referenzlauf in den LeRobot-Dokumenten |
| Gradientenakkumulation | 8 | Im Formular angezeigt, nicht angewendet |
| Zusätzliche Einstellungen | seed, logFreq | Seed macht den Lauf wiederholbar |
- 2 bis 5 Stunden auf der 24 GB-Stufe, etwa 1 bis 3 USD pro Lauf.
- Dieselben Operationen von einem Terminal unter /cli und von KI-Agenten unter /mcp.
- Inferenz-Pods verfügen über einen Leerlauf-Watchdog, sodass ein vergessener Pod sich selbst zerstört, anstatt stillschweigend abzurechnen.
- Noch kein Arm? /live streamt einen physischen SO-100, den Sie ohne Anmeldung steuern können.
Ein in der Warteschlange feststeckender Job ist ein Symptom des Spotmarktes, kein Fehler: Trainingsjob in der Warteschlange festgesteckt. Schritt für Schritt: trainieren Sie Ihre erste Policy und die Trainingsdokumentation.
Wenn SmolVLA die falsche Wahl ist
Der Test, ob SmolVLA der richtige erste Lauf war, ist nicht, ob es funktioniert hat, sondern ob der Fehler Ihnen etwas gesagt hat. Erreichen Sie 60 oder 70 Prozent, und ein größeres Modell ist eine vernünftige nächste Investition: Die Daten enthalten ein Signal. Erreichen Sie 10 Prozent, und ein 3-B-Modell erreicht höchstwahrscheinlich auch 10 Prozent, was Sie gerade für drei statt zwölf Dollar gelernt haben.

Lesenswert, bevor Sie mehr ausgeben: Pi0.5 gegen SmolVLA für mehr Kapazität bei gleicher Idee, und GR00T N1.7 gegen SmolVLA für den NVIDIA-Weg, beide 80 GB Tier für 4 bis 12 USD pro Lauf. Der andere Weg, ACT ist die günstigere Basislinie: 80 M Parameter, 20 ms pro Aktionsschritt, keine Sprachkonditionierung. Alle fünf befinden sich auf der Policies-Seite; der Arena hat 85 Modelle und 332 Benchmark-Ergebnisse.

Die Checkliste, bevor Sie etwas skalieren
- Hat der
lrseinen 2.5e-6-Mindestwert erreicht? Unter 30000 Schritten skaliert lerobot den Zerfall neu und gibt dies beim Start an; darüber legen Sie--policy.scheduler_decay_stepsselbst fest. - Mehr als ein Checkpoint und Episoden, die mit
--dataset.eval_splitzurückgehalten wurden, damit der Eval-Verlust etwas bedeutet. - Bewegt sich die Policy überhaupt? Ein fallender Verlust bei einem bewegungslosen Arm hat spezifische Ursachen: Verlust fällt, Policy tut nichts.
- Überlebt sie einen Szenenwechsel? Wenn nicht: Policy funktioniert nur in einem Setup.
- Haben Sie den Seed notiert? lerobot verwendet standardmäßig 1000, sodass zwei unberührte Läufe vergleichbar bleiben.
- Erst dann: mehr Episoden, mehr Variation oder ein größeres Modell. In dieser Reihenfolge.
Warum diese Modelle existieren und was sie mit der Spracheingabe tun, ist der Hintergrund; führt die Montage durch bis zum ersten Lauf. Für den fertigen Checkpoint, ; wenn der Arm nie erscheint, .
Trainieren Sie SmolVLA an Ihrem eigenen Arm
Wählen Sie das Modell und den Arm aus, und der Leitfaden gibt Ihnen die genauen Standardwerte, das Datensatzformat und die Kosten des Laufs an. SmolVLA befindet sich auf der 24-GB-Stufe und kostet 1 bis 3 USD pro Lauf.
Trainingsleitfäden öffnenKann ich SmolVLA wirklich auf einer RTX 4090 feinabstimmen?▾
Ja. Der Compute Guide von LeRobot beziffert den Spitzen-VRAM von SmolVLA bei Batch 8 mit AdamW auf etwa 10 bis 16 GB und listet 24 GB Consumer-Karten als komfortabel dafür auf. Der Batch 64 im Dokumentationsbeispiel ist mit einer einzelnen A100 gekoppelt. Der Speicher skaliert ungefähr linear mit dem Batch, verwenden Sie also 4 oder 8 und beobachten Sie mem_gb.
Wie viele Episoden benötige ich tatsächlich?▾
AY-Robots setzt das Minimum auf 30. Die LeRobot-Dokumentation empfiehlt etwa 50 und berichtet, dass 25 Episoden derselben Aufgabe schlecht abschnitten. Struktur schlägt Anzahl: Der Referenzdatensatz bestand aus 5 Würfelpositionen mit jeweils 10 Episoden, und diese Wiederholung ist es, die generalisiert.
Die Dokumentation sagt Batch 64, die Plattform sendet Batch 2. Was ist richtig?▾
Beides, für unterschiedliche Hardware. Das Dokumentationsbeispiel verwendet Batch 64 und gibt etwa 4 Stunden für 20000 Schritte auf einer einzelnen A100 an; der A100 40 GB Anker des Compute Guides ist Batch 16. Batch 2 ist das, was AY-Robots auf der 24 GB Stufe sendet. Lokal sind 4 bis 8 der Mittelweg, und die Epochen-Arithmetik ändert sich damit.
SmolVLA oder ACT für einen ersten Lauf auf einem SO-100?▾
ACT, wenn die Aufgabe eine sich wiederholende Bewegung ist und Sie die schnellste Schleife wünschen: 20 ms pro Aktionsschritt, 80 M Parameter, keine Sprachkonditionierung. SmolVLA, wenn Sie Sprachkonditionierung, mehrere Aufgabenstrings in einem Checkpoint und eine vortrainierte Basis wünschen. Beide liegen auf der 24 GB Stufe, die Wahl ist also die Aufgabe, nicht das Budget.
Muss ich --policy.scheduler_decay_steps setzen?▾
Nur wenn --steps über 30000 liegt. SmolVLA voreingestellt den Cosinus-Abfall bei 30000 Schritten, und lerobot 0.6.1 skaliert ihn für einen kürzeren Lauf selbstständig herunter und protokolliert dabei "Auto-scaling LR scheduler". Es skaliert niemals hoch, sodass die Standardeinstellung --steps=100000 die letzten 70000 Schritte auf dem 2.5e-6 Boden belässt.
Sources
- SmolVLA: Ein Vision-Language-Action-Modell für erschwingliche und effiziente Robotik
- SmolVLA: Effizientes Vision-Language-Action-Modell (Hugging Face Blog)
- lerobot/smolvla_base Modellkarte
- LeRobot Dokumentation: SmolVLA
- LeRobot Dokumentation: Compute HW Guide für LeRobot Training
- LeRobot Dokumentation: Installation
- LeRobot Dokumentation: LeRobotDataset v3.0 und der v2.1 Konverter
- LeRobot Dokumentation: Asynchrone Inferenz
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (Strategien und RTC Inferenz)
- lerobot v0.6.1: pyproject.toml (Extras und Konsolen-Einstiegspunkte)
- lerobot auf PyPI
- lerobot/svla_so100_pickplace Datensatz (50 Episoden, 19631 Frames, v3.0)
Quellen
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot/smolvla_base model card
- LeRobot docs: SmolVLA
- LeRobot docs: Compute HW Guide for LeRobot Training
- LeRobot docs: Installation
- LeRobot docs: LeRobotDataset v3.0 and the v2.1 converter
- LeRobot docs: Asynchronous Inference
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategies and RTC inference)
- lerobot v0.6.1: pyproject.toml (extras and console entry points)
- lerobot on PyPI
- lerobot/svla_so100_pickplace dataset (50 episodes, 19631 frames, v3.0)
Bereit für hochwertige Robotik-Daten?
AY-Robots verbindet Ihre Roboter mit qualifizierten Operatoren weltweit.
Jetzt starten