
TinyVLA et SmolVLA proposent un VLA fonctionnel de moins d'un milliard de paramètres. Chiffres réels des deux articles, les valeurs par défaut de lerobot, la latence mesurée et le coût d'une exécution sur une carte de 24 Go.
Presque tous les modèles vision-langage-action dont on parle supposent une carte de centre de données. OpenVLA a 7 milliards de paramètres. GR00T N1.7 et Pi0.5 sont d'environ 3 milliards et nécessitent une A100 80 Go pour le réglage fin. Si la carte sur votre bureau est une 4090, cette classe de modèle est hors de portée.
Deux articles soutiennent que vous n'en avez pas besoin. TinyVLA (arXiv 2409.12514, accepté par IEEE Robotics and Automation Letters en février 2025) construit un VLA à partir d'un backbone de 400 millions à 1,3 milliard de paramètres, plus une tête d'action par diffusion. SmolVLA (arXiv 2506.01844, soumis le 2 juin 2025) est livré avec 450 millions de paramètres, des poids ouverts, des données ouvertes et un script qui s'exécute sur une seule carte grand public. Voici ce que les deux ont mesuré, et où l'argument du sous-milliard cesse d'être valable.
Ce qu'il faut savoir
- •TinyVLA est livré en trois tailles : 422 millions au total avec 101 millions entraînables, 740 millions avec 138 millions, 1,3 milliard avec 143 millions. Seuls les deux premiers sont inférieurs à 1 milliard.
- •Son Tableau IV mesure 14 ms par prédiction d'action pour TinyVLA-1B sur une A6000, contre 292 ms pour OpenVLA-7B et 140 ms pour un OpenVLA-1B réduit.
- •La tête maintient cette vitesse, pas le backbone : échangez la tête de diffusion de TinyVLA-H contre une tête ACT et les cinq tâches de robot réel passent d'une moyenne de 94,0 à des chiffres uniques. Une tête MLP obtient 0 partout.
- •SmolVLA est de 450 millions, dont environ 100 millions pour l'expert en action, pré-entraîné sur 481 jeux de données communautaires LeRobot et 10,6 millions de cadres. Il rapporte 87,3 sur LIBERO contre 86,0 pour un Pi0 pré-entraîné en robotique à 3,3 milliards, et 78,3 sur trois tâches réelles SO-100 contre 61,7 pour Pi0 à 3,5 milliards.
- •Entraîné en tâche unique sans ce pré-entraînement, SmolVLA tombe à 40,0 sur ces tâches, en dessous des 48,3 d'ACT. Petit n'est pas automatiquement facile.
- •TinyVLA n'a pas d'intégration LeRobot et utilise une pile de roues CUDA 11.7. SmolVLA est dans lerobot et coûte environ 1 à 3 USD par exécution sur le niveau 24 Go ici.
Qu'est-ce qui compte réellement comme un petit VLA
Le nombre de paramètres sur une fiche modèle n'est pas un chiffre unique. Il peut désigner le total des poids, les poids chargés lors de l'inférence, ou les poids qui reçoivent des gradients pendant le . TinyVLA rapporte les deux, et l'écart est important : TinyVLA-H est de 1,3 B au total mais 143 M sont entraînables, car la tour de vision et la majeure partie du modèle de langage restent figées tandis que les adaptateurs LoRA et la tête d'action se déplacent. L'article estime la part entraînable à environ 5 pour cent.
| Modèle | Paramètres | Backbone | Tête d'action | Source |
|---|---|---|---|---|
| TinyVLA-S | 422 M au total, 101 M entraînables | Llava-Pythia ~400 M | Diffusion (droid_diffusion U-Net) | arXiv 2409.12514 |
| TinyVLA-B | 740 M au total, 138 M entraînables | Llava-Pythia ~700 M | Diffusion | arXiv 2409.12514 |
| TinyVLA-H | 1.3 B au total, 143 M entraînables | Llava-Pythia ~1.3 B | Diffusion | arXiv 2409.12514 |
| SmolVLA | 450 M, ~100 M expert en action | SmolVLM2-500M-Video-Instruct | Expert en appariement de flux | arXiv 2506.01844 |
| Octo-Small | 27 M | Échelle ViT-S, encodeur de texte T5-Base | Diffusion | octo-small-1.5 card |
| ACT | ~80 M | ResNet, pas de modèle de langage | Régression directe par blocs | AY-Robots catalog |
| OpenVLA | 7 B | Llama 2 7 B, encodeurs DINOv2 et SigLIP | Jetons d'action autorégressifs | arXiv 2406.09246 |
Deux lignes méritent d'être discutées. à environ 80 M est plus petit que tout le reste ici mais n'a pas de modèle de langage, ce n'est donc pas un VLA : il apprend une tâche et ne peut pas être instruit d'en faire une autre. à 27 M est conditionné par un encodeur de texte T5-Base, et non par un backbone LLM. Ce sont de bonnes bases de référence, mais aucune ne fournit le suivi d'instructions que l'étiquette implique.
TinyVLA-H, la variante présentant les résultats phares, est de 1,3 B et se situe au-dessus de la ligne. La meilleure question est de savoir si un modèle tient dans 24 Go pendant l'entraînement et atteint votre taux de contrôle à l'inférence. Les cinq politiques que vous pouvez entraîner ici se trouvent sur la page des politiques ; TinyVLA a une entrée dans l'arène si vous voulez ses chiffres à côté de ceux des autres.
TinyVLA : la vitesse vient de la tête, pas du backbone
La lecture évidente est qu'ils ont réduit la taille du modèle de langage, le rendant ainsi plus rapide. L'étude d'ablation de l'article indique le contraire. L'échange du backbone de 7 B d'OpenVLA contre un de 1 B a réduit la prédiction par action de 292 ms à 140 ms, soit un gain de 2x. TinyVLA-H, avec un nombre de paramètres comparable, fonctionne à 14 ms sur la même carte. L'autre facteur 10x est la tête d'action.
| Modèle | Prédiction par action | Mesuré sur |
|---|---|---|
| OpenVLA-7B | 292 ms | une seule A6000 |
| OpenVLA-1B, backbone échangé contre celui de TinyVLA | 140 ms | une seule A6000 |
| TinyVLA-1B (TinyVLA-H) | 14 ms | une seule A6000 |
OpenVLA émet des actions sous forme de jetons discrétisés via la tête du modèle de langage, un par dimension d'action, de manière autorégressive. TinyVLA attache un décodeur de diffusion qui produit l'ensemble du bloc en une seule fois. Le Tableau V présente l'architecture de TinyVLA-H et n'échange que la tête, sur les cinq mêmes tâches de robot réel. C'est la preuve la plus claire dans les deux articles pour l'argument que les politiques d'appariement de flux produisent, et la raison pour laquelle Pi0 s'est éloigné du décodage de jetons.
| Performance sur TinyVLA-H | PlacerBalleTennis | RetournerTasse | EmpilerCubes | FermerTiroir | OuvrirBoîte |
|---|---|---|---|---|---|
| Diffusion (droid_diffusion) | 90.0 | 98.3 | 98.3 | 96.7 | 86.7 |
| Transformeur à découpage d'actions | 13.3 | 8.3 | 8.3 | 13.3 | 23.3 |
| Perceptron multi-couches | 0 | 0 | 0 | 0 | 0 |
Les chiffres de 292 / 140 / 14 ms proviennent du Tableau IV, tous sur un seul A6000. Ils correspondent à la prédiction par action et excluent la capture caméra, le prétraitement et l'écriture série vers les servomoteurs. Considérez la latence publiée comme une limite inférieure, jamais comme le taux de contrôle. Nos propres chiffres ont la même limite : voir la latence d'inférence.
Ce que TinyVLA a obtenu
| Benchmark | Protocole | TinyVLA-H | Références |
|---|---|---|---|
| MetaWorld, 50 tâches, sim | Multi-tâches, 50 démos, 3 seeds | 77.6 / 21.5 / 11.4 / 15.8 par difficulté, moyenne 31.6 | Diffusion Policy moyenne 10.5 |
| Franka Panda réel, 5 tâches | 100 trajectoires par tâche, 20 essais | 94.0 en moyenne | OpenVLA 68.3, Diffusion Policy 35.3 |
| UR5 bimanuel, 3 tâches | Multi-tâches, 10 essais par tâche | 76.7 / 36.7 / 30.0 | OpenVLA 0 / 0 / 0, Diffusion Policy 40.3 / 31.3 / 43.0 |
La ligne bimanuelle a une explication ennuyeuse que l'article donne lui-même : OpenVLA est pré-entraîné sur Open X-Embodiment, qui se compose entièrement de données à bras unique, de sorte qu'un espace d'action à deux bras est hors distribution et obtient un score de zéro. La ligne de base de la politique de diffusion bat TinyVLA-H sur deux de ces trois tâches. Contexte dans l'article sur Open X-Embodiment.

