
TinyVLA y SmolVLA sitúan un VLA funcional por debajo de 1 B parámetros. Números reales de ambos artículos, los valores predeterminados de lerobot, la latencia medida y el coste de una ejecución en una tarjeta de 24 GB.
Casi todos los modelos de visión-lenguaje-acción de los que se escribe asumen una tarjeta de centro de datos. OpenVLA tiene 7 B de parámetros. GR00T N1.7 y Pi0.5 tienen alrededor de 3 B y requieren una A100 de 80 GB para el ajuste fino. Si la tarjeta en su escritorio es una 4090, esa clase de modelo está fuera de su alcance.
Dos artículos argumentan que no es necesario. TinyVLA (arXiv 2409.12514, aceptado por IEEE Robotics and Automation Letters en febrero de 2025) construye un VLA a partir de un backbone de 400 M a 1.3 B más un cabezal de acción por difusión. SmolVLA (arXiv 2506.01844, enviado el 2 de junio de 2025) distribuye 450 M de parámetros con pesos abiertos, datos abiertos y un script que se ejecuta en una tarjeta de consumidor. Esto es lo que ambos midieron, y dónde el argumento de menos de 1 B deja de ser válido.
Lo que necesita saber
- •TinyVLA se distribuye en tres tamaños: 422 M en total con 101 M entrenables, 740 M con 138 M, 1.3 B con 143 M. Solo los dos primeros están por debajo de 1 B.
- •Su Tabla IV mide 14 ms por predicción de acción para TinyVLA-1B en una A6000, frente a 292 ms para OpenVLA-7B y 140 ms para un OpenVLA-1B reducido.
- •El cabezal mantiene esa velocidad, no el backbone: si se intercambia el cabezal de difusión de TinyVLA-H por un cabezal ACT, las cinco tareas de robot reales caen de un promedio de 94.0 a un solo dígito. Un cabezal MLP puntúa 0 en todas partes.
- •SmolVLA tiene 450 M, aproximadamente 100 M de los cuales son el experto en acción, preentrenado en 481 conjuntos de datos de la comunidad LeRobot y 10.6 M de fotogramas. Reporta 87.3 en LIBERO frente a 86.0 para un Pi0 preentrenado en robótica de 3.3 B, y 78.3 en tres tareas reales SO-100 frente a 61.7 para Pi0 de 3.5 B.
- •Entrenado en una sola tarea sin ese preentrenamiento, SmolVLA cae a 40.0 en esas tareas, por debajo del 48.3 de ACT. Pequeño no significa automáticamente fácil.
- •TinyVLA no tiene integración con LeRobot y fija una pila de ruedas CUDA 11.7. SmolVLA está en lerobot y cuesta aproximadamente de 1 a 3 USD por ejecución en el nivel de 24 GB aquí.
¿Qué se considera realmente un VLA pequeño?
El recuento de parámetros en una tarjeta de modelo no es un número único. Puede referirse al total de pesos, a los pesos cargados durante la inferencia o a los pesos que reciben gradientes durante . TinyVLA informa ambos, y la brecha es grande: TinyVLA-H tiene un total de 1.3 B pero 143 M entrenables, porque la torre de visión y la mayor parte del modelo de lenguaje permanecen congelados mientras los adaptadores LoRA y el cabezal de acción se mueven. El artículo sitúa la proporción entrenable en aproximadamente un 5 por ciento.
| Modelo | Parámetros | Backbone | Cabezal de acción | Fuente |
|---|---|---|---|---|
| TinyVLA-S | 422 M total, 101 M trainable | Llava-Pythia ~400 M | Diffusion (droid_diffusion U-Net) | arXiv 2409.12514 |
| TinyVLA-B | 740 M total, 138 M trainable | Llava-Pythia ~700 M | Diffusion | arXiv 2409.12514 |
| TinyVLA-H | 1.3 B total, 143 M trainable | Llava-Pythia ~1.3 B | Diffusion | arXiv 2409.12514 |
| SmolVLA | 450 M, ~100 M action expert | SmolVLM2-500M-Video-Instruct | Flow matching expert | arXiv 2506.01844 |
| Octo-Small | 27 M | ViT-S scale, T5-Base text encoder | Diffusion | octo-small-1.5 card |
| ACT | ~80 M | ResNet, no language model | Direct chunk regression | AY-Robots catalog |
| OpenVLA | 7 B | Llama 2 7 B, DINOv2 and SigLIP encoders | Autoregressive action tokens | arXiv 2406.09246 |
Hay dos filas que merecen discusión. con aproximadamente 80 M es más pequeño que todo lo demás aquí, pero no tiene un modelo de lenguaje, por lo que no es un VLA: aprende una tarea y no se le puede indicar que haga otra. con 27 M se condiciona a través de un codificador de texto T5-Base, no un backbone LLM. Son buenas líneas base, pero ninguna ofrece el seguimiento de instrucciones que implica la etiqueta.
TinyVLA-H, la variante que presenta los resultados principales, es de 1.3 B y se sitúa por encima de la línea. La pregunta más importante es si un modelo cabe en 24 GB durante el entrenamiento y alcanza su tasa de control en la inferencia. Las cinco políticas que puedes entrenar aquí están en la página de políticas; TinyVLA tiene una entrada en la arena si quieres sus números junto a los de los demás.
TinyVLA: la velocidad viene de la cabeza, no del backbone
La lectura obvia es que hicieron el modelo de lenguaje más pequeño, por lo que se volvió más rápido. La ablación del artículo dice lo contrario. Intercambiar el backbone de 7 B de OpenVLA por uno de aproximadamente 1 B redujo la predicción por acción de 292 ms a 140 ms, una ganancia de 2x. TinyVLA-H, con un recuento de parámetros comparable, se ejecuta a 14 ms en la misma tarjeta. El otro 10x es el cabezal de acción.
| Modelo | Predicción por acción | Medido en |
|---|---|---|
| OpenVLA-7B | 292 ms | single A6000 |
| OpenVLA-1B, backbone intercambiado por el de TinyVLA | 140 ms | single A6000 |
| TinyVLA-1B (TinyVLA-H) | 14 ms | single A6000 |
OpenVLA emite acciones como tokens discretizados a través del cabezal del modelo de lenguaje, uno por dimensión de acción, de forma autorregresiva. TinyVLA adjunta un decodificador de difusión que produce el fragmento completo de una sola vez. La Tabla V muestra la arquitectura en TinyVLA-H e intercambia solo el cabezal, en las mismas cinco tareas de robot reales. Es la evidencia más clara en cualquiera de los artículos para el argumento que las políticas de coincidencia de flujo hacen, y la razón por la que Pi0 se alejó de la decodificación de tokens.
| Cabezal en TinyVLA-H | ColocarPelotaTenis | VoltearTaza | ApilarCubos | CerrarCajón | AbrirCaja |
|---|---|---|---|---|---|
| Diffusion (droid_diffusion) | 90.0 | 98.3 | 98.3 | 96.7 | 86.7 |
| Action Chunking Transformer | 13.3 | 8.3 | 8.3 | 13.3 | 23.3 |
| Multi-layer perceptron | 0 | 0 | 0 | 0 | 0 |
Las cifras de 292 / 140 / 14 ms corresponden a la Tabla IV, todas en una A6000. Son por predicción de acción y excluyen la captura de cámara, el preprocesamiento y la escritura serial a los servos. Considere la latencia publicada como un límite inferior, nunca como la tasa de control. Nuestros propios números tienen la misma limitación: consulte latencia de inferencia.
Qué puntuó TinyVLA
| Referencia | Protocolo | TinyVLA-H | Líneas base |
|---|---|---|---|
| MetaWorld, 50 tareas, sim | Multitarea, 50 demostraciones, 3 semillas | 77.6 / 21.5 / 11.4 / 15.8 por dificultad, promedio 31.6 | Diffusion Policy promedio 10.5 |
| Franka Panda real, 5 tareas | 100 trayectorias por tarea, 20 pruebas | 94.0 promedio | OpenVLA 68.3, Diffusion Policy 35.3 |
| UR5 bimanual, 3 tareas | Multitarea, 10 pruebas por tarea | 76.7 / 36.7 / 30.0 | OpenVLA 0 / 0 / 0, Diffusion Policy 40.3 / 31.3 / 43.0 |
La fila bimanual tiene una explicación aburrida que el propio artículo ofrece: OpenVLA está preentrenado en Open X-Embodiment, que consiste enteramente en datos de un solo brazo, por lo que un espacio de acción de dos brazos está fuera de distribución y puntúa cero. La línea base de la política de difusión supera a TinyVLA-H en dos de esas tres tareas. Antecedentes en el informe de Open X-Embodiment.

