
SmolVLA este un VLA cu 450 M parametri care se reglează fin pe o singură placă de 24 GB. Comenzi reale lerobot 0.6.1, setările implicite efective, capcanele care au costat o zi și costul unei rulări.
SmolVLA într-un singur ecran
- •450 M parametri, dintre care aproximativ 100 M sunt un expert de acțiune de tip flow matching. lerobot antrenează doar acest expert și menține VLM-ul înghețat, motiv pentru care se potrivește pe o singură placă.
- •Ghidul de calcul LeRobot plasează grupul smolvla la aproximativ 10 până la 16 GB de VRAM de vârf la batch 8 cu AdamW. Prin urmare, 24 GB.
- •Punctul de intrare este lerobot-train. Postarea de blog SmolVLA din iunie 2025 încă afișează python lerobot/scripts/train.py, o cale care nu mai există. Tot ce urmează este lerobot 0.6.1.
- •Programul cosinus este prestabilit să decadă pe parcursul a 30000 de pași. lerobot 0.6.1 îl scalează în jos pentru o rulare mai scurtă și îl înregistrează, dar niciodată în sus: rularea standard de 100000 de pași se încheie la pragul de 2.5e-6 pentru 70000 de pași.
- •Treizeci de episoade este minimul AY-Robots, pe un nivel de 24 GB costând 1 până la 3 USD per rulare față de 4 până la 12 pentru modelele de 80 GB.
Majoritatea oamenilor care doresc un model de acțiune limbaj-viziune pe un braț real se opresc la linia hardware. GR00T N1.7 și Pi0.5 au aproximativ trei miliarde de parametri fiecare și necesită un A100 de 80 GB sau un H100. Dacă dețineți un PC de gaming cu un RTX 4090, acesta este sfârșitul drumului. SmolVLA este excepția: 450 M parametri, în cadrul LeRobot, construit pentru a fi ajustat fin pe o singură placă de consum și pentru a servi de pe un CPU.
Mai întâi, ruta manuală: instalați lerobot, extrageți checkpoint-ul lerobot/smolvla_base, rulați comanda reală, citiți rularea pe măsură ce se întâmplă. Apoi, ruta platformei și unde aceasta nu ajută.
Ce este SmolVLA, în cifre pe care le puteți verifica
SmolVLA este o potrivire de flux politică integrată într-un model lingvistic vizual mic. Arhitectura de bază este SmolVLM2-500M-Video-Instruct; lucrarea păstrează doar primele 16 straturi ale modelului său lingvistic, limitează fiecare cadru al camerei la 64 de token-uri vizuale printr-o amestecare de pixeli (pixel shuffle) în loc de segmentare a imaginii (image tiling), și intercalează atenția încrucișată cu un strat de auto-atenție la fiecare al doilea bloc. Costul inferenței a fost o constrângere de proiectare, nu un aspect secundar.
| Proprietate | Valoare | Sursă |
|---|---|---|
| Parametri totali | aproximativ 450 M | lucrare |
| Expert de acțiune | aproximativ 100 M, potrivire de flux | lucrare |
| Arhitectură de bază VLM | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Straturi VLM utilizate | primele 16 ale modelului lingvistic | num_vlm_layers = 16 |
| Token-uri vizuale per cadru | 64, amestecare de pixeli, fără segmentare | lucrare |
| Pre-antrenare | 481 seturi de date comunitare, 22.9 K episoade, 10.6 M cadre; 200000 pași la un lot global de 256 pe 4 GPU-uri | lucrare |
Benchmark-urile sunt motivul pentru care oamenii se preocupă de un model de 450 M. Pe LIBERO, obține o medie de 87.3 procente față de 76.5 pentru OpenVLA la 7 B și 86.0 pentru un Pi0 pre-antrenat pentru robotică la 3.3 B; pe Meta-World, 57.3 față de 47.9. Pe hardware real SO-100, antrenamentul multi-task oferă 75 procente la ridicare și plasare, 90 la stivuire, 70 la sortare, cu o medie de 78.3, unde ACT antrenat per sarcină a obținut o medie de 48.3. Aceleași rânduri se găsesc alături de fiecare VLA publicat în intrarea SmolVLA în arenă și în comparația ACT cu SmolVLA.
SmolVLA nu este mai bun decât un model de 3 B la toate capitolele. Tabelul SO-101 al lucrării este revelator: 90 procente succes în distribuție, 50 procente în afara acesteia, pe o platformă pe care nu a fost niciodată pre-antrenat. Ceea ce susține și demonstrează este că, față de Pi0, se antrenează cu aproximativ 40 procente mai rapid, utilizând de 6 ori mai puțină memorie.
De ce o placă de 24 GB este alegerea potrivită pentru prima rulare
LeRobot oferă un ghid de dimensionare a resurselor de calcul, cea mai utilă pagină din depozit pentru acest scop. Acesta grupează politicile după dimensiunea backbone-ului și oferă o anvelopă VRAM per grup, măsurată la o dimensiune a lotului de 8 cu AdamW, implicitul lerobot. Starea optimizatorului singură adaugă 30 până la 100 la sută peste o simplă trecere înainte și înapoi, deci acestea nu sunt cifre doar pentru ponderi.
| Grup | Politici | VRAM maxim (lot 8, AdamW) | GPU-uri de pornire |
|---|---|---|---|
| BC Ușor | act, vqbet, tdmpc | aproximativ 2 până la 6 GB | RTX 3060, L4 |
| Difuzie | diffusion, multi_task_dit | aproximativ 8 până la 14 GB | RTX 4070+, L4 |
| VLA Mic | smolvla | aproximativ 10 până la 16 GB | RTX 4080+, L4, A10G |
| VLA Mare | pi0, pi0_fast, pi05, xvla, wall_x | aproximativ 24 până la 40 GB | A100 40 GB+ |
| Multimodal | groot, eo1 | aproximativ 24 până la 40 GB | A100 40 GB+ |
Zece până la șaisprezece gigabytes la lot de 8 este argumentul: o placă de 24 GB se potrivește cu asta plus dataloader-ul. AY-Robots plasează SmolVLA pe RTX 4090 sau orice placă de 24 GB, minim 30 episoade, LeRobot v3.0 date, 245 ms per pas de acțiune. Închiriat, asta înseamnă 2 până la 5 ore la 0.30 până la 0.60 USD pe oră, aproximativ 1 până la 3 USD per ajustare fină rulare, față de 4 până la 12 USD pe nivelul de 80 GB de care GR00T și Pi0.5 au nevoie (prețuri). O rulare eșuată SmolVLA este o cafea; o rulare eșuată GR00T, prânzul.