Le dépôt TinyVLA, en août 2026
L'article est bon. Le code est une version de recherche. Le dépôt est github.com/liyaxuanliyaxuan/TinyVLA ; son README date la publication du code au 17 février 2025 et le dernier commit au 11 mars 2025. C'est bien pour reproduire un article, mais c'est un problème si vous vouliez une bibliothèque maintenue.
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 fixe torch==2.0.1, transformers==4.37.1, deepspeed==0.9.5, peft==0.4.0, diffusers==0.11.1, numpy==1.24.4, et la pile CUDA aux roues 11.x : nvidia-cuda-runtime-cu11==11.7.99, nvidia-cudnn-cu11==8.5.0.96, triton==2.0.0. Le README demande Python 3.10 ; lerobot 0.6.1 nécessite 3.12 ou plus récent, les deux ne peuvent donc pas partager un environnement. Confirmez d'abord qu'une version de torch 2.0.1 existe pour votre génération de GPU. Si une exécution échoue à cause de la VRAM, la liste de contrôle de la mémoire insuffisante est plus rapide que de deviner.
TinyVLA ne lit pas non plus les jeux de données LeRobot. Son format est HDF5 de style ACT : action, language_raw, et un groupe d'observations avec des images multi-vues, joint_positions, qpos et qvel. Le dépôt fournit data_utils/rlds_to_h5py.py pour l'entrée RLDS, et chaque tâche est enregistrée manuellement dans aloha_scripts/constants.py avec son dataset_dir, episode_len et camera_names. Si vos épisodes proviennent de lerobot ou du client de bureau, la conversion vous incombe.
# 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 suppose un nœud à huit cartes. Réglez-le sur 1 et réduisez la taille du lot bien en dessous de 32. Aucune variante mono-GPU n'est fournie en amont, donc la commande ne peut pas être exécutée telle quelle sur une 4090.
- --deepspeed scripts/zero2.json pointe vers un fichier qui ne se trouve pas dans le répertoire scripts de niveau supérieur. Les configurations DeepSpeed sont fournies dans llava-pythia/scripts/zero2.json. Corrigez le chemin avant votre première exécution.
- Le README exige que le nom du répertoire de sortie contienne llava_pythia, plus lora si LoRA est activé.
- Le backbone est un téléchargement séparé : lesjie/Llava-Pythia-400M, -700M ou -1.3B. Il n'y a pas de point de contrôle de base unique vers lequel vous pointez une politique de la même manière que vous pointez vers lerobot/smolvla_base.
SmolVLA : le modèle de moins de 1 milliard de paramètres que vous pouvez exécuter cet après-midi
SmolVLA avance le même argument au sein d'une bibliothèque maintenue. Il compte 450 millions de paramètres sur un backbone SmolVLM2-500M-Video-Instruct, et l'efficacité provient des paramètres que vous pouvez lire dans configuration_smolvla.py plutôt que d'une affirmation de sa petite taille.
| Paramètre dans configuration_smolvla.py | Par défaut | Ce qu'il apporte |
|---|---|---|
| num_vlm_layers | 16 | Seules les 16 premières couches du modèle de langage s'exécutent |
| expert_width_multiplier | 0.75 | La taille cachée de l'expert d'action est de 75 pour cent de celle du VLM |
| self_attn_every_n_layers | 2 | Auto-attention entrelacée avec l'attention croisée |
| chunk_size / n_action_steps | 50 / 50 | Un passage émet 50 actions et toutes les 50 sont exécutées |
| num_steps | 10 | Dénouement par appariement de flux fixé à 10 étapes |
| tokenizer_max_length | 48 | L'instruction est tronquée à 48 tokens |
| freeze_vision_encoder / train_expert_only | True / True | Le fine-tuning déplace l'expert, pas la tour de vision |
| optimizer_lr, warmup, decay | 1e-4, 1000 steps, to 2.5e-6 over 30000 | Pas la recette du papier : son pré-entraînement a utilisé un warmup de 100 étapes sur 200000 étapes |
Le pré-entraînement a utilisé 481 jeux de données communautaires LeRobot, 22,9 K épisodes et 10,6 M images sur 4 GPU, 200 000 étapes avec un lot global de 256 ; l'article estime l'ensemble du projet à environ 30 K heures GPU. Un chiffre à surveiller : le blog de lancement de Hugging Face mentionne 487 jeux de données organisés là où le tableau de l'article indique 481. Nous utilisons le chiffre de l'article et signalons la divergence.

