
Ang SmolVLA ay isang 450 M parameter na VLA na maaaring i-fine-tune sa isang solong 24 GB card. Mga totoong lerobot 0.6.1 command, ang aktwal na mga default, ang mga bitag na nagkakahalaga ng isang araw, at kung magkano ang gastos ng isang pagpapatakbo.
SmolVLA sa isang screen
- •450 M na parameter, humigit-kumulang 100 M sa mga ito ay isang flow matching action expert. Ang lerobot ay sinasanay lamang ang expert na iyon at pinapanatiling frozen ang VLM, kaya ito kasya sa isang card.
- •Ang compute guide ng LeRobot ay naglalagay sa smolvla group sa humigit-kumulang 10 hanggang 16 GB ng peak VRAM sa batch 8 na may AdamW. Kaya 24 GB.
- •Ang entry point ay lerobot-train. Ang June 2025 SmolVLA blog post ay nagpi-print pa rin ng python lerobot/scripts/train.py, isang path na wala na. Lahat ng nasa ibaba ay lerobot 0.6.1.
- •Ang cosine schedule ay preset na bumaba sa loob ng 30000 steps. Ang lerobot 0.6.1 ay binabawasan ito para sa mas maikling pagtakbo at ini-log ito, ngunit hindi kailanman pataas: ang stock na 100000 step run ay nagtatapos sa 2.5e-6 floor sa loob ng 70000 steps.
- •Tatlumpung episode ang minimum ng AY-Robots, sa isang 24 GB tier na nagkakahalaga ng 1 hanggang 3 USD bawat pagtakbo kumpara sa 4 hanggang 12 para sa mga 80 GB na modelo.
Karamihan sa mga taong gustong magkaroon ng modelo ng aksyon sa wika at paningin sa isang tunay na braso ay humihinto sa linya ng hardware. GR00T N1.7 at Pi0.5 ay humigit-kumulang tatlong bilyong parameter bawat isa at nangangailangan ng A100 80 GB o isang H100. Kung ang pag-aari mo ay isang gaming PC na may RTX 4090, iyon na ang katapusan ng daan. SmolVLA ang eksepsyon: 450 M na parameter, sa loob ng LeRobot, na binuo upang i-fine-tune sa isang consumer card at magsilbi mula sa isang CPU.
Ang manu-manong ruta muna: i-install ang lerobot, i-pull ang lerobot/smolvla_base checkpoint, patakbuhin ang tunay na command, basahin ang pagtakbo habang nangyayari ito. Pagkatapos ang ruta ng platform, at kung saan ito hindi nakakatulong.
Ano ang SmolVLA, sa mga numerong maaari mong suriin
Ang SmolVLA ay isang pagtutugma ng daloy na patakaran na ikinabit sa isang maliit na modelo ng wika ng paningin. Ang backbone ay SmolVLM2-500M-Video-Instruct; ang papel ay pinanatili lamang ang unang 16 na layer ng modelo ng wika nito, nililimitahan ang bawat frame ng camera sa 64 na visual token gamit ang pixel shuffle sa halip na pag-tile ng imahe, at pinagsasama ang cross attention sa isang self attention layer bawat ikalawang bloke. Ang gastos sa inference ay isang hadlang sa disenyo, hindi isang huling pag-iisip.
| Katangian | Halaga | Pinagmulan |
|---|---|---|
| Total parameters | mga 450 M | paper |
| Action expert | mga 100 M, pagtutugma ng daloy | paper |
| VLM backbone | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| VLM layers used | unang 16 ng modelo ng wika | num_vlm_layers = 16 |
| Visual tokens per frame | 64, pixel shuffle, walang tiling | paper |
| Pretraining | 481 dataset ng komunidad, 22.9 K episode, 10.6 M frame; 200000 hakbang sa global batch 256 sa 4 na GPU | paper |
Ang mga benchmark ang dahilan kung bakit pinagkakaabalahan ng mga tao ang isang 450 M na modelo. Sa LIBERO, nag-a-average ito ng 87.3 porsyento laban sa 76.5 para sa OpenVLA sa 7 B at 86.0 para sa isang Pi0 na na-pretrain sa robotics sa 3.3 B; sa Meta-World, 57.3 laban sa 47.9. Sa tunay na SO-100 hardware, ang multi-task training ay nagbibigay ng 75 porsyento sa pick and place, 90 sa stacking, 70 sa sorting, na nag-a-average ng 78.3, kung saan ACT na sinanay bawat gawain ay nag-average ng 48.3. Ang parehong mga hilera ay matatagpuan sa tabi ng bawat nailathalang VLA sa SmolVLA entry sa arena at ang paghahambing ng ACT laban sa SmolVLA.
Ang SmolVLA ay hindi mas mahusay kaysa sa isang 3 B na modelo sa lahat ng bagay. Ang sariling SO-101 na talahanayan ng papel ang nagsasabi: 90 porsyentong tagumpay sa distribusyon, 50 porsyento sa labas nito, sa isang platform na hindi nito kailanman na-pretrain. Ang inaangkin nito, at sinusuportahan, ay laban sa Pi0, nagsasanay ito ng humigit-kumulang 40 porsyentong mas mabilis sa 6 na beses na mas kaunting memorya.
Bakit ang 24 GB card ang tamang unang pagpapatakbo
Nagbibigay ang LeRobot ng compute sizing guide, ang pinakamakapakinabang na pahina sa repo para dito. Pinagsasama-sama nito ang mga policy ayon sa laki ng backbone at nagbibigay ng isang VRAM envelope bawat grupo, na sinusukat sa batch size 8 gamit ang AdamW, ang default ng lerobot. Ang optimizer state lamang ay nagdaragdag ng 30 hanggang 100 porsyento sa isang simpleng forward at backward pass, kaya hindi ito mga figure na para sa weights lamang.
| Grupo | Mga Policy | Peak VRAM (batch 8, AdamW) | Panimulang GPU |
|---|---|---|---|
| Light 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 |
| Small VLA | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| Large 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+ |
Sampu hanggang labing-anim na gigabytes sa batch 8 ang argumento: ang isang 24 GB card ay kasya doon kasama ang dataloader. Inilalagay ng AY-Robots ang SmolVLA sa RTX 4090 o anumang 24 GB card, minimum 30 mga episode, LeRobot v3.0 data, 245 ms bawat action step. Kapag inupahan, ito ay 2 hanggang 5 oras sa 0.30 hanggang 0.60 USD bawat oras, humigit-kumulang 1 hanggang 3 USD bawat fine-tuning run, laban sa 4 hanggang 12 USD sa 80 GB tier na kailangan ng GR00T at Pi0.5 (pagpepresyo). Ang isang bigong SmolVLA run ay kape; ang isang bigong GR00T run, tanghalian.