El repositorio de TinyVLA, a agosto de 2026
El artículo es bueno. El código es un lanzamiento de investigación. El repositorio es github.com/liyaxuanliyaxuan/TinyVLA; su README fecha el lanzamiento del código el 17 de febrero de 2025 y el último commit es el 11 de marzo de 2025. Está bien para reproducir un artículo, pero es un problema si se quisiera una biblioteca mantenida.
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 fija torch==2.0.1, transformers==4.37.1, deepspeed==0.9.5, peft==0.4.0, diffusers==0.11.1, numpy==1.24.4, y la pila CUDA a las ruedas 11.x: nvidia-cuda-runtime-cu11==11.7.99, nvidia-cudnn-cu11==8.5.0.96, triton==2.0.0. El README pide Python 3.10; lerobot 0.6.1 requiere 3.12 o más reciente, por lo que los dos no pueden compartir un entorno. Confirme primero que existe una compilación de torch 2.0.1 para su generación de GPU. Si una ejecución falla por VRAM en su lugar, la lista de verificación de falta de memoria es más rápida que adivinar.
TinyVLA tampoco lee conjuntos de datos de LeRobot. Su formato es HDF5 estilo ACT: action, language_raw, y un grupo de observaciones con imágenes multi-vista, joint_positions, qpos y qvel. El repositorio incluye data_utils/rlds_to_h5py.py para entrada RLDS, y cada tarea se registra manualmente en aloha_scripts/constants.py con su dataset_dir, episode_len y camera_names. Si sus episodios provienen de lerobot o del cliente de escritorio, usted es responsable de la conversión.
# 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 asume un nodo de ocho tarjetas. Establécelo en 1 y reduce el tamaño del lote muy por debajo de 32. No se envía ninguna variante de una sola GPU, por lo que el comando no se puede ejecutar textualmente en una 4090.
- --deepspeed scripts/zero2.json apunta a un archivo que no está en el directorio scripts de nivel superior. Las configuraciones de DeepSpeed se encuentran en llava-pythia/scripts/zero2.json. Corrige la ruta antes de tu primera ejecución.
- El README requiere que el nombre del directorio de salida contenga llava_pythia, más lora si LoRA está habilitado.
- El backbone es una descarga separada: lesjie/Llava-Pythia-400M, -700M o -1.3B. No hay un único checkpoint base al que apuntes una política de la misma manera que apuntas a lerobot/smolvla_base.
SmolVLA: el modelo de menos de 1 B que puedes ejecutar esta tarde
SmolVLA presenta el mismo argumento dentro de una biblioteca mantenida. Tiene 450 M de parámetros en un backbone SmolVLM2-500M-Video-Instruct, y la eficiencia proviene de las configuraciones que puedes leer en configuration_smolvla.py en lugar de una afirmación sobre su tamaño reducido.
| Configuración en configuration_smolvla.py | Predeterminado | Lo que aporta |
|---|---|---|
| num_vlm_layers | 16 | Solo se ejecutan las primeras 16 capas del modelo de lenguaje |
| expert_width_multiplier | 0.75 | El tamaño oculto del experto en acción es el 75 por ciento del VLM |
| self_attn_every_n_layers | 2 | Autoatención intercalada con atención cruzada |
| chunk_size / n_action_steps | 50 / 50 | Una pasada emite 50 acciones y las 50 se ejecutan |
| num_steps | 10 | Denoising por coincidencia de flujo fijado en 10 pasos |
| tokenizer_max_length | 48 | La instrucción se trunca a 48 tokens |
| freeze_vision_encoder / train_expert_only | True / True | El ajuste fino mueve al experto, no a la torre de visión |
| optimizer_lr, warmup, decay | 1e-4, 1000 steps, to 2.5e-6 over 30000 | No es la receta del artículo: su preentrenamiento utilizó un calentamiento de 100 pasos durante 200000 pasos |
El preentrenamiento utilizó 481 conjuntos de datos comunitarios de LeRobot, 22.9 K episodios y 10.6 M fotogramas en 4 GPUs, 200000 pasos con un tamaño de lote global de 256; el artículo estima el proyecto completo en aproximadamente 30 K horas de GPU. Un número a tener en cuenta: el blog de lanzamiento de Hugging Face menciona 487 conjuntos de datos curados, mientras que la tabla del artículo indica 481. Utilizamos la cifra del artículo y señalamos la discrepancia.