| Référence | SmolVLA 0.45 B | SmolVLA 2.25 B | Pi0 | ACT |
|---|---|---|---|---|
| Moyenne LIBERO, multi-tâches | 87.3 | 88.75 | 86.0 (3.3 B, robotics-pretrained) | - |
| Moyenne Meta-World, multi-tâches | 57.3 | 68.24 | 47.9 (3.5 B, robotics-pretrained) | - |
| SO-100 réel, 3 tâches, entraînement multi-tâches | 78.3 | - | 61.7 (3.5 B) | - |
| SO-100 réel, 3 tâches, tâche unique, sans pré-entraînement robotique | 40.0 | - | - | 48.3 |
| SO-101 ramassage-placement de lego, tâche unique, en distribution | 90 | - | - | 70 |
| SO-101 ramassage-placement de lego, tâche unique, hors distribution | 50 | - | - | 40 |
LIBERO est une simulation et tout ce qui est compétent y obtient maintenant des scores dans les quatre-vingts. La ligne du SO-100 réel, où un modèle de 450 M bat un modèle de 3,5 B de 16,6 points, est la plus intéressante ; la ligne en dessous est le contrepoids. Si l'on retire le pré-entraînement communautaire et l'entraînement multi-tâches, le même modèle tombe à 40,0, sous ACT. L'affirmation défendable est qu'un petit modèle n'est pas automatiquement moins bon, et non qu'il est meilleur.
Un heureux hasard : le tableau Meta-World de l'article sur SmolVLA inclut les chiffres publiés de TinyVLA comme référence, ainsi pour une fois les deux modèles sont dans le même tableau, SmolVLA-0.45B à 57.3 contre TinyVLA-H à 31.6. Il rapporte également que l'entraînement de SmolVLA est environ 40 pour cent plus rapide que Pi0 avec 6x moins de mémoire. Tout cela provient des auteurs de SmolVLA ; l'entrée de l'arène lie chaque valeur à sa source.
Où SmolVLA passe son temps
AY-Robots liste SmolVLA à 245 ms par étape d'action et ACT à 20 ms dans le catalogue de politiques. TinyVLA rapporte 14 ms par prédiction d'action. Ces chiffres ne sont pas comparables, et les traiter comme tels est l'erreur la plus courante sur ce sujet : certains chronomètrent un passage avant, d'autres divisent ce passage sur un bloc une fois que le découpage d'actions l'amortit.
- SmolVLA émet 50 actions par passage avant et exécute les 50. Aux 30 ips que l'article utilise sur des robots réels, une inférence couvre environ 1.7 seconde de mouvement.
- L'inférence asynchrone calcule le bloc suivant pendant que le bloc actuel est encore en exécution : 9.7 s de temps moyen d'achèvement de tâche contre 13.75 s en synchrone, soit environ 30 pour cent plus rapide, et 19 cycles de prise et dépose dans une fenêtre fixe de 60 secondes contre 9.
- Les taux de réussite étaient comparables plutôt que meilleurs, 78.3 en synchrone contre 73.3 en asynchrone. L'asynchrone apporte du débit, pas de la précision.
- Le découpage masque la latence de calcul, pas la latence réseau, et il rend la politique moins réactive car elle est engagée sur 50 actions.
AY-Robots peut provisionner automatiquement un pod GPU cloud qui sert votre politique pendant que le client robot local communique avec ce point de terminaison, et le pod est équipé d'un watchdog d'inactivité afin qu'il se détruise plutôt que de facturer silencieusement. Ce qu'il ne fait pas, c'est supprimer l'aller-retour via l'internet public. La boucle de contrôle pour les cinq politiques ici est de 20 à 485 ms par étape d'action avant tout réseau, donc l'inférence à distance est viable pour des tâches lentes de pick-and-place, mais pas pour des mouvements réactifs rapides.

