
SmolVLA is een VLA met 450 miljoen parameters die finetunet op één enkele 24 GB kaart. Echte lerobot 0.6.1 commando's, de werkelijke standaardinstellingen, de valkuilen die een dag kosten, en wat een run kost.
SmolVLA in één scherm
- •450 M parameters, waarvan ongeveer 100 M een flow matching actie-expert is. lerobot traint alleen die expert en houdt de VLM bevroren, daarom past het op één kaart.
- •De compute-gids van LeRobot schat de smolvla-groep op ongeveer 10 tot 16 GB piek VRAM bij batch 8 met AdamW. Vandaar 24 GB.
- •Het startpunt is lerobot-train. De SmolVLA blogpost van juni 2025 print nog steeds python lerobot/scripts/train.py, een pad dat niet langer bestaat. Alles hieronder is lerobot 0.6.1.
- •Het cosinus-schema is vooraf ingesteld om af te nemen over 30000 stappen. lerobot 0.6.1 schaalt dat omlaag voor een kortere run en logt het, maar nooit omhoog: de standaard 100000 stappen run eindigt op de 2.5e-6 bodem voor 70000 stappen.
- •Dertig afleveringen is het AY-Robots minimum, op een 24 GB tier die 1 tot 3 USD per run kost, tegenover 4 tot 12 voor de 80 GB modellen.
De meeste mensen die een visie-taal-actie-model op een echte arm willen, stoppen bij de hardwaregrens. GR00T N1.7 en Pi0.5 hebben elk ongeveer drie miljard parameters en vereisen een A100 80 GB of een H100. Als je een gaming-pc met een RTX 4090 bezit, is dat het einde van de weg. SmolVLA is de uitzondering: 450 M parameters, binnen LeRobot, gebouwd om te fine-tunen op één consumentenkaart en te serveren vanaf een CPU.
Eerst de handmatige route: installeer lerobot, haal het lerobot/smolvla_base checkpoint op, voer het echte commando uit, lees de run terwijl deze plaatsvindt. Daarna de platformroute, en waar deze niet helpt.
Wat SmolVLA is, in cijfers die je kunt controleren
SmolVLA is een flow matching beleid dat is gekoppeld aan een klein visueel taalmodel. De ruggengraat is SmolVLM2-500M-Video-Instruct; de paper behoudt alleen de eerste 16 lagen van het taalmodel, beperkt elk cameraframe tot 64 visuele tokens met een pixel shuffle in plaats van beeldtegels, en wisselt cross-attention af met een self-attention laag om de tweede blok. Inferencekosten waren een ontwerpbeperking, geen bijzaak.
| Eigenschap | Waarde | Bron |
|---|---|---|
| Totaal aantal parameters | about 450 M | paper |
| Actie-expert | about 100 M, flow matching | paper |
| VLM-ruggengraat | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Gebruikte VLM-lagen | first 16 of the language model | num_vlm_layers = 16 |
| Visuele tokens per frame | 64, pixel shuffle, no tiling | paper |
| Pretraining | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | paper |
De benchmarks zijn de reden waarom mensen zich bezighouden met een 450 M model. Op LIBERO behaalt het gemiddeld 87,3 procent tegen 76,5 voor OpenVLA op 7 B en 86,0 voor een robotica-voorgetrainde Pi0 op 3,3 B; op Meta-World, 57,3 tegen 47,9. Op echte SO-100 hardware levert multi-task training 75 procent op bij pick and place, 90 bij stapelen, 70 bij sorteren, met een gemiddelde van 78,3, waar ACT per taak getraind gemiddeld 48,3 behaalde. Dezelfde rijen staan naast elke gepubliceerde VLA in de SmolVLA arena-vermelding en de ACT versus SmolVLA vergelijking.
SmolVLA is niet op alle gebieden beter dan een 3 B model. De eigen SO-101 tabel van de paper is veelzeggend: 90 procent succes binnen de distributie, 50 procent daarbuiten, op een platform waarop het nooit is voorgetraind. Wat het wel beweert, en ondersteunt, is dat het ten opzichte van Pi0 ongeveer 40 procent sneller traint met 6 keer minder geheugen.
Waarom een 24 GB kaart de juiste eerste run is
LeRobot levert een rekencapaciteitsgids, de meest nuttige pagina in de repository hiervoor. Het groepeert beleidsregels op basis van backbone-grootte en geeft één VRAM-envelop per groep, gemeten bij batchgrootte 8 met AdamW, de standaard van lerobot. De optimizer-status alleen voegt 30 tot 100 procent toe bovenop een kale forward- en backward-pass, dus dit zijn geen cijfers die alleen op gewichten gebaseerd zijn.
| Groep | Beleidsregels | Piek VRAM (batch 8, AdamW) | Starter GPU's |
|---|---|---|---|
| Lichte BC | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| Diffusie | diffusion, multi_task_dit | about 8 to 14 GB | RTX 4070+, L4 |
| Kleine VLA | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| Grote VLA | pi0, pi0_fast, pi05, xvla, wall_x | about 24 to 40 GB | A100 40 GB+ |
| Multimodaal | groot, eo1 | about 24 to 40 GB | A100 40 GB+ |
Tien tot zestien gigabytes bij batch 8 is het argument: een 24 GB kaart past daarbij, plus de dataloader. AY-Robots plaatst SmolVLA op de RTX 4090 of elke 24 GB kaart, minimaal 30 afleveringen, LeRobot v3.0 data, 245 ms per actiestap. Gehuurd, dat is 2 tot 5 uur à 0.30 tot 0.60 USD per uur, ongeveer 1 tot 3 USD per een fijnafstemming run, tegen 4 tot 12 USD op de 80 GB tier die GR00T en Pi0.5 nodig hebben (prijzen). Een mislukte SmolVLA run is een kop koffie; een mislukte GR00T run, lunch.

