Ang pahina ng modelo ng SmolVLA sa AY-Robots na nagpapakita ng bilang ng parameter, antas ng GPU, latency ng inference bawat hakbang ng aksyon at ang minimum na bilang ng episode
SmolVLALeRobotPagsasanay ng VLAPag-fine-tuneSO-100

Paano Sanayin ang SmolVLA sa isang 24 GB GPU (lerobot 0.6.1)

AY-Robots ResearchAugust 23, 202617 minuto ng pagbasa

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.

KatangianHalagaPinagmulan
Total parametersmga 450 Mpaper
Action expertmga 100 M, pagtutugma ng daloypaper
VLM backboneHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
VLM layers usedunang 16 ng modelo ng wikanum_vlm_layers = 16
Visual tokens per frame64, pixel shuffle, walang tilingpaper
Pretraining481 dataset ng komunidad, 22.9 K episode, 10.6 M frame; 200000 hakbang sa global batch 256 sa 4 na GPUpaper

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 tapat na bersyon ng pahayag tungkol sa laki

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.

GrupoMga PolicyPeak VRAM (batch 8, AdamW)Panimulang GPU
Light BCact, vqbet, tdmpcabout 2 to 6 GBRTX 3060, L4
Diffusiondiffusion, multi_task_ditabout 8 to 14 GBRTX 4070+, L4
Small VLAsmolvlaabout 10 to 16 GBRTX 4080+, L4, A10G
Large VLApi0, pi0_fast, pi05, xvla, wall_xabout 24 to 40 GBA100 40 GB+
Multimodalgroot, eo1about 24 to 40 GBA100 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.

Talaan ng gastos ng AY-Robots: card bawat patakaran, oras ng pagtakbo, presyo bawat pagtakbo, kinakailangang episodes
Ang SmolVLA at ACT ay nasa hanay ng 24 GB, ang tatlong 3 B na modelo ay nasa hanay ng 80 GB.
Pagsisimula sa SmolVLA sa halip na isang 3 B na modelo
Ano ang makukuha mo
  • 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.
Ano ang isinusuko mo
  • 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.
Ang bitag ng dataset na nagkakahalaga ng isang araw

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.

bash
# v2.1 -> v3.0: aggregates per-episode files into shards and writes the episode offsets
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=${HF_USER}/so100_pick_place
Ang converter ay kasama sa loob ng lerobot, kaya walang karagdagang kailangang i-install. Walang converter sa kabilang direksyon sa package.

Higit 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

bash
# LeRobot needs Python 3.12 or newer as of 0.6.x
conda create -y -n lerobot python=3.12
conda activate lerobot

# TorchCodec decodes the dataset videos and wants ffmpeg
conda install ffmpeg -c conda-forge

# Base package is deliberately thin; extras pull the rest
pip install 'lerobot[smolvla,training,core_scripts]'

# Sanity check: prints the lerobot version, the GPU torch sees, and the console scripts you got
lerobot-info
Ang path ng PyPI. Para i-patch ang trainer, i-clone ang repo at gamitin ang pip install -e ".[smolvla,training]" sa halip.

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

Ang policy.path at policy.type ay hindi parehong flag

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

  1. 1
    Mag-authenticate sa Hub

    Ang base checkpoint ay nagmula sa Hub, at malamang na ganoon din ang iyong dataset.

    bash
    hf auth login
  2. 2
    Basahin ang mga opsyon nang isang beses

    Bawat field ng pipeline at policy config ay isang flag. Basahin ito nang mabilis bago suriin ang source.

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

    bash
    lerobot-train \
      --policy.path=lerobot/smolvla_base \
      --dataset.repo_id=${HF_USER}/so100_pick_place \
      --batch_size=8 \
      --steps=20000 \
      --save_freq=2000 \
      --log_freq=200 \
      --seed=1000 \
      --output_dir=outputs/train/smolvla_pick_place \
      --job_name=smolvla_pick_place \
      --policy.device=cuda \
      --wandb.enable=true
  4. 4
    Basahin 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
  5. 5
    Kolektahin 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
  6. 6
    Ipagpatuloy 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.

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

Ang mga flag na talagang nagbabago sa resulta

