
SmolVLA è un VLA da 450 M parametri che si può ottimizzare su una singola scheda da 24 GB. Comandi reali di lerobot 0.6.1, i valori predefiniti effettivi, le insidie che costano una giornata e il costo di un'esecuzione.
SmolVLA in una schermata
- •450 M parametri, di cui circa 100 M sono un esperto di azioni di flow matching. lerobot addestra solo quell'esperto e mantiene il VLM congelato, motivo per cui si adatta a una singola scheda.
- •La guida al calcolo di LeRobot stima il gruppo smolvla a circa 10-16 GB di VRAM di picco con batch 8 e AdamW. Quindi 24 GB.
- •Il punto di ingresso è lerobot-train. Il post del blog di SmolVLA di giugno 2025 stampa ancora python lerobot/scripts/train.py, un percorso che non esiste più. Tutto ciò che segue si riferisce a lerobot 0.6.1.
- •La schedulazione coseno è preimpostata per decadere su 30000 passi. lerobot 0.6.1 la ridimensiona per un'esecuzione più breve e la registra, ma mai verso l'alto: l'esecuzione standard di 100000 passi termina al limite inferiore di 2.5e-6 per 70000 passi.
- •Trenta episodi è il minimo di AY-Robots, su un livello da 24 GB che costa da 1 a 3 USD per esecuzione contro 4 a 12 per i modelli da 80 GB.
La maggior parte delle persone che desiderano un modello di azione linguaggio-visione su un braccio reale si fermano alla linea hardware. GR00T N1.7 e Pi0.5 sono circa tre miliardi di parametri ciascuno e richiedono una A100 da 80 GB o una H100. Se possiedi un PC da gaming con una RTX 4090, quella è la fine della strada. SmolVLA è l'eccezione: 450 M parametri, all'interno di LeRobot, costruito per il fine-tuning su una singola scheda consumer e per il servizio da una CPU.
Il percorso manuale prima: installa lerobot, scarica il checkpoint lerobot/smolvla_base, esegui il comando reale, leggi l'esecuzione mentre avviene. Poi il percorso della piattaforma, e dove non aiuta.
Cosa è SmolVLA, in numeri che puoi verificare
SmolVLA è una corrispondenza di flusso politica integrata in un piccolo modello linguistico visivo. L'architettura di base è SmolVLM2-500M-Video-Instruct; il documento mantiene solo i primi 16 strati del suo modello linguistico, limita ogni frame della telecamera a 64 token visivi con un pixel shuffle invece della tassellatura dell'immagine, e intercala l'attenzione incrociata con uno strato di auto-attenzione ogni secondo blocco. Il costo di inferenza è stato un vincolo di progettazione, non un ripensamento.
| Proprietà | Valore | Fonte |
|---|---|---|
| Parametri totali | circa 450 M | paper |
| Esperto di azioni | circa 100 M, corrispondenza di flusso | paper |
| Architettura VLM | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Strati VLM utilizzati | primi 16 del modello linguistico | num_vlm_layers = 16 |
| Token visivi per frame | 64, pixel shuffle, nessuna tassellatura | paper |
| Pre-addestramento | 481 dataset della comunità, 22.9 K episodi, 10.6 M frame; 200000 passi con batch globale 256 su 4 GPU | paper |
I benchmark sono il motivo per cui le persone si interessano a un modello da 450 M. Su LIBERO, ottiene una media dell'87.3 percento contro il 76.5 per OpenVLA a 7 B e l'86.0 per un Pi0 pre-addestrato per la robotica a 3.3 B; su Meta-World, 57.3 contro 47.9. Su hardware SO-100 reale, l'addestramento multi-task fornisce il 75 percento su pick and place, il 90 su stacking, il 70 su sorting, con una media del 78.3, dove ACT addestrato per compito ha ottenuto una media del 48.3. Le stesse righe si trovano accanto a ogni VLA pubblicato nella voce dell'arena SmolVLA e nel confronto ACT contro SmolVLA.
SmolVLA non è migliore di un modello da 3 B in tutto. La tabella SO-101 del documento stesso lo rivela: 90 percento di successo in distribuzione, 50 percento fuori distribuzione, su una piattaforma su cui non è mai stato pre-addestrato. Ciò che afferma, e supporta, è che rispetto a Pi0 si addestra circa il 40 percento più velocemente con 6 volte meno memoria.
Perché una scheda da 24 GB è la scelta giusta per la prima esecuzione
LeRobot fornisce una guida al dimensionamento del calcolo, la pagina più utile nel repository per questo scopo. Raggruppa le policy per dimensione del backbone e fornisce un limite di VRAM per gruppo, misurato con una dimensione del batch di 8 e AdamW, l'impostazione predefinita di lerobot. Lo stato dell'ottimizzatore da solo aggiunge dal 30 al 100 percento rispetto a un semplice passaggio forward e backward, quindi queste non sono cifre relative solo ai pesi.
| Gruppo | Policy | VRAM di picco (batch 8, AdamW) | GPU iniziali |
|---|---|---|---|
| BC Leggero | act, vqbet, tdmpc | about 2 to 6 GB | RTX 3060, L4 |
| Diffusione | diffusion, multi_task_dit | about 8 to 14 GB | RTX 4070+, L4 |
| VLA Piccolo | smolvla | about 10 to 16 GB | RTX 4080+, L4, A10G |
| VLA Grande | pi0, pi0_fast, pi05, xvla, wall_x | about 24 to 40 GB | A100 40 GB+ |
| Multimodale | groot, eo1 | about 24 to 40 GB | A100 40 GB+ |
Dieci a sedici gigabyte con batch 8 è l'argomento: una scheda da 24 GB si adatta a questo più il dataloader. AY-Robots posiziona SmolVLA sulla RTX 4090 o su qualsiasi scheda da 24 GB, minimo 30 episodi, LeRobot v3.0 dati, 245 ms per passo d'azione. Noleggiata, sono da 2 a 5 ore a 0.30 a 0.60 USD all'ora, circa da 1 a 3 USD per una fine-tuning esecuzione, contro 4 a 12 USD sul livello da 80 GB che GR00T e Pi0.5 richiedono (pricing). Un'esecuzione fallita di SmolVLA è un caffè; un'esecuzione fallita di GR00T, un pranzo.

