Tableau comparatif des politiques AY-Robots avec le nombre de paramètres, les niveaux de GPU et la latence d'inférence pour GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA et ACT
SmolVLATinyVLAVLA compactGPU grand publicLeRobot

Modèles VLA compacts : TinyVLA, SmolVLA et le cas des modèles de moins d'un milliard de paramètres

AY-Robots ResearchAugust 23, 202619 min de lecture

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èleParamètresBackboneTête d'actionSource
TinyVLA-S422 M au total, 101 M entraînablesLlava-Pythia ~400 MDiffusion (droid_diffusion U-Net)arXiv 2409.12514
TinyVLA-B740 M au total, 138 M entraînablesLlava-Pythia ~700 MDiffusionarXiv 2409.12514
TinyVLA-H1.3 B au total, 143 M entraînablesLlava-Pythia ~1.3 BDiffusionarXiv 2409.12514
SmolVLA450 M, ~100 M expert en actionSmolVLM2-500M-Video-InstructExpert en appariement de fluxarXiv 2506.01844
Octo-Small27 MÉchelle ViT-S, encodeur de texte T5-BaseDiffusionocto-small-1.5 card
ACT~80 MResNet, pas de modèle de langageRégression directe par blocsAY-Robots catalog
OpenVLA7 BLlama 2 7 B, encodeurs DINOv2 et SigLIPJetons d'action autorégressifsarXiv 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.

La ligne des 1 B est arbitraire

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èlePrédiction par actionMesuré sur
OpenVLA-7B292 msune seule A6000
OpenVLA-1B, backbone échangé contre celui de TinyVLA140 msune seule A6000
TinyVLA-1B (TinyVLA-H)14 msune 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-HPlacerBalleTennisRetournerTasseEmpilerCubesFermerTiroirOuvrirBoîte
Diffusion (droid_diffusion)90.098.398.396.786.7
Transformeur à découpage d'actions13.38.38.313.323.3
Perceptron multi-couches00000
Ce que couvrent les chiffres de TinyVLA

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

BenchmarkProtocoleTinyVLA-HRéférences
MetaWorld, 50 tâches, simMulti-tâches, 50 démos, 3 seeds77.6 / 21.5 / 11.4 / 15.8 par difficulté, moyenne 31.6Diffusion Policy moyenne 10.5
Franka Panda réel, 5 tâches100 trajectoires par tâche, 20 essais94.0 en moyenneOpenVLA 68.3, Diffusion Policy 35.3
UR5 bimanuel, 3 tâchesMulti-tâches, 10 essais par tâche76.7 / 36.7 / 30.0OpenVLA 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 classement de l'arène AY-Robots, un tableau triable de 85 modèles VLA avec 332 résultats de référence, chaque valeur étant liée au document ou à la fiche modèle d'où elle provient
Les chiffres de référence inter-modèles ne sont comparables que si vous pouvez voir d'où chacun provient.

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.

bash
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 .
La séquence d'installation du README de TinyVLA, vérifiée par rapport au dépôt le 2026-08-23.
Les dépendances figées sont le piège qui fait perdre une journé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.

bash
# 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
Extrait de scripts/train.sh. Chaque drapeau et valeur ci-dessus se trouve dans le fichier fourni.
  • --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.pyPar défautCe qu'il apporte
num_vlm_layers16Seules les 16 premières couches du modèle de langage s'exécutent
expert_width_multiplier0.75La taille cachée de l'expert d'action est de 75 pour cent de celle du VLM
self_attn_every_n_layers2Auto-attention entrelacée avec l'attention croisée
chunk_size / n_action_steps50 / 50Un passage émet 50 actions et toutes les 50 sont exécutées
num_steps10Dénouement par appariement de flux fixé à 10 étapes
tokenizer_max_length48L'instruction est tronquée à 48 tokens
freeze_vision_encoder / train_expert_onlyTrue / TrueLe fine-tuning déplace l'expert, pas la tour de vision
optimizer_lr, warmup, decay1e-4, 1000 steps, to 2.5e-6 over 30000Pas 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.

La page du modèle SmolVLA sur AY-Robots affichant le nombre de paramètres, le niveau de GPU de 24 Go, la latence d'inférence par étape d'action et le nombre minimum d'épisodes
La page SmolVLA de la plateforme : 450 M paramètres, 245 ms par étape d'action, niveau RTX 4090, 30 épisodes minimum.
RéférenceSmolVLA 0.45 BSmolVLA 2.25 BPi0ACT
Moyenne LIBERO, multi-tâches87.388.7586.0 (3.3 B, robotics-pretrained)-
Moyenne Meta-World, multi-tâches57.368.2447.9 (3.5 B, robotics-pretrained)-
SO-100 réel, 3 tâches, entraînement multi-tâches78.3-61.7 (3.5 B)-
SO-100 réel, 3 tâches, tâche unique, sans pré-entraînement robotique40.0--48.3
SO-101 ramassage-placement de lego, tâche unique, en distribution90--70
SO-101 ramassage-placement de lego, tâche unique, hors distribution50--40
Lisez tout le tableau, pas seulement la ligne de titre

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.
L'inférence à distance n'est pas gratuite, et aucune plateforme ne corrige la physique

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.

Le tableau comparatif des politiques AY-Robots montrant GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA et ACT avec le nombre de paramètres, le niveau de GPU requis, la latence d'inférence par étape d'action et le nombre minimum d'épisodes nécessaires pour chacune.
SmolVLA à ~450 M et ACT à ~80 M sont les deux qui tiennent sur une carte de 24 Go. Les trois autres nécessitent une A100 ou H100 de 80 Go.

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.

  1. 1
    Installer 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.

    bash
    git clone https://github.com/huggingface/lerobot.git
    cd lerobot
    pip install -e ".[smolvla]"
  2. 2
    Obtenir 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
  3. 3
    Lancer 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.

    bash
    cd 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
  4. 4
    Ré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.

    bash
    lerobot-train --help
  5. 5
    Dé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.

    bash
    lerobot-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
Le checkpoint est le livrable

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.

  1. Procurez-vous une carte de 24 Go, enregistrez 30 à 50 épisodes, vérifiez les flux de la caméra image par image.
  2. pip install -e ".[smolvla]", lerobot-train contre lerobot/smolvla_base, puis déployez le checkpoint sur la machine à laquelle le bras est branché.
  3. 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.
Avantages
  • 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.
Compromis
  • 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.

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.

Choisir un VLA de moins de 1 B
Où il gagne
  • 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.
Où il perd
  • 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.

À cette taille, le jeu de données décide du résultat

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 politiques

Un tableau de décision sur lequel vous pouvez agir

Votre situationCommencer avecPourquoi
Une tâche, de bonnes démonstrations, pas de langageACT~80 M, 20 ms, carte 24 Go, pas de modèle de base à télécharger
Quelques tâches connexes, une instruction chacuneSmolVLA450 M, in lerobot, 30 épisodes minimum, 1 à 3 USD par exécution
Reproduire spécifiquement le résultat TinyVLATinyVLA-B or TinyVLA-HLe dépôt est la seule voie : environnement isolé, données converties
Multi-tâches, instructions variées, budget A100GR00T N1.7 or Pi0.5~3 B, 152 ms et 485 ms par étape, 4 à 12 USD par exécution
Pas encore de robotPiloter un bras réelLe 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started