La pagina del modello SmolVLA su AY-Robots che mostra il conteggio dei parametri, il livello della GPU, la latenza di inferenza per passo d'azione e il numero minimo di episodi
SmolVLALeRobotAddestramento VLAFine-TuningSO-100

Come Addestrare SmolVLA su una GPU da 24 GB (lerobot 0.6.1)

AY-Robots ResearchAugust 23, 202617 min di lettura

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àValoreFonte
Parametri totalicirca 450 Mpaper
Esperto di azionicirca 100 M, corrispondenza di flussopaper
Architettura VLMHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
Strati VLM utilizzatiprimi 16 del modello linguisticonum_vlm_layers = 16
Token visivi per frame64, pixel shuffle, nessuna tassellaturapaper
Pre-addestramento481 dataset della comunità, 22.9 K episodi, 10.6 M frame; 200000 passi con batch globale 256 su 4 GPUpaper

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.

La versione onesta dell'affermazione sulle dimensioni

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.

GruppoPolicyVRAM di picco (batch 8, AdamW)GPU iniziali
BC Leggeroact, vqbet, tdmpcabout 2 to 6 GBRTX 3060, L4
Diffusionediffusion, multi_task_ditabout 8 to 14 GBRTX 4070+, L4
VLA Piccolosmolvlaabout 10 to 16 GBRTX 4080+, L4, A10G
VLA Grandepi0, pi0_fast, pi05, xvla, wall_xabout 24 to 40 GBA100 40 GB+
Multimodalegroot, eo1about 24 to 40 GBA100 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.

Tabella dei costi di AY-Robots: scheda per policy, tempo di esecuzione, prezzo per esecuzione, episodi necessari
SmolVLA e ACT si trovano sulla riga da 24 GB, i tre modelli da 3 B sulla riga da 80 GB.
Iniziare con SmolVLA invece di un modello da 3 B
Cosa si ottiene
  • 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.
Cosa si rinuncia
  • 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.
La trappola del dataset che costa una giornata

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.

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
Il convertitore è incluso in lerobot, quindi non c'è nulla di extra da installare. Non c'è un convertitore nella direzione opposta nel pacchetto.

Maggiori 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

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
Il percorso PyPI. Per applicare patch al trainer, clona il repository e usa pip install -e ".[smolvla,training]" invece.

L'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 e policy.type non sono lo stesso flag

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

  1. 1
    Autenticarsi all'Hub

    Il checkpoint di base proviene dall'Hub, e probabilmente anche il tuo dataset.

    bash
    hf auth login
  2. 2
    Leggere le opzioni una volta

    Ogni campo della configurazione della pipeline e della policy è un flag. Dagli una scorsa prima di approfondire il codice sorgente.

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

    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
    Leggere 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
  5. 5
    Raccogliere 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
  6. 6
    Riprendere 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.

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

I flag che effettivamente cambiano il risultato

FlagCosa faSu 24 GB
--batch_sizeCampioni per passo, circa lineare nella VRAM4 a 8
--stepsPassi totali dell'ottimizzatore20000 primo passaggio
--policy.scheduler_decay_stepsLunghezza del decadimento coseno, preimpostato a 30000Ha effetto solo sopra i 30000
--policy.use_ampPrecisione mista; SmolVLA non ha un campo dtypetrue quando la memoria è limitata
--num_workersProcessi del dataloader, default 4Aumenta finché data_s non smette di salire
--dataset.eval_splitFrazione di episodi esclusi per compito0.1, con --eval_steps
--policy.freeze_vision_encoderMantiene il vision tower congelatotrue su 24 GB
--policy.train_expert_onlySolo l'esperto da ~100 M riceve i gradientitrue inizialmente
La pianificazione: cosa gestisce la versione 0.6.1 e cosa no

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.

ImpostazionePredefinito in lerobot 0.6.1Definito in
dimensione_chunk / n_passi_azione50 / 50SmolVLAConfig
num_passi (denoise con flow matching)10SmolVLAConfig
lr_ottimizzatore1e-4SmolVLAConfig
passi_warmup_scheduler1000SmolVLAConfig
passi_decadimento_scheduler30000SmolVLAConfig
lr_decadimento_scheduler2.5e-6SmolVLAConfig
blocca_encoder_visionetrueSmolVLAConfig
addestra_solo_espertotrueSmolVLAConfig
dimensione_batch / passi8 / 100000TrainPipelineConfig
seed / freq_salvataggio / num_worker1000 / 20000 / 4TrainPipelineConfig

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 .

La manopola della memoria che non c'è

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.

ConfigurazionePolicyBatchTempo effettivo
Singola L4 / A10G (24 GB)smolvla4circa 3 a 6 h
Singola A100 40 GBsmolvla16circa 1 a 2 h
4 x H100 80 GB con acceleratesmolvla32circa 1 a 2 h
Singola RTX 4090 / RTX 3090 (24 GB)act8circa 30 a 60 min
Eseguite l'aritmetica delle epoche prima di scegliere --steps

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

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
La stringa del task deve corrispondere a quella con cui avete registrato. Il modello è condizionato da quel testo, quindi una parafrasi è un'istruzione diversa.

I 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)SincronoAsincrono
Tempo di completamento, pick and place, 10 prove13.75 s9.70 s
Cicli di pick and place in una finestra temporale fissa919
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.

L'inferenza deve risiedere accanto ai servi

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.

7.4 V, non 12 V

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.
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
L'intero percorso manuale in un unico blocco, lerobot 0.6.1.

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.

La matrice di addestramento AY-Robots: cinque policy come righe, quattro bracci robotici come colonne
Ogni cella è la sua guida. SmolVLA ne ha una per ciascuno dei quattro bracci.

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.

Il confronto delle policy AY-Robots: parametri, livello GPU, latenza, episodi minimi
I quattro numeri che decidono un'esecuzione.

La checklist prima di scalare qualsiasi cosa

  1. Il lr ha 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_steps manualmente.
  2. Più di un checkpoint, ed episodi tenuti da parte con --dataset.eval_split in modo che la perdita di valutazione abbia un significato.
  3. La policy si muove affatto? Una perdita in calo con un braccio immobile ha cause specifiche: la perdita diminuisce, la policy non fa nulla.
  4. Sopravvive a un cambio di scena? Se no: la policy funziona solo in una configurazione.
  5. Hai annotato il seed? lerobot imposta 1000 come predefinito, quindi due esecuzioni non modificate rimangono comparabili.
  6. 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'addestramento
Posso 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started