Die SmolVLA Modellseite auf AY-Robots zeigt die Parameteranzahl, GPU-Klasse, Inferenzlatenz pro Aktionsschritt und die minimale Episodenanzahl
SmolVLALeRobotVLA-TrainingFeinabstimmungSO-100

Wie man SmolVLA auf einer 24 GB GPU trainiert (lerobot 0.6.1)

AY-Robots Research23. August 202617 Min. Lesezeit

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.

EigenschaftWertQuelle
Gesamtparameteretwa 450 Mpaper
Aktionsexperteetwa 100 M, Flow-Matchingpaper
VLM-RückgratHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
Verwendete VLM-Schichtenerste 16 des Sprachmodellsnum_vlm_layers = 16
Visuelle Token pro Frame64, Pixel-Shuffle, kein Tilingpaper
Vortraining481 Community-Datensätze, 22.9 K Episoden, 10.6 M Frames; 200000 Schritte bei globaler Batch-Größe 256 auf 4 GPUspaper

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.

Die ehrliche Version der Größenangabe

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.

GruppeRichtlinienSpitzen-VRAM (Batch 8, AdamW)Einsteiger-GPUs
Leichte BCact, vqbet, tdmpcca. 2 bis 6 GBRTX 3060, L4
Diffusiondiffusion, multi_task_ditca. 8 bis 14 GBRTX 4070+, L4
Kleines VLAsmolvlaca. 10 bis 16 GBRTX 4080+, L4, A10G
Großes VLApi0, pi0_fast, pi05, xvla, wall_xca. 24 bis 40 GBA100 40 GB+
Multimodalgroot, eo1ca. 24 bis 40 GBA100 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.

AY-Robots Kostentabelle: Karte pro Richtlinie, Laufzeit, Preis pro Lauf, benötigte Episoden
SmolVLA und ACT befinden sich in der 24-GB-Zeile, die drei 3-B-Modelle in der 80-GB-Zeile.
Starten mit SmolVLA anstelle eines 3-B-Modells
Was Sie erhalten
  • 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.
Was Sie aufgeben
  • 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.
Die Datensatzfalle, die einen Tag kostet

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.

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
Der Konverter ist in lerobot enthalten, sodass nichts zusätzlich installiert werden muss. Es gibt keinen Konverter in die andere Richtung im Paket.

Mehr 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

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
Der PyPI-Pfad. Um den Trainer zu patchen, klonen Sie das Repository und verwenden Sie stattdessen pip install -e ".[smolvla,training]".

Die 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 und policy.type sind nicht dasselbe Flag

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

  1. 1
    Authentifizierung am Hub

    Der Basis-Checkpoint stammt vom Hub, und Ihr Datensatz wahrscheinlich auch.

    bash
    hf auth login
  2. 2
    Optionen einmal lesen

    Jedes Feld der Pipeline- und Policy-Konfiguration ist ein Flag. Überfliegen Sie es, bevor Sie sich in den Quellcode vertiefen.

    bash
    lerobot-train --help
  3. 3
    Das 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.

    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
    Die 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
  5. 5
    Checkpoints 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
  6. 6
    Fortsetzen, 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.

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

Die Flags, die das Ergebnis tatsächlich ändern

FlagWas es bewirktAuf 24 GB
--batch_sizeSamples pro Schritt, ungefähr linear im VRAM4 bis 8
--stepsGesamtzahl der Optimierungsschritte20000 erster Durchlauf
--policy.scheduler_decay_stepsLänge des Cosine Decay, voreingestellt 30000Wirkt nur über 30000
--policy.use_ampGemischte Präzision; SmolVLA hat kein dtype-Feldtrue bei knappem Speicher
--num_workersDataloader-Prozesse, Standard 4Erhöhen, bis data_s nicht mehr steigt
--dataset.eval_splitAnteil der pro Aufgabe zurückgehaltenen Episoden0.1, mit --eval_steps
--policy.freeze_vision_encoderHält den Vision-Encoder eingefrorentrue auf 24 GB
--policy.train_expert_onlyNur der ~100 M Experte erhält Gradiententrue zuerst
Der Zeitplan: Was 0.6.1 handhabt und was nicht

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.

EinstellungStandard in lerobot 0.6.1Definiert in
chunk_size / n_action_steps50 / 50SmolVLAConfig
num_steps (flow matching denoise)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

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 nicht vorhandene Speicherregler

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.

EinrichtungPolicyBatchReine Rechenzeit
Einzelne L4 / A10G (24 GB)smolvla4ca. 3 bis 6 h
Einzelne A100 40 GBsmolvla16ca. 1 bis 2 h
4 x H100 80 GB mit acceleratesmolvla32ca. 1 bis 2 h
Einzelne RTX 4090 / RTX 3090 (24 GB)act8ca. 30 bis 60 min
Führen Sie die Epochen-Arithmetik durch, bevor Sie --steps wählen

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

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
Die Aufgabenzeichenkette muss mit der übereinstimmen, mit der Sie aufgezeichnet haben. Das Modell ist auf diesen Text konditioniert, daher ist eine Paraphrase eine andere Anweisung.

Die 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)SynchronAsynchron
Abschlusszeit, Pick-and-Place, 10 Versuche13.75 s9.70 s
Pick-and-Place-Zyklen in einem festen Zeitfenster919
Erfolgsrate gemittelt über die drei Aufgaben78.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.

Inferenz muss neben den Servos sitzen

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.

7.4 V, nicht 12 V

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.
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
Der gesamte manuelle Weg in einem Block, lerobot 0.6.1.

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.

Die AY-Robots Trainingsmatrix: fünf Policies als Zeilen, vier Roboterarme als Spalten
Jede Zelle ist ihr eigener Leitfaden. SmolVLA hat einen für jeden der vier Arme.

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.

Der AY-Robots Policies-Vergleich: Parameter, GPU-Tier, Latenz, minimale Episoden
Die vier Zahlen, die einen Lauf bestimmen.

Die Checkliste, bevor Sie etwas skalieren

  1. Hat der lr seinen 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_steps selbst fest.
  2. Mehr als ein Checkpoint und Episoden, die mit --dataset.eval_split zurückgehalten wurden, damit der Eval-Verlust etwas bedeutet.
  3. Bewegt sich die Policy überhaupt? Ein fallender Verlust bei einem bewegungslosen Arm hat spezifische Ursachen: Verlust fällt, Policy tut nichts.
  4. Überlebt sie einen Szenenwechsel? Wenn nicht: Policy funktioniert nur in einem Setup.
  5. Haben Sie den Seed notiert? lerobot verwendet standardmäßig 1000, sodass zwei unberührte Läufe vergleichbar bleiben.
  6. 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 öffnen
Kann 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.

Bereit für hochwertige Robotik-Daten?

AY-Robots verbindet Ihre Roboter mit qualifizierten Operatoren weltweit.

Jetzt starten