
SmolVLA är en VLA med 450 M parametrar som finjusteras på ett enda 24 GB-kort. Verkliga lerobot 0.6.1-kommandon, de faktiska standardinställningarna, fällorna som kostade en dag, och vad en körning kostar.
SmolVLA på en skärm
- •450 M parametrar, varav cirka 100 M är en flow matching action expert. lerobot tränar endast den experten och håller VLM fryst, vilket är anledningen till att den får plats på ett kort.
- •LeRobots beräkningsguide anger smolvla-gruppen till ungefär 10 till 16 GB topp-VRAM vid batch 8 med AdamW. Därav 24 GB.
- •Startpunkten är lerobot-train. Blogginlägget om SmolVLA från juni 2025 skriver fortfarande ut python lerobot/scripts/train.py, en sökväg som inte längre existerar. Allt nedan är lerobot 0.6.1.
- •Cosinusschemat är förinställt att avta över 30000 steg. lerobot 0.6.1 skalar ner det för en kortare körning och loggar det, men aldrig upp: standardkörningen på 100000 steg slutar på 2.5e-6-golvet under 70000 steg.
- •Trettio episoder är AY-Robots minimum, på en 24 GB-nivå som kostar 1 till 3 USD per körning jämfört med 4 till 12 för 80 GB-modellerna.
De flesta som vill ha en visionsspråk-aktionsmodell på en riktig arm stannar vid hårdvarugränsen. GR00T N1.7 och Pi0.5 är runt tre miljarder parametrar vardera och kräver en A100 80 GB eller en H100. Om du äger en speldator med ett RTX 4090, är det slutet på vägen. SmolVLA är undantaget: 450 M parametrar, inuti LeRobot, byggd för att finjusteras på ett konsumentkort och köras från en CPU.
Den manuella vägen först: installera lerobot, hämta lerobot/smolvla_base checkpointen, kör det riktiga kommandot, läs körningen medan den pågår. Sedan plattformsvägen, och var den inte hjälper.
Vad SmolVLA är, i siffror du kan kontrollera
SmolVLA är en flödesmatchning policy kopplad till en liten vision-språkmodell. Ryggraden är SmolVLM2-500M-Video-Instruct; artikeln behåller endast de första 16 lagren av dess språkmodell, begränsar varje kamerabild till 64 visuella tokens med en pixel shuffle istället för bildplattläggning, och varvar korsuppmärksamhet med ett självuppmärksamhetslager varannat block. Inferenskostnaden var en designbegränsning, inte en eftertanke.
| Egenskap | Värde | Källa |
|---|---|---|
| Totala parametrar | about 450 M | paper |
| Åtgärdsexpert | about 100 M, flow matching | paper |
| VLM-ryggrad | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Använda VLM-lager | first 16 of the language model | num_vlm_layers = 16 |
| Visuella tokens per bildruta | 64, pixel shuffle, no tiling | paper |
| Förträning | 481 community datasets, 22.9 K episodes, 10.6 M frames; 200000 steps at global batch 256 on 4 GPUs | paper |
Prestandatesterna är anledningen till att folk bryr sig om en 450 M-modell. På LIBERO uppnår den i genomsnitt 87,3 procent mot 76,5 för OpenVLA vid 7 B och 86,0 för en robotik-förtränad Pi0 vid 3,3 B; på Meta-World, 57,3 mot 47,9. På verklig SO-100-hårdvara ger multi-task-träning 75 procent på plocka och placera, 90 på stapling, 70 på sortering, med ett genomsnitt på 78,3, där ACT tränad per uppgift i genomsnitt uppnådde 48,3. Samma rader finns bredvid varje publicerad VLA i SmolVLA arena-post och jämförelsen mellan ACT och SmolVLA.
SmolVLA är inte bättre än en 3 B-modell på allt. Artikelns egen SO-101-tabell avslöjar det: 90 procents framgång inom distribution, 50 procent utanför den, på en plattform den aldrig förtränades på. Vad den däremot hävdar, och stöder, är att den jämfört med Pi0 tränar cirka 40 procent snabbare på 6 gånger mindre minne.
Varför ett 24 GB-kort är det rätta för första körningen
LeRobot levererar en beräkningsstorleksguide, den mest användbara sidan i repot för detta. Den grupperar policyer efter backbone-storlek och ger en VRAM-budget per grupp, mätt vid batchstorlek 8 med AdamW, lerobots standard. Optimeringsstatusen ensam lägger till 30 till 100 procent utöver en ren framåt- och bakåtpass, så dessa är inte enbart viktsiffror.
| Grupp | Policyer | Topp-VRAM (batch 8, AdamW) | Start-GPU:er |
|---|---|---|---|
| Lätt BC | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| Diffusion | diffusion, multi_task_dit | about 8 to 14 GB | RTX 4070+, L4 |
| Liten VLA | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| Stor VLA | pi0, pi0_fast, pi05, xvla, wall_x | about 24 to 40 GB | A100 40 GB+ |
| Multimodal | groot, eo1 | about 24 to 40 GB | A100 40 GB+ |
Tio till sexton gigabyte vid batch 8 är argumentet: ett 24 GB-kort rymmer det plus dataladdaren. AY-Robots placerar SmolVLA på RTX 4090 eller vilket som helst 24 GB-kort, minst 30 episoder, LeRobot v3.0 data, 245 ms per åtgärdssteg. Hyrt, det är 2 till 5 timmar för 0.30 till 0.60 USD i timmen, cirka 1 till 3 USD per finjusterings körning, jämfört med 4 till 12 USD på 80 GB-nivån som GR00T och Pi0.5 behöver (prissättning). En misslyckad SmolVLA-körning är en kaffe; en misslyckad GR00T-körning, lunch.