- Se potrivește cu hardware-ul pe care îl dețineți deja: aproximativ 10 până la 16 GB la batch 8.
- O rulare irosită costă ore și câțiva dolari, așa că vă puteți permite să greșiți în privința setului de date.
- Antrenat pe seturi de date comunitare partajate sub eticheta lerobot, cu rezultate reale SO-100 și SO-101.
- Se află în lerobot însuși: fără depozit de la furnizor, iar smolvla_base nu este restricționat.
- 450 M rămâne 450 M: succesul în afara distribuției scade de la 90 la 50 la sută în tabelul SO-101 al lucrării.
- Necesită date LeRobot v3.0; o înregistrare v2.1 trebuie convertită (set de date respins v3).
- 245 ms per pas de acțiune reprezintă un controler competent de tip pick and place, nu unul reactiv.
- Exemplul din documentație rulează batch 64 pe un A100; pe 24 GB schimbi batch-ul pentru timpul real.
Pasul 0: setul de date decide rularea, nu flag-urile
Nimic din cele de mai jos nu contează dacă înregistrarea este proastă. Pagina LeRobot SmolVLA este directă: setul de date de referință a constat din 50 de episoade pe 5 poziții de cub, 10 per poziție, iar aceeași sarcină la 25 de episoade a performat slab. Repetiția per variație generalizează, numărul brut de episoade nu. Nu ați înregistrat niciodată unul? Începeți de la înregistrați primul dvs. set de date, cu clientul desktop, care scrie formatul LeRobot dintr-o sesiune de teleoperație , sau împrumutați unul din directorul de seturi de date.
- Cel puțin 30 de episoade pe AY-Robots, aproximativ 50 pentru rețeta de referință LeRobot.
- Fiecare variație pe care o așteptați la implementare, repetată de mai multe ori.
- Un singur șir de sarcini, scris identic la înregistrare și la implementare. Modelul este condiționat de acel text.
- Camere fixe. O cameră mutată între înregistrare și implementare este cel mai comun motiv pentru care o curbă de pierdere curată rezultă într-un braț imobil.
- O variație reținută pe care nu ați antrenat-o niciodată, astfel încât să aveți ceva onest de testat.
SmolVLA, Pi0.5 și ACT necesită LeRobot v3.0. GR00T N1.7 și N1.5 necesită v2.0 sau v2.1, iar încărcătorul lor se blochează pe v3.0. Înregistrați o singură dată, planificați să comparați modelele mai târziu și veți converti într-un fel sau altul: 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_placeMai multe despre asta în cum să colectați date de antrenament VLA de înaltă calitate. Pe scurt: 30 până la 50 de episoade curate ale unei singure sarcini cu variație deliberată depășesc 200 de episoade neglijente din trei, cu o marjă pe care niciun hiperparametru nu o poate închide.
Instalați 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-infoInstalarea de bază lerobot este minimalistă și blochează dependențele grele în spatele extra-urilor: smolvla adaugă transformers, num2words și accelerate, training stiva de seturi de date și wandb, core_scripts dependențele hardware și de vizualizare. Pe Linux, calea de instalare decide și pachetul CUDA: implicitul PyPI este un pachet cu130 cu un driver minim de 580.65, deci pe un driver mai vechi instalați torch din indexul cu128 mai întâi, apoi lerobot.
--policy.path=lerobot/smolvla_base încarcă punctul de control preantrenat de 450 M și îl ajustează fin. --policy.type=smolvla construiește un SmolVLA nou, iar valoarea implicită a configurației load_vlm_weights = False înseamnă că nu va extrage ponderile backbone SmolVLM2 decât dacă îi cereți. Dacă greșiți, rularea se antrenează fericit, costă la fel și nu învață nimic transferabil.
Rularea antrenamentului, comandă cu comandă
- 1Autentificare în Hub
Checkpoint-ul de bază provine din Hub, iar setul de date probabil la fel.
bashhf auth login - 2Citiți opțiunile o dată
Fiecare câmp din configurația pipeline-ului și a politicii este un flag. Parcurgeți-l rapid înainte de a aprofunda codul sursă.
bashlerobot-train --help - 3Porniți fine-tuning-ul
Exemplul din documentație rulează batch 64 pe un singur A100; ancora ghidului de calcul pentru A100 40 GB este batch 16, iar 8 este echivalentul pentru 24 GB. Nu există un flag de scheduler aici intenționat, vezi mai jos.
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 - 4Citiți linia de log, nu doar pierderea
La fiecare --log_freq pași, lerobot afișează loss, grdn, lr, updt_s, data_s, smp/s și, pe CUDA, mem_gb. mem_gb indică dacă batch-ul încape, lr dacă programul de învățare scade, iar data_s care se apropie de updt_s înseamnă că dataloader-ul este blocajul, nu GPU-ul.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Colectați checkpoint-uri pe care le puteți compara
save_freq are valoarea implicită 20000, deci o rulare de 20000 de pași lasă un singur checkpoint și nimic cu care să-l compari. Setați 2000. Publicarea în Hub necesită --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Reluați dacă mașina se oprește
Indicați --config_path către train_config.json de lângă checkpoint. lerobot refuză să pornească într-un output_dir existent decât dacă reluați, deci nu puteți suprascrie o rulare accidental.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Flag-urile care modifică de fapt rezultatul
| Flag | Ce face | Pe 24 GB |
|---|---|---|
| --batch_size | Eșantioane pe pas, aproximativ liniar în VRAM | 4 to 8 |
| --steps | Pași totali ai optimizatorului | 20000 prima trecere |
| --policy.scheduler_decay_steps | Lungimea decăderii cosinus, presetată la 30000 | Afectează doar peste 30000 |
| --policy.use_amp | Precizie mixtă; SmolVLA nu are câmp dtype | true când memoria este limitată |
| --num_workers | Procese Dataloader, implicit 4 | Măriți până când data_s nu mai crește |
| --dataset.eval_split | Fracția de episoade reținute per sarcină | 0.1, with --eval_steps |
| --policy.freeze_vision_encoder | Menține turnul de viziune înghețat | true on 24 GB |
| --policy.train_expert_only | Doar expertul de ~100 M primește gradienți | true inițial |
SmolVLA preconfigurează un program cosinus: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Sfaturi mai vechi spuneau că o rulare de 20000 de pași se blochează la jumătatea decăderii. În 0.6.1 nu se întâmplă asta: `CosineDecayWithWarmupSchedulerConfig.build()` primește `--steps`, și sub `num_decay_steps` le reeșalonează pe ambele, warmup 1000 la 666 și decay 30000 la 20000, afișând Auto-scaling LR scheduler pe măsură ce face acest lucru. Nu reeșalonează niciodată în sus: decăderea este limitată cu `min(current_step, decay_steps)`, astfel încât `--steps=100000` standard stă la nivelul minim de la pasul 30000 până la sfârșit, 70 la sută din rulare. Doar acea parte lungă mai necesită `--policy.scheduler_decay_steps`. Coloana `lr` este locul unde verificați.
Valorile implicite pe care le moșteniți dacă nu modificați nimic
O configurație în lerobot conține propriul său optimizator și presetare de programator, și dacă nu setați use_policy_training_preset=false acele presetări prevalează. Jumătate din întrebările pe care oamenii le pun despre antrenarea SmolVLA sunt răspunsuri de o valoare implicită pe care nu știau că există.
| Setare | Valoare implicită în lerobot 0.6.1 | Definit în |
|---|---|---|
| dimensiune_bloc / n_pași_acțiune | 50 / 50 | SmolVLAConfig |
| num_pași (denoise prin potrivire de flux) | 10 | SmolVLAConfig |
| optimizer_lr | 1e-4 | SmolVLAConfig |
| scheduler_warmup_steps | 1000 | SmolVLAConfig |
| scheduler_decay_steps | 30000 | SmolVLAConfig |
| scheduler_decay_lr | 2.5e-6 | SmolVLAConfig |
| îngheață_encoder_viziune | true | SmolVLAConfig |
| antrenează_doar_expertul | true | SmolVLAConfig |
| dimensiune_batch / pași | 8 / 100000 | TrainPipelineConfig |
| seed / frecvență_salvare / num_lucrători | 1000 / 20000 / 4 | TrainPipelineConfig |
Cele două linii care surprind oamenii sunt freeze_vision_encoder și train_expert_only, ambele adevărate. Din start, antrenezi aproximativ 100 M parametri, nu 450 M, motiv pentru care se potrivește pe 24 GB. Rularea de referință a LeRobot pe un cluster H100 cu patru GPU-uri le setează pe ambele la fals; pe o placă de 24 GB, asta transformă o rulare funcțională într-un .
Sfatul ghidului atunci când ești limitat de memorie este să reduci dimensiunea lotului (batch size) și să folosești acumularea de gradienți pentru a recupera lotul efectiv. Nu există acumulare de gradienți în lerobot 0.6.1: TrainPipelineConfig nu are un astfel de câmp și șirul nu apare nicăieri în pachetul lansat. Formularul AY-Robots arată o valoare de acumulare a gradienților de 8 pentru SmolVLA și nu o aplică nici el. Pârghiile tale pe 24 GB sunt --batch_size, cele două setări implicite de înghețare și --policy.use_amp.
Cât durează rularea și câte etape sunt suficiente
LeRobot publică ancore de timp real pentru cinci epoci peste un set de date de aproximativ 50 de episoade, aproximativ 45000 de cadre la 30 fps. Cifre de ordin de mărime, spun documentele, dar ele fac diferența între a te aștepta la o oră și o zi.
| Configurație | Politică | Batch | Timp real |
|---|---|---|---|
| Un singur L4 / A10G (24 GB) | smolvla | 4 | aproximativ 3 până la 6 ore |
| Un singur A100 40 GB | smolvla | 16 | aproximativ 1 până la 2 ore |
| 4 x H100 80 GB cu accelerate | smolvla | 32 | aproximativ 1 până la 2 ore |
| Un singur RTX 4090 / RTX 3090 (24 GB) | act | 8 | aproximativ 30 până la 60 min |
Regula este de 5 până la 10 epoci peste setul de date, nu un număr fix de pași: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). Pe setul de date de referință indicat în documentație, lerobot/svla_so100_pickplace, metadatele raportează 50 de episoade și 19631 de cadre: un batch de 8 oferă aproximativ 2454 de pași per epocă, deci 20000 de pași înseamnă aproximativ 8 epoci. Înjumătățiți dimensiunea batch-ului și același buget va acoperi jumătate din epoci, așa că refaceți acest calcul ori de câte ori modificați --batch_size.
Rularea politicii ajustate pe brațul robotului
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_placeCei 245 ms per pas de acțiune sunt ușor de interpretat greșit: politica emite chunk_size = 50 acțiuni per trecere înainte și execută n_action_steps = 50 dintre ele, deci cât de des plătiți acest cost este stabilit de acești parametri, nu de cât de des primesc servomecanismele o comandă. Aceasta este ceea ce fragmentarea acțiunilor oferă, și de ce un model de 245 ms poate acționa un braț de 30 Hz. Ceea ce rămâne este latența inferenței la sfârșitul fragmentului.
| Măsurătoare (SmolVLA, SO-100 real) | Sincron | Asincron |
|---|---|---|
| Timp de finalizare, pick and place, 10 încercări | 13.75 s | 9.70 s |
| Cicluri pick and place într-o fereastră de timp fixă | 9 | 19 |
| Rata de succes medie pe cele trei sarcini | 78.3 % | 73.3 % |
Al treilea rând este ceea ce majoritatea articolelor omit. Inferența asincronă este cu aproximativ 30 la sută mai rapidă și dublează aproximativ debitul într-o fereastră fixă, iar lucrarea consideră ratele de succes comparabile, ceea ce, în medie, sunt. Sub aceasta, sortarea a scăzut de la 70 la 50 la sută, în timp ce pick and place a câștigat 5. lerobot 0.6.1 poartă cealaltă pârghie în același binar: --inference.type=rtc comută desfășurarea la fragmentarea în timp real, pe care blocul de utilizare al scriptului o recomandă pentru VLA-urile lente, Pi0, Pi0.5 și SmolVLA.
Bucla de control este de la 20 la 485 ms per pas de acțiune, în funcție de model, iar călătoriile dus-întors prin internet public transformă o politică funcțională într-una ezitantă. Inferența la distanță este viabilă pentru operațiuni lente de pick and place, nu pentru mișcări reactive rapide: dacă sarcina necesită corecții rapide, GPU-ul trebuie să fie în aceeași rețea locală (LAN) cu brațul.
În afara subiectului pentru o rulare de antrenament, dar pune capăt mai multor proiecte SO-100 decât orice hiperparametru. Servomotoarele Feetech STS3215 din SO-100 și SO-101 funcționează la 7.4 V; 12 V le distruge. LeKiwi combină un braț de 7.4 V cu o bază de 12 V, ceea ce explică cum mufa greșită ajunge în priza greșită.
Două rute către același punct de control
Dețineți mașina, mediul și depanarea. Singura dependență de cloud este descărcarea punctului de control de bază de pe Hub. Ruta corectă dacă doriți să modificați politica, dacă datele nu pot părăsi rețeaua dvs. sau dacă placa este inactivă.
- Controlați pachetul CUDA, driverul, compilarea ffmpeg și dataloader-ul.
- Puteți patch-ui configuration_smolvla.py și reantrena în aceeași după-amiază.
- Plătiți în electricitate și timp, nu per rulare, și depanați TorchCodec singur.
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=trueAceeași rulare în spatele unui formular: alegeți modelul și setul de date, backend-ul închiriază un GPU în funcție de VRAM-ul necesar, rulează antrenorul și scrie puncte de control în stocarea de obiecte. Setul de date poate proveni dintr-un ID de repo Hugging Face, din directorul public, sau de pe mașina dvs. Începeți la SmolVLA pe SO-100, sau la matricea de pe pagina de antrenament.
| Câmp | Valoarea implicită trimisă de platformă pentru SmolVLA | Notă |
|---|---|---|
| dimensiune lot | 2 | Conservator pentru nivelul de 24 GB |
| rată de învățare | 1e-4 | Presetarea lerobot |
| pași maximi | 20000 | Rularea de referință în documentația LeRobot |
| acumulare de gradient | 8 | Afișat în formular, nu aplicat |
| parametri suplimentari | seed, logFreq | Seed-ul face rularea repetabilă |
- 2 până la 5 ore pe nivelul de 24 GB, aproximativ 1 până la 3 USD per rulare.
- Aceleași operațiuni dintr-un terminal la /cli și de la agenți AI la /mcp.
- Pod-urile de inferență au un watchdog inactiv, astfel încât un pod uitat se distruge singur în loc să factureze în liniște.
- Nu aveți încă un braț? /live transmite în flux un SO-100 fizic pe care îl puteți controla fără a vă înregistra.
O sarcină blocată în coadă este un simptom al pieței spot, nu o eroare: sarcină de antrenament blocată în coadă. Pas cu pas: antrenați-vă prima politică și documentația de antrenament.
Când SmolVLA este alegerea greșită
Testul pentru a determina dacă SmolVLA a fost prima rulare corectă nu este dacă a funcționat, ci dacă eșecul ți-a spus ceva. Atingeți 60 sau 70 la sută și un model mai mare este o cheltuială rezonabilă următoare: datele poartă un semnal. Atingeți 10 la sută și un model de 3 B cel mai probabil atinge și el 10 la sută, ceea ce tocmai ați aflat pentru trei dolari în loc de doisprezece.

