
TinyVLA e SmolVLA colocam um VLA funcional abaixo de 1 bilhão de parâmetros. Números reais de ambos os artigos, os padrões do LeRobot, latência medida e o custo de uma execução em uma placa de 24 GB.
Quase todo modelo de visão-linguagem-ação sobre o qual se escreve assume uma placa de datacenter. OpenVLA tem 7 B de parâmetros. GR00T N1.7 e Pi0.5 têm cerca de 3 B e exigem uma A100 de 80 GB para ajuste fino. Se a placa na sua mesa for uma 4090, essa classe de modelo está fora de alcance.
Dois artigos argumentam que não é necessário. TinyVLA (arXiv 2409.12514, aceito pela IEEE Robotics and Automation Letters em fevereiro de 2025) constrói um VLA a partir de um backbone de 400 M a 1.3 B mais uma cabeça de ação de difusão. SmolVLA (arXiv 2506.01844, submetido em 2 de junho de 2025) é fornecido com 450 M de parâmetros, pesos abertos, dados abertos e um script que roda em uma única placa de consumidor. Aqui está o que ambos mediram e onde o argumento de menos de 1 B deixa de ser válido.
O que você precisa saber
- •TinyVLA é fornecido em três tamanhos: 422 M no total com 101 M treináveis, 740 M com 138 M, 1.3 B com 143 M. Apenas os dois primeiros ficam abaixo de 1 B.
- •Sua Tabela IV mede 14 ms por previsão de ação para TinyVLA-1B em uma A6000, contra 292 ms para OpenVLA-7B e 140 ms para um OpenVLA-1B reduzido.
- •A cabeça mantém essa velocidade, não o backbone: troque a cabeça de difusão do TinyVLA-H por uma cabeça ACT e as cinco tarefas de robô real caem de uma média de 94.0 para um único dígito. Uma cabeça MLP pontua 0 em todos os lugares.
- •SmolVLA tem 450 M, aproximadamente 100 M dos quais são o especialista em ação, pré-treinado em 481 conjuntos de dados da comunidade LeRobot e 10.6 M de quadros. Ele relata 87.3 no LIBERO contra 86.0 para um Pi0 pré-treinado em robótica com 3.3 B, e 78.3 em três tarefas reais SO-100 contra 61.7 para Pi0 com 3.5 B.
- •Treinado em tarefa única sem esse pré-treinamento, SmolVLA cai para 40.0 nessas tarefas, abaixo dos 48.3 do ACT. Pequeno não significa automaticamente fácil.
- •TinyVLA não tem integração com LeRobot e fixa uma pilha de rodas CUDA 11.7. SmolVLA está no lerobot e custa aproximadamente 1 a 3 USD por execução no nível de 24 GB aqui.
O que realmente conta como um VLA pequeno
A contagem de parâmetros em uma ficha de modelo não é um número único. Pode significar pesos totais, pesos carregados na inferência ou pesos que recebem gradientes durante . TinyVLA relata ambos, e a diferença é grande: TinyVLA-H tem 1.3 B no total, mas 143 M são treináveis, porque a torre de visão e a maior parte do modelo de linguagem permanecem congeladas enquanto os adaptadores LoRA e o cabeçalho de ação se movem. O artigo indica que a parcela treinável é de cerca de 5 por cento.
| Modelo | Parâmetros | Backbone | Cabeçalho de ação | Fonte |
|---|---|---|---|---|
| TinyVLA-S | 422 M total, 101 M treináveis | Llava-Pythia ~400 M | Difusão (droid_diffusion U-Net) | arXiv 2409.12514 |
| TinyVLA-B | 740 M total, 138 M treináveis | Llava-Pythia ~700 M | Difusão | arXiv 2409.12514 |
| TinyVLA-H | 1.3 B total, 143 M treináveis | Llava-Pythia ~1.3 B | Difusão | arXiv 2409.12514 |
| SmolVLA | 450 M, ~100 M especialista em ação | SmolVLM2-500M-Video-Instruct | Especialista em correspondência de fluxo | arXiv 2506.01844 |
| Octo-Small | 27 M | Escala ViT-S, codificador de texto T5-Base | Difusão | octo-small-1.5 card |
| ACT | ~80 M | ResNet, sem modelo de linguagem | Regressão direta de chunk | AY-Robots catalog |
| OpenVLA | 7 B | Llama 2 7 B, codificadores DINOv2 e SigLIP | Tokens de ação autorregressivos | arXiv 2406.09246 |
Duas linhas merecem discussão. com aproximadamente 80 M é menor do que todos os outros aqui, mas não possui modelo de linguagem, portanto não é um VLA: ele aprende uma tarefa e não pode ser instruído a fazer outra. com 27 M é condicionado através de um codificador de texto T5-Base, não um backbone LLM. Boas referências, mas nenhum deles oferece a capacidade de seguir instruções que o rótulo implica.
TinyVLA-H, a variante que apresenta os resultados principais, tem 1.3 B e está acima da linha. A melhor pergunta é se um modelo cabe em 24 GB durante o treinamento e atinge sua taxa de controle na inferência. As cinco políticas que você pode treinar aqui estão na página de políticas; TinyVLA tem uma entrada na arena se você quiser seus números ao lado dos de todos os outros.
TinyVLA: a velocidade vem da cabeça, não do backbone
A leitura óbvia é que eles tornaram o modelo de linguagem menor, então ele ficou mais rápido. A ablação do artigo diz o contrário. A troca do backbone de 7 B do OpenVLA por um de aproximadamente 1 B reduziu a previsão por ação de 292 ms para 140 ms, um ganho de 2x. O TinyVLA-H, com uma contagem de parâmetros comparável, executa em 14 ms na mesma placa. Os outros 10x são da cabeça de ação.
| Modelo | Previsão por ação | Medido em |
|---|---|---|
| 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 |
O OpenVLA emite ações como tokens discretizados através da cabeça do modelo de linguagem, um por dimensão de ação, de forma autorregressiva. O TinyVLA anexa um decodificador de difusão que produz o bloco inteiro de uma só vez. A Tabela V apresenta a arquitetura do TinyVLA-H e troca apenas a cabeça, nas mesmas cinco tarefas de robôs reais. É a evidência mais clara em ambos os artigos para o argumento que as políticas de correspondência de fluxo criam, e a razão pela qual Pi0 se afastou da decodificação de tokens.
| Cabeça no TinyVLA-H | ColocarBolaDeTênis | VirarCaneca | EmpilharCubos | FecharGaveta | AbrirCaixa |
|---|---|---|---|---|---|
| Difusão (droid_diffusion) | 90.0 | 98.3 | 98.3 | 96.7 | 86.7 |
| Transformador de Fragmentação de Ação | 13.3 | 8.3 | 8.3 | 13.3 | 23.3 |
| Perceptron de múltiplas camadas | 0 | 0 | 0 | 0 | 0 |
Os valores de 292 / 140 / 14 ms são da Tabela IV, todos em uma A6000. Eles são por previsão de ação e excluem a captura da câmera, o pré-processamento e a gravação serial para os servos. Trate a latência publicada como um limite inferior, nunca como a taxa de controle. Nossos próprios números carregam o mesmo limite: veja latência de inferência.
O que o TinyVLA pontuou
| Referência | Protocolo | TinyVLA-H | Linhas de Base |
|---|---|---|---|
| MetaWorld, 50 tarefas, simulação | Multitarefa, 50 demonstrações, 3 sementes | 77.6 / 21.5 / 11.4 / 15.8 por dificuldade, média 31.6 | Média da Política de Difusão 10.5 |
| Franka Panda real, 5 tarefas | 100 trajetórias por tarefa, 20 tentativas | Média de 94.0 | OpenVLA 68.3, Diffusion Policy 35.3 |
| UR5 Bimanual, 3 tarefas | Multitarefa, 10 tentativas por tarefa | 76.7 / 36.7 / 30.0 | OpenVLA 0 / 0 / 0, Diffusion Policy 40.3 / 31.3 / 43.0 |
A linha bimanual tem uma explicação entediante que o próprio artigo oferece: OpenVLA é pré-treinado em Open X-Embodiment, que consiste inteiramente em dados de braço único, então um espaço de ação de dois braços está fora da distribuição e pontua zero. A linha de base da política de difusão supera o TinyVLA-H em duas dessas três tarefas. Contexto em o artigo sobre Open X-Embodiment.