FlagAno ang ginagawa nitoSa 24 GB
--batch_sizeMga sample bawat hakbang, halos linear sa VRAM4 hanggang 8
--stepsKabuuang hakbang ng optimizer20000 unang pagdaan
--policy.scheduler_decay_stepsHaba ng cosine decay, preset 30000Gumagana lamang sa itaas ng 30000
--policy.use_ampMixed precision; Walang dtype field ang SmolVLAtrue kapag limitado ang memorya
--num_workersMga proseso ng dataloader, default 4Taasan hanggang huminto sa pagtaas ang data_s
--dataset.eval_splitBahagi ng mga episode na inilaan bawat gawain0.1, kasama ang --eval_steps
--policy.freeze_vision_encoderPinapanatiling frozen ang vision towertrue sa 24 GB
--policy.train_expert_onlyTanging ang ~100 M expert lang ang nakakakuha ng gradientstrue muna
Ang iskedyul: ano ang hinahawakan ng 0.6.1, at ano ang hindi nito hinahawakan

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.

SettingDefault sa lerobot 0.6.1Tinukoy sa
chunk_size / n_action_steps50 / 50SmolVLAConfig
num_steps (flow matching denoise)10SmolVLAConfig
optimizer_lr1e-4SmolVLAConfig
scheduler_warmup_steps1000SmolVLAConfig
scheduler_decay_steps30000SmolVLAConfig
scheduler_decay_lr2.5e-6SmolVLAConfig
freeze_vision_encodertrueSmolVLAConfig
train_expert_onlytrueSmolVLAConfig
batch_size / steps8 / 100000TrainPipelineConfig
seed / save_freq / num_workers1000 / 20000 / 4TrainPipelineConfig

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 kontrol ng memorya na wala

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.

SetupPatakaranBatchOras ng pagpapatakbo
Single L4 / A10G (24 GB)smolvla4about 3 to 6 h
Single A100 40 GBsmolvla16about 1 to 2 h
4 x H100 80 GB with acceleratesmolvla32about 1 to 2 h
Single RTX 4090 / RTX 3090 (24 GB)act8about 30 to 60 min
Gawin ang aritmetika ng epoch bago mo piliin ang --steps

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

bash
lerobot-rollout \
  --strategy.type=base \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower_arm \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
  --task="Grasp the cube and put it in the box." \
  --policy.path=${HF_USER}/smolvla_pick_place
Ang task string ay dapat tumugma sa iyong nairekord. Ang modelo ay nakakondisyon sa tekstong iyon, kaya ang isang paraphrase ay ibang instruksyon.

Ang 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)SynchronousAsynchronous
Oras ng pagkumpleto, pick and place, 10 pagsubok13.75 s9.70 s
Mga cycle ng pick and place sa isang nakapirming time window919
Rate ng tagumpay na na-average sa tatlong gawain78.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 inference ay kailangang nasa tabi ng mga servo

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.

7.4 V, hindi 12 V

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.
bash
pip install 'lerobot[smolvla,training,core_scripts]'
hf auth login

lerobot-train \
  --policy.path=lerobot/smolvla_base \
  --dataset.repo_id=${HF_USER}/so100_pick_place \
  --batch_size=8 --steps=20000 \
  --save_freq=2000 --seed=1000 \
  --output_dir=outputs/train/smolvla_pick_place \
  --job_name=smolvla_pick_place \
  --policy.device=cuda --wandb.enable=true
Ang buong manual na ruta sa isang block, lerobot 0.6.1.

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.

Ang training matrix ng AY-Robots: limang policy bilang row, apat na robot arm bilang column
Ang bawat cell ay may sariling gabay. Ang SmolVLA ay may isa para sa bawat isa sa apat na braso.

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 paghahambing ng mga policy ng AY-Robots: parameters, GPU tier, latency, minimum episodes
Ang apat na numero na nagpapasya sa isang takbo.

Ang checklist bago ka mag-scale ng kahit ano

  1. Naabot ba ng lr ang 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_steps nang ikaw mismo.
  2. Higit sa isang checkpoint, at mga episode na inalis gamit ang --dataset.eval_split upang magkaroon ng kahulugan ang eval loss.
  3. 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.
  4. Nakakaligtas ba ito sa pagbabago ng eksena? Kung hindi: gumagana lang ang policy sa isang setup.
  5. Isinulat mo ba ang seed? Ang lerobot ay nagde-default sa 1000, kaya ang dalawang hindi nagalaw na run ay nananatiling maihahambing.
  6. 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 pagsasanay
Maaari 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started