- Akma sa hardware na maaaring pagmamay-ari mo na: humigit-kumulang 10 hanggang 16 GB sa batch 8.
- Ang isang nasayang na pagtakbo ay nagkakahalaga ng oras at iisang digit na dolyar, kaya kaya mong magkamali tungkol sa dataset.
- Pretrained sa mga community dataset na ibinahagi sa ilalim ng lerobot tag, na may tunay na SO-100 at SO-101 na resulta.
- Nasa lerobot mismo ito: walang vendor repo, at ang smolvla_base ay hindi gated.
- Ang 450 M ay 450 M pa rin: ang tagumpay sa labas ng distribusyon ay bumaba mula 90 hanggang 50 porsyento sa SO-101 table ng papel.
- Gusto nito ng LeRobot v3.0 data; ang isang v2.1 recording ay kailangang i-convert (dataset rejected v3).
- Ang 245 ms bawat hakbang ng aksyon ay isang mahusay na pick and place controller, hindi isang reactive.
- Ang halimbawa sa docs ay nagpapatakbo ng batch 64 sa isang A100; sa 24 GB, ipinagpapalit mo ang batch para sa wall clock.
Hakbang 0: ang dataset ang nagpapasya sa pagtakbo, hindi ang mga flag
Walang saysay ang lahat ng nasa ibaba kung masama ang recording. Ang pahina ng LeRobot SmolVLA ay direkta: ang reference dataset ay 50 episodes sa 5 posisyon ng cube, 10 bawat posisyon, at ang parehong gawain sa 25 episodes ay nagpakita ng masamang performance. Ang pag-uulit bawat variation ay nagiging pangkalahatan, ang bilang ng raw episode ay hindi. Hindi pa nakapag-record? Magsimula sa i-record ang iyong unang dataset gamit ang client ng desktop, na nagsusulat ng LeRobot format mula sa isang teleoperation session, o humiram ng isa mula sa direktoryo ng dataset.
- Hindi bababa sa 30 episode sa AY-Robots, mga 50 para sa LeRobot reference recipe.
- Bawat variation na inaasahan mo sa rollout, inulit nang ilang beses.
- Isang task string, na binaybay nang magkapareho sa oras ng pag-record at rollout. Ang modelo ay nakakondisyon sa tekstong iyon.
- Nakapirming camera. Ang isang camera na inilipat sa pagitan ng pag-record at rollout ay ang pinakakaraniwang dahilan kung bakit ang isang malinis na loss curve ay nagbibigay ng walang galaw na braso.
- Isang held-out variation na hindi mo kailanman sinanay, upang mayroon kang matapat na pagsubok.
SmolVLA, Pi0.5 at ACT ay nangangailangan ng LeRobot v3.0. Ang GR00T N1.7 at N1.5 ay nangangailangan ng v2.0 o v2.1 at ang kanilang loader ay nagka-crash sa v3.0. Mag-record nang isang beses, planuhing ikumpara ang mga modelo sa ibang pagkakataon, at magko-convert ka sa isang paraan o sa iba: 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_placeHigit pa tungkol dito sa paano mangolekta ng mataas na kalidad na data ng pagsasanay ng VLA. Ang maikling bersyon: 30 hanggang 50 malinis na episode ng isang gawain na may sinadyang variation ay mas mahusay kaysa sa 200 maluwag na episode ng tatlo, sa isang margin na hindi kayang isara ng anumang hyperparameter.
I-install ang 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-infoAng base lerobot install ay manipis at nagtatago ng mabibigat na dependencies sa likod ng mga extras: smolvla nagdaragdag ng transformers, num2words at accelerate, training ang dataset stack at wandb, core_scripts ang hardware at visualisation deps. Sa Linux, ang install path din ang nagdedesisyon sa iyong CUDA wheel: ang default ng PyPI ay isang cu130 wheel na may driver floor na 580.65, kaya sa mas lumang driver, i-install muna ang torch mula sa cu128 index, pagkatapos ay ang lerobot.
--policy.path=lerobot/smolvla_base naglo-load ng pretrained na 450 M checkpoint at fine-tune ito. --policy.type=smolvla bumubuo ng bagong SmolVLA, at ang config default na load_vlm_weights = False ay nangangahulugang hindi nito hihilahin ang SmolVLM2 backbone weights maliban kung hilingin mo. Kung magkamali ka, ang pagpapatakbo ay masayang magte-train, pareho ang gastos, at walang matututunang maililipat.
Ang pagpapatakbo ng pagsasanay, utos sa bawat utos
- 1Mag-authenticate sa Hub
Ang base checkpoint ay nagmula sa Hub, at malamang na ganoon din ang iyong dataset.
bashhf auth login - 2Basahin ang mga opsyon nang isang beses
Bawat field ng pipeline at policy config ay isang flag. Basahin ito nang mabilis bago suriin ang source.
bashlerobot-train --help - 3Simulan ang fine-tune
Ang halimbawa sa docs ay nagpapatakbo ng batch 64 sa isang A100; ang sariling A100 40 GB anchor ng compute guide ay batch 16, at ang 8 ay ang katumbas ng 24 GB. Walang scheduler flag dito nang sadya, tingnan sa ibaba.
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 - 4Basahin ang log line, hindi lang ang loss
Sa bawat --log_freq na hakbang, inililimbag ng lerobot ang loss, grdn, lr, updt_s, data_s, smp/s at, sa CUDA, mem_gb. Sinasabi ng mem_gb kung kasya ang batch, ng lr kung bumababa ang schedule, at ang data_s na lumalapit sa updt_s ay nangangahulugang ang dataloader ang bottleneck, hindi ang GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Kolektahin ang mga checkpoint na maaari mong ikumpara
Ang save_freq ay default sa 20000, kaya ang isang 20000-step na pagpapatakbo ay nag-iiwan ng isang checkpoint at walang maihahambing dito. Itakda sa 2000. Ang pagtulak sa Hub ay nangangailangan ng --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Ipagpatuloy kung mamatay ang makina
Ituro ang --config_path sa train_config.json sa tabi ng checkpoint. Tumanggi ang lerobot na magsimula sa isang umiiral na output_dir maliban kung ipagpapatuloy mo, kaya hindi mo maaaring aksidenteng i-overwrite ang isang run.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Ang mga flag na talagang nagbabago sa resulta
| Flag | Ano ang ginagawa nito | Sa 24 GB |
|---|---|---|
| --batch_size | Mga sample bawat hakbang, halos linear sa VRAM | 4 hanggang 8 |
| --steps | Kabuuang hakbang ng optimizer | 20000 unang pagdaan |
| --policy.scheduler_decay_steps | Haba ng cosine decay, preset 30000 | Gumagana lamang sa itaas ng 30000 |
| --policy.use_amp | Mixed precision; Walang dtype field ang SmolVLA | true kapag limitado ang memorya |
| --num_workers | Mga proseso ng dataloader, default 4 | Taasan hanggang huminto sa pagtaas ang data_s |
| --dataset.eval_split | Bahagi ng mga episode na inilaan bawat gawain | 0.1, kasama ang --eval_steps |
| --policy.freeze_vision_encoder | Pinapanatiling frozen ang vision tower | true sa 24 GB |
| --policy.train_expert_only | Tanging ang ~100 M expert lang ang nakakakuha ng gradients | true muna |
Ang SmolVLA ay nagtatakda ng cosine schedule: scheduler_warmup_steps = 1000, scheduler_decay_steps = 30000, scheduler_decay_lr = 2.5e-6. Sinasabi ng mas lumang payo na ang isang 20000-step na pagtakbo ay humihinto sa kalagitnaan ng pagbaba. Sa 0.6.1, hindi ito nangyayari: CosineDecayWithWarmupSchedulerConfig.build() ay binibigyan ng --steps, at sa ibaba ng num_decay_steps ay binabago nito ang sukat ng pareho, ang warmup na 1000 ay nagiging 666 at ang decay na 30000 ay nagiging 20000, na nagpi-print ng Auto-scaling LR scheduler habang ginagawa ito. Hindi ito kailanman nagbabago ng sukat paitaas: ang pagbaba ay nakakabit sa min(current_step, decay_steps), kaya ang karaniwang --steps=100000 ay nananatili sa pinakamababa mula sa step 30000 hanggang sa dulo, 70 porsyento ng pagtakbo. Tanging ang mahabang panig na iyon ang nangangailangan pa rin ng --policy.scheduler_decay_steps. Ang column na lr ang lugar kung saan ka magche-check.
Ang mga default na iyong minana kung wala kang gagalawin
Isang patakaran config sa lerobot ay nagdadala ng sarili nitong optimizer at scheduler preset, at maliban kung itatakda mo ang use_policy_training_preset=false ang mga preset na iyon ang mananaig. Kalahati ng mga tanong na itinatanong ng mga tao tungkol sa pagsasanay ng SmolVLA ay sinasagot ng isang default na hindi nila alam na umiiral.
| Setting | Default sa lerobot 0.6.1 | Tinukoy sa |
|---|---|---|
| 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 |
Ang dalawang linya na nakakagulat sa mga tao ay freeze_vision_encoder at train_expert_only, parehong totoo. Sa simula, nagsasanay ka ng humigit-kumulang 100 M na parameter, hindi 450 M, kaya ito kasya sa 24 GB. Ang sariling reference run ng LeRobot sa isang four-GPU H100 cluster ay ginagawang false ang pareho; sa isang 24 GB card, ginagawa nitong .
Ang payo ng gabay kapag limitado ka sa memorya ay bawasan ang batch size at gumamit ng gradient accumulation upang mabawi ang epektibong batch. Walang gradient accumulation sa lerobot 0.6.1: TrainPipelineConfig ay walang ganoong field at ang string ay hindi lumalabas kahit saan sa inilabas na package. Ang AY-Robots form ay nagpapakita ng gradient accumulation value na 8 para sa SmolVLA at hindi rin ito inilalapat. Ang iyong mga kontrol sa 24 GB ay --batch_size, ang dalawang freeze default, at --policy.use_amp.
Gaano katagal ang takbo, at ilang hakbang ang sapat
Ang LeRobot ay naglalabas ng wall-clock anchors para sa limang epoch sa isang humigit-kumulang 50 episode dataset, mga 45000 frame sa 30 fps. Mga pigura ng order of magnitude, ayon sa mga docs, ngunit ito ang pagkakaiba sa pagitan ng pag-asa ng isang oras at isang araw.
| Setup | Patakaran | Batch | Oras ng pagpapatakbo |
|---|---|---|---|
| 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 |
Ang patakaran ay 5 hanggang 10 epoch sa dataset, hindi isang nakapirming bilang ng hakbang: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). Sa reference dataset na itinuturo ng mga docs, lerobot/svla_so100_pickplace, ang metadata ay nag-uulat ng 50 episode at 19631 frame: ang batch 8 ay nagbibigay ng humigit-kumulang 2454 hakbang bawat epoch, kaya ang 20000 hakbang ay humigit-kumulang 8 epoch. Hatiin sa kalahati ang batch at ang parehong budget ay makakabili ng kalahati ng mga epoch, kaya ulitin ito tuwing babaguhin mo ang --batch_size.
Pagpapatakbo ng na-fine-tune na patakaran pabalik sa braso
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_placeAng 245 ms bawat hakbang ng aksyon ay madaling maliwanagan: ang patakaran ay naglalabas ng chunk_size = 50 aksyon bawat forward pass at nagpapatupad ng n_action_steps = 50 sa mga ito, kaya kung gaano kadalas mo babayaran ang gastos na iyon ay itinakda ng mga kontrol na iyon, hindi ng kung gaano kadalas nakakatanggap ng utos ang mga servo. Iyan ang binibili ng pag-chunk ng aksyon, at kung bakit ang isang 245 ms na modelo ay kayang magpatakbo ng 30 Hz na braso. Ang natitira ay latency ng inference sa dulo ng chunk.
| Pagsukat (SmolVLA, totoong SO-100) | Synchronous | Asynchronous |
|---|---|---|
| Oras ng pagkumpleto, pick and place, 10 pagsubok | 13.75 s | 9.70 s |
| Mga cycle ng pick and place sa isang nakapirming time window | 9 | 19 |
| Rate ng tagumpay na na-average sa tatlong gawain | 78.3 % | 73.3 % |
Ang ikatlong hilera na iyon ang kadalasang nilalaktawan ng karamihan sa mga sulatin. Ang async inference ay humigit-kumulang 30 porsiyentong mas mabilis at halos doble ang throughput sa isang nakapirming window, at tinatawag ng papel na maihahambing ang mga rate ng tagumpay, na sa average ay totoo. Sa ilalim nito, bumaba ang pag-uuri mula 70 hanggang 50 porsiyento habang ang pick and place ay tumaas ng 5. Ang lerobot 0.6.1 ay nagdadala ng isa pang lever sa parehong binary: --inference.type=rtc ay nagpapalit ng rollout sa real time chunking, na inirerekomenda ng sariling usage block ng script para sa mabagal na mga VLA, Pi0, Pi0.5 at SmolVLA.
Ang control loop ay 20 hanggang 485 ms bawat hakbang ng aksyon depende sa modelo, at ang mga round trip sa pampublikong internet ay nagpapabago sa isang gumaganang patakaran upang maging nag-aalangan. Ang remote inference ay magagawa para sa mabagal na pick and place, hindi para sa mabilis na reactive motion: kung ang gawain ay nangangailangan ng mabilis na pagwawasto, ang GPU ay dapat nasa parehong LAN ng braso.
Hindi kaugnay sa isang training run, ngunit mas marami itong tinatapos na proyekto ng SO-100 kaysa sa anumang hyperparameter. Ang mga Feetech STS3215 servo sa SO-100 at SO-101 ay tumatakbo sa 7.4 V; sinisira sila ng 12 V. Ang LeKiwi ay pinagsasama ang isang 7.4 V na braso na may 12 V na base, na siyang dahilan kung paano nakikita ng maling barrel jack ang maling socket.
Dalawang ruta patungo sa parehong checkpoint
Ikaw ang nagmamay-ari ng makina, ng kapaligiran at ng pag-debug. Ang tanging dependency sa cloud ay ang pag-download ng Hub ng base checkpoint. Ito ang tamang ruta kung gusto mong baguhin ang policy, kung hindi maaaring umalis ang data sa iyong network, o kung idle ang card.
- Kinokontrol mo ang CUDA wheel, ang driver, ang ffmpeg build at ang dataloader.
- Maaari mong i-patch ang configuration_smolvla.py at muling sanayin sa parehong hapon.
- Nagbabayad ka sa kuryente at oras, hindi per run, at i-debug ang TorchCodec nang mag-isa.
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=trueAng parehong run sa likod ng isang form: pipili ka ng modelo at dataset, ang backend ay umuupa ng GPU ayon sa kinakailangang VRAM, pinapatakbo ang trainer at isinusulat ang mga checkpoint sa object storage. Ang dataset ay maaaring magmula sa isang Hugging Face repo id, ang pampublikong direktoryo, o ang iyong makina. Magsimula sa SmolVLA sa SO-100, o ang matrix sa pahina ng pagsasanay.
| Field | Default na ipinapadala ng platform para sa SmolVLA | Tandaan |
|---|---|---|
| batch size | 2 | Konserbatibo para sa 24 GB tier |
| learning rate | 1e-4 | Ang lerobot preset |
| max steps | 20000 | Ang reference run sa mga LeRobot docs |
| gradient accumulation | 8 | Ipinapakita sa form, hindi inilapat |
| extra knobs | seed, logFreq | Ginagawang repeatable ng Seed ang run |
- 2 hanggang 5 oras sa 24 GB tier, humigit-kumulang 1 hanggang 3 USD bawat run.
- Ang parehong operasyon mula sa isang terminal sa /cli at mula sa mga AI agent sa /mcp.
- Ang mga inference pod ay may idle watchdog, kaya ang nakalimutang pod ay sinisira ang sarili nito sa halip na tahimik na mag-bill.
- Wala pang braso? Ang /live ay nag-stream ng isang pisikal na SO-100 na maaari mong patakbuhin nang hindi nagrerehistro.
Ang isang trabaho na natigil sa queue ay isang sintomas ng spot market, hindi isang bug: training job stuck queued. Hakbang-hakbang: sanayin ang iyong unang policy at ang mga training docs.
Kapag mali ang pagpili ng SmolVLA
Ang pagsubok kung ang SmolVLA ang tamang unang pagtakbo ay hindi kung ito ay gumana, kundi kung may sinabi sa iyo ang pagkabigo. Abutin ang 60 o 70 porsiyento at ang isang mas malaking modelo ay isang makatwirang susunod na gastusin: ang data ay nagdadala ng signal. Abutin ang 10 porsiyento at ang isang 3 B na modelo ay malamang na umabot din sa 10 porsiyento, na natutunan mo lang sa halagang tatlong dolyar sa halip na labindalawa.

