
SmolVLA er en VLA med 450 M parametere som finjusteres på et enkelt 24 GB kort. Ekte lerobot 0.6.1-kommandoer, de faktiske standardinnstillingene, fellene som kostet en dag, og hva en kjøring koster.
SmolVLA på én skjerm
- •450 M parametere, hvorav omtrent 100 M er en flow matching action-ekspert. lerobot trener kun denne eksperten og holder VLM frosset, noe som er grunnen til at den passer på ett kort.
- •LeRobots beregningsguide anslår smolvla-gruppen til å kreve omtrent 10 til 16 GB topp VRAM ved batch 8 med AdamW. Derfor 24 GB.
- •Inngangspunktet er lerobot-train. SmolVLA-blogginnlegget fra juni 2025 skriver fortsatt ut python lerobot/scripts/train.py, en sti som ikke lenger eksisterer. Alt nedenfor er lerobot 0.6.1.
- •Kosinusplanen er forhåndsinnstilt til å avta over 30000 trinn. lerobot 0.6.1 skalerer dette ned for en kortere kjøring og logger det, men aldri opp: standardkjøringen på 100000 trinn ender på 2.5e-6-gulvet i 70000 trinn.
- •Tretti episoder er AY-Robots minimum, på et 24 GB-nivå som koster 1 til 3 USD per kjøring mot 4 til 12 for 80 GB-modellene.
De fleste som ønsker en visuell språk- og handlingsmodell på en ekte arm stopper ved maskinvaregrensen. GR00T N1.7 og Pi0.5 er rundt tre milliarder parametere hver og krever en A100 80 GB eller en H100. Hvis det du eier er en gaming-PC med et RTX 4090, er det slutten på veien. SmolVLA er unntaket: 450 M parametere, inne i LeRobot, bygget for å finjusteres på ett forbrukerkort og serveres fra en CPU.
Den manuelle ruten først: installer lerobot, hent lerobot/smolvla_base sjekkpunktet, kjør den virkelige kommandoen, les kjøringen mens den pågår. Deretter plattformruten, og hvor den ikke hjelper.
Hva SmolVLA er, i tall du kan sjekke
SmolVLA er en flytmatching policy festet til en liten visuell språkmodell. Ryggraden er SmolVLM2-500M-Video-Instruct; artikkelen beholder bare de første 16 lagene av språkmodellen, begrenser hver kameraramme til 64 visuelle tokens med en pikselblanding i stedet for bildeflislegging, og fletter kryss-oppmerksomhet med et selv-oppmerksomhetslag annenhver blokk. Inferenskostnad var en designbegrensning, ikke en ettertanke.
| Egenskap | Verdi | Kilde |
|---|---|---|
| Totale parametere | about 450 M | paper |
| Handlingsekspert | about 100 M, flytmatching | paper |
| VLM ryggrad | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| VLM-lag brukt | første 16 av språkmodellen | num_vlm_layers = 16 |
| Visuelle tokens per ramme | 64, pikselblanding, ingen flislegging | paper |
| Førtrening | 481 fellesskapsdatasett, 22.9 K episoder, 10.6 M rammer; 200000 trinn ved global batch 256 på 4 GPUer | paper |
Benchmarkene er grunnen til at folk bryr seg med en 450 M modell. På LIBERO oppnår den et gjennomsnitt på 87.3 prosent mot 76.5 for OpenVLA på 7 B og 86.0 for en robotikk-førtrent Pi0 på 3.3 B; på Meta-World, 57.3 mot 47.9. På ekte SO-100 maskinvare gir multi-task trening 75 prosent på plukk og plasser, 90 på stabling, 70 på sortering, med et gjennomsnitt på 78.3, der ACT trent per oppgave gjennomsnittlig 48.3. De samme radene står ved siden av hver publiserte VLA i SmolVLA arenaoppføring og ACT mot SmolVLA sammenligning.
SmolVLA er ikke bedre enn en 3 B modell på alt. Artikkelens egen SO-101 tabell er avslørende: 90 prosent suksess i distribusjon, 50 prosent utenfor, på en plattform den aldri ble førtrent på. Det den hevder, og støtter, er at mot Pi0 trener den rundt 40 prosent raskere på 6 ganger mindre minne.
Hvorfor et 24 GB-kort er det rette førstevalget
LeRobot leverer en veiledning for beregningsstørrelse, den mest nyttige siden i repoet for dette. Den grupperer retningslinjer etter ryggrads-størrelse og angir én VRAM-ramme per gruppe, målt med batchstørrelse 8 med AdamW, som er standarden i lerobot. Optimaliseringstilstanden alene legger til 30 til 100 prosent utover en ren fremover- og bakoverpassering, så dette er ikke tall basert kun på vekter.
| Gruppe | Retningslinjer | Maksimal VRAM (batch 8, AdamW) | Anbefalte GPU-er |
|---|---|---|---|
| Lett BC | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| Diffusjon | 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+ |
Ti til seksten gigabyte ved batchstørrelse 8 er argumentet: et 24 GB-kort passer til det pluss datalasteren. AY-Robots plasserer SmolVLA på RTX 4090 eller et hvilket som helst 24 GB-kort, minimum 30 episoder, LeRobot v3.0 data, 245 ms per handlingstrinn. Leid, det er 2 til 5 timer til 0.30 til 0.60 USD per time, omtrent 1 til 3 USD per finjustering kjøring, mot 4 til 12 USD på 80 GB-nivået GR00T og Pi0.5 trenger (priser). En mislykket SmolVLA-kjøring er en kaffe; en mislykket GR00T-kjøring, lunsj.