- Past op hardware die je mogelijk al bezit: ongeveer 10 tot 16 GB bij batch 8.
- Een verspilde run kost uren en enkele dollars, dus je kunt het je veroorloven om fout te zitten over de dataset.
- Voorgetraind op community-datasets gedeeld onder de lerobot-tag, met echte SO-100 en SO-101 resultaten.
- Het leeft in lerobot zelf: geen vendor repo, en smolvla_base is niet afgeschermd.
- 450 M is nog steeds 450 M: het succes buiten de distributie daalt van 90 naar 50 procent in tabel SO-101 van het artikel.
- Het vereist LeRobot v3.0-gegevens; een v2.1-opname moet worden geconverteerd (dataset rejected v3).
- 245 ms per actiestap is een competente pick-and-place controller, geen reactieve.
- Het voorbeeld in de documentatie draait batch 64 op een A100; op 24 GB ruil je batch in voor wandkloktijd.
Stap 0: de dataset bepaalt de run, niet de flags
Niets hieronder is van belang als de opname slecht is. De LeRobot SmolVLA-pagina is duidelijk: de referentiedataset bestond uit 50 afleveringen verdeeld over 5 kubusposities, 10 per positie, en dezelfde taak met 25 afleveringen presteerde slecht. Herhaling per variatie generaliseert, het ruwe aantal afleveringen niet. Nog nooit een opgenomen? Begin bij neem je eerste dataset op, met de desktopclient, die LeRobot-formaat schrijft vanuit een teleoperatie-sessie, of leen er een uit de datasetmap.
- Minimaal 30 afleveringen op AY-Robots, ongeveer 50 voor het LeRobot referentierecept.
- Elke variatie die je verwacht bij de uitrol, meerdere keren herhaald.
- Eén taakstring, identiek gespeld tijdens opname en uitrol. Het model is geconditioneerd op die tekst.
- Vaste camera's. Een camera die is verplaatst tussen opname en uitrol is de meest voorkomende reden dat een schone verliescurve resulteert in een bewegingloze arm.
- Een achtergehouden variatie waarop je nooit hebt getraind, zodat je iets eerlijks hebt om tegen te testen.
SmolVLA, Pi0.5 en ACT willen LeRobot v3.0. GR00T N1.7 en N1.5 willen v2.0 of v2.1 en hun loader crasht op v3.0. Neem één keer op, plan om modellen later te vergelijken, en je zult hoe dan ook converteren: dataset rejected v3.
# 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_placeMeer hierover in hoe je hoogwaardige VLA-trainingsdata verzamelt. De korte versie: 30 tot 50 schone afleveringen van één taak met opzettelijke variatie verslaan 200 slordige afleveringen van drie, met een marge die geen enkele hyperparameter dicht.
Installeer lerobot 0.6.1
# 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-infoDe basis lerobot installatie is licht en plaatst zware afhankelijkheden achter extra's: smolvla voegt transformers, num2words en accelerate toe, training de dataset-stack en wandb, core_scripts de hardware- en visualisatie-afhankelijkheden. Op Linux bepaalt het installatiepad ook je CUDA-wheel: de PyPI-standaard is een cu130-wheel met een driververeiste van minimaal 580.65, dus installeer bij een oudere driver eerst torch vanaf de cu128-index, en daarna lerobot.
--policy.path=lerobot/smolvla_base laadt het voorgegetrainde 450 M checkpoint en fine-tuned het. --policy.type=smolvla bouwt een nieuwe SmolVLA, en de standaardconfiguratie load_vlm_weights = False betekent dat het de SmolVLM2 backbone-gewichten niet eens ophaalt, tenzij je erom vraagt. Als je dit verkeerd doet, traint de run vrolijk door, kost hetzelfde, en leert niets overdraagbaars.
De trainingsrun, commando voor commando
- 1Authenticeer tegen de Hub
Het basischeckpoint komt van de Hub, en je dataset waarschijnlijk ook.
bashhf auth login - 2Lees de opties één keer
Elk veld van de pipeline- en beleidsconfiguratie is een vlag. Scan het voordat je in de bron duikt.
bashlerobot-train --help - 3Start de fine-tune
Het voorbeeld in de documentatie draait batch 64 op een enkele A100; de eigen A100 40 GB anker van de compute-gids is batch 16, en 8 is het 24 GB equivalent. Geen scheduler-vlag hier met opzet, zie hieronder.
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 - 4Lees de logregel, niet alleen het verlies
Elke --log_freq stappen print lerobot loss, grdn, lr, updt_s, data_s, smp/s en, op CUDA, mem_gb. mem_gb geeft aan of de batch past, lr of de scheduler afneemt, en data_s die updt_s nadert betekent dat de dataloader de bottleneck is, niet de GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Verzamel checkpoints die je kunt vergelijken
save_freq is standaard 20000, dus een run van 20000 stappen laat één checkpoint achter en niets om het mee te vergelijken. Stel 2000 in. Pushen naar de Hub vereist --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Hervat als de machine uitvalt
Wijs --config_path naar de train_config.json naast het checkpoint. lerobot weigert te starten in een bestaande output_dir tenzij je hervat, zodat je een run niet per ongeluk kunt overschrijven.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
De vlaggen die het resultaat daadwerkelijk veranderen
| Vlag | Wat het doet | Op 24 GB |
|---|---|---|
| --batch_size | Samples per stap, ruwweg lineair in VRAM | 4 tot 8 |
| --steps | Totaal aantal optimizer stappen | 20000 eerste keer |
| --policy.scheduler_decay_steps | Lengte van cosinus decay, ingesteld op 30000 | Werkt alleen boven 30000 |
| --policy.use_amp | Gemengde precisie; SmolVLA heeft geen dtype-veld | true als geheugen krap is |
| --num_workers | Dataloader processen, standaard 4 | Verhoog tot data_s niet meer stijgt |
| --dataset.eval_split | Fractie van afleveringen per taak achtergehouden | 0.1, met --eval_steps |
| --policy.freeze_vision_encoder | Houdt de vision tower bevroren | true op 24 GB |
| --policy.train_expert_only | Alleen de ~100 M expert krijgt gradiënten | true eerst |
SmolVLA stelt een cosinus-schema in: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Ouder advies stelt dat een run van 20000 stappen daardoor halverwege de decay stagneert. In 0.6.1 is dat niet het geval: `CosineDecayWithWarmupSchedulerConfig.build()` krijgt `--steps` overhandigd, en onder `num_decay_steps` schaalt het beide opnieuw, warmup 1000 naar 666 en decay 30000 naar 20000, waarbij het *Auto-scaling LR scheduler* afdrukt. Het schaalt nooit omhoog: de decay wordt begrensd met `min(current_step, decay_steps)`, dus de standaard `--steps=100000` blijft vanaf stap 30000 tot het einde, 70 procent van de run, op de bodem. Alleen die lange zijde heeft nog steeds `--policy.scheduler_decay_steps` nodig. De `lr`-kolom is waar je dit controleert.
De standaardinstellingen die je overneemt als je niets aanraakt
Een beleid configuratie in lerobot heeft zijn eigen optimizer en scheduler preset, en tenzij je use_policy_training_preset=false instelt, winnen die presets. De helft van de vragen die mensen stellen over SmolVLA-training worden beantwoord door een standaardinstelling waarvan ze het bestaan niet wisten.
| Instelling | Standaard in lerobot 0.6.1 | Gedefinieerd 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 |
De twee regels die mensen verrassen zijn freeze_vision_encoder en train_expert_only, beide waar. Standaard train je ongeveer 100 M parameters, niet 450 M, daarom past het op 24 GB. LeRobot's eigen referentierun op een vier-GPU H100 cluster zet beide op onwaar; op één 24 GB kaart verandert dat een werkende run in .
Het advies van de gids wanneer je geheugenbeperkt bent, is om de batchgrootte te verlagen en gradiëntaccumulatie te gebruiken om de effectieve batch te herstellen. Er is geen gradiëntaccumulatie in lerobot 0.6.1: TrainPipelineConfig heeft geen dergelijk veld en de string verschijnt nergens in het uitgebrachte pakket. Het AY-Robots formulier toont een gradiëntaccumulatiewaarde van 8 voor SmolVLA en past deze ook niet toe. Jouw hefbomen op 24 GB zijn --batch_size, de twee freeze-standaardinstellingen, en --policy.use_amp.
Hoe lang de run duurt, en hoeveel stappen voldoende zijn
LeRobot publiceert 'wall-clock' ankers voor vijf epochs over een dataset van ongeveer 50 afleveringen, ongeveer 45000 frames bij 30 fps. Ordegrootte cijfers, zeggen de documenten, maar ze maken het verschil tussen het verwachten van een uur en een dag.
| Opstelling | Beleid | Batch | Reële tijd |
|---|---|---|---|
| Enkele L4 / A10G (24 GB) | smolvla | 4 | ongeveer 3 tot 6 uur |
| Enkele A100 40 GB | smolvla | 16 | ongeveer 1 tot 2 uur |
| 4 x H100 80 GB met accelerate | smolvla | 32 | ongeveer 1 tot 2 uur |
| Enkele RTX 4090 / RTX 3090 (24 GB) | act | 8 | ongeveer 30 tot 60 min |
De regel is 5 tot 10 epochs over de dataset, niet een vast aantal stappen: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). Op de referentiedataset waarnaar de documentatie verwijst, lerobot/svla_so100_pickplace, rapporteert de metadata 50 episodes en 19631 frames: batch 8 geeft ongeveer 2454 stappen per epoch, dus 20000 stappen is ruwweg 8 epochs. Halveer de batch en hetzelfde budget levert de helft van de epochs op, dus herhaal dit telkens wanneer u --batch_size aanraakt.
Het verfijnde beleid opnieuw uitvoeren op de 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_placeDe 245 ms per actiestap is gemakkelijk verkeerd te interpreteren: het beleid zendt chunk_size = 50 acties uit per forward pass en voert er n_action_steps = 50 van uit, dus hoe vaak je die kosten betaalt, wordt bepaald door die instellingen, niet door hoe vaak de servo's een commando krijgen. Dat is wat actie-chunking oplevert, en waarom een model van 245 ms een arm van 30 Hz kan aansturen. Wat overblijft is inferentielatentie aan het einde van de chunk.
| Meting (SmolVLA, echte SO-100) | Synchroon | Asynchroon |
|---|---|---|
| Voltooiingstijd, pick-and-place, 10 proeven | 13.75 s | 9.70 s |
| Pick-and-place cycli in een vast tijdsvenster | 9 | 19 |
| Succespercentage gemiddeld over de drie taken | 78.3 % | 73.3 % |
Die derde rij is wat de meeste verslagen overslaan. Asynchrone inferentie is ongeveer 30 procent sneller en verdubbelt ruwweg de doorvoer in een vast tijdsvenster, en het artikel noemt de succespercentages vergelijkbaar, wat ze gemiddeld ook zijn. Daaronder daalde sorteren van 70 naar 50 procent, terwijl pick-and-place er 5 bij kreeg. lerobot 0.6.1 bevat de andere hendel in dezelfde binary: --inference.type=rtc schakelt de rollout over naar real-time chunking, wat het eigen gebruiksblok van het script aanbeveelt voor de langzame VLA's, Pi0, Pi0.5 en SmolVLA.
De besturingslus is 20 tot 485 ms per actiestap, afhankelijk van het model, en round-trips via het openbare internet maken van een werkend beleid een aarzelend beleid. Inferentie op afstand is haalbaar voor langzame pick-and-place, niet voor snelle reactieve bewegingen: als de taak snelle correcties vereist, hoort de GPU op hetzelfde LAN als de arm.
Niet direct gerelateerd aan een trainingsrun, maar het beëindigt meer SO-100 projecten dan welke hyperparameter dan ook. De Feetech STS3215 servo's in de SO-100 en SO-101 werken op 7.4 V; 12 V vernietigt ze. De LeKiwi combineert een 7.4 V arm met een 12 V basis, en zo vindt de verkeerde barrel jack de verkeerde aansluiting.
Twee routes naar hetzelfde checkpoint
U bent eigenaar van de machine, de omgeving en het debuggen. De enige cloudafhankelijkheid is de Hub-download van het basischeckpoint. De juiste route als u het beleid wilt aanpassen, als de gegevens uw netwerk niet mogen verlaten, of als de kaart inactief is.
- U beheert de CUDA-wheel, de driver, de ffmpeg-build en de dataloader.
- U kunt configuration_smolvla.py patchen en dezelfde middag opnieuw trainen.
- U betaalt in elektriciteit en tijd, niet per run, en debugt TorchCodec zelf.
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=trueDezelfde run achter een formulier: u kiest model en dataset, de backend huurt een GPU op basis van de benodigde VRAM, draait de trainer en schrijft checkpoints naar objectopslag. De dataset kan afkomstig zijn van een Hugging Face repo id, de openbare directory, of uw eigen machine. Begin bij SmolVLA op SO-100, of de matrix op de trainingspagina.
| Veld | Standaardwaarde die het platform stuurt voor SmolVLA | Opmerking |
|---|---|---|
| batch size | 2 | Conservatief voor de 24 GB tier |
| learning rate | 1e-4 | De lerobot-preset |
| max steps | 20000 | De referentierun in de LeRobot-documentatie |
| gradient accumulation | 8 | Weergegeven in het formulier, niet toegepast |
| extra knoppen | seed, logFreq | Seed maakt de run herhaalbaar |
- 2 tot 5 uur op de 24 GB tier, ongeveer 1 tot 3 USD per run.
- Dezelfde bewerkingen vanuit een terminal op /cli en van AI-agenten op /mcp.
- Inference pods hebben een inactieve watchdog, dus een vergeten pod vernietigt zichzelf in plaats van stilletjes te factureren.
- Nog geen arm? /live streamt een fysieke SO-100 die u kunt besturen zonder u aan te melden.
Een taak die vastzit in de wachtrij is een symptoom van de spotmarkt, geen bug: trainingsjob vast in wachtrij. Stap voor stap: train uw eerste beleid en de trainingsdocumentatie.
Wanneer SmolVLA de verkeerde keuze is
De test of SmolVLA de juiste eerste run was, is niet of het werkte, maar of de mislukking je iets vertelde. Bereik 60 of 70 procent en een groter model is een redelijke volgende investering: de data bevat een signaal. Bereik 10 procent en een 3 B model bereikt hoogstwaarschijnlijk ook 10 procent, wat je zojuist hebt geleerd voor drie dollar in plaats van twaalf.