Sulit basahin bago gumastos pa: Pi0.5 against SmolVLA para sa mas malaking kapasidad sa parehong ideya, at GR00T N1.7 against SmolVLA para sa ruta ng NVIDIA, parehong 80 GB tier sa 4 to 12 USD bawat takbo. Sa kabilang banda, ACT ang mas murang baseline: 80 M parameters, 20 ms bawat action step, walang language conditioning. Lahat ng lima ay nasa ang pahina ng mga policy; ang arena ay may 85 modelo at 332 benchmark result.

Ang checklist bago ka mag-scale ng kahit ano
- Naabot ba ng
lrang 2.5e-6 na floor nito? Sa ibaba ng 30000 steps, binabago ng lerobot ang decay at sinasabi ito sa startup; sa itaas nito, itakda ang--policy.scheduler_decay_stepsnang ikaw mismo. - Higit sa isang checkpoint, at mga episode na inalis gamit ang
--dataset.eval_splitupang magkaroon ng kahulugan ang eval loss. - Gumagalaw ba ang policy? Ang bumababang loss na may hindi gumagalaw na braso ay may partikular na sanhi: bumababa ang loss, walang ginagawa ang policy.
- Nakakaligtas ba ito sa pagbabago ng eksena? Kung hindi: gumagana lang ang policy sa isang setup.
- Isinulat mo ba ang seed? Ang lerobot ay nagde-default sa 1000, kaya ang dalawang hindi nagalaw na run ay nananatiling maihahambing.
- Pagkatapos lamang: mas maraming episode, mas maraming variation, o mas malaking modelo. Sa ganoong pagkakasunod-sunod.
Para sa kung bakit umiiral ang mga modelong ito at kung ano ang ginagawa nila sa input ng wika, ang background; ay nagpapatakbo ng assembly sa pamamagitan ng hanggang sa unang run. Para sa natapos na checkpoint, ; kung hindi lumabas ang braso, .
Sanayin ang SmolVLA sa sarili mong braso
Piliin ang modelo at ang braso at ibibigay sa iyo ng gabay ang eksaktong mga default, ang format ng dataset at kung magkano ang gastos ng run. Ang SmolVLA ay nasa 24 GB tier sa 1 to 3 USD bawat run.
Buksan ang mga gabay sa pagsasanayMaaari ko ba talagang i-fine-tune ang SmolVLA sa isang RTX 4090?▾
Oo. Ayon sa compute guide ng LeRobot, ang SmolVLA ay nangangailangan ng humigit-kumulang 10 hanggang 16 GB ng peak VRAM sa batch 8 na may AdamW at sinasabing ang 24 GB na consumer cards ay kumportable para dito. Ang batch 64 sa halimbawa ng docs ay ipinares sa isang A100. Ang memorya ay halos linearly na nag-i-scale sa batch, kaya gumamit ng 4 o 8 at bantayan ang mem_gb.
Ilang episode ba talaga ang kailangan ko?▾
Itinakda ng AY-Robots ang minimum sa 30. Inirerekomenda ng LeRobot docs ang humigit-kumulang 50 at iniulat na ang 25 episode ng parehong gawain ay nagpakita ng masamang performance. Mas mahalaga ang istraktura kaysa sa bilang: ang reference set ay 5 posisyon ng cube na may 10 episode bawat isa, at ang pag-uulit na iyon ang nagpapalawak ng pagiging pangkalahatan.
Sinasabi ng docs na batch 64, ang platform ay nagpapadala ng batch 2. Alin ang tama?▾
Pareho, para sa iba't ibang hardware. Ang halimbawa ng docs ay gumagamit ng batch 64 at nagsasaad ng humigit-kumulang 4 na oras para sa 20000 steps sa isang A100; ang A100 40 GB anchor ng compute guide ay batch 16. Ang Batch 2 ang ipinapadala ng AY-Robots sa 24 GB tier. Sa lokal, ang 4 hanggang 8 ang gitna, at nagbabago ang epoch arithmetic kasama nito.
SmolVLA o ACT para sa unang pagpapatakbo sa isang SO-100?▾
ACT kung ang gawain ay isang paulit-ulit na galaw at gusto mo ang pinakamabilis na loop: 20 ms bawat action step, 80 M parameters, walang language conditioning. SmolVLA kung gusto mo ng language conditioning, ilang task strings sa isang checkpoint, at isang pretrained base. Pareho silang nasa 24 GB tier, kaya ang pagpipilian ay ang gawain, hindi ang budget.
Kailangan ko bang i-set ang --policy.scheduler_decay_steps?▾
Lamang kapag ang --steps ay higit sa 30000. Ang SmolVLA ay nagtatakda ng cosine decay sa 30000 steps, at ang lerobot 0.6.1 ay awtomatikong binabawasan ito para sa mas maikling pagpapatakbo, nagla-log ng "Auto-scaling LR scheduler" kapag ginagawa ito. Hindi ito kailanman nag-i-scale up, kaya ang stock na --steps=100000 ay iniiwan ang huling 70000 steps sa 2.5e-6 floor.
Sources
- SmolVLA: Isang Vision-Language-Action Model para sa Abot-kaya at Mahusay na Robotics
- SmolVLA: Mahusay na Vision-Language-Action Model (Hugging Face blog)
- lerobot/smolvla_base model card
- LeRobot docs: SmolVLA
- LeRobot docs: Compute HW Guide para sa LeRobot Training
- LeRobot docs: Pag-install
- LeRobot docs: LeRobotDataset v3.0 at ang 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 (mga estratehiya at RTC inference)
- lerobot v0.6.1: pyproject.toml (extras at console entry points)
- lerobot sa PyPI
- lerobot/svla_so100_pickplace dataset (50 episodes, 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