
TinyVLA e SmolVLA rendono un VLA funzionante disponibile con meno di 1 miliardo di parametri. Numeri reali da entrambi i paper, i valori predefiniti di lerobot, la latenza misurata e il costo di un'esecuzione su una scheda da 24 GB.
Quasi ogni modello visione-linguaggio-azione di cui si scrive presuppone una scheda da data center. OpenVLA ha 7 miliardi di parametri. GR00T N1.7 e Pi0.5 sono circa 3 miliardi e richiedono una A100 da 80 GB per il fine-tuning. Se la scheda sulla tua scrivania è una 4090, quella classe di modelli è fuori portata.
Due articoli sostengono che non ne hai bisogno. TinyVLA (arXiv 2409.12514, accettato da IEEE Robotics and Automation Letters a febbraio 2025) costruisce un VLA da un backbone da 400 milioni a 1.3 miliardi più una testa d'azione a diffusione. SmolVLA (arXiv 2506.01844, sottomesso il 2 giugno 2025) distribuisce 450 milioni di parametri con pesi aperti, dati aperti e uno script che gira su una singola scheda consumer. Ecco cosa hanno misurato entrambi, e dove l'argomento del "sotto 1 miliardo" smette di reggere.
Cosa devi sapere
- •TinyVLA è disponibile in tre dimensioni: 422 milioni totali con 101 milioni addestrabili, 740 milioni con 138 milioni, 1.3 miliardi con 143 milioni. Solo i primi due sono sotto 1 miliardo.
- •La sua Tabella IV misura 14 ms per previsione di azione per TinyVLA-1B su una A6000, contro 292 ms per OpenVLA-7B e 140 ms per un OpenVLA-1B ridotto.
- •La testa mantiene quella velocità, non il backbone: scambiando la testa di diffusione di TinyVLA-H con una testa ACT, i cinque compiti reali del robot scendono da una media del 94.0 a cifre singole. Una testa MLP ottiene 0 ovunque.
- •SmolVLA è di 450 milioni, circa 100 milioni dei quali sono l'esperto d'azione, pre-addestrato su 481 dataset della community LeRobot e 10.6 milioni di frame. Riporta 87.3 su LIBERO contro 86.0 per un Pi0 pre-addestrato per la robotica a 3.3 miliardi, e 78.3 su tre compiti reali SO-100 contro 61.7 per Pi0 a 3.5 miliardi.
- •Addestrato su un singolo compito senza quel pre-addestramento, SmolVLA scende a 40.0 su quei compiti, al di sotto del 48.3 di ACT. Piccolo non significa automaticamente facile.
- •TinyVLA non ha integrazione con LeRobot e blocca uno stack di wheel CUDA 11.7. SmolVLA è in lerobot e costa circa 1 a 3 USD per esecuzione sul livello da 24 GB qui.
Cosa conta effettivamente come un VLA piccolo
Il conteggio dei parametri su una scheda modello non è un singolo numero. Può significare pesi totali, pesi caricati durante l'inferenza o pesi che ricevono gradienti durante . TinyVLA riporta entrambi, e il divario è ampio: TinyVLA-H è 1.3 B totale ma 143 M addestrabili, perché la torre di visione e la maggior parte del modello linguistico rimangono congelati mentre gli adattatori LoRA e la testa d'azione si muovono. L'articolo stima la quota addestrabili a circa il 5 percento.
| Modello | Parametri | Backbone | Testa d'azione | Fonte |
|---|---|---|---|---|
| TinyVLA-S | 422 M totali, 101 M addestrabili | Llava-Pythia ~400 M | Diffusion (droid_diffusion U-Net) | arXiv 2409.12514 |
| TinyVLA-B | 740 M totali, 138 M addestrabili | Llava-Pythia ~700 M | Diffusion | arXiv 2409.12514 |
| TinyVLA-H | 1.3 B totali, 143 M addestrabili | Llava-Pythia ~1.3 B | Diffusion | arXiv 2409.12514 |
| SmolVLA | 450 M, ~100 M esperto d'azione | SmolVLM2-500M-Video-Instruct | Flow matching expert | arXiv 2506.01844 |
| Octo-Small | 27 M | Scala ViT-S, codificatore di testo T5-Base | Diffusion | octo-small-1.5 card |
| ACT | ~80 M | ResNet, nessun modello linguistico | Regressione diretta a blocchi | AY-Robots catalog |
| OpenVLA | 7 B | Llama 2 7 B, codificatori DINOv2 e SigLIP | Token d'azione autoregressivi | arXiv 2406.09246 |
Due righe meritano una discussione. a circa 80 M è più piccolo di tutto il resto qui ma non ha un modello linguistico, quindi non è un VLA: impara un compito e non gli si può dire di farne un altro. a 27 M è condizionato tramite un codificatore di testo T5-Base, non un backbone LLM. Buone baseline, nessuna delle due offre il rispetto delle istruzioni che l'etichetta implica.
TinyVLA-H, la variante che presenta i risultati principali, è di 1.3 B e si posiziona al di sopra della linea. La domanda migliore è se un modello si adatta a 24 GB durante l'addestramento e raggiunge la tua frequenza di controllo durante l'inferenza. Le cinque policy che puoi addestrare qui si trovano sulla pagina delle policy; TinyVLA ha una voce nell'arena se vuoi i suoi numeri accanto a quelli di tutti gli altri.
TinyVLA: la velocità viene dalla testa, non dalla backbone
La lettura ovvia è che hanno reso il modello linguistico più piccolo, quindi è diventato più veloce. L'ablazione del paper dice il contrario. Sostituire la backbone da 7 B di OpenVLA con una da circa 1 B ha ridotto la previsione per azione da 292 ms a 140 ms, un guadagno di 2x. TinyVLA-H, con un numero di parametri comparabile, funziona a 14 ms sulla stessa scheda. L'altro 10x è la testa d'azione.
| Modello | Previsione per azione | Misurato su |
|---|---|---|
| OpenVLA-7B | 292 ms | single A6000 |
| OpenVLA-1B, backbone swapped for TinyVLA's | 140 ms | single A6000 |
| TinyVLA-1B (TinyVLA-H) | 14 ms | single A6000 |
OpenVLA emette azioni come token discretizzati attraverso la testa del modello linguistico, uno per dimensione d'azione, in modo autoregressivo. TinyVLA allega un decodificatore a diffusione che produce l'intero blocco in un'unica soluzione. La Tabella V mostra l'architettura di TinyVLA-H e scambia solo la testa, sugli stessi cinque compiti di robot reali. È la prova più chiara in entrambi i paper per l'argomento flow matching che le politiche creano, e la ragione per cui Pi0 si è allontanato dalla decodifica dei token.
| Test su TinyVLA-H | PosizionaPallaTennis | CapovolgiTazza | ImpilaCubi | ChiudiCassetto | ApriScatola |
|---|---|---|---|---|---|
| Diffusione (droid_diffusion) | 90.0 | 98.3 | 98.3 | 96.7 | 86.7 |
| Trasformatore a Blocchi di Azione | 13.3 | 8.3 | 8.3 | 13.3 | 23.3 |
| Percettrone multistrato | 0 | 0 | 0 | 0 | 0 |
Le cifre di 292 / 140 / 14 ms sono della Tabella IV, tutte su una singola A6000. Si riferiscono alla previsione per azione ed escludono l'acquisizione della telecamera, la pre-elaborazione e la scrittura seriale ai servi. Considerare la latenza pubblicata come un limite inferiore, mai come la frequenza di controllo. I nostri stessi numeri hanno lo stesso limite: vedi latenza di inferenza.
I punteggi di TinyVLA
| Benchmark | Protocollo | TinyVLA-H | Baseline |
|---|---|---|---|
| MetaWorld, 50 compiti, sim | Multi-task, 50 demo, 3 seed | 77.6 / 21.5 / 11.4 / 15.8 per difficoltà, media 31.6 | Media Diffusion Policy 10.5 |
| Franka Panda reale, 5 compiti | 100 traiettorie per compito, 20 prove | Media 94.0 | OpenVLA 68.3, Diffusion Policy 35.3 |
| UR5 bimanuale, 3 compiti | Multi-task, 10 prove per compito | 76.7 / 36.7 / 30.0 | OpenVLA 0 / 0 / 0, Diffusion Policy 40.3 / 31.3 / 43.0 |
La riga bimanuale ha una spiegazione noiosa che il paper stesso fornisce: OpenVLA è pre-addestrato su Open X-Embodiment, che consiste interamente in dati a braccio singolo, quindi uno spazio di azione a due braccia è fuori distribuzione e ottiene zero. La baseline della politica di diffusione batte TinyVLA-H su due di queste tre attività. Contesto in l'articolo su Open X-Embodiment.