- Passer maskinvare du kanskje allerede eier: omtrent 10 til 16 GB ved batch 8.
- En bortkastet kjøring koster timer og ensifrede dollar, så du har råd til å ta feil om datasettet.
- Forhåndstrent på fellesskapsdatasett delt under lerobot-taggen, med reelle SO-100 og SO-101 resultater.
- Den lever i lerobot selv: ingen leverandørrepo, og smolvla_base er ikke lukket.
- 450 M er fortsatt 450 M: suksess utenfor distribusjon faller fra 90 til 50 prosent i artikkelens SO-101-tabell.
- Den krever LeRobot v3.0-data; et v2.1-opptak må konverteres (datasett avvist v3).
- 245 ms per handlingstrinn er en kompetent plukk-og-plasser-kontroller, ikke en reaktiv.
- Dokumentasjonseksemplet kjører batch 64 på en A100; på 24 GB bytter du batch mot veggklokke.
Trinn 0: datasettet bestemmer kjøringen, ikke flaggene
Ingenting nedenfor betyr noe hvis opptaket er dårlig. LeRobot SmolVLA-siden er direkte: referansedatasettet var 50 episoder fordelt på 5 kube-posisjoner, 10 per posisjon, og den samme oppgaven med 25 episoder presterte dårlig. Repetisjon per variasjon generaliserer, rått episodeantall gjør det ikke. Har du aldri tatt opp en? Start med ta opp ditt første datasett med skrivebordsklienten, som skriver LeRobot-format ut av en teleoperasjon-sesjon, eller lån en fra datasettkatalogen.
- Minst 30 episoder på AY-Robots, omtrent 50 for LeRobot referanseoppskriften.
- Hver variasjon du forventer ved utrulling, gjentatt flere ganger.
- Én oppgavestreng, stavet identisk ved opptak og utrulling. Modellen er betinget av den teksten.
- Faste kameraer. Et kamera flyttet mellom opptak og utrulling er den vanligste årsaken til at en ren tapskurve gir en ubevegelig arm.
- En holdt-ut variasjon du aldri trente på, slik at du har noe ærlig å teste mot.
SmolVLA, Pi0.5 og ACT krever LeRobot v3.0. GR00T N1.7 og N1.5 krever v2.0 eller v2.1, og deres laster krasjer på v3.0. Ta opp én gang, planlegg å sammenligne modeller senere, og du vil konvertere den ene eller den andre veien: datasett avvist 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 dette i hvordan samle inn høykvalitets VLA-treningsdata for robotmanipulasjon. Den korte versjonen: 30 til 50 rene episoder av én oppgave med bevisst variasjon slår 200 slurvete episoder av tre, med en margin ingen hyperparameter lukker.
Installer 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-infoGrunnleggende lerobot installasjonen er tynn og gjerder tunge avhengigheter bak tilleggspakker (extras): smolvla legger til transformers, num2words og accelerate, training dataset-stakken og wandb, core_scripts maskinvare- og visualiseringsavhengighetene. På Linux bestemmer installasjonsstien også ditt CUDA-hjul: PyPI-standard er et cu130-hjul med et drivergulv på 580.65, så på en eldre driver installerer du torch fra cu128-indeksen først, deretter lerobot.
--policy.path=lerobot/smolvla_base laster det forhåndstrente 450 M sjekkpunktet og finjusterer det. --policy.type=smolvla bygger en fersk SmolVLA, og konfigurasjonsstandarden load_vlm_weights = False betyr at den ikke engang henter SmolVLM2-ryggradvektene med mindre du ber om det. Gjør du feil, vil kjøringen trene lykkelig, koste det samme, og ikke lære noe overførbart.
Treningskjøringen, kommando for kommando
- 1Autentiser mot Hub-en
Grunn-sjekkpunktet kommer fra Hub-en, og datasettet ditt gjør sannsynligvis det også.
bashhf auth login - 2Les alternativene én gang
Hvert felt i pipeline- og policykonfigurasjonen er et flagg. Skum gjennom det før du graver i kildekoden.
bashlerobot-train --help - 3Start finjusteringen
Eksemplet i dokumentasjonen kjører batch 64 på en enkelt A100; beregningsveiledningens egen A100 40 GB-referanse er batch 16, og 8 er 24 GB-ekvivalenten. Ingen scheduler-flagg her med vilje, se nedenfor.
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 - 4Les logglinjen, ikke bare tapet
Hvert --log_freq trinn skriver lerobot ut loss, grdn, lr, updt_s, data_s, smp/s og, på CUDA, mem_gb. mem_gb sier om batchen passer, lr om tidsplanen avtar, og data_s som nærmer seg updt_s betyr at datalasteren er flaskehalsen, ikke GPU-en.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Samle sjekkpunkter du kan sammenligne
save_freq er som standard 20000, så en kjøring på 20000 trinn etterlater ett sjekkpunkt og ingenting å sammenligne det med. Sett 2000. For å pushe til Hub-en kreves --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Gjenoppta hvis maskinen dør
Pek --config_path til train_config.json ved siden av sjekkpunktet. lerobot nekter å starte i en eksisterende output_dir med mindre du gjenopptar, slik at du ikke kan overskrive en kjøring ved et uhell.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Flaggene som faktisk endrer resultatet
| Flagg | Hva det gjør | På 24 GB |
|---|---|---|
| --batch_size | Prøver per trinn, omtrent lineært med VRAM | 4 til 8 |
| --steps | Totalt antall optimaliseringstrinn | 20000 første pass |
| --policy.scheduler_decay_steps | Cosinus-nedbrytningslengde, forhåndsinnstilt 30000 | Påvirker kun over 30000 |
| --policy.use_amp | Blandet presisjon; SmolVLA har ingen dtype-felt | true når minnet er knapt |
| --num_workers | Datalasterprosesser, standard 4 | Øk til data_s slutter å stige |
| --dataset.eval_split | Andel episoder holdt tilbake per oppgave | 0.1, med --eval_steps |
| --policy.freeze_vision_encoder | Holder visjonstårnet frosset | true på 24 GB |
| --policy.train_expert_only | Kun den ~100 M eksperten får gradienter | true først |
SmolVLA forhåndsinnstiller en cosinus-plan: scheduler_warmup_steps = 1000, scheduler_decay_steps = 30000, scheduler_decay_lr = 2.5e-6. Eldre råd sier at en kjøring på 20000 trinn derfor stopper midt i nedgangen. I 0.6.1 gjør den ikke det: CosineDecayWithWarmupSchedulerConfig.build() får --steps, og under num_decay_steps skalerer den begge, oppvarming 1000 til 666 og nedgang 30000 til 20000, og skriver ut Auto-scaling LR scheduler mens den gjør det. Den skalerer aldri oppover: nedgangen er begrenset med min(current_step, decay_steps), så standard --steps=100000 ligger på bunnen fra trinn 30000 til slutten, 70 prosent av kjøringen. Bare den lange siden trenger fortsatt --policy.scheduler_decay_steps. Kolonnen lr er der du sjekker.
Standardinnstillingene du arver hvis du ikke rører noe
En konfigurasjon i lerobot har sin egen optimalisator og planlegger forhåndsinnstilt, og med mindre du setter use_policy_training_preset=false vinner disse forhåndsinnstillingene. Halvparten av spørsmålene folk stiller om SmolVLA-trening besvares av en standardinnstilling de ikke visste eksisterte.
| Innstilling | Standard i lerobot 0.6.1 | Definert i |
|---|---|---|
| chunk_size / n_action_steps | 50 / 50 | SmolVLAConfig |
| num_steps (flytmatching støyfjerning) | 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 to linjene som overrasker folk er freeze_vision_encoder og train_expert_only, begge sanne. Ut av boksen trener du omtrent 100 M parametere, ikke 450 M, noe som er grunnen til at det passer på 24 GB. LeRobots egen referansekjøring på et fire-GPU H100-klyngesystem setter begge til usant; på ett 24 GB-kort gjør det en fungerende kjøring om til .
Veiledningens råd når du er minnebegrenset er å redusere batchstørrelsen og bruke gradientakkumulering for å gjenopprette den effektive batchen. Det er ingen gradientakkumulering i lerobot 0.6.1: TrainPipelineConfig har ikke et slikt felt, og strengen vises ingen steder i den utgitte pakken. AY-Robots-skjemaet viser en gradientakkumuleringsverdi på 8 for SmolVLA og bruker den heller ikke. Dine spaker på 24 GB er --batch_size, de to fryse-standardinnstillingene, og --policy.use_amp.
Hvor lang tid kjøringen tar, og hvor mange trinn som er nok
LeRobot publiserer veggklokke-ankere for five epochs over a roughly 50 episode dataset, about 45000 frames at 30 fps. Størrelsesordens tall, sier dokumentasjonen, men de utgjør forskjellen mellom å forvente en time og en dag.
| Oppsett | Policy | Batch | Klokketid |
|---|---|---|---|
| Enkel L4 / A10G (24 GB) | smolvla | 4 | omtrent 3 til 6 t |
| Enkel A100 40 GB | smolvla | 16 | omtrent 1 til 2 t |
| 4 x H100 80 GB med accelerate | smolvla | 32 | omtrent 1 til 2 t |
| Enkel RTX 4090 / RTX 3090 (24 GB) | act | 8 | omtrent 30 til 60 min |
Regelen er 5 til 10 epoker over datasettet, ikke et fast antall trinn: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). På referansedatasettet dokumentasjonen peker på, lerobot/svla_so100_pickplace, rapporterer metadata 50 episoder og 19631 rammer: batch 8 gir omtrent 2454 trinn per epoke, så 20000 trinn er omtrent 8 epoker. Halver batchen og det samme budsjettet kjøper halvparten av epokene, så gjør dette på nytt hver gang du endrer --batch_size.
Kjører den finjusterte policyen tilbake 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 handlingstrinn er lett å misforstå: policyen sender ut chunk_size = 50 handlinger per fremoverpass og utfører n_action_steps = 50 av dem, så hvor ofte du betaler den kostnaden er satt av disse innstillingene, ikke av hvor ofte servoene får en kommando. Det er hva handlingssegmentering kjøper, og hvorfor en 245 ms modell kan drive en 30 Hz arm. Det som gjenstår er inferensforsinkelse på slutten av segmentet.
| Måling (SmolVLA, ekte SO-100) | Synkron | Asynkron |
|---|---|---|
| Fullføringstid, plukk og plasser, 10 forsøk | 13.75 s | 9.70 s |
| Plukk- og plasseringssykluser i et fast tidsvindu | 9 | 19 |
| Suksessrate gjennomsnittlig over de tre oppgavene | 78.3 % | 73.3 % |
Den tredje raden er det de fleste rapporter hopper over. Asynkron inferens er omtrent 30 prosent raskere og dobler omtrent gjennomstrømningen i et fast vindu, og artikkelen kaller suksessratene sammenlignbare, noe de i gjennomsnitt er. Under overflaten falt sortering fra 70 til 50 prosent mens plukk og plasser økte med 5. lerobot 0.6.1 bærer den andre spaken i samme binærfil: --inference.type=rtc bytter utrullingen til sanntidssegmentering, noe skriptets egen bruksblokk anbefaler for de trege VLA-ene, Pi0, Pi0.5 og SmolVLA.
Kontrollsløyfen er 20 til 485 ms per handlingstrinn avhengig av modellen, og offentlige internett-tur-retur-tider på toppen gjør en fungerende policy om til en nølende. Fjerninferens er levedyktig for sakte plukk og plasser, ikke rask reaktiv bevegelse: hvis oppgaven krever raske korreksjoner, hører GPU-en hjemme på samme LAN som armen.
Utenfor tema for en treningskjøring, men det avslutter flere SO-100-prosjekter enn noen hyperparameter. Feetech STS3215-servoene i SO-100 og SO-101 kjører på 7.4 V; 12 V ødelegger dem. LeKiwi blander en 7.4 V arm med en 12 V base, noe som er grunnen til at feil tønnekontakt finner feil stikkontakt.
To veier til samme sjekkpunkt
Du eier maskinen, miljøet og feilsøkingen. Den eneste skytjenesteavhengigheten er Hub-nedlastingen av basesjekkpunktet. Den rette veien hvis du vil endre policyen, hvis dataene ikke kan forlate nettverket ditt, eller hvis kortet er inaktivt.
- Du kontrollerer CUDA-hjulet, driveren, ffmpeg-bygget og datalasteren.
- Du kan patche configuration_smolvla.py og trene på nytt samme ettermiddag.
- Du betaler i strøm og tid, ikke per kjøring, og feilsøker TorchCodec selv.
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=trueSamme kjøring bak et skjema: du velger modell og datasett, bakenden leier en GPU basert på nødvendig VRAM, kjører treneren og skriver sjekkpunkter til objektlagring. Datasettet kan komme fra en Hugging Face repo id, den offentlige katalogen, eller maskinen din. Start på SmolVLA på SO-100, eller matrisen på treningssiden.
| Felt | Standardverdien plattformen sender for SmolVLA | Merknad |
|---|---|---|
| batchstørrelse | 2 | Konservativ for 24 GB-nivået |
| læringsrate | 1e-4 | Lerobot-forhåndsinnstillingen |
| maks trinn | 20000 | Referansekjøringen i LeRobot-dokumentene |
| gradientakkumulering | 8 | Vist i skjemaet, ikke anvendt |
| ekstra innstillinger | seed, logFreq | Seed gjør kjøringen repeterbar |
- 2 til 5 timer på 24 GB-nivået, omtrent 1 til 3 USD per kjøring.
- De samme operasjonene fra en terminal på /cli og fra AI-agenter på /mcp.
- Inference-pods har en inaktiv vakthund, slik at en glemt pod ødelegger seg selv i stedet for å fakturere stille.
- Ingen arm ennå? /live strømmer en fysisk SO-100 du kan kjøre uten å registrere deg.
En jobb som sitter fast i køen er et symptom på spotmarkedet, ikke en feil: treningsjobb sitter fast i kø. Steg for steg: tren din første policy og treningsdokumentene.
Når SmolVLA er feil valg
Testen for om SmolVLA var det rette første forsøket er ikke om det fungerte, men om feilen fortalte deg noe. Oppnår du 60 eller 70 prosent, er en større modell en rimelig neste investering: dataene inneholder signal. Oppnår du 10 prosent, vil en 3 B-modell mest sannsynlig også oppnå 10 prosent, noe du nettopp lærte for tre dollar i stedet for tolv.