O repositório TinyVLA, em agosto de 2026
O artigo é bom. O código é um lançamento de pesquisa. O repositório é github.com/liyaxuanliyaxuan/TinyVLA; seu README data o lançamento do código em 17 de fevereiro de 2025 e o último commit em 11 de março de 2025. Ótimo para reproduzir um artigo, um problema se você quisesse uma biblioteca mantida.
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 fixa 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 a pilha CUDA para os wheels 11.x: nvidia-cuda-runtime-cu11==11.7.99, nvidia-cudnn-cu11==8.5.0.96, triton==2.0.0. O README pede Python 3.10; lerobot 0.6.1 requer 3.12 ou mais recente, então os dois não podem compartilhar um ambiente. Confirme primeiro se existe uma build do torch 2.0.1 para a sua geração de GPU. Se uma execução falhar por falta de VRAM, a lista de verificação de falta de memória é mais rápida do que adivinhar.
TinyVLA também não lê conjuntos de dados LeRobot. Seu formato é HDF5 estilo ACT: action, language_raw, e um grupo de observações com imagens multi-view, joint_positions, qpos e qvel. O repositório inclui data_utils/rlds_to_h5py.py para entrada RLDS, e cada tarefa é registrada manualmente em aloha_scripts/constants.py com seu dataset_dir, episode_len e camera_names. Se seus episódios vieram do lerobot ou do cliente de desktop, você é responsável pela conversão.
# 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 assume um nó de oito placas. Defina-o como 1 e reduza o tamanho do lote bem abaixo de 32. Nenhuma variante de GPU única é fornecida upstream, então o comando não pode ser executado literalmente em uma 4090.
- --deepspeed scripts/zero2.json aponta para um arquivo que não está no diretório scripts de nível superior. As configurações do DeepSpeed são fornecidas em llava-pythia/scripts/zero2.json. Corrija o caminho antes da sua primeira execução.
- O README exige que o nome do diretório de saída contenha llava_pythia, mais lora se o LoRA estiver ativado.
- O backbone é um download separado: lesjie/Llava-Pythia-400M, -700M or -1.3B. Não há um único checkpoint base para o qual você aponta uma política da mesma forma que aponta para lerobot/smolvla_base.
SmolVLA: o modelo sub-1 B que você pode executar esta tarde
O SmolVLA apresenta o mesmo argumento dentro de uma biblioteca mantida. Ele possui 450 M parâmetros em um backbone SmolVLM2-500M-Video-Instruct, e a eficiência vem de configurações que você pode ler em configuration_smolvla.py, em vez de uma afirmação sobre ser pequeno.
| Configuração em configuration_smolvla.py | Padrão | O que ela oferece |
|---|---|---|
| num_vlm_layers | 16 | Apenas as primeiras 16 camadas do modelo de linguagem são executadas |
| expert_width_multiplier | 0.75 | O tamanho oculto do especialista em ação é 75 por cento do VLM |
| self_attn_every_n_layers | 2 | Autoatenção intercalada com atenção cruzada |
| chunk_size / n_action_steps | 50 / 50 | Uma passagem emite 50 ações e todas as 50 são executadas |
| num_steps | 10 | Denoising por flow matching fixado em 10 passos |
| tokenizer_max_length | 48 | A instrução é truncada para 48 tokens |
| freeze_vision_encoder / train_expert_only | True / True | O fine-tuning move o especialista, não a torre de visão |
| optimizer_lr, warmup, decay | 1e-4, 1000 steps, to 2.5e-6 over 30000 | Não é a receita do artigo: seu pré-treinamento usou um warmup de 100 passos ao longo de 200000 passos |
O pré-treinamento utilizou 481 conjuntos de dados da comunidade LeRobot, 22.9 K episódios e 10.6 M frames em 4 GPUs, 200000 passos com um batch global de 256; o artigo estima o projeto total em cerca de 30 K horas de GPU. Um número a observar: o blog de lançamento do Hugging Face menciona 487 conjuntos de dados curados, enquanto a tabela do artigo indica 481. Usamos o número do artigo e sinalizamos a divergência.