Il repository TinyVLA, ad agosto 2026
Il paper è buono. Il codice è un rilascio di ricerca. Il repository è github.com/liyaxuanliyaxuan/TinyVLA; il suo README data il rilascio del codice al 17 febbraio 2025 e l'ultimo commit all'11 marzo 2025. Ottimo per riprodurre un paper, un problema se si desiderasse una libreria mantenuta.
git clone https://github.com/liyaxuanliyaxuan/TinyVLA
conda create -n tinyvla python=3.10 -y
conda activate tinyvla
pip install --upgrade pip
pip install -r requirements.txt
cd policy_heads && pip install -e .
cd ../llava-pythia && pip install -e .requirements.txt blocca torch==2.0.1, transformers==4.37.1, deepspeed==0.9.5, peft==0.4.0, diffusers==0.11.1, numpy==1.24.4, e lo stack CUDA alle wheel 11.x: nvidia-cuda-runtime-cu11==11.7.99, nvidia-cudnn-cu11==8.5.0.96, triton==2.0.0. Il README richiede Python 3.10; lerobot 0.6.1 richiede 3.12 o versioni più recenti, quindi i due non possono condividere un ambiente. Verifica prima che esista una build di torch 2.0.1 per la tua generazione di GPU. Se un'esecuzione si blocca per mancanza di VRAM, la checklist per l'esaurimento della memoria è più veloce che tirare a indovinare.
TinyVLA inoltre non legge dataset LeRobot. Il suo formato è HDF5 in stile ACT: action, language_raw, e un gruppo di osservazioni con immagini multi-vista, joint_positions, qpos e qvel. Il repository include data_utils/rlds_to_h5py.py per l'input RLDS, e ogni task è registrato manualmente in aloha_scripts/constants.py con il suo dataset_dir, episode_len e camera_names. Se i tuoi episodi provengono da lerobot o dal client desktop, la conversione è a tuo carico.
# scripts/train.sh, the real flags from the repository
ACTION_HEAD=droid_diffusion
deepspeed --master_port 29600 --num_gpus=8 --num_nodes=1 ./train_tinyvla.py \
--deepspeed scripts/zero2.json \
--lora_enable True \
--lora_module 'vit llm' \
--lora_r 64 \
--lora_alpha 256 \
--non_lora_lr 2e-5 \
--task_name "example_task_config" \
--model_name_or_path /path/to/pretrained_vlm \
--freeze_vision_tower True \
--freeze_backbone True \
--bf16 True \
--max_steps 10000 \
--per_device_train_batch_size 32 \
--gradient_accumulation_steps 1 \
--learning_rate 2e-4 \
--lr_scheduler_type "cosine" \
--warmup_ratio 0.005 \
--save_steps 1000 \
--action_head_type $ACTION_HEAD \
--use_state True \
--window_size 6- --num_gpus=8 presuppone un nodo a otto schede. Impostalo a 1 e riduci la dimensione del batch ben al di sotto di 32. Nessuna variante a singola GPU viene fornita upstream, quindi il comando non può essere eseguito alla lettera su una 4090.
- --deepspeed scripts/zero2.json punta a un file che non si trova nella directory scripts di primo livello. Le configurazioni DeepSpeed si trovano in llava-pythia/scripts/zero2.json. Correggi il percorso prima della tua prima esecuzione.
- Il README richiede che il nome della directory di output contenga llava_pythia, più lora se LoRA è abilitato.
- Il backbone è un download separato: lesjie/Llava-Pythia-400M, -700M o -1.3B. Non esiste un singolo checkpoint di base a cui puntare una policy nel modo in cui si punta a lerobot/smolvla_base.
SmolVLA: il modello sub-1 B che puoi eseguire questo pomeriggio
SmolVLA presenta lo stesso argomento all'interno di una libreria mantenuta. Ha 450 milioni di parametri su un backbone SmolVLM2-500M-Video-Instruct, e l'efficienza deriva dalle impostazioni che puoi leggere da configuration_smolvla.py piuttosto che da un'affermazione sull'essere piccolo.
| Impostazione in configuration_smolvla.py | Predefinito | Cosa offre |
|---|---|---|
| num_vlm_layers | 16 | Vengono eseguiti solo i primi 16 strati del modello linguistico |
| expert_width_multiplier | 0.75 | La dimensione nascosta dell'esperto di azione è il 75 percento di quella del VLM |
| self_attn_every_n_layers | 2 | Auto-attenzione intervallata da attenzione incrociata |
| chunk_size / n_action_steps | 50 / 50 | Un passaggio emette 50 azioni e tutte le 50 vengono eseguite |
| num_steps | 10 | Denoising per corrispondenza di flusso fissato a 10 passaggi |
| tokenizer_max_length | 48 | L'istruzione è troncata a 48 token |
| freeze_vision_encoder / train_expert_only | True / True | Il fine-tuning sposta l'esperto, non la torre di visione |
| optimizer_lr, warmup, decay | 1e-4, 1000 steps, a 2.5e-6 su 30000 | Non la ricetta del paper: il suo pre-addestramento ha utilizzato un warmup di 100 passaggi su 200000 passaggi |
Il pre-addestramento ha utilizzato 481 dataset LeRobot della community, 22,9 K episodi e 10,6 M frame su 4 GPU, 200000 passi con un batch globale di 256; il paper stima l'intero progetto a circa 30 K ore GPU. Un numero da tenere d'occhio: il blog di lancio di Hugging Face menziona 487 dataset curati, mentre la tabella del paper ne indica 481. Utilizziamo la cifra del paper e segnaliamo la discrepanza.