- Passar hårdvara du kanske redan äger: ungefär 10 till 16 GB vid batch 8.
- En bortkastad körning kostar timmar och ensiffriga dollar, så du har råd att ha fel om datasetet.
- Förtränad på gemenskapsdataset delade under lerobot-taggen, med verkliga SO-100- och SO-101-resultat.
- Den finns i lerobot själv: inget leverantörsrepo, och smolvla_base är inte spärrad.
- 450 M är fortfarande 450 M: framgång utanför distributionen sjunker från 90 till 50 procent i artikelns SO-101-tabell.
- Den vill ha LeRobot v3.0-data; en v2.1-inspelning måste konverteras (dataset rejected v3).
- 245 ms per åtgärdssteg är en kompetent pick-and-place-kontroller, inte en reaktiv.
- Dokumentationsexemplet kör batch 64 på en A100; på 24 GB byter du batch mot väggklocka.
Steg 0: datasetet avgör körningen, inte flaggorna
Inget nedan spelar roll om inspelningen är dålig. LeRobot SmolVLA-sidan är rakt på sak: referensdatasetet var 50 episoder över 5 kubpositioner, 10 per position, och samma uppgift med 25 episoder presterade dåligt. Repetition per variation generaliserar, rått episodantal gör det inte. Har du aldrig spelat in en? Börja med spela in ditt första dataset med skrivbordsklienten, som skriver LeRobot-format från en teleoperation-session, eller låna en från datasetkatalogen.
- Minst 30 avsnitt på AY-Robots, cirka 50 för LeRobot referensreceptet.
- Varje variation du förväntar dig vid utrullning, upprepad flera gånger.
- En uppgiftssträng, stavat identiskt vid inspelnings- och utrullningstillfället. Modellen är villkorad av den texten.
- Fasta kameror. En kamera som flyttats mellan inspelning och utrullning är den vanligaste anledningen till att en ren förlustkurva ger en orörlig arm.
- En undanhållen variation du aldrig tränat på, så att du har något ärligt att testa mot.
SmolVLA, Pi0.5 och ACT vill ha LeRobot v3.0. GR00T N1.7 och N1.5 vill ha v2.0 eller v2.1 och deras laddare kraschar på v3.0. Spela in en gång, planera att jämföra modeller senare, och du kommer att konvertera på ett eller annat sätt: 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_placeMer om detta i hur man samlar in högkvalitativ VLA-träningsdata. Den korta versionen: 30 till 50 rena avsnitt av en uppgift med avsiktlig variation slår 200 slarviga avsnitt av tre, med en marginal som ingen hyperparameter kan överbrygga.
Installera 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-infoBas-lerobot installationen är tunn och döljer tunga beroenden bakom tillägg: smolvla lägger till transformers, num2words och accelerate, training dataset-stacken och wandb, och core_scripts hårdvaru- och visualiseringsberoendena. På Linux bestämmer installationssökvägen även din CUDA-wheel: PyPI-standard är en cu130-wheel med ett drivrutinsgolv på 580.65, så med en äldre drivrutin installerar du torch från cu128-indexet först, sedan lerobot.
--policy.path=lerobot/smolvla_base laddar den förtränade 450 M checkpointen och finjusterar den. --policy.type=smolvla bygger en ny SmolVLA, och konfigurationsstandardvärdet load_vlm_weights = False innebär att den inte ens hämtar SmolVLM2-ryggradsvikterna om du inte ber om det. Gör du fel tränar körningen glatt, kostar lika mycket och lär sig inget överförbart.
Träningskörningen, kommando för kommando
- 1Autentisera mot Hubben
Bas-checkpointen kommer från Hubben, och ditt dataset gör det förmodligen också.
bashhf auth login - 2Läs alternativen en gång
Varje fält i pipeline- och policykonfigurationen är en flagga. Skumma igenom den innan du gräver i källkoden.
bashlerobot-train --help - 3Starta finjusteringen
Exemplet i dokumentationen kör batch 64 på en enda A100; beräkningsguidens egen A100 40 GB-referens är batch 16, och 8 är motsvarigheten för 24 GB. Ingen scheduler-flagga här med avsikt, se nedan.
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 - 4Läs loggraden, inte bara förlusten
Varje --log_freq steg skriver lerobot ut loss, grdn, lr, updt_s, data_s, smp/s och, på CUDA, mem_gb. mem_gb anger om batchen får plats, lr om schemat avtar, och data_s som närmar sig updt_s betyder att dataloadern är flaskhalsen, inte GPU:n.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Samla checkpoints du kan jämföra
save_freq är som standard 20000, så en körning på 20000 steg lämnar en checkpoint och inget att jämföra den med. Sätt 2000. Att pusha till Hubben kräver --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Återuppta om maskinen dör
Peka --config_path mot train_config.json bredvid checkpointen. lerobot vägrar att starta i en befintlig output_dir om du inte återupptar, så du kan inte skriva över en körning av misstag.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Flaggorna som faktiskt ändrar resultatet
| Flagga | Vad den gör | På 24 GB |
|---|---|---|
| --batch_size | Exempel per steg, ungefär linjärt med VRAM | 4 till 8 |
| --steps | Totalt antal optimeringssteg | 20000 första passet |
| --policy.scheduler_decay_steps | Längd för cosinusavtagande, förinställt 30000 | Påverkar endast över 30000 |
| --policy.use_amp | Blandad precision; SmolVLA har inget dtype-fält | true när minnet är begränsat |
| --num_workers | Dataloader-processer, standard 4 | Öka tills data_s slutar klättra |
| --dataset.eval_split | Andel avsnitt som hålls undan per uppgift | 0.1, med --eval_steps |
| --policy.freeze_vision_encoder | Håller vision-tornet fryst | true på 24 GB |
| --policy.train_expert_only | Endast ~100 M experten får gradienter | true först |
SmolVLA förinställer ett cosinusschema: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Äldre råd säger att en körning på 20000 steg därför stannar mitt i nedgången. I 0.6.1 gör den inte det: `CosineDecayWithWarmupSchedulerConfig.build()` får `--steps`, och under `num_decay_steps` skalar den om båda, uppvärmning 1000 till 666 och nedgång 30000 till 20000, och skriver ut Auto-scaling LR scheduler när den gör det. Den skalar aldrig uppåt: nedgången är begränsad med `min(current_step, decay_steps)`, så standard `--steps=100000` ligger på botten från steg 30000 till slutet, 70 procent av körningen. Endast den långa sidan behöver fortfarande `--policy.scheduler_decay_steps`. Kolumnen `lr` är där du kontrollerar.
Standardinställningarna du ärver om du inte rör något
En policy konfiguration i lerobot har sin egen optimerare och schemaläggare förinställd, och om du inte ställer in use_policy_training_preset=false vinner dessa förinställningar. Hälften av frågorna folk ställer om SmolVLA-träning besvaras av en standardinställning de inte visste fanns.
| Inställning | Standard i lerobot 0.6.1 | Definierad i |
|---|---|---|
| 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 två rader som överraskar folk är freeze_vision_encoder och train_expert_only, båda sanna. Direkt ur lådan tränar du ungefär 100 M parametrar, inte 450 M, vilket är anledningen till att det passar på 24 GB. LeRobots egen referenskörning på ett H100-kluster med fyra GPU:er ändrar båda till falskt; på ett 24 GB-kort förvandlar det en fungerande körning till .
Guidens råd när du är minnesbegränsad är att sänka batchstorleken och använda gradientackumulering för att återställa den effektiva batchen. Det finns ingen gradientackumulering i lerobot 0.6.1: TrainPipelineConfig har inget sådant fält och strängen förekommer ingenstans i det släppta paketet. AY-Robots-formuläret visar ett gradientackumuleringsvärde på 8 för SmolVLA och tillämpar det inte heller. Dina spakar på 24 GB är --batch_size, de två frysstandardinställningarna och --policy.use_amp.
Hur lång tid körningen tar, och hur många steg som är tillräckligt
LeRobot publicerar referenspunkter för realtidsklockan för fem epoker över en dataset med ungefär 50 avsnitt, cirka 45000 bildrutor vid 30 fps. Storleksordningssiffror, säger dokumentationen, men de är skillnaden mellan att förvänta sig en timme och en dag.
| Konfiguration | Policy | Batch | Realtid |
|---|---|---|---|
| Single L4 / A10G (24 GB) | smolvla | 4 | about 3 to 6 h |
| Single A100 40 GB | smolvla | 16 | about 1 to 2 h |
| 4 x H100 80 GB with accelerate | smolvla | 32 | about 1 to 2 h |
| Single RTX 4090 / RTX 3090 (24 GB) | act | 8 | about 30 to 60 min |
Regeln är 5 till 10 epoker över datamängden, inte ett fast antal steg: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). På referensdatamängden som dokumentationen pekar på, lerobot/svla_so100_pickplace, rapporterar metadata 50 episoder och 19631 bildrutor: batch 8 ger cirka 2454 steg per epok, så 20000 steg är ungefär 8 epoker. Halvera batchen och samma budget ger hälften så många epoker, så gör om detta när du ändrar --batch_size.
Köra den finjusterade policyn tillbaka på armen
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 åtgärdssteg är lätta att misstolka: policyn avger chunk_size = 50 åtgärder per framåtkörning och exekverar n_action_steps = 50 av dem, så hur ofta du betalar den kostnaden styrs av dessa parametrar, inte av hur ofta servona får ett kommando. Det är vad åtgärdschunkning köper, och varför en 245 ms modell kan driva en 30 Hz arm. Vad som återstår är inferenslatens i slutet av chunken.
| Mätning (SmolVLA, verklig SO-100) | Synkron | Asynkron |
|---|---|---|
| Slutförandetid, plocka och placera, 10 försök | 13.75 s | 9.70 s |
| Plocka och placera-cykler i ett fast tidsfönster | 9 | 19 |
| Framgångsfrekvens i genomsnitt över de tre uppgifterna | 78.3 % | 73.3 % |
Den tredje raden är vad de flesta rapporter utelämnar. Asynkron inferens är cirka 30 procent snabbare och fördubblar ungefär genomströmningen i ett fast tidsfönster, och artikeln kallar framgångsfrekvenserna jämförbara, vilket de i genomsnitt är. Under ytan sjönk sorteringen från 70 till 50 procent medan plocka och placera ökade med 5. lerobot 0.6.1 bär den andra spaken i samma binärfil: --inference.type=rtc växlar utrullningen till realtidschunkning, vilket skriptets eget användningsblock rekommenderar för de långsamma VLA:erna, Pi0, Pi0.5 och SmolVLA.
Kontrollloopen är 20 till 485 ms per åtgärdssteg beroende på modell, och rundresor över det publika internet gör en fungerande policy tveksam. Fjärrinferens är genomförbart för långsam plocka och placera, inte snabb reaktiv rörelse: om uppgiften kräver snabba korrigeringar, hör GPU:n hemma på samma LAN som armen.
Två vägar till samma checkpoint
Du äger maskinen, miljön och felsökningen. Den enda molnberoendet är Hub-nedladdningen av bas-checkpointen. Rätt väg om du vill modifiera policyn, om datan inte kan lämna ditt nätverk, eller om kortet är ledigt.
- Du kontrollerar CUDA-drivrutinen, drivrutinen, ffmpeg-byggnaden och dataloadern.
- Du kan patcha configuration_smolvla.py och träna om samma eftermiddag.
- Du betalar i el och tid, inte per körning, och felsöker TorchCodec själv.
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=trueSamma körning bakom ett formulär: du väljer modell och dataset, backend hyr en GPU baserat på nödvändig VRAM, kör tränaren och skriver checkpoints till objektlagring. Datasetet kan komma från ett Hugging Face repo id, den publika katalogen, eller din maskin. Börja på SmolVLA på SO-100, eller matrisen på träningssidan.
| Fält | Standardvärde plattformen skickar för SmolVLA | Anmärkning |
|---|---|---|
| batch size | 2 | Konservativt för 24 GB-nivån |
| learning rate | 1e-4 | Lerobot-förinställningen |
| max steps | 20000 | Referenskörningen i LeRobot-dokumentationen |
| gradient accumulation | 8 | Visas i formuläret, ej tillämpat |
| extra knobs | seed, logFreq | Seed gör körningen repeterbar |
- 2 till 5 timmar på 24 GB-nivån, cirka 1 till 3 USD per körning.
- Samma operationer från en terminal på /cli och från AI-agenter på /mcp.
- Inference-poddar har en inaktiv vakthund, så en bortglömd podd förstör sig själv istället för att fakturera tyst.
- Ingen arm än? /live streamar en fysisk SO-100 som du kan styra utan att registrera dig.
Ett jobb som fastnat i kön är ett symptom på spotmarknaden, inte en bugg: träningsjobb fastnat i kön. Steg för steg: träna din första policy och träningsdokumentationen.
När SmolVLA är fel val
Testet för om SmolVLA var den rätta första körningen är inte om det fungerade, utan om felet berättade något. Nå 60 eller 70 procent och en större modell är en rimlig nästa investering: datan bär signal. Nå 10 procent och en 3 B-modell når troligen också 10 procent, vilket du just lärde dig för tre dollar istället för tolv.