| Benchmark | SmolVLA 0.45 B | SmolVLA 2.25 B | Pi0 | ACT |
|---|---|---|---|---|
| Média LIBERO, multi-tarefa | 87.3 | 88.75 | 86.0 (3.3 B, pré-treinado em robótica) | - |
| Média Meta-World, multi-tarefa | 57.3 | 68.24 | 47.9 (3.5 B, pré-treinado em robótica) | - |
| SO-100 real, 3 tarefas, treinamento multi-tarefa | 78.3 | - | 61.7 (3.5 B) | - |
| SO-100 real, 3 tarefas, tarefa única, sem pré-treinamento em robótica | 40.0 | - | - | 48.3 |
| SO-101 lego pick-place, tarefa única, em distribuição | 90 | - | - | 70 |
| SO-101 lego pick-place, tarefa única, fora de distribuição | 50 | - | - | 40 |
LIBERO é uma simulação e tudo o que é competente pontua na casa dos oitenta agora. A linha do SO-100 real, onde um modelo de 450 M supera um de 3.5 B por 16.6 pontos, é a interessante; a linha abaixo dela é o contrapeso. Removendo o pré-treinamento da comunidade e o treinamento multi-tarefa, o mesmo modelo cai para 40.0, abaixo do ACT. A afirmação defensável é que um modelo pequeno não é automaticamente pior, não que seja melhor.
Um acidente ajuda: a tabela Meta-World do artigo SmolVLA apresenta os próprios números publicados do TinyVLA como linha de base, então, pela primeira vez, ambos os modelos estão em uma única tabela, SmolVLA-0.45B em 57.3 contra TinyVLA-H em 31.6. Também relata que o treinamento do SmolVLA é cerca de 40 por cento mais rápido que o Pi0 com 6x menos memória. Tudo isso vem dos autores do SmolVLA; a entrada da arena vincula cada valor à sua fonte.
Onde o SmolVLA gasta seu tempo
A AY-Robots lista o SmolVLA em 245 ms por passo de ação e o ACT em 20 ms no catálogo de políticas. O TinyVLA relata 14 ms por previsão de ação. Esses números não são comparáveis, e tratá-los como se fossem é o erro mais comum neste tópico: alguns medem o tempo de uma passagem direta, outros dividem essa passagem por um bloco uma vez que o chunking de ações o amortiza.
- O SmolVLA emite 50 ações por passagem direta e executa todas as 50. A 30 fps que o artigo usa em robôs reais, uma inferência cobre cerca de 1.7 segundos de movimento.
- A inferência assíncrona calcula o próximo bloco enquanto o atual ainda está em execução: 9.7 s de conclusão média de tarefa contra 13.75 s síncronos, aproximadamente 30 por cento mais rápido, e 19 ciclos de pegar e colocar em uma janela fixa de 60 segundos contra 9.
- As taxas de sucesso foram comparáveis em vez de melhores, 78.3 síncronas contra 73.3 assíncronas. A assincronia compra throughput, não precisão.
- O chunking oculta a latência de computação, não a latência de rede, e torna a política menos reativa porque está comprometida com 50 ações.
AY-Robots pode provisionar automaticamente um pod de GPU na nuvem que serve sua política enquanto o cliente robô local se comunica com esse endpoint, e o pod possui um watchdog de inatividade para que ele se autodestrua em vez de cobrar silenciosamente. O que ele não faz é remover a viagem de ida e volta pela internet pública. O loop de controle nas cinco políticas aqui é de 20 a 485 ms por etapa de ação antes de qualquer rede, portanto, a inferência remota é viável para operações lentas de 'pick-and-place', não para movimentos reativos rápidos.