| Riferimento | SmolVLA 0.45 B | SmolVLA 2.25 B | Pi0 | ACT |
|---|---|---|---|---|
| Media LIBERO, multi-task | 87.3 | 88.75 | 86.0 (3.3 B, pre-addestrato per la robotica) | - |
| Media Meta-World, multi-task | 57.3 | 68.24 | 47.9 (3.5 B, pre-addestrato per la robotica) | - |
| SO-100 reale, 3 task, addestramento multi-task | 78.3 | - | 61.7 (3.5 B) | - |
| SO-100 reale, 3 task, single-task, nessun pre-addestramento per la robotica | 40.0 | - | - | 48.3 |
| SO-101 lego pick-place, single-task, in distribuzione | 90 | - | - | 70 |
| SO-101 lego pick-place, single-task, fuori distribuzione | 50 | - | - | 40 |
LIBERO è una simulazione e tutto ciò che è competente ottiene punteggi negli anni ottanta. La riga del SO-100 reale, dove un modello da 450 M batte uno da 3,5 B di 16,6 punti, è quella interessante; la riga sottostante è il contrappeso. Eliminando il pre-addestramento della community e l'addestramento multi-task, lo stesso modello scende a 40.0, sotto ACT. L'affermazione difendibile è che un modello piccolo non è automaticamente peggiore, non che sia migliore.
Un caso fortuito aiuta: la tabella Meta-World del paper SmolVLA riporta i numeri pubblicati di TinyVLA come baseline, quindi per una volta entrambi i modelli sono presenti in un'unica tabella, SmolVLA-0.45B a 57.3 contro TinyVLA-H a 31.6. Riporta anche che l'addestramento di SmolVLA è circa il 40 percento più veloce di Pi0 con 6 volte meno memoria. Tutto ciò proviene dagli autori di SmolVLA; l'voce dell'arena collega ogni valore alla sua fonte.
Dove SmolVLA impiega il suo tempo
AY-Robots elenca SmolVLA a 245 ms per passo d'azione e ACT a 20 ms nel catalogo delle policy. TinyVLA riporta 14 ms per previsione d'azione. Questi numeri non sono comparabili, e trattarli come se lo fossero è l'errore più comune in questo argomento: alcuni misurano un singolo passaggio in avanti, altri dividono quel passaggio su un chunk una volta che chunking delle azioni lo ammortizza.
- SmolVLA emette 50 azioni per passaggio in avanti ed esegue tutte le 50. Ai 30 fps che il paper utilizza su robot reali, un'inferenza copre circa 1.7 secondi di movimento.
- L'inferenza asincrona calcola il chunk successivo mentre quello corrente è ancora in esecuzione: 9.7 s di completamento medio del task contro 13.75 s sincroni, circa il 30 percento più veloce, e 19 cicli di pick-and-place in una finestra fissa di 60 secondi contro 9.
- I tassi di successo erano comparabili piuttosto che migliori, 78.3 sincroni contro 73.3 asincroni. L'asincronia acquista throughput, non accuratezza.
- Il chunking nasconde la latenza di calcolo, non la latenza di rete, e rende la policy meno reattiva perché è impegnata a 50 azioni.
AY-Robots può effettuare il provisioning automatico di un pod GPU cloud che serve la tua policy mentre il client robot locale comunica con quell'endpoint, e il pod include un watchdog di inattività in modo che si autodistrugga piuttosto che fatturare silenziosamente. Ciò che non fa è eliminare il round trip su internet pubblico. Il ciclo di controllo attraverso le cinque policy qui è di 20 a 485 ms per passo d'azione prima di qualsiasi rete, quindi l'inferenza remota è fattibile per operazioni lente di pick-and-place, non per movimenti reattivi veloci.