Merită citit înainte de a cheltui mai mult: Pi0.5 împotriva SmolVLA pentru mai multă capacitate pe aceeași idee, și GR00T N1.7 împotriva SmolVLA pentru ruta NVIDIA, ambele la nivelul de 80 GB la 4 până la 12 USD per rulare. Cealaltă variantă, ACT este linia de bază mai ieftină: 80 M parametri, 20 ms per pas de acțiune, fără condiționare lingvistică. Toate cele cinci se găsesc pe pagina de politici; arena are 85 de modele și 332 de rezultate de benchmark.

Lista de verificare înainte de a scala orice
- A atins
lrpragul de 2.5e-6? Sub 30000 de pași, lerobot rescală decăderea și anunță acest lucru la pornire; peste acest prag, setați--policy.scheduler_decay_stepsmanual. - Mai mult de un checkpoint și episoade reținute cu
--dataset.eval_split, astfel încât pierderea de evaluare să însemne ceva. - Politica se mișcă deloc? O pierdere în scădere cu un braț imobil are cauze specifice: pierderea scade, politica nu face nimic.
- Supraviețuiește unei schimbări de scenă? Dacă nu: politica funcționează doar într-o singură configurație.
- Ați notat seed-ul? lerobot folosește implicit 1000, astfel încât două rulări neatinse să rămână comparabile.
- Abia apoi: mai multe episoade, mai multă variație sau un model mai mare. În această ordine.
Pentru a înțelege de ce există aceste modele și ce fac ele cu intrarea lingvistică, este contextul; parcurge asamblarea de la până la prima rulare de . Pentru checkpoint-ul finalizat, ; dacă brațul nu apare niciodată, .
Antrenați SmolVLA pe propriul braț
Alegeți modelul și brațul, iar ghidul vă oferă valorile implicite exacte, formatul setului de date și costurile rulării. SmolVLA se încadrează în nivelul de 24 GB la 1 până la 3 USD per rulare.
Deschideți ghidurile de antrenamentPot într-adevăr să fine-tune-uiesc SmolVLA pe un RTX 4090?▾
Da. Ghidul de calcul al LeRobot estimează SmolVLA la aproximativ 10 până la 16 GB VRAM de vârf la batch 8 cu AdamW și listează plăcile de consum de 24 GB ca fiind confortabile pentru acesta. Batch 64 din exemplul documentației este asociat cu un singur A100. Memoria scalează aproximativ liniar cu batch-ul, deci folosiți 4 sau 8 și monitorizați mem_gb.
Câte episoade am nevoie de fapt?▾
AY-Robots stabilește minimul la 30. Documentația LeRobot recomandă aproximativ 50 și raportează că 25 de episoade ale aceleiași sarcini au performat slab. Structura este mai importantă decât numărul: setul de referință a fost de 5 poziții de cub cu câte 10 episoade fiecare, iar această repetiție este ceea ce generalizează.
Documentația spune batch 64, platforma trimite batch 2. Care este corect?▾
Ambele, pentru hardware diferit. Exemplul din documentație utilizează batch 64 și menționează aproximativ 4 ore pentru 20000 de pași pe un singur A100; ancora ghidului de calcul pentru A100 40 GB este batch 16. Batch 2 este ceea ce AY-Robots trimite pe nivelul de 24 GB. Local, 4 până la 8 este media, iar aritmetica epocilor se schimbă odată cu aceasta.
SmolVLA sau ACT pentru o primă rulare pe un SO-100?▾
ACT dacă sarcina este o mișcare repetitivă și doriți cea mai rapidă buclă: 20 ms per pas de acțiune, 80 M parametri, fără condiționare lingvistică. SmolVLA dacă doriți condiționare lingvistică, mai multe șiruri de sarcini într-un singur checkpoint și o bază pre-antrenată. Ambele se încadrează în nivelul de 24 GB, deci alegerea este sarcina, nu bugetul.
Trebuie să setez --policy.scheduler_decay_steps?▾
Doar când --steps este peste 30000. SmolVLA presetează decăderea cosinus la 30000 de pași, iar lerobot 0.6.1 o rescală singur pentru o rulare mai scurtă, înregistrând "Auto-scaling LR scheduler" atunci când face acest lucru. Nu scalează niciodată în sus, deci --steps=100000 implicit lasă ultimii 70000 de pași la pragul de 2.5e-6.
Sources
- SmolVLA: Un model Viziune-Limbaj-Acțiune pentru Robotică Accesibilă și Eficientă
- SmolVLA: Model Eficient Viziune-Limbaj-Acțiune (blog Hugging Face)
- Fișa modelului lerobot/smolvla_base
- Documentația LeRobot: SmolVLA
- Documentația LeRobot: Ghid Hardware de Calcul pentru Antrenamentul LeRobot
- Documentația LeRobot: Instalare
- Documentația LeRobot: LeRobotDataset v3.0 și convertorul v2.1
- Documentația LeRobot: Inferență Asincronă
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategii și inferență RTC)
- lerobot v0.6.1: pyproject.toml (extra-uri și puncte de intrare consolă)
- lerobot pe PyPI
- Setul de date lerobot/svla_so100_pickplace (50 de episoade, 19631 de cadre, 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