Värt att läsa innan du spenderar mer: Pi0.5 mot SmolVLA för mer kapacitet på samma idé, och GR00T N1.7 mot SmolVLA för NVIDIA-vägen, båda 80 GB-nivån till 4 till 12 USD per körning. Den andra vägen, ACT är den billigare baslinjen: 80 M parametrar, 20 ms per åtgärdssteg, ingen språkkonditionering. Alla fem finns på policysidan; arenan har 85 modeller och 332 benchmarkresultat.

Checklistan innan du skalar något
- Nådde
lrsin 2.5e-6 gräns? Under 30000 steg skalar lerobot om avklingningen och meddelar detta vid start; över det, ställ in--policy.scheduler_decay_stepssjälv. - Mer än en checkpoint, och episoder undanhållna med
--dataset.eval_splitså att eval-förlusten betyder något. - Rör sig policyn överhuvudtaget? En fallande förlust med en orörlig arm har specifika orsaker: förlusten faller, policyn gör ingenting.
- Överlever den ett miljöbyte? Om inte: policyn fungerar bara i en konfiguration.
- Skrev du ner seedet? lerobot använder 1000 som standard, så två orörda körningar förblir jämförbara.
- Först då: fler episoder, mer variation, eller en större modell. I den ordningen.
För varför dessa modeller existerar och vad de gör med språkinmatningen, är bakgrunden; går igenom montering från till den första . För den färdiga checkpointen, ; om armen aldrig dyker upp, .
Träna SmolVLA på din egen arm
Välj modell och arm så ger guiden dig de exakta standardinställningarna, datasetformatet och vad körningen kostar. SmolVLA ligger på 24 GB-nivån till 1 till 3 USD per körning.
Öppna träningsguidernaKan jag verkligen finjustera SmolVLA på ett RTX 4090?▾
Ja. LeRobots beräkningsguide anger SmolVLA till ungefär 10 till 16 GB topp-VRAM vid batch 8 med AdamW och listar 24 GB konsumentkort som bekväma för det. Batch 64 i dokumentationsexemplet är parat med ett enda A100. Minnet skalas ungefär linjärt med batch, så använd 4 eller 8 och håll koll på mem_gb.
Hur många episoder behöver jag egentligen?▾
AY-Robots sätter minimum till 30. LeRobot-dokumentationen rekommenderar cirka 50 och rapporterar att 25 episoder av samma uppgift presterade dåligt. Struktur slår antal: referensuppsättningen var 5 kubpositioner med 10 episoder vardera, och den upprepningen är det som generaliserar.
Dokumentationen säger batch 64, plattformen skickar batch 2. Vilket är rätt?▾
Båda, för olika hårdvara. Dokumentationsexemplet använder batch 64 och anger cirka 4 timmar för 20000 steg på ett enda A100; beräkningsguidens A100 40 GB-ankare är batch 16. Batch 2 är vad AY-Robots skickar på 24 GB-nivån. Lokalt är 4 till 8 mitten, och epokaritmetiken ändras med det.
SmolVLA eller ACT för en första körning på en SO-100?▾
ACT om uppgiften är en repetitiv rörelse och du vill ha den snabbaste loopen: 20 ms per åtgärdssteg, 80 M parametrar, ingen språkkonditionering. SmolVLA om du vill ha språkkonditionering, flera uppgiftssträngar i en checkpoint och en förtränad bas. Båda ligger på 24 GB-nivån, så valet är uppgiften, inte budgeten.
Måste jag ställa in --policy.scheduler_decay_steps?▾
Endast när --steps är över 30000. SmolVLA förinställer cosinusavfallet vid 30000 steg, och lerobot 0.6.1 skalar ner det själv för en kortare körning, och loggar "Auto-scaling LR scheduler" när det sker. Det skalar aldrig upp, så standard --steps=100000 lämnar de sista 70000 stegen på 2.5e-6-golvet.
Sources
- SmolVLA: En syn-, språk- och åtgärdsmodell för prisvärd och effektiv robotik
- SmolVLA: Effektiv syn-, språk- och åtgärdsmodell (Hugging Face blogg)
- lerobot/smolvla_base modellkort
- LeRobot dokumentation: SmolVLA
- LeRobot dokumentation: Beräkningshårdvaruguide för LeRobot-träning
- LeRobot dokumentation: Installation
- LeRobot dokumentation: LeRobotDataset v3.0 och v2.1-konverteraren
- LeRobot dokumentation: Asynkron inferens
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategier och RTC-inferens)
- lerobot v0.6.1: pyproject.toml (extrafunktioner och konsolstartpunkter)
- lerobot på PyPI
- lerobot/svla_so100_pickplace dataset (50 episoder, 19631 bildrutor, 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