Verdt å lese før du bruker mer: Pi0.5 mot SmolVLA for mer kapasitet på samme idé, og GR00T N1.7 mot SmolVLA for NVIDIA-ruten, begge 80 GB-nivå til 4 til 12 USD per kjøring. Den andre veien, ACT er den billigere grunnlinjen: 80 M parametere, 20 ms per handlingstrinn, ingen språkbetinging. Alle fem ligger på policy-siden; arenaen har 85 modeller og 332 benchmark-resultater.

Sjekklisten før du skalerer noe
- Nådde
lrsitt gulv på 2.5e-6? Under 30000 steg skalerer lerobot ned forfallet og sier ifra ved oppstart; over dette, sett--policy.scheduler_decay_stepsselv. - Mer enn ett sjekkpunkt, og episoder holdt tilbake med
--dataset.eval_splitslik at evalueringsfeilen betyr noe. - Beveger policyen seg i det hele tatt? Et fallende tap med en urørlig arm har spesifikke årsaker: feilen faller, men policyen gjør ingenting.
- Overlever den et sceneskifte? Hvis ikke: policyen fungerer bare i ett oppsett.
- Skrev du ned frøet (seed)? lerobot bruker 1000 som standard, slik at to uberørte kjøringer forblir sammenlignbare.
- Først da: flere episoder, mer variasjon, eller en større modell. I den rekkefølgen.
For hvorfor disse modellene eksisterer og hva de gjør med språkinndata, er bakgrunnen; kjører montering gjennom til den første -kjøringen. For det ferdige sjekkpunktet, ; hvis armen aldri dukker opp, .
Tren SmolVLA på din egen arm
Velg modellen og armen, og guiden gir deg de nøyaktige standardinnstillingene, datasettformatet og hva kjøringen koster. SmolVLA ligger på 24 GB-nivået til 1 til 3 USD per kjøring.
Åpne treningsguideneKan jeg virkelig finjustere SmolVLA på et RTX 4090?▾
Ja. LeRobots beregningsguide anslår SmolVLA til omtrent 10 til 16 GB topp VRAM ved batch 8 med AdamW og lister 24 GB forbrukerkort som komfortable for det. Batch 64 i dokumentasjonseksemplet er paret med en enkelt A100. Minne skalerer omtrent lineært med batch, så bruk 4 eller 8 og følg med på mem_gb.
Hvor mange episoder trenger jeg egentlig?▾
AY-Robots setter minimumet til 30. LeRobot-dokumentasjonen anbefaler rundt 50 og rapporterer at 25 episoder av samme oppgave presterte dårlig. Struktur slår antall: referansesettet var 5 kube-posisjoner med 10 episoder hver, og den repetisjonen er det som generaliserer.
Dokumentasjonen sier batch 64, plattformen sender batch 2. Hvilken er riktig?▾
Begge, for forskjellig maskinvare. Dokumentasjonseksemplet bruker batch 64 og oppgir omtrent 4 timer for 20000 steg på en enkelt A100; beregningsguidens A100 40 GB anker er batch 16. Batch 2 er det AY-Robots sender på 24 GB-nivået. Lokalt er 4 til 8 midten, og epokearitmetikken endres med det.
SmolVLA eller ACT for en første kjøring på en SO-100?▾
ACT hvis oppgaven er en repeterende bevegelse og du ønsker den raskeste loopen: 20 ms per handlingstrinn, 80 M parametere, ingen språkkondisjonering. SmolVLA hvis du ønsker språkkondisjonering, flere oppgavestrenger i ett sjekkpunkt, og en forhåndstrent base. Begge ligger på 24 GB-nivået, så valget er oppgaven, ikke budsjettet.
Må jeg sette --policy.scheduler_decay_steps?▾
Bare når --steps er over 30000. SmolVLA forhåndsinnstiller cosinus-decay ved 30000 steg, og lerobot 0.6.1 nedskalerer det selv for en kortere kjøring, og logger "Auto-scaling LR scheduler" når det skjer. Det skalerer aldri opp, så standard --steps=100000 etterlater de siste 70000 stegene på 2.5e-6-gulvet.
Sources
- SmolVLA: En syns-, språk- og handlingsmodell for rimelig og effektiv robotikk
- SmolVLA: Effektiv syns-, språk- og handlingsmodell (Hugging Face blogg)
- lerobot/smolvla_base modellkort
- LeRobot dokumentasjon: SmolVLA
- LeRobot dokumentasjon: Maskinvareguide for LeRobot-trening
- LeRobot dokumentasjon: Installasjon
- LeRobot dokumentasjon: LeRobotDataset v3.0 og v2.1-konvertereren
- LeRobot dokumentasjon: 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 og RTC-inferens)
- lerobot v0.6.1: pyproject.toml (ekstra og konsollinngangspunkter)
- lerobot på PyPI
- lerobot/svla_so100_pickplace datasett (50 episoder, 19631 rammer, 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