Ajuste fino de SmolVLA em uma placa de consumidor
O caminho manual, no lerobot 0.6.1, a versão atual do PyPI em 23 de agosto de 2026. Tudo abaixo vem da documentação Hugging Face lerobot SmolVLA, obtida no mesmo dia; a versão guiada é mais suave.
- 1Instalar o lerobot com o extra smolvla
As dependências do SmolVLA são um extra opcional, não fazem parte da instalação base. Instalar sem elas e depois questionar por que o tipo de política é desconhecido é uma perda comum de meia hora.
bashgit clone https://github.com/huggingface/lerobot.git cd lerobot pip install -e ".[smolvla]" - 2Obter um dataset com episódios suficientes
A documentação recomenda cerca de 50 episódios e afirma que a mesma tarefa com 25 não foi suficiente. A AY-Robots define o mínimo em 30. Grave os seus próprios, ou comece pelo diretório de datasets.
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 o fine-tune
O comando do guia lerobot, não modificado. A documentação estima 20000 passos em aproximadamente 4 horas numa A100. Numa placa de 24 GB, espere mais tempo e meça.
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 - 4Reduzir o tamanho do batch até que caiba
batch_size=64 é um exemplo documentado, não uma promessa sobre a sua placa. A documentação aconselha começar pequeno e aumentar enquanto os tempos de carregamento permanecerem curtos.
bashlerobot-train --help - 5Implementar o checkpoint no braço
Mesma biblioteca, um comando. As flags de chunking em tempo real estão comentadas na documentação e são as que devem ser usadas em hardware de baixa potência.
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
Qualquer caminho que você siga, você termina com um checkpoint mais a configuração que o produziu. Mantenha a revisão do dataset, a contagem de passos e a seed ao lado. O lerobot usa seed 1000 por padrão; o ponto de entrada de fine-tuning do GR00T não expõe nenhuma seed, então essas execuções não são reproduzíveis bit a bit. Mecânica na documentação de treinamento.
Duas maneiras de colocar um VLA pequeno num braço
Você é o dono da máquina e dos modos de falha. Para o SmolVLA isso é razoável: um extra pip, um comando de treinamento, um comando de rollout. Para o TinyVLA é uma reprodução de pesquisa com pins congelados, um caminho DeepSpeed quebrado e uma conversão de dados que você mesmo escreve.
- Obtenha uma placa de 24 GB, grave de 30 a 50 episódios, verifique os fluxos da câmera quadro a quadro.
- pip install -e ".[smolvla]", lerobot-train contra lerobot/smolvla_base, depois sirva o checkpoint na máquina onde o braço está conectado.
- Para TinyVLA: ambiente conda separado, converter dados para HDF5, registrar a tarefa em constants.py, corrigir o caminho zero2.json, cortar train.sh de oito GPUs para uma.
- Sem cobrança por hora depois que a placa é paga.
- A inferência fica ao lado dos servos, a única maneira de obter um loop de controle rápido.
- Você pode aplicar patches no código da política, e o TinyVLA só está disponível desta forma.
- Uma 4090 exclui todas as políticas de ~3 B, então não há comparação local contra GR00T N1.7 ou Pi0.5.
- A configuração do ambiente é o trabalho real. Apenas os pins do TinyVLA podem custar um dia.
- Sem fila, sem nova tentativa, sem armazenamento de checkpoint. Uma reinicialização no passo 14000 significa começar de novo.
SmolVLA é uma das cinco políticas aqui. Você escolhe o modelo e o dataset em um formulário, o backend aluga uma GPU pela VRAM necessária, executa o treinador e escreve checkpoints para o armazenamento de objetos. Passo a passo: SmolVLA no SO-100, ou a matriz completa na página de treinamento.
| O que a plataforma envia para SmolVLA | Valor |
|---|---|
| tamanho do batch | 2 |
| taxa de aprendizado | 1e-4 |
| máximo de passos | 20000 |
| acumulação de gradiente | 8, e não chega ao treinador |
| controles extras no formulário | seed, logFreq |
| nível da GPU | RTX 4090 or any 24 GB card |
| formato do dataset | LeRobot v3.0 |
| mínimo de episódios | 30 |
Primeiro, o tamanho do batch padrão aqui é 2, não 64 como no exemplo da documentação do lerobot, e a configuração de acumulação de gradiente é enviada, mas não tem efeito para o SmolVLA, então o batch efetivo é realmente 2. Aumente-o deliberadamente em vez de assumir que o padrão corresponde ao upstream. Segundo, o TinyVLA não é treinável aqui de forma alguma.
Uma execução no nível de 24 GB leva de 2 a 5 horas a 0.30 a 0.60 USD por hora, aproximadamente 1 a 3 USD. No nível A100, uma política de ~3 B leva de 3 a 6 horas a 1.20 a 2.00 USD por hora, aproximadamente 4 a 12 USD. Veja preços, e as mesmas operações do CLI e do servidor MCP.
Quando um modelo pequeno é a escolha errada
Ambos os artigos são mais cuidadosos aqui do que os resumos. A análise de falhas do TinyVLA é específica: a variante de 0,4 B falhou três vezes ao interpretar mal a instrução, o que os autores atribuem à compreensão limitada da linguagem no VLM menor, e esse modo desapareceu em 1,3 B. O SmolVLA mostra a mesma curva do outro lado: a versão de 2,25 B da arquitetura idêntica pontua 88,75 no LIBERO e 68,24 no Meta-World contra 87,3 e 57,3 para o modelo de 0,45 B.
- Cabe em uma placa de 24 GB, o que reduz o custo de um experimento de dezenas de dólares para alguns.
- Rápido o suficiente para rodar ao lado do braço, sem salto de rede no loop de controle.
- Ajusta-se aos dados que uma pessoa pode gravar, dezenas de episódios em vez de milhares.
- Os pesos, a lista de dados e o código do SmolVLA são públicos, então um resultado ruim é depurável.
- Seguimento de instruções mais fraco: menos parâmetros de linguagem, menor capacidade de separar expressões referenciais semelhantes.
- Menor generalização espacial e visual para configurações que você não gravou.
- Mais sensível a defeitos no conjunto de dados, com menos pré-treinamento para recorrer.
- Trabalhos multi-tarefa e de longo horizonte ainda favorecem modelos maiores, incluindo a própria variante de 2,25 B do SmolVLA.
A comparação que vale a pena fazer não é TinyVLA contra SmolVLA. É SmolVLA contra ACT na sua própria tarefa, e o artigo do SmolVLA é o argumento para isso. Treinado para uma única tarefa sem pré-treinamento em robótica, o SmolVLA obteve uma média de 40,0 em três tarefas SO-100, onde o ACT de tarefa única conseguiu 48,3. O que o eleva para 78,3 é o pré-treinamento comunitário mais o treinamento multi-tarefa, não a arquitetura sozinha. Na tarefa de lego SO-101, ambas de tarefa única, o SmolVLA vence: 90 contra 70 em distribuição. Então SmolVLA contra Pi0.5 se o orçamento permitir.
Há menos pré-treinamento para cobrir dados ruins, então uma curva de perda limpa em um conjunto de dados defeituoso resulta em uma política que reproduz o defeito com confiança. A documentação do lerobot é direta sobre a estrutura: 50 episódios em 5 posições de cubo, 10 por posição, funcionaram; 25 não. Se a perda parece boa e o braço não faz nada útil, comece em a perda cai, a política não faz nada, a política só funciona em uma configuração ou coletando dados de treinamento VLA que são realmente utilizáveis.
Cinco políticas, uma tabela de comparação
GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA e ACT com contagens reais de parâmetros, latência de inferência por passo de ação, o nível de GPU que cada um precisa e a contagem mínima de episódios antes de fazer algo útil.
Compare as políticasUma tabela de decisão sobre a qual você pode agir
| Sua situação | Comece com | Porquê |
|---|---|---|
| Uma tarefa, boas demonstrações, sem linguagem | ACT | ~80 M, 20 ms, placa de 24 GB, sem modelo base para baixar |
| Algumas tarefas relacionadas, uma instrução cada | SmolVLA | 450 M, no lerobot, mínimo de 30 episódios, 1 a 3 USD por execução |
| Reproduzindo especificamente o resultado do TinyVLA | TinyVLA-B ou TinyVLA-H | O repositório é a única rota: ambiente isolado, dados convertidos |
| Multitarefa, instruções variadas, orçamento A100 | GR00T N1.7 ou Pi0.5 | ~3 B, 152 ms e 485 ms por passo, 4 a 12 USD por execução |
| Nenhum robô ainda | Dirija um braço real | O braço ao vivo baseado em fila não precisa de inscrição nem de hardware |
Para a última linha, o braço ao vivo transmite um SO-100 físico que você pode controlar do navegador sem uma conta, e as três formas de começar cobrem o resto. O SO-100 é o braço de referência aqui, custando aproximadamente 110 a 150 EUR em peças, com um guia completo de configuração.
O que vem depois dos modelos sub-1 B
Reduzir a contagem de parâmetros é uma forma de tornar um VLA barato e não é obviamente a vencedora. OpenVLA-OFT (arXiv 2502.19645) mantém o backbone de 7 B e altera apenas como as ações são decodificadas, relatando um aumento de 26x na taxa de transferência de geração de ações e o LIBERO subindo de 76.5 para 97.1 por cento. BitVLA (arXiv 2506.07530) torna ternário cada peso de um backbone BitNet b1.58 2B4T de 1 bit, relatando 11.0x menos memória e 4.4x menor latência de ponta a ponta, enquanto iguala o OpenVLA-OFT de precisão total. X-VLA-0.9B (arXiv 2510.10274) se posiciona na linha de 1 B com flow matching.
O ponto em comum: o decodificador de ações, não o modelo de linguagem, é onde reside a latência. Pergunte como uma política emite ações antes de perguntar quantos parâmetros ela possui. A arena possui 85 modelos e 332 resultados, cada um vinculado à sua fonte; há uma visão geral mais ampla em nossa introdução aos VLA.
Posso fazer fine-tuning do SmolVLA em uma RTX 4090?▾
Sim. O SmolVLA tem 450 M parâmetros e a AY-Robots o executa na camada RTX 4090 / 24 GB. O exemplo do lerobot usa --batch_size=64, que é um exemplo e não uma garantia para sua placa; a documentação aconselha começar com um tamanho pequeno e aumentar enquanto os tempos de carregamento permanecerem curtos. Espere um tempo maior do que as aproximadamente 4 horas que a documentação cita para 20000 passos em uma A100.
O TinyVLA está disponível no lerobot ou na AY-Robots?▾
Não para ambos. O TinyVLA existe apenas em seu repositório de pesquisa, último commit 11 de março de 2025, e seu formato é HDF5 estilo ACT em vez de LeRobot. A AY-Robots treina GR00T N1.7, GR00T N1.5, Pi0.5, SmolVLA e ACT. Se você quiser o TinyVLA, você o constrói por conta própria, e terá que corrigir o caminho de configuração do DeepSpeed em scripts/train.sh primeiro.
Um modelo de 450 M é realmente competitivo com um de 3 B?▾
Nos próprios benchmarks dos autores, sim: 87.3 contra 86.0 no LIBERO versus um Pi0 pré-treinado em robótica de 3.3 B, e 78.3 contra 61.7 em três tarefas reais SO-100 onde o mesmo artigo rotula Pi0 em 3.5 B. O limite está no mesmo artigo: em tarefa única sem pré-treinamento em robótica, o SmolVLA cai para 40.0, abaixo dos 48.3 do ACT.
Quantos episódios preciso antes que um VLA pequeno faça algo?▾
A AY-Robots define o mínimo para SmolVLA em 30 episódios e para ACT em 50. A documentação do lerobot recomenda cerca de 50 e relata que 25 não foram suficientes para a mesma tarefa. A estrutura importa tanto quanto a contagem: o conjunto do artigo usou 5 posições de cubo com 10 episódios cada.
Por que os números de latência publicados divergem tanto?▾
Eles medem coisas diferentes. O TinyVLA relata 14 ms por previsão de ação em uma A6000; a AY-Robots lista o SmolVLA em 245 ms e o ACT em 20 ms por passo de ação. Alguns números cobrem uma única passagem de inferência, alguns dividem uma passagem por um bloco de 50 ações, e quase nenhum inclui a captura da câmera ou a escrita para os servos.
A inferência na nuvem resolve o problema da GPU?▾
Parcialmente. A AY-Robots provisiona automaticamente um pod que serve a política enquanto o cliente local se comunica com esse endpoint, com um watchdog de inatividade para que ele se autodestrua em vez de gerar cobranças silenciosamente. Isso não elimina o tempo de ida e volta pela internet pública, e o loop de controle já é de 20 a 485 ms por passo de ação. Bom para tarefas lentas de pegar e colocar, não para movimentos reativos rápidos.
Sources
- TinyVLA: Rumo a Modelos de Visão-Linguagem-Ação Rápidos e Eficientes em Dados para Manipulação Robótica
- Repositório de código oficial do TinyVLA (README, requirements.txt, scripts/train.sh)
- Página do projeto TinyVLA
- lesjie/Llava-Pythia-1.3B, os pesos do backbone TinyVLA-H
- SmolVLA: Um Modelo de Visão-Linguagem-Ação para Robótica Acessível e Eficiente
- Documentação do lerobot: fine-tuning do SmolVLA
- lerobot: configuration_smolvla.py, os padrões do SmolVLA
- Cartão do modelo lerobot/smolvla_base
- SmolVLA: Modelo Eficiente de Visão-Linguagem-Ação (blog Hugging Face)
- lerobot no PyPI (0.6.1, requer Python 3.12 ou mais recente)
- OpenVLA: Um Modelo de Visão-Linguagem-Ação de Código Aberto
- Fine-Tuning de Modelos de Visão-Linguagem-Ação: Otimizando Velocidade e Sucesso (OpenVLA-OFT)
- BitVLA: Modelos de Visão-Linguagem-Ação de 1 bit para Manipulação Robótica
- X-VLA: Transformer com Soft-Prompt como Modelo Escalável de Visão-Linguagem-Ação para Múltiplas Incorporações
- Cartão do 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