- Si adatta all'hardware che potresti già possedere: circa 10-16 GB con batch 8.
- Un'esecuzione sprecata costa ore e pochi dollari, quindi puoi permetterti di sbagliare sul dataset.
- Pre-addestrato su dataset della community condivisi sotto il tag lerobot, con risultati reali SO-100 e SO-101.
- Vive in lerobot stesso: nessun repository del fornitore, e smolvla_base non è bloccato.
- 450 M sono pur sempre 450 M: il successo fuori distribuzione scende dal 90 al 50 percento nella tabella SO-101 del paper.
- Richiede dati LeRobot v3.0; una registrazione v2.1 deve essere convertita (dataset rifiutato v3).
- 245 ms per passo d'azione sono un controller di pick and place competente, non reattivo.
- L'esempio della documentazione esegue batch 64 su una A100; su 24 GB si scambia il batch per il tempo reale.
Passo 0: il dataset decide l'esecuzione, non i flag
Niente di quanto segue ha importanza se la registrazione è scadente. La pagina LeRobot SmolVLA è chiara: il dataset di riferimento era di 50 episodi distribuiti su 5 posizioni del cubo, 10 per posizione, e lo stesso compito con 25 episodi ha avuto prestazioni scarse. La ripetizione per variazione generalizza, il conteggio grezzo degli episodi no. Non ne hai mai registrato uno? Inizia da registra il tuo primo dataset, con il client desktop, che scrive il formato LeRobot da una sessione di teleoperazione, o prendine uno in prestito dalla directory dei dataset.
- Almeno 30 episodi su AY-Robots, circa 50 per la ricetta di riferimento LeRobot.
- Ogni variazione che ti aspetti al rollout, ripetuta più volte.
- Una stringa di attività, scritta in modo identico al momento della registrazione e del rollout. Il modello è condizionato da quel testo.
- Telecamere fisse. Una telecamera spostata tra la registrazione e il rollout è la ragione più comune per cui una curva di perdita pulita produce un braccio immobile.
- Una variazione 'held-out' su cui non hai mai addestrato, in modo da avere qualcosa di onesto contro cui testare.
SmolVLA, Pi0.5 e ACT richiedono LeRobot v3.0. GR00T N1.7 e N1.5 richiedono v2.0 o v2.1 e il loro loader si blocca su v3.0. Registra una volta, pianifica di confrontare i modelli in seguito, e dovrai convertire in un modo o nell'altro: dataset rifiutato 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_placeMaggiori informazioni su questo in come raccogliere dati di addestramento VLA di alta qualità. La versione breve: da 30 a 50 episodi puliti di un'unica attività con variazione intenzionale battono 200 episodi sciatto di tre, con un margine che nessun iperparametro può colmare.
Installa 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-infoL'installazione base lerobot, è leggera e nasconde dipendenze pesanti dietro gli extra: smolvla aggiunge transformers, num2words e accelerate, training lo stack del dataset e wandb, core_scripts le dipendenze hardware e di visualizzazione. Su Linux il percorso di installazione decide anche il tuo wheel CUDA: il default PyPI è un wheel cu130 con un driver minimo di 580.65, quindi su un driver più vecchio installa prima torch dall'indice cu128, poi lerobot.
--policy.path=lerobot/smolvla_base carica il checkpoint pre-addestrato da 450 M e lo ottimizza. --policy.type=smolvla costruisce un nuovo SmolVLA, e il default di configurazione load_vlm_weights = False significa che non scarica nemmeno i pesi del backbone SmolVLM2 a meno che tu non lo richieda. Se sbagli, l'esecuzione si addestra felicemente, costa lo stesso e non impara nulla di trasferibile.
L'esecuzione dell'addestramento, comando per comando
- 1Autenticarsi all'Hub
Il checkpoint di base proviene dall'Hub, e probabilmente anche il tuo dataset.
bashhf auth login - 2Leggere le opzioni una volta
Ogni campo della configurazione della pipeline e della policy è un flag. Dagli una scorsa prima di approfondire il codice sorgente.
bashlerobot-train --help - 3Avviare il fine-tuning
L'esempio della documentazione esegue un batch di 64 su una singola A100; l'ancora della guida al calcolo per A100 da 40 GB è un batch di 16, e 8 è l'equivalente per 24 GB. Nessun flag scheduler qui di proposito, vedi sotto.
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 - 4Leggere la riga di log, non solo la perdita
Ogni --log_freq passi, lerobot stampa loss, grdn, lr, updt_s, data_s, smp/s e, su CUDA, mem_gb. mem_gb indica se il batch si adatta, lr se lo schedule sta decadendo, e data_s che si avvicina a updt_s significa che il dataloader è il collo di bottiglia, non la GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Raccogliere checkpoint da confrontare
save_freq è impostato di default a 20000, quindi un'esecuzione di 20000 passi lascia un solo checkpoint e nulla con cui confrontarlo. Imposta 2000. Il push all'Hub richiede --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Riprendere se la macchina si blocca
Punta --config_path al train_config.json accanto al checkpoint. lerobot si rifiuta di avviare in una output_dir esistente a meno che tu non stia riprendendo, quindi non puoi sovrascrivere un'esecuzione per errore.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
I flag che effettivamente cambiano il risultato
| Flag | Cosa fa | Su 24 GB |
|---|---|---|
| --batch_size | Campioni per passo, circa lineare nella VRAM | 4 a 8 |
| --steps | Passi totali dell'ottimizzatore | 20000 primo passaggio |
| --policy.scheduler_decay_steps | Lunghezza del decadimento coseno, preimpostato a 30000 | Ha effetto solo sopra i 30000 |
| --policy.use_amp | Precisione mista; SmolVLA non ha un campo dtype | true quando la memoria è limitata |
| --num_workers | Processi del dataloader, default 4 | Aumenta finché data_s non smette di salire |
| --dataset.eval_split | Frazione di episodi esclusi per compito | 0.1, con --eval_steps |
| --policy.freeze_vision_encoder | Mantiene il vision tower congelato | true su 24 GB |
| --policy.train_expert_only | Solo l'esperto da ~100 M riceve i gradienti | true inizialmente |
SmolVLA preimposta una pianificazione a coseno: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Consigli precedenti indicavano che un'esecuzione di 20000 passi si bloccava a metà del decadimento. Nella versione 0.6.1 non è così: `CosineDecayWithWarmupSchedulerConfig.build()` riceve `--steps`, e al di sotto di `num_decay_steps` riscala entrambi, il warmup da 1000 a 666 e il decadimento da 30000 a 20000, stampando Auto-scaling LR scheduler mentre lo fa. Non riscala mai verso l'alto: il decadimento è limitato con `min(current_step, decay_steps)`, quindi il valore predefinito `--steps=100000` rimane al minimo dal passo 30000 alla fine, il 70 percento dell'esecuzione. Solo quel lato lungo necessita ancora di `--policy.scheduler_decay_steps`. La colonna `lr` è dove si controlla.
Le impostazioni predefinite che erediti se non modifichi nulla
Una configurazione in lerobot include il proprio preset di ottimizzatore e scheduler, e a meno che tu non imposti use_policy_training_preset=false quei preset prevalgono. Metà delle domande che le persone pongono sull'addestramento di SmolVLA trovano risposta in un'impostazione predefinita di cui non conoscevano l'esistenza.
| Impostazione | Predefinito in lerobot 0.6.1 | Definito in |
|---|---|---|
| dimensione_chunk / n_passi_azione | 50 / 50 | SmolVLAConfig |
| num_passi (denoise con flow matching) | 10 | SmolVLAConfig |
| lr_ottimizzatore | 1e-4 | SmolVLAConfig |
| passi_warmup_scheduler | 1000 | SmolVLAConfig |
| passi_decadimento_scheduler | 30000 | SmolVLAConfig |
| lr_decadimento_scheduler | 2.5e-6 | SmolVLAConfig |
| blocca_encoder_visione | true | SmolVLAConfig |
| addestra_solo_esperto | true | SmolVLAConfig |
| dimensione_batch / passi | 8 / 100000 | TrainPipelineConfig |
| seed / freq_salvataggio / num_worker | 1000 / 20000 / 4 | TrainPipelineConfig |
Le due righe che sorprendono le persone sono freeze_vision_encoder e train_expert_only, entrambe vere. Di default si addestrano circa 100 M parametri, non 450 M, motivo per cui si adatta a 24 GB. L'esecuzione di riferimento di LeRobot su un cluster H100 a quattro GPU imposta entrambe su false; su una scheda da 24 GB questo trasforma un'esecuzione funzionante in .
Il consiglio della guida quando si è limitati dalla memoria è di ridurre la dimensione del batch e usare l'accumulo del gradiente per recuperare il batch effettivo. Non c'è accumulo del gradiente in lerobot 0.6.1: TrainPipelineConfig non ha tale campo e la stringa non appare da nessuna parte nel pacchetto rilasciato. Il modulo AY-Robots mostra un valore di accumulo del gradiente di 8 per SmolVLA e non lo applica. Le tue leve su 24 GB sono --batch_size, i due default di freeze, e --policy.use_amp.
Quanto tempo impiega l'esecuzione e quanti passi sono sufficienti
LeRobot pubblica riferimenti temporali (wall-clock) per cinque epoche su un dataset di circa 50 episodi, circa 45000 frame a 30 fps. Sono cifre dell'ordine di grandezza, dicono i documenti, ma fanno la differenza tra aspettarsi un'ora e un giorno.
| Configurazione | Policy | Batch | Tempo effettivo |
|---|---|---|---|
| Singola L4 / A10G (24 GB) | smolvla | 4 | circa 3 a 6 h |
| Singola A100 40 GB | smolvla | 16 | circa 1 a 2 h |
| 4 x H100 80 GB con accelerate | smolvla | 32 | circa 1 a 2 h |
| Singola RTX 4090 / RTX 3090 (24 GB) | act | 8 | circa 30 a 60 min |
La regola è 5-10 epoche sull'insieme di dati, non un numero fisso di passi: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). Sul dataset di riferimento indicato dalla documentazione, lerobot/svla_so100_pickplace, i metadati riportano 50 episodi e 19631 frame: un batch di 8 dà circa 2454 passi per epoca, quindi 20000 passi corrispondono a circa 8 epoche. Dimezzate il batch e lo stesso budget vi darà la metà delle epoche, quindi rifate questo calcolo ogni volta che modificate --batch_size.
Esecuzione della policy ottimizzata sul braccio robotico
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_placeI 245 ms per passo d'azione sono facili da interpretare erroneamente: la policy emette chunk_size = 50 azioni per passaggio forward ed esegue n_action_steps = 50 di esse, quindi la frequenza con cui si paga quel costo è impostata da questi parametri, non dalla frequenza con cui i servi ricevono un comando. Questo è ciò che offre, e perché un modello da 245 ms può pilotare un braccio a 30 Hz. Ciò che rimane è la alla fine del chunk.
| Misurazione (SmolVLA, SO-100 reale) | Sincrono | Asincrono |
|---|---|---|
| Tempo di completamento, pick and place, 10 prove | 13.75 s | 9.70 s |
| Cicli di pick and place in una finestra temporale fissa | 9 | 19 |
| Tasso di successo medio sulle tre attività | 78.3 % | 73.3 % |
Quella terza riga è ciò che la maggior parte delle descrizioni omette. L'inferenza asincrona è circa il 30 percento più veloce e raddoppia approssimativamente il throughput in una finestra fissa, e il documento definisce i tassi di successo comparabili, cosa che in media sono. Sotto di essa, l'ordinamento è sceso dal 70 al 50 percento mentre il pick and place ha guadagnato 5. lerobot 0.6.1 porta l'altra leva nello stesso binario: --inference.type=rtc commuta il rollout al chunking in tempo reale, che il blocco di utilizzo dello script stesso raccomanda per i VLA lenti, Pi0, Pi0.5 e SmolVLA.
Il loop di controllo è di 20-485 ms per passo d'azione a seconda del modello, e i round trip su internet pubblico trasformano una policy funzionante in una esitante. L'inferenza remota è fattibile per il pick and place lento, non per il movimento reattivo veloce: se il compito richiede correzioni rapide, la GPU deve trovarsi sulla stessa LAN del braccio.
Fuori tema per un'esecuzione di training, ma pone fine a più progetti SO-100 di qualsiasi iperparametro. I servi Feetech STS3215 nei robot SO-100 e SO-101 funzionano a 7.4 V; 12 V li distrugge. Il LeKiwi combina un braccio da 7.4 V con una base da 12 V, ed è così che il jack cilindrico sbagliato trova la presa sbagliata.
Due percorsi allo stesso checkpoint
Possiedi la macchina, l'ambiente e il debugging. L'unica dipendenza dal cloud è il download dell'Hub del checkpoint di base. Il percorso giusto se vuoi modificare la policy, se i dati non possono lasciare la tua rete, o se la scheda è inattiva.
- Controlli la ruota CUDA, il driver, la build ffmpeg e il dataloader.
- Puoi patchare configuration_smolvla.py e riaddestrare lo stesso pomeriggio.
- Paghi in elettricità e tempo, non per esecuzione, e fai il debug di TorchCodec da solo.
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=trueLa stessa esecuzione dietro un modulo: scegli modello e dataset, il backend noleggia una GPU in base alla VRAM richiesta, esegue il trainer e scrive checkpoint nello storage oggetti. Il dataset può provenire da un ID repo di Hugging Face, dalla directory pubblica, o dalla tua macchina. Inizia da SmolVLA su SO-100, o dalla matrice sulla pagina di training.
| Campo | Valore predefinito inviato dalla piattaforma per SmolVLA | Nota |
|---|---|---|
| batch size | 2 | Conservativo per il livello da 24 GB |
| learning rate | 1e-4 | Il preset di lerobot |
| max steps | 20000 | L'esecuzione di riferimento nella documentazione di LeRobot |
| gradient accumulation | 8 | Mostrato nel modulo, non applicato |
| extra knobs | seed, logFreq | Il seed rende l'esecuzione ripetibile |
- Da 2 a 5 ore sul livello da 24 GB, circa da 1 a 3 USD per esecuzione.
- Le stesse operazioni da un terminale su /cli e da agenti AI su /mcp.
- I pod di inferenza includono un watchdog inattivo, quindi un pod dimenticato si autodistrugge invece di fatturare silenziosamente.
- Non hai ancora un braccio? /live trasmette in streaming un SO-100 fisico che puoi guidare senza registrarti.
Un job bloccato in coda è un sintomo del mercato spot, non un bug: job di training bloccato in coda. Passo dopo passo: addestra la tua prima policy e la documentazione di training.
Quando SmolVLA è la scelta sbagliata
Il test per stabilire se SmolVLA fosse la prima esecuzione giusta non è se abbia funzionato, ma se il fallimento ti abbia detto qualcosa. Raggiungi il 60 o 70 percento e un modello più grande è una spesa successiva ragionevole: i dati portano un segnale. Raggiungi il 10 percento e un modello da 3 B molto probabilmente raggiunge anch'esso il 10 percento, cosa che hai appena imparato per tre dollari invece di dodici.