Fine-tuning de SmolVLA sur une carte grand public
Le chemin manuel, sur lerobot 0.6.1, la version PyPI actuelle au 23 août 2026. Tout ce qui suit provient de la documentation Hugging Face lerobot SmolVLA, récupérée le même jour ; la version guidée est plus douce.
- 1Installer lerobot avec l'extra smolvla
Les dépendances SmolVLA sont un extra optionnel, ne faisant pas partie de l'installation de base. L'installer sans et ensuite se demander pourquoi le type de politique est inconnu est une demi-heure souvent perdue.
bashgit clone https://github.com/huggingface/lerobot.git cd lerobot pip install -e ".[smolvla]" - 2Obtenir un jeu de données avec suffisamment d'épisodes
La documentation recommande environ 50 épisodes et indique que la même tâche avec 25 n'était pas suffisante. AY-Robots fixe le minimum à 30. Enregistrez le vôtre, ou commencez à partir du répertoire des jeux de données.
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 - 3Lancer le fine-tuning
La commande du guide lerobot, non modifiée. La documentation estime 20000 étapes à environ 4 heures sur une A100. Sur une carte de 24 Go, attendez-vous à plus long et mesurez-le.
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 - 4Réduire la taille du lot jusqu'à ce qu'il tienne
batch_size=64 est un exemple documenté, pas une promesse concernant votre carte. La documentation conseille de commencer petit et d'augmenter tant que les temps de chargement restent courts.
bashlerobot-train --help - 5Déployer le checkpoint sur le bras
Même bibliothèque, une seule commande. Les flags de découpage en temps réel sont commentés dans la documentation et sont ceux à utiliser sur du matériel à faible puissance.
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
Quel que soit le chemin que vous empruntez, vous obtenez un checkpoint ainsi que la configuration qui l'a produit. Conservez la révision du jeu de données, le nombre d'étapes et la graine à côté. lerobot utilise la graine 1000 par défaut ; le point d'entrée de fine-tuning de GR00T n'expose aucune graine, donc ces exécutions ne sont pas reproductibles bit par bit. Mécanismes dans la documentation de l'entraînement.
Deux façons de déployer un petit VLA sur un bras
Vous possédez la machine et les modes de défaillance. Pour SmolVLA, c'est raisonnable : un extra pip, une commande d'entraînement, une commande de déploiement. Pour TinyVLA, c'est une reproduction de recherche avec des dépendances figées, un chemin DeepSpeed cassé et une conversion de données que vous écrivez vous-même.
- Procurez-vous une carte de 24 Go, enregistrez 30 à 50 épisodes, vérifiez les flux de la caméra image par image.
- pip install -e ".[smolvla]", lerobot-train contre lerobot/smolvla_base, puis déployez le checkpoint sur la machine à laquelle le bras est branché.
- Pour TinyVLA : environnement conda séparé, convertir les données en HDF5, enregistrer la tâche dans constants.py, corriger le chemin zero2.json, réduire train.sh de huit GPU à un.
- Pas de facturation à l'heure une fois la carte payée.
- L'inférence se trouve à côté des servomoteurs, le seul moyen d'obtenir une boucle de contrôle rapide.
- Vous pouvez patcher le code de la politique, et TinyVLA n'est disponible que de cette manière.
- Une 4090 exclut toutes les politiques d'environ 3 milliards de paramètres, donc pas de comparaison locale avec GR00T N1.7 ou Pi0.5.
- La configuration de l'environnement est le vrai travail. Les dépendances de TinyVLA à elles seules peuvent coûter une journée.
- Pas de file d'attente, pas de réessai, pas de stockage de checkpoint. Un redémarrage à l'étape 14000 signifie recommencer.
SmolVLA est l'une des cinq politiques ici. Vous choisissez le modèle et le jeu de données dans un formulaire, le backend loue un GPU en fonction de la VRAM requise, exécute l'entraîneur et écrit les checkpoints dans le stockage d'objets. Étape par étape : SmolVLA sur le SO-100, ou la matrice complète sur la page d'entraînement.
| Ce que la plateforme envoie pour SmolVLA | Valeur |
|---|---|
| taille du lot | 2 |
| taux d'apprentissage | 1e-4 |
| étapes max | 20000 |
| accumulation de gradient | 8, et cela n'atteint pas l'entraîneur |
| boutons supplémentaires dans le formulaire | seed, logFreq |
| Niveau de GPU | RTX 4090 ou toute carte de 24 Go |
| format du jeu de données | LeRobot v3.0 |
| épisodes minimum | 30 |
Premièrement, la taille de lot par défaut ici est de 2, pas de 64 comme dans l'exemple de la documentation lerobot, et le paramètre d'accumulation de gradient est envoyé mais n'a aucun effet pour SmolVLA, donc le lot effectif est réellement de 2. Augmentez-le délibérément plutôt que de supposer que la valeur par défaut correspond à celle en amont. Deuxièmement, TinyVLA n'est pas du tout entraînable ici.
Une exécution sur le niveau 24 Go prend 2 à 5 heures à 0,30 à 0,60 USD par heure, soit environ 1 à 3 USD. Sur le niveau A100, une politique d'environ 3 milliards de paramètres prend 3 à 6 heures à 1,20 à 2,00 USD par heure, soit environ 4 à 12 USD. Voir les tarifs, et les mêmes opérations depuis la CLI et le serveur MCP.
Quand un petit modèle est le mauvais choix
Les deux articles sont plus prudents ici que ne le sont les résumés. L'analyse des défaillances de TinyVLA est spécifique : la variante de 0,4 B a échoué trois fois en interprétant mal l'instruction, ce que les auteurs attribuent à une compréhension linguistique limitée dans le VLM plus petit, et ce mode a disparu à 1,3 B. SmolVLA montre la même courbe de l'autre côté : la version de 2,25 B de l'architecture identique obtient 88,75 sur LIBERO et 68,24 sur Meta-World contre 87,3 et 57,3 pour le modèle de 0,45 B.
- Tient sur une carte de 24 Go, ce qui réduit le coût d'une expérience de dizaines à quelques dollars.
- Assez rapide pour fonctionner à côté du bras, donc pas de saut réseau dans la boucle de contrôle.
- S'affine sur les données qu'une seule personne peut enregistrer, des dizaines d'épisodes plutôt que des milliers.
- Les poids, la liste des données et le code de SmolVLA sont publics, donc un mauvais résultat est déboguable.
- Moins bonne exécution des instructions : moins de paramètres linguistiques, moins de capacité à distinguer des expressions référentielles similaires.
- Moins de généralisation spatiale et visuelle aux configurations non enregistrées.
- Plus sensible aux défauts des jeux de données, avec moins de pré-entraînement sur lequel s'appuyer.
- Le travail multi-tâches et à long terme favorise toujours les modèles plus grands, y compris la variante 2,25 B de SmolVLA.
La comparaison pertinente n'est pas TinyVLA contre SmolVLA. C'est SmolVLA contre ACT sur votre propre tâche, et l'article de SmolVLA en est l'argument. Entraîné sur une seule tâche sans pré-entraînement robotique, SmolVLA a obtenu une moyenne de 40,0 sur trois tâches SO-100 où ACT en tâche unique a atteint 48,3. Ce qui le porte à 78,3 est le pré-entraînement communautaire et l'entraînement multi-tâches, et non l'architecture seule. Sur la tâche de lego SO-101, les deux en tâche unique, SmolVLA gagne : 90 contre 70 en distribution. Ensuite, SmolVLA contre Pi0.5 si le budget le permet.
Il y a moins de pré-entraînement préalable pour compenser les mauvaises données, donc une courbe de perte propre sur un jeu de données défectueux vous donne une politique qui reproduit le défaut avec confiance. La documentation lerobot est claire sur la structure : 50 épisodes répartis sur 5 positions de cube, 10 par position, ont fonctionné ; 25 n'ont pas fonctionné. Si la perte semble correcte et que le bras ne fait rien d'utile, commencez par la perte diminue, la politique ne fait rien, la politique ne fonctionne que dans une seule configuration ou la collecte de données d'entraînement VLA réellement utilisables.
Cinq politiques, un tableau comparatif
GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA et ACT avec le nombre réel de paramètres, la latence d'inférence par étape d'action, le niveau de GPU requis pour chacun et le nombre minimum d'épisodes avant qu'il ne fasse quelque chose d'utile.
Comparer les politiquesUn tableau de décision sur lequel vous pouvez agir
| Votre situation | Commencer avec | Pourquoi |
|---|---|---|
| Une tâche, de bonnes démonstrations, pas de langage | ACT | ~80 M, 20 ms, carte 24 Go, pas de modèle de base à télécharger |
| Quelques tâches connexes, une instruction chacune | SmolVLA | 450 M, in lerobot, 30 épisodes minimum, 1 à 3 USD par exécution |
| Reproduire spécifiquement le résultat TinyVLA | TinyVLA-B or TinyVLA-H | Le dépôt est la seule voie : environnement isolé, données converties |
| Multi-tâches, instructions variées, budget A100 | GR00T N1.7 or Pi0.5 | ~3 B, 152 ms et 485 ms par étape, 4 à 12 USD par exécution |
| Pas encore de robot | Piloter un bras réel | Le bras réel basé sur une file d'attente ne nécessite ni inscription ni matériel |
Pour la dernière ligne, le bras en direct diffuse un SO-100 physique que vous pouvez piloter depuis le navigateur sans compte, et les trois façons de commencer couvrent le reste. Le SO-100 est le bras de référence ici, coûtant environ 110 à 150 EUR en pièces, avec un guide de configuration complète.
Ce qui vient après les modèles de moins de 1 milliard de paramètres
Réduire le nombre de paramètres est une façon de rendre un VLA bon marché et pas forcément la plus efficace. OpenVLA-OFT (arXiv 2502.19645) conserve le backbone de 7 milliards de paramètres et ne modifie que la façon dont les actions sont décodées, rapportant une augmentation de 26x du débit de génération d'actions et une hausse de LIBERO de 76,5 à 97,1 pour cent. BitVLA (arXiv 2506.07530) rend chaque poids d'un backbone BitNet b1.58 2B4T à 1 bit ternaire, rapportant 11.0x moins de mémoire et 4.4x moins de latence de bout en bout tout en égalant les performances d'OpenVLA-OFT en pleine précision. X-VLA-0.9B (arXiv 2510.10274) se situe sur la ligne des 1 milliard de paramètres avec le flow matching.
Le fil conducteur : le décodeur d'actions, et non le modèle de langage, est la source de la latence. Demandez comment une politique émet des actions avant de vous interroger sur son nombre de paramètres. L'arène contient 85 modèles et 332 résultats, chacun lié à sa source ; un aperçu plus large est disponible dans notre introduction aux VLA.
Puis-je affiner SmolVLA sur une RTX 4090 ?▾
Oui. SmolVLA a 450 M de paramètres et AY-Robots l'exécute sur le niveau RTX 4090 / 24 Go. L'exemple lerobot utilise --batch_size=64, ce qui est un exemple plutôt qu'une garantie pour votre carte ; la documentation conseille de commencer petit et d'augmenter tant que les temps de chargement restent courts. Attendez-vous à des temps plus longs que les environ 4 heures citées dans la documentation pour 20000 étapes sur un A100.
TinyVLA est-il disponible dans lerobot ou sur AY-Robots ?▾
Non aux deux. TinyVLA n'existe que dans son dépôt de recherche, dernier commit le 11 mars 2025, et son format est HDF5 de style ACT plutôt que LeRobot. AY-Robots entraîne GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA et ACT. Si vous voulez TinyVLA, vous devez le construire vous-même, et vous devrez d'abord corriger le chemin de configuration DeepSpeed dans scripts/train.sh.
Un modèle de 450 M est-il vraiment compétitif avec un modèle de 3 B ?▾
Selon les propres benchmarks des auteurs, oui : 87.3 contre 86.0 sur LIBERO face à un Pi0 pré-entraîné en robotique à 3.3 B, et 78.3 contre 61.7 sur trois tâches réelles SO-100 où le même article étiquette Pi0 à 3.5 B. La limite est dans le même article : en tâche unique sans pré-entraînement robotique, SmolVLA tombe à 40.0, en dessous des 48.3 d'ACT.
De combien d'épisodes ai-je besoin avant qu'un petit VLA ne fasse quoi que ce soit ?▾
AY-Robots fixe le minimum pour SmolVLA à 30 épisodes et le minimum pour ACT à 50. La documentation lerobot recommande environ 50 et rapporte que 25 n'était pas suffisant pour la même tâche. La structure compte autant que le nombre : l'ensemble de l'article utilisait 5 positions de cube avec 10 épisodes chacune.
Pourquoi les chiffres de latence publiés sont-ils si différents ?▾
Ils mesurent des choses différentes. TinyVLA rapporte 14 ms par prédiction d'action sur un A6000 ; AY-Robots liste SmolVLA à 245 ms et ACT à 20 ms par étape d'action. Certains chiffres couvrent un seul passage avant, certains divisent un passage sur un bloc de 50 actions, et presque aucun n'inclut la capture de la caméra ou l'écriture vers les servomoteurs.
L'inférence dans le cloud résout-elle le problème du GPU ?▾
En partie. AY-Robots provisionne automatiquement un pod qui sert la politique pendant que le client local communique avec ce point de terminaison, avec un chien de garde d'inactivité pour qu'il se détruise plutôt que de facturer silencieusement. Cela ne peut pas supprimer l'aller-retour via l'internet public, et la boucle de contrôle est déjà de 20 à 485 ms par étape d'action. C'est bien pour le pick-and-place lent, pas pour le mouvement réactif rapide.
Sources
- TinyVLA : Vers des modèles vision-langage-action rapides et économes en données pour la manipulation robotique
- Dépôt de code officiel TinyVLA (README, requirements.txt, scripts/train.sh)
- Page du projet TinyVLA
- lesjie/Llava-Pythia-1.3B, les poids du backbone de TinyVLA-H
- SmolVLA : Un modèle vision-langage-action pour une robotique abordable et efficace
- Documentation lerobot : affinage de SmolVLA
- lerobot : configuration_smolvla.py, les paramètres par défaut de SmolVLA
- Fiche modèle lerobot/smolvla_base
- SmolVLA : Modèle vision-langage-action efficace (blog Hugging Face)
- lerobot sur PyPI (0.6.1, nécessite Python 3.12 ou plus récent)
- OpenVLA : Un modèle vision-langage-action open-source
- Affinage des modèles vision-langage-action : Optimisation de la vitesse et du succès (OpenVLA-OFT)
- BitVLA : Modèles vision-langage-action 1-bit pour la manipulation robotique
- X-VLA : Transformeur à prompt souple comme modèle vision-langage-action inter-corps évolutif
- Fiche modèle rail-berkeley/octo-small-1.5 (27 M de paramètres)
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