Lees dit voordat u meer uitgeeft: Pi0.5 tegen SmolVLA voor meer capaciteit op basis van hetzelfde idee, en GR00T N1.7 tegen SmolVLA voor de NVIDIA-route, beide 80 GB tier voor 4 tot 12 USD per run. De andere optie, ACT is de goedkopere basislijn: 80 M parameters, 20 ms per actiestap, geen taalconditionering. Alle vijf staan op de beleidspagina; de arena heeft 85 modellen en 332 benchmarkresultaten.

De checklist voordat je iets opschaalt
- Heeft de
lrzijn ondergrens van 2.5e-6 bereikt? Onder 30000 stappen herschaalt lerobot de decay en meldt dit bij het opstarten; daarboven stel je--policy.scheduler_decay_stepszelf in. - Meer dan één checkpoint, en episodes apart gehouden met
--dataset.eval_splitzodat de eval loss iets betekent. - Beweegt het beleid überhaupt? Een dalend verlies met een bewegingloze arm heeft specifieke oorzaken: verlies daalt, beleid doet niets.
- Overleeft het een verandering van scène? Zo niet: beleid werkt alleen in één opstelling.
- Heb je de seed genoteerd? lerobot gebruikt standaard 1000, zodat twee ongewijzigde runs vergelijkbaar blijven.
- Pas dan: meer episodes, meer variatie, of een groter model. In die volgorde.
Voor waarom deze modellen bestaan en wat ze doen met de taalinput, is de achtergrond; leidt de assemblage door naar de eerste run. Voor het voltooide checkpoint, ; als de arm nooit verschijnt, .
Train SmolVLA op je eigen arm
Kies het model en de arm en de gids geeft je de exacte standaardinstellingen, het datasetformaat en wat de run kost. SmolVLA bevindt zich op de 24 GB tier voor 1 tot 3 USD per run.
Open de trainingsgidsenKan ik SmolVLA echt fine-tunen op een RTX 4090?▾
Ja. De compute-gids van LeRobot schat SmolVLA op ongeveer 10 tot 16 GB piek VRAM bij batch 8 met AdamW en vermeldt dat 24 GB consumentenkaarten hier comfortabel voor zijn. De batch 64 in het documentatievoorbeeld is gekoppeld aan een enkele A100. Geheugen schaalt ruwweg lineair met batch, dus gebruik 4 of 8 en let op mem_gb.
Hoeveel afleveringen heb ik eigenlijk nodig?▾
AY-Robots stelt het minimum in op 30. De LeRobot-documentatie beveelt ongeveer 50 aan en meldt dat 25 afleveringen van dezelfde taak slecht presteerden. Structuur is belangrijker dan aantal: de referentieset bestond uit 5 kubusposities met elk 10 afleveringen, en die herhaling is wat generaliseert.
De documentatie zegt batch 64, het platform stuurt batch 2. Wat is correct?▾
Beide, voor verschillende hardware. Het documentatievoorbeeld gebruikt batch 64 en noemt ongeveer 4 uur voor 20000 stappen op een enkele A100; de A100 40 GB-anker van de compute-gids is batch 16. Batch 2 is wat AY-Robots verstuurt op de 24 GB-laag. Lokaal is 4 tot 8 het midden, en de epoch-rekenkunde verandert daarmee.
SmolVLA of ACT voor een eerste run op een SO-100?▾
ACT als de taak één repetitieve beweging is en je de snelste lus wilt: 20 ms per actiestap, 80 M parameters, geen taalconditionering. SmolVLA als je taalconditionering wilt, meerdere taakreeksen in één checkpoint, en een voorgegetrainde basis. Beide passen op de 24 GB-laag, dus de keuze is de taak, niet het budget.
Moet ik --policy.scheduler_decay_steps instellen?▾
Alleen wanneer --steps boven 30000 is. SmolVLA stelt de cosinus-decay in op 30000 stappen, en lerobot 0.6.1 schaalt deze zelf naar beneden voor een kortere run, waarbij het "Auto-scaling LR scheduler" logt wanneer dit gebeurt. Het schaalt nooit omhoog, dus de standaard --steps=100000 laat de laatste 70000 stappen op de 2.5e-6 bodem.
Sources
- SmolVLA: Een Visie-Taal-Actie Model voor Betaalbare en Efficiënte Robotica
- SmolVLA: Efficiënt Visie-Taal-Actie Model (Hugging Face blog)
- lerobot/smolvla_base modelkaart
- LeRobot documentatie: SmolVLA
- LeRobot documentatie: Compute HW Gids voor LeRobot Training
- LeRobot documentatie: Installatie
- LeRobot documentatie: LeRobotDataset v3.0 en de v2.1 converter
- LeRobot documentatie: Asynchrone Inferentie
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategieën en RTC inferentie)
- lerobot v0.6.1: pyproject.toml (extra's en console-ingangspunten)
- lerobot op PyPI
- lerobot/svla_so100_pickplace dataset (50 afleveringen, 19631 frames, v3.0)
Sources
- 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)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started