Vale la pena leggere prima di spendere di più: Pi0.5 contro SmolVLA per una maggiore capacità sulla stessa idea, e GR00T N1.7 contro SmolVLA per il percorso NVIDIA, entrambi di livello 80 GB a 4-12 USD per esecuzione. L'altro modo, ACT è la base di riferimento più economica: 80 M parametri, 20 ms per passo d'azione, nessun condizionamento linguistico. Tutti e cinque si trovano su la pagina delle policy; l'arena ha 85 modelli e 332 risultati di benchmark.

La checklist prima di scalare qualsiasi cosa
- Il
lrha raggiunto il suo limite inferiore di 2.5e-6? Sotto i 30000 passi lerobot ricalibra il decadimento e lo indica all'avvio; sopra, imposta--policy.scheduler_decay_stepsmanualmente. - Più di un checkpoint, ed episodi tenuti da parte con
--dataset.eval_splitin modo che la perdita di valutazione abbia un significato. - La policy si muove affatto? Una perdita in calo con un braccio immobile ha cause specifiche: la perdita diminuisce, la policy non fa nulla.
- Sopravvive a un cambio di scena? Se no: la policy funziona solo in una configurazione.
- Hai annotato il seed? lerobot imposta 1000 come predefinito, quindi due esecuzioni non modificate rimangono comparabili.
- Solo allora: più episodi, più variazione o un modello più grande. In quest'ordine.
Perché questi modelli esistono e cosa fanno con l'input linguistico, , è il contesto; esegue l'assemblaggio attraverso fino alla prima esecuzione di . Per il checkpoint finale, ; se il braccio non appare mai, .
Addestra SmolVLA sul tuo braccio
Scegli il modello e il braccio e la guida ti fornirà i valori predefiniti esatti, il formato del dataset e i costi di esecuzione. SmolVLA si trova sul livello da 24 GB a 1-3 USD per esecuzione.
Apri le guide all'addestramentoPosso davvero fare il fine-tuning di SmolVLA su una RTX 4090?▾
Sì. La guida al calcolo di LeRobot indica SmolVLA a circa 10-16 GB di VRAM di picco con batch 8 e AdamW, e elenca le schede consumer da 24 GB come adatte. Il batch 64 nell'esempio della documentazione è abbinato a una singola A100. La memoria scala approssimativamente in modo lineare con il batch, quindi usa 4 o 8 e monitora mem_gb.
Di quanti episodi ho effettivamente bisogno?▾
AY-Robots fissa il minimo a 30. La documentazione di LeRobot ne raccomanda circa 50 e riporta che 25 episodi dello stesso compito hanno avuto prestazioni scarse. La struttura è più importante della quantità: il set di riferimento era di 5 posizioni di cubi con 10 episodi ciascuna, e quella ripetizione è ciò che generalizza.
La documentazione dice batch 64, la piattaforma invia batch 2. Qual è quello giusto?▾
Entrambi, per hardware diversi. L'esempio della documentazione usa batch 64 e indica circa 4 ore per 20000 passi su una singola A100; l'ancora della guida al calcolo per A100 40 GB è batch 16. Batch 2 è ciò che AY-Robots invia sul livello da 24 GB. Localmente 4-8 è la via di mezzo, e l'aritmetica delle epoche cambia di conseguenza.
SmolVLA o ACT per una prima esecuzione su un SO-100?▾
ACT se il compito è un movimento ripetitivo e vuoi il loop più veloce: 20 ms per passo d'azione, 80 M parametri, nessuna condizionamento linguistico. SmolVLA se vuoi il condizionamento linguistico, diverse stringhe di compito in un unico checkpoint e una base pre-addestrata. Entrambi si trovano sul livello da 24 GB, quindi la scelta è il compito, non il budget.
Devo impostare --policy.scheduler_decay_steps?▾
Solo quando --steps è superiore a 30000. SmolVLA preimposta il decadimento coseno a 30000 passi, e lerobot 0.6.1 lo riscala automaticamente per un'esecuzione più breve, registrando "Auto-scaling LR scheduler" quando lo fa. Non scala mai verso l'alto, quindi il valore predefinito --steps=100000 lascia gli ultimi 70000 passi al limite inferiore di 2.5e-6.
Sources
- SmolVLA: Un modello Visione-Linguaggio-Azione per la Robotica Accessibile ed Efficiente
- SmolVLA: Modello Visione-Linguaggio-Azione Efficiente (blog di Hugging Face)
- Scheda del modello lerobot/smolvla_base
- Documentazione LeRobot: SmolVLA
- Documentazione LeRobot: Guida all'Hardware di Calcolo per l'Addestramento LeRobot
- Documentazione LeRobot: Installazione
- Documentazione LeRobot: LeRobotDataset v3.0 e il convertitore v2.1
- Documentazione LeRobot: Inferenza Asincrona
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategie e inferenza RTC)
- lerobot v0.6.1: pyproject.toml (extra e punti di ingresso console)
- lerobot su PyPI
- dataset lerobot/svla_so100_pickplace (50 episodi, 19631 frame, 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