Fine-tuning di SmolVLA su una scheda consumer
Il percorso manuale, su lerobot 0.6.1, la versione PyPI attuale al 23 agosto 2026. Tutto ciò che segue proviene dalla documentazione di Hugging Face lerobot SmolVLA, recuperata lo stesso giorno; la versione guidata è più delicata.
- 1Installa lerobot con l'extra smolvla
Le dipendenze di SmolVLA sono un extra opzionale, non fanno parte dell'installazione base. Installare senza di esse e poi chiedersi perché il tipo di policy sia sconosciuto è una comune mezz'ora persa.
bashgit clone https://github.com/huggingface/lerobot.git cd lerobot pip install -e ".[smolvla]" - 2Ottieni un dataset con abbastanza episodi
La documentazione raccomanda circa 50 episodi e afferma che lo stesso compito con 25 non era sufficiente. AY-Robots imposta il minimo a 30. Registra i tuoi, o inizia dalla directory dei dataset.
bash# any LeRobotDataset on the Hub works as --dataset.repo_id # lerobot/svla_so100_pickplace is the paper's own 50-episode set: # 5 cube positions, 10 episodes each - 3Avvia il fine-tuning
Il comando dalla guida di lerobot, non modificato. La documentazione stima 20000 passi in circa 4 ore su una A100. Su una scheda da 24 GB, aspettati tempi più lunghi e misurali.
bashcd lerobot && lerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=${HF_USER}/mydataset \ --batch_size=64 \ --steps=20000 \ --output_dir=outputs/train/my_smolvla \ --job_name=my_smolvla_training \ --policy.device=cuda \ --wandb.enable=true - 4Riduci la dimensione del batch finché non si adatta
batch_size=64 è un esempio documentato, non una promessa riguardo alla tua scheda. La documentazione consiglia di iniziare con un valore piccolo e aumentarlo finché i tempi di caricamento rimangono brevi.
bashlerobot-train --help - 5Distribuisci il checkpoint sul braccio
Stessa libreria, un solo comando. I flag di chunking in tempo reale sono commentati nella documentazione e sono quelli da utilizzare su hardware a bassa potenza.
bashlerobot-rollout \ --strategy.type=base \ --robot.type=so101_follower \ --robot.port=/dev/ttyACM0 \ --robot.id=my_blue_follower_arm \ --robot.cameras="{ front: {type: opencv, index_or_path: 8, width: 640, height: 480, fps: 30}}" \ --task="Grasp a lego block and put it in the bin." \ --policy.path=HF_USER/FINETUNE_MODEL_NAME
Qualunque percorso tu scelga, ti ritroverai con un checkpoint più la configurazione che lo ha prodotto. Conserva la revisione del dataset, il conteggio dei passi e il seed accanto ad esso. lerobot imposta il seed predefinito a 1000; il punto di ingresso del fine-tuning di GR00T non espone alcun seed, quindi quelle esecuzioni non sono riproducibili bit per bit. Dettagli in la documentazione di training.
Due modi per portare un piccolo VLA su un braccio
Possiedi la macchina e le modalità di fallimento. Per SmolVLA è ragionevole: un extra pip, un comando di training, un comando di rollout. Per TinyVLA è una riproduzione di ricerca con pin bloccati, un percorso DeepSpeed interrotto e una conversione dati che scrivi tu stesso.
- Procurati una scheda da 24 GB, registra da 30 a 50 episodi, verifica i flussi della telecamera fotogramma per fotogramma.
- pip install -e ".[smolvla]", lerobot-train contro lerobot/smolvla_base, quindi servi il checkpoint sulla macchina a cui è collegato il braccio.
- Per TinyVLA: ambiente conda separato, converti i dati in HDF5, registra il compito in constants.py, correggi il percorso zero2.json, riduci train.sh da otto GPU a una.
- Nessun addebito orario una volta pagata la scheda.
- L'inferenza si trova accanto ai servi, l'unico modo per ottenere un ciclo di controllo veloce.
- Puoi patchare il codice della policy, e TinyVLA è disponibile solo in questo modo.
- Una 4090 esclude ogni policy da ~3 B, quindi nessuna comparazione locale con GR00T N1.7 o Pi0.5.
- La configurazione dell'ambiente è il vero lavoro. I soli pin di TinyVLA possono costare un giorno.
- Nessuna coda, nessun tentativo, nessun salvataggio del checkpoint. Un riavvio al passo 14000 significa ricominciare da capo.
SmolVLA è una delle cinque policy qui. Scegli modello e dataset in un modulo, il backend noleggia una GPU in base alla VRAM richiesta, esegue il trainer e scrive checkpoint nell'object storage. Passo dopo passo: SmolVLA sul SO-100, o la matrice completa su la pagina di training.
| Cosa invia la piattaforma per SmolVLA | Valore |
|---|---|
| batch size | 2 |
| learning rate | 1e-4 |
| max steps | 20000 |
| gradient accumulation | 8, and it does not reach the trainer |
| extra knobs in the form | seed, logFreq |
| GPU tier | RTX 4090 or any 24 GB card |
| dataset format | LeRobot v3.0 |
| minimum episodes | 30 |
Innanzitutto, la dimensione del batch predefinita qui è 2, non 64 come nell'esempio della documentazione di lerobot, e l'impostazione di accumulo del gradiente viene inviata ma non ha alcun effetto per SmolVLA, quindi il batch effettivo è davvero 2. Aumentalo deliberatamente piuttosto che assumere che il valore predefinito corrisponda a quello upstream. In secondo luogo, TinyVLA non è addestrabile qui.
Un'esecuzione sul livello da 24 GB richiede da 2 a 5 ore a 0.30 a 0.60 USD all'ora, circa 1 a 3 USD. Sul livello A100 una policy da ~3 B richiede da 3 a 6 ore a 1.20 a 2.00 USD all'ora, circa 4 a 12 USD. Vedi i prezzi, e le stesse operazioni da la CLI e il server MCP.
Quando un modello piccolo è la scelta sbagliata
Entrambi gli articoli sono più cauti qui rispetto ai riassunti. L'analisi dei fallimenti di TinyVLA è specifica: la variante da 0,4 B ha fallito tre volte interpretando erroneamente l'istruzione, cosa che gli autori attribuiscono a una comprensione linguistica limitata nel VLM più piccolo, e quella modalità è scomparsa a 1,3 B. SmolVLA mostra la stessa curva dall'altra estremità: la versione da 2,25 B dell'architettura identica ottiene 88,75 su LIBERO e 68,24 su Meta-World contro 87,3 e 57,3 per il modello da 0,45 B.
- Si adatta a una scheda da 24 GB, il che riduce il costo di un esperimento da decine di dollari a un paio.
- Abbastanza veloce da essere eseguito accanto al braccio, quindi nessun salto di rete nel ciclo di controllo.
- Si ottimizza sui dati che una persona può registrare, decine di episodi anziché migliaia.
- I pesi, l'elenco dei dati e il codice di SmolVLA sono pubblici, quindi un risultato negativo è debuggabile.
- Seguito delle istruzioni più debole: meno parametri linguistici, minore capacità di separare espressioni di riferimento simili.
- Minore generalizzazione spaziale e visiva a configurazioni non registrate.
- Più sensibile ai difetti del dataset, con meno pre-addestramento su cui fare affidamento.
- Il lavoro multi-task e a lungo termine favorisce ancora i modelli più grandi, inclusa la variante da 2,25 B di SmolVLA.
Il confronto che vale la pena fare non è TinyVLA contro SmolVLA. È SmolVLA contro ACT sul tuo compito, e l'articolo di SmolVLA è l'argomento del perché. Addestrato su un singolo compito senza pre-addestramento robotico, SmolVLA ha ottenuto una media di 40,0 su tre compiti SO-100 dove ACT su singolo compito ha gestito 48,3. Ciò che lo porta a 78,3 è il pre-addestramento della comunità più l'addestramento multi-task, non l'architettura da sola. Sul compito lego SO-101, entrambi su singolo compito, SmolVLA vince: 90 contro 70 in distribuzione. Poi SmolVLA contro Pi0.5 se il budget lo consente.
C'è meno pre-addestramento precedente per coprire i dati errati, quindi una curva di perdita pulita su un dataset difettoso ti dà una policy che riproduce il difetto con sicurezza. La documentazione di lerobot è schietta sulla struttura: 50 episodi su 5 posizioni del cubo, 10 per posizione, hanno funzionato; 25 no. Se la perdita sembra buona e il braccio non fa nulla di utile, inizia da la perdita diminuisce, la policy non fa nulla, la policy funziona solo in una configurazione o raccogliere dati di addestramento VLA effettivamente utilizzabili.
Cinque policy, una tabella comparativa
GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA e ACT con conteggi reali dei parametri, latenza di inferenza per passo d'azione, il livello di GPU richiesto da ciascuno e il numero minimo di episodi prima che faccia qualcosa di utile.
Compara le policyUna tabella decisionale su cui puoi agire
| La tua situazione | Inizia con | Perché |
|---|---|---|
| Un compito, buone dimostrazioni, nessun linguaggio | ACT | ~80 M, 20 ms, 24 GB card, no base model to download |
| Pochi compiti correlati, una istruzione ciascuno | SmolVLA | 450 M, in lerobot, 30 episode minimum, 1 to 3 USD per run |
| Riprodurre specificamente il risultato di TinyVLA | TinyVLA-B or TinyVLA-H | Il repository è l'unica strada: ambiente isolato, dati convertiti |
| Multi-task, istruzioni varie, budget A100 | GR00T N1.7 or Pi0.5 | ~3 B, 152 ms and 485 ms per step, 4 to 12 USD per run |
| Nessun robot ancora | Guida un braccio reale | Il braccio live basato su coda non richiede iscrizione né hardware |
Per l'ultima riga, il braccio live trasmette un SO-100 fisico che puoi guidare dal browser senza un account, e i tre modi per iniziare copre il resto. Il SO-100 è il braccio di riferimento qui, circa 110-150 EUR in parti, con una guida completa all'installazione.
Cosa viene dopo i modelli sub-1 B
Ridurre il numero di parametri è un modo per rendere un VLA economico e non è ovviamente quello vincente. OpenVLA-OFT (arXiv 2502.19645) mantiene il backbone da 7 B e cambia solo il modo in cui le azioni vengono decodificate, riportando un aumento di 26x nel throughput di generazione delle azioni e LIBERO che sale dal 76.5 al 97.1 percento. BitVLA (arXiv 2506.07530) rende ternario ogni peso di un backbone BitNet b1.58 2B4T a 1 bit, riportando 11.0x meno memoria e 4.4x minore latenza end-to-end pur eguagliando OpenVLA-OFT a piena precisione. X-VLA-0.9B (arXiv 2510.10274) si posiziona sulla linea da 1 B con il flow matching.
Il filo conduttore: il decodificatore di azioni, non il modello linguistico, è dove risiede la latenza. Chiedi come una policy emette azioni prima di chiedere quanti parametri ha. L' arena ha 85 modelli e 332 risultati, ciascuno collegato alla sua fonte; c'è una panoramica più ampia nella nostra introduzione ai VLA.
Posso effettuare il fine-tuning di SmolVLA su una RTX 4090?▾
Sì. SmolVLA ha 450 M di parametri e AY-Robots lo esegue sul livello RTX 4090 / 24 GB. L'esempio lerobot utilizza --batch_size=64, che è un esempio piuttosto che una garanzia per la tua scheda; la documentazione consiglia di iniziare con valori piccoli e aumentare finché i tempi di caricamento rimangono brevi. Aspettati tempi più lunghi delle circa 4 ore citate nella documentazione per 20000 passi su una A100.
TinyVLA è disponibile in lerobot o su AY-Robots?▾
No a entrambi. TinyVLA esiste solo nel suo repository di ricerca, ultimo commit 11 March 2025, e il suo formato è HDF5 in stile ACT piuttosto che LeRobot. AY-Robots addestra GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA e ACT. Se vuoi TinyVLA devi costruirlo tu stesso, e dovrai prima correggere il percorso di configurazione di DeepSpeed in scripts/train.sh.
Un modello da 450 M è davvero competitivo con uno da 3 B?▾
Sui benchmark degli autori stessi, sì: 87.3 contro 86.0 su LIBERO rispetto a un Pi0 pre-addestrato per la robotica a 3.3 B, e 78.3 contro 61.7 su tre task reali SO-100 dove lo stesso articolo etichetta Pi0 a 3.5 B. Il limite è nello stesso articolo: in un singolo task senza pre-addestramento robotico, SmolVLA scende a 40.0, al di sotto del 48.3 di ACT.
Quanti episodi mi servono prima che un piccolo VLA faccia qualcosa?▾
AY-Robots imposta il minimo per SmolVLA a 30 episodi e il minimo per ACT a 50. La documentazione di lerobot raccomanda circa 50 e riporta che 25 non erano sufficienti per lo stesso task. La struttura conta tanto quanto il numero: il set dell'articolo ha utilizzato 5 cube positions con 10 episodi ciascuna.
Perché i numeri di latenza pubblicati sono così discordanti?▾
Misurano cose diverse. TinyVLA riporta 14 ms per previsione di azione su una A6000; AY-Robots elenca SmolVLA a 245 ms e ACT a 20 ms per passo di azione. Alcune cifre coprono un singolo passaggio forward, alcune dividono un passaggio su un blocco di 50 azioni, e quasi nessuna include l'acquisizione della telecamera o la scrittura ai servi.
L'inferenza cloud risolve il problema della GPU?▾
In parte. AY-Robots auto-provisiona un pod che serve la policy mentre il client locale comunica con quell'endpoint, con un watchdog di inattività in modo che si distrugga da solo piuttosto che fatturare silenziosamente. Non può eliminare il round trip su internet pubblico, e il ciclo di controllo è già di 20 a 485 ms per passo di azione. Va bene per pick-and-place lenti, non per movimenti reattivi veloci.
Sources
- TinyVLA: Verso Modelli Visione-Linguaggio-Azione Veloci ed Efficienti nei Dati per la Manipolazione Robotica
- Repository di codice ufficiale di TinyVLA (README, requirements.txt, scripts/train.sh)
- Pagina del progetto TinyVLA
- lesjie/Llava-Pythia-1.3B, i pesi del backbone di TinyVLA-H
- SmolVLA: Un Modello Visione-Linguaggio-Azione per la Robotica Accessibile ed Efficiente
- Documentazione lerobot: fine-tuning di SmolVLA
- lerobot: configuration_smolvla.py, le impostazioni predefinite di SmolVLA
- Scheda del modello lerobot/smolvla_base
- SmolVLA: Modello Visione-Linguaggio-Azione Efficiente (blog di Hugging Face)
- lerobot su PyPI (0.6.1, richiede Python 3.12 o più recente)
- OpenVLA: Un Modello Visione-Linguaggio-Azione Open Source
- Fine-Tuning di Modelli Visione-Linguaggio-Azione: Ottimizzazione di Velocità e Successo (OpenVLA-OFT)
- BitVLA: Modelli Visione-Linguaggio-Azione a 1 bit per la Manipolazione Robotica
- X-VLA: Transformer con Soft-Prompt come Modello Visione-Linguaggio-Azione Scalabile per Diverse Embodiment
- Scheda del modello rail-berkeley/octo-small-1.5 (27 M parametri)
Sources
- TinyVLA: Towards Fast, Data-Efficient Vision-Language-Action Models for Robotic Manipulation
- TinyVLA official code repository (README, requirements.txt, scripts/train.sh)
- TinyVLA project page
- lesjie/Llava-Pythia-1.3B, the TinyVLA-H backbone weights
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- lerobot documentation: fine-tuning SmolVLA
- lerobot: configuration_smolvla.py, the SmolVLA defaults
- lerobot/smolvla_base model card
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot on PyPI (0.6.1, requires Python 3.12 or newer)
- OpenVLA: An Open-Source Vision-Language-Action Model
- Fine-Tuning Vision-Language-Action Models: Optimizing Speed and Success (OpenVLA-OFT)
- BitVLA: 1-bit Vision-Language-Action Models for Robotics Manipulation
- X-VLA: Soft-Prompted Transformer as Scalable Cross-Embodiment Vision-Language-Action Model
- rail-berkeley/octo-small-1.5 model card (27 M parameters)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started