| Referencia | SmolVLA 0.45 B | SmolVLA 2.25 B | Pi0 | ACT |
|---|---|---|---|---|
| Promedio LIBERO, multitarea | 87.3 | 88.75 | 86.0 (3.3 B, robotics-pretrained) | - |
| Promedio Meta-World, multitarea | 57.3 | 68.24 | 47.9 (3.5 B, robotics-pretrained) | - |
| SO-100 real, 3 tareas, entrenamiento multitarea | 78.3 | - | 61.7 (3.5 B) | - |
| SO-100 real, 3 tareas, tarea única, sin preentrenamiento robótico | 40.0 | - | - | 48.3 |
| SO-101 lego pick-place, tarea única, en distribución | 90 | - | - | 70 |
| SO-101 lego pick-place, tarea única, fuera de distribución | 50 | - | - | 40 |
LIBERO es simulación y todo lo competente puntúa ahora en los ochenta. La fila del SO-100 real, donde un modelo de 450 M supera a uno de 3.5 B por 16.6 puntos, es la interesante; la fila debajo es el contrapeso. Si se elimina el preentrenamiento comunitario y el entrenamiento multitarea, el mismo modelo cae a 40.0, por debajo de ACT. La afirmación defendible es que un modelo pequeño no es automáticamente peor, no que sea mejor.
Un accidente ayuda: la tabla Meta-World del artículo de SmolVLA incluye los propios números publicados de TinyVLA como línea base, así que por una vez ambos modelos se encuentran en una misma tabla, SmolVLA-0.45B con 57.3 frente a TinyVLA-H con 31.6. También informa que el entrenamiento de SmolVLA es aproximadamente un 40 por ciento más rápido que Pi0 con 6 veces menos memoria. Todo esto proviene de los autores de SmolVLA; la entrada de la arena enlaza cada valor a su fuente.
Dónde SmolVLA emplea su tiempo
AY-Robots lista a SmolVLA en 245 ms por paso de acción y a ACT en 20 ms en el catálogo de políticas. TinyVLA reporta 14 ms por predicción de acción. Esos números no son comparables, y tratarlos como si lo fueran es el error más común en este tema: algunos miden un pase hacia adelante, otros dividen ese pase entre un fragmento una vez que el chunking de acciones lo amortiza.
- SmolVLA emite 50 acciones por pase hacia adelante y ejecuta las 50. A los 30 fps que el artículo utiliza en robots reales, una inferencia cubre aproximadamente 1.7 segundos de movimiento.
- La inferencia asíncrona calcula el siguiente fragmento mientras el actual aún se ejecuta: 9.7 s de tiempo promedio de finalización de tarea frente a 13.75 s síncronos, aproximadamente un 30 por ciento más rápido, y 19 ciclos de pick-and-place en una ventana fija de 60 segundos frente a 9.
- Las tasas de éxito fueron comparables en lugar de mejores, 78.3 síncronas frente a 73.3 asíncronas. La asincronía compra rendimiento, no precisión.
- El chunking oculta la latencia de cómputo, no la latencia de red, y hace que la política sea menos reactiva porque está comprometida con 50 acciones.
AY-Robots puede aprovisionar automáticamente un pod de GPU en la nube que sirve su política mientras el cliente robot local se comunica con ese endpoint, y el pod lleva un watchdog de inactividad para que se autodestruya en lugar de facturar silenciosamente. Lo que no hace es eliminar el viaje de ida y vuelta a través de la internet pública. El bucle de control en las cinco políticas aquí es de 20 a 485 ms por paso de acción antes de cualquier red, por lo que la inferencia remota es viable para tareas lentas de pick-and-place, no para movimientos reactivos rápidos.

Ajuste fino de SmolVLA en una tarjeta de consumo
La ruta manual, en lerobot 0.6.1, la versión actual de PyPI a partir del 23 de agosto de 2026. Todo lo siguiente proviene de la documentación de Hugging Face lerobot SmolVLA, obtenida el mismo día; la versión guiada es más suave.
- 1Instalar lerobot con el extra smolvla
Las dependencias de SmolVLA son un extra opcional, no forman parte de la instalación base. Instalar sin ellas y luego preguntarse por qué el tipo de política es desconocido es una media hora perdida común.
bashgit clone https://github.com/huggingface/lerobot.git cd lerobot pip install -e ".[smolvla]" - 2Obtener un conjunto de datos con suficientes episodios
La documentación recomienda alrededor de 50 episodios y afirma que la misma tarea con 25 no fue suficiente. AY-Robots establece el mínimo en 30. Grabe los suyos propios, o empiece desde el directorio de conjuntos de datos.
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 - 3Iniciar el ajuste fino
El comando de la guía de lerobot, sin modificar. La documentación estima 20000 pasos en aproximadamente 4 horas en una A100. En una tarjeta de 24 GB, espere más tiempo y mídalo.
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 - 4Reducir el tamaño del lote hasta que quepa
batch_size=64 es un ejemplo documentado, no una promesa sobre su tarjeta. La documentación aconseja empezar con un valor pequeño y aumentarlo mientras los tiempos de carga sigan siendo cortos.
bashlerobot-train --help - 5Desplegar el punto de control en el brazo
La misma biblioteca, un comando. Las banderas de fragmentación en tiempo real están comentadas en la documentación y son las que hay que usar en hardware de baja potencia.
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
Cualquiera que sea el camino que tome, terminará con un punto de control más la configuración que lo produjo. Mantenga la revisión del conjunto de datos, el recuento de pasos y la semilla junto a él. lerobot por defecto usa la semilla 1000; el punto de entrada de ajuste fino de GR00T no expone ninguna semilla, por lo que esas ejecuciones no son reproducibles bit a bit. Mecánica en la documentación de entrenamiento.
Dos formas de llevar un VLA pequeño a un brazo
Usted es dueño de la máquina y de los modos de fallo. Para SmolVLA eso es razonable: un extra de pip, un comando de entrenamiento, un comando de despliegue. Para TinyVLA es una reproducción de investigación con pines congelados, una ruta de DeepSpeed rota y una conversión de datos que usted mismo escribe.
- Consiga una tarjeta de 24 GB, grabe de 30 a 50 episodios, verifique los flujos de la cámara fotograma a fotograma.
- pip install -e ".[smolvla]", lerobot-train contra lerobot/smolvla_base, luego sirva el punto de control en la máquina a la que está conectado el brazo.
- Para TinyVLA: entorno conda separado, convertir datos a HDF5, registrar la tarea en constants.py, corregir la ruta de zero2.json, reducir train.sh de ocho GPUs a una.
- Sin facturación por hora una vez que la tarjeta está pagada.
- La inferencia se encuentra junto a los servos, la única forma de obtener un bucle de control rápido.
- Puede parchear el código de la política, y TinyVLA solo está disponible de esta manera.
- Una 4090 descarta cualquier política de ~3 B, por lo que no hay comparación local contra GR00T N1.7 o Pi0.5.
- La configuración del entorno es el verdadero trabajo. Solo los pines de TinyVLA pueden costar un día.
- Sin cola, sin reintentos, sin almacenamiento de puntos de control. Un reinicio en el paso 14000 significa empezar de nuevo.
SmolVLA es una de las cinco políticas aquí. Usted elige el modelo y el conjunto de datos en un formulario, el backend alquila una GPU por VRAM requerida, ejecuta el entrenador y escribe puntos de control en el almacenamiento de objetos. Paso a paso: SmolVLA en el SO-100, o la matriz completa en la página de entrenamiento.
| Lo que la plataforma envía para SmolVLA | Valor |
|---|---|
| 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 |
Primero, el tamaño de lote predeterminado aquí es 2, no el 64 del ejemplo de la documentación de lerobot, y la configuración de acumulación de gradiente se envía pero no tiene efecto para SmolVLA, por lo que el lote efectivo es realmente 2. Auméntelo deliberadamente en lugar de asumir que el valor predeterminado coincide con el de la fuente. Segundo, TinyVLA no es entrenable aquí en absoluto.
Una ejecución en el nivel de 24 GB tarda de 2 a 5 horas a 0.30 a 0.60 USD por hora, aproximadamente de 1 a 3 USD. En el nivel A100, una política de ~3 B tarda de 3 a 6 horas a 1.20 a 2.00 USD por hora, aproximadamente de 4 a 12 USD. Consulte precios, y las mismas operaciones desde la CLI y el servidor MCP.
Cuando un modelo pequeño es la elección equivocada
Ambos artículos son más cuidadosos aquí de lo que lo son los resúmenes. El análisis de fallos de TinyVLA es específico: la variante de 0.4 B falló tres veces al interpretar erróneamente la instrucción, lo que los autores atribuyen a una comprensión lingüística limitada en el VLM más pequeño, y ese modo desapareció en 1.3 B. SmolVLA muestra la misma curva desde el otro extremo: la versión de 2.25 B de la arquitectura idéntica obtiene 88.75 en LIBERO y 68.24 en Meta-World, frente a 87.3 y 57.3 para el modelo de 0.45 B.
- Cabe en una tarjeta de 24 GB, lo que reduce el coste de un experimento de decenas de dólares a un par.
- Lo suficientemente rápido como para ejecutarse junto al brazo, sin saltos de red en el bucle de control.
- Se ajusta con los datos que una persona puede registrar, decenas de episodios en lugar de miles.
- Los pesos, la lista de datos y el código de SmolVLA son públicos, por lo que un mal resultado es depurable.
- Menor capacidad para seguir instrucciones: menos parámetros de lenguaje, menor habilidad para separar expresiones referenciales similares.
- Menor generalización espacial y visual a configuraciones no registradas.
- Más sensible a los defectos del conjunto de datos, con menos preentrenamiento al que recurrir.
- El trabajo multitarea y de horizonte largo sigue favoreciendo a los modelos más grandes, incluida la propia variante de 2.25 B de SmolVLA.
La comparación que vale la pena hacer no es TinyVLA contra SmolVLA. Es SmolVLA contra ACT en tu propia tarea, y el artículo de SmolVLA es el argumento de por qué. Entrenado en una sola tarea sin preentrenamiento robótico, SmolVLA promedió 40.0 en tres tareas SO-100 donde ACT de una sola tarea logró 48.3. Lo que lo eleva a 78.3 es el preentrenamiento comunitario más el entrenamiento multitarea, no solo la arquitectura. En la tarea de lego SO-101, ambas de una sola tarea, SmolVLA sí gana: 90 contra 70 en distribución. Luego SmolVLA contra Pi0.5 si el presupuesto lo permite.
Hay menos preentrenamiento previo para cubrir datos defectuosos, por lo que una curva de pérdida limpia en un conjunto de datos defectuoso le da una política que reproduce el defecto con confianza. La documentación de lerobot es directa sobre la estructura: 50 episodios en 5 posiciones de cubo, 10 por posición, funcionaron; 25 no. Si la pérdida parece bien y el brazo no hace nada útil, comience en la pérdida cae, la política no hace nada, la política solo funciona en una configuración o recopilación de datos de entrenamiento VLA que sean realmente utilizables.
Cinco políticas, una tabla comparativa
GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA y ACT con recuentos de parámetros reales, latencia de inferencia por paso de acción, el nivel de GPU que cada uno necesita y el recuento mínimo de episodios antes de que haga algo útil.
Compare las políticasUna tabla de decisiones sobre la que puede actuar
| Su situación | Comience con | Por qué |
|---|---|---|
| Una tarea, buenas demostraciones, sin lenguaje | ACT | ~80 M, 20 ms, tarjeta de 24 GB, sin modelo base para descargar |
| Algunas tareas relacionadas, una instrucción cada una | SmolVLA | 450 M, en lerobot, mínimo 30 episodios, 1 a 3 USD por ejecución |
| Reproduciendo el resultado de TinyVLA específicamente | TinyVLA-B o TinyVLA-H | El repositorio es la única ruta: entorno aislado, datos convertidos |
| Multitarea, instrucciones variadas, presupuesto A100 | GR00T N1.7 o Pi0.5 | ~3 B, 152 ms y 485 ms por paso, 4 a 12 USD por ejecución |
| Aún no hay robot | Manejar un brazo real | El brazo en vivo basado en cola no necesita registro ni hardware |
Para la última fila, el brazo en vivo transmite un SO-100 físico que puedes controlar desde el navegador sin una cuenta, y las tres formas de empezar cubren el resto. El SO-100 es el brazo de referencia aquí, con un costo aproximado de 110 a 150 EUR en piezas, con una guía completa de configuración.
¿Qué viene después de los modelos de menos de 1 B?
Reducir el número de parámetros es una forma de hacer que un VLA sea económico y no es obviamente la más exitosa. OpenVLA-OFT (arXiv 2502.19645) mantiene la arquitectura base de 7 B y solo cambia cómo se decodifican las acciones, reportando un aumento de 26x en el rendimiento de generación de acciones y un incremento de LIBERO del 76.5 al 97.1 por ciento. BitVLA (arXiv 2506.07530) convierte cada peso de una arquitectura base BitNet b1.58 2B4T de 1 bit en ternario, reportando 11.0x menos memoria y 4.4x menor latencia de extremo a extremo, igualando el rendimiento de OpenVLA-OFT de precisión completa. X-VLA-0.9B (arXiv 2510.10274) se sitúa en la línea de 1 B con emparejamiento de flujo.
El hilo conductor: el decodificador de acciones, no el modelo de lenguaje, es donde reside la latencia. Pregunta cómo una política emite acciones antes de preguntar cuántos parámetros tiene. La arena tiene 85 modelos y 332 resultados, cada uno vinculado a su fuente; hay una visión general más amplia en nuestra introducción a los VLA.
¿Puedo ajustar SmolVLA en una RTX 4090?▾
Sí. SmolVLA tiene 450 M de parámetros y AY-Robots lo ejecuta en el nivel RTX 4090 / 24 GB. El ejemplo de lerobot usa --batch_size=64, lo cual es un ejemplo y no una garantía para su tarjeta; la documentación aconseja empezar con un tamaño pequeño y aumentarlo mientras los tiempos de carga sigan siendo cortos. Espere tiempos más largos que las aproximadamente 4 horas que la documentación cita para 20000 pasos en una A100.
¿Está TinyVLA disponible en lerobot o en AY-Robots?▾
No a ambas. TinyVLA solo reside en su repositorio de investigación, último commit 11 de marzo de 2025, y su formato es HDF5 estilo ACT en lugar de LeRobot. AY-Robots entrena GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA y ACT. Si desea TinyVLA, debe construirlo usted mismo, y primero tendrá que corregir la ruta de configuración de DeepSpeed en scripts/train.sh.
¿Es un modelo de 450 M realmente competitivo con uno de 3 B?▾
Según los propios benchmarks de los autores, sí: 87.3 frente a 86.0 en LIBERO contra un Pi0 preentrenado en robótica de 3.3 B, y 78.3 frente a 61.7 en tres tareas reales de SO-100 donde el mismo artículo etiqueta a Pi0 en 3.5 B. El límite está en el mismo artículo: en tareas únicas sin preentrenamiento robótico, SmolVLA cae a 40.0, por debajo del 48.3 de ACT.
¿Cuántos episodios necesito antes de que un VLA pequeño haga algo?▾
AY-Robots establece el mínimo de SmolVLA en 30 episodios y el mínimo de ACT en 50. La documentación de lerobot recomienda alrededor de 50 y reporta que 25 no fueron suficientes para la misma tarea. La estructura importa tanto como el número: el conjunto del artículo utilizó 5 posiciones de cubo con 10 episodios cada una.
¿Por qué los números de latencia publicados difieren tanto?▾
Miden cosas diferentes. TinyVLA reporta 14 ms por predicción de acción en una A6000; AY-Robots lista SmolVLA en 245 ms y ACT en 20 ms por paso de acción. Algunas cifras cubren un pase hacia adelante, otras dividen un pase en un bloque de 50 acciones, y casi ninguna incluye la captura de cámara o la escritura a los servos.
¿La inferencia en la nube resuelve el problema de la GPU?▾
Parcialmente. AY-Robots aprovisiona automáticamente un pod que sirve la política mientras el cliente local se comunica con ese endpoint, con un watchdog de inactividad para que se destruya a sí mismo en lugar de facturar silenciosamente. No puede eliminar el viaje de ida y vuelta por internet público, y el bucle de control ya es de 20 a 485 ms por paso de acción. Está bien para tareas lentas de pick-and-place, no para movimientos reactivos rápidos.
Sources
- TinyVLA: Hacia modelos de visión-lenguaje-acción rápidos y eficientes en datos para manipulación robótica
- Repositorio de código oficial de TinyVLA (README, requirements.txt, scripts/train.sh)
- Página del proyecto TinyVLA
- lesjie/Llava-Pythia-1.3B, los pesos del backbone de TinyVLA-H
- SmolVLA: Un modelo de visión-lenguaje-acción para robótica asequible y eficiente
- Documentación de lerobot: ajuste fino de SmolVLA
- lerobot: configuration_smolvla.py, los valores predeterminados de SmolVLA
- Tarjeta del modelo lerobot/smolvla_base
- SmolVLA: Modelo eficiente de visión-lenguaje-acción (blog de Hugging Face)
- lerobot en PyPI (0.6.1, requiere Python 3.12 o posterior)
- OpenVLA: Un modelo de visión-lenguaje-acción de código abierto
- Ajuste fino de modelos de visión-lenguaje-acción: optimización de velocidad y éxito (OpenVLA-OFT)
- BitVLA: Modelos de visión-lenguaje-acción de 1 bit para manipulación robótica
- X-VLA: Transformer con soft-prompt como modelo escalable de visión-lenguaje-acción de múltiples encarnaciones
- Tarjeta del modelo rail-berkeley/octo-small-1.5 (27 M parámetros)
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