
SmolVLA é um VLA de 450 milhões de parâmetros que pode ser ajustado em uma única placa de 24 GB. Comandos reais do lerobot 0.6.1, os padrões reais, as armadilhas que custam um dia e o custo de uma execução.
SmolVLA em uma tela
- •450 M parâmetros, cerca de 100 M deles um especialista em ação de correspondência de fluxo. lerobot treina apenas esse especialista e mantém o VLM congelado, por isso cabe em uma única placa.
- •O guia de computação do LeRobot estima o grupo smolvla em aproximadamente 10 a 16 GB de VRAM de pico no lote 8 com AdamW. Daí 24 GB.
- •O ponto de entrada é lerobot-train. A postagem do blog SmolVLA de junho de 2025 ainda imprime python lerobot/scripts/train.py, um caminho que não existe mais. Tudo abaixo é lerobot 0.6.1.
- •O agendamento de cosseno é predefinido para decair ao longo de 30000 passos. lerobot 0.6.1 o redimensiona para uma execução mais curta e o registra, mas nunca para cima: a execução padrão de 100000 passos termina no piso de 2.5e-6 por 70000 passos.
- •Trinta episódios é o mínimo da AY-Robots, em um nível de 24 GB custando 1 a 3 USD por execução contra 4 a 12 para os modelos de 80 GB.
A maioria das pessoas que querem um modelo de ação de linguagem visual em um braço real param na linha de hardware. GR00T N1.7 e Pi0.5 têm cerca de três bilhões de parâmetros cada e exigem uma A100 de 80 GB ou uma H100. Se o que você possui é um PC gamer com uma RTX 4090, esse é o fim da linha. SmolVLA é a exceção: 450 M parâmetros, dentro do LeRobot, construído para ajuste fino em uma placa de consumidor e para servir a partir de uma CPU.
Primeiro, a rota manual: instale o lerobot, puxe o lerobot/smolvla_base checkpoint, execute o comando real, leia a execução enquanto ela acontece. Depois, a rota da plataforma, e onde ela não ajuda.
O que é SmolVLA, em números que você pode verificar
SmolVLA é uma correspondência de fluxo política acoplada a um pequeno modelo de linguagem visual. A arquitetura base é SmolVLM2-500M-Video-Instruct; o artigo mantém apenas as primeiras 16 camadas de seu modelo de linguagem, limita cada quadro de câmera a 64 tokens visuais com um embaralhamento de pixels (pixel shuffle) em vez de mosaico de imagem (image tiling), e intercala atenção cruzada com uma camada de autoatenção a cada segundo bloco. O custo de inferência foi uma restrição de design, não uma reflexão tardia.
| Propriedade | Valor | Fonte |
|---|---|---|
| Parâmetros totais | cerca de 450 M | artigo |
| Especialista em ação | cerca de 100 M, correspondência de fluxo | artigo |
| Arquitetura base VLM | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Camadas VLM usadas | primeiras 16 do modelo de linguagem | num_vlm_layers = 16 |
| Tokens visuais por quadro | 64, embaralhamento de pixels, sem mosaico | artigo |
| Pré-treinamento | 481 conjuntos de dados da comunidade, 22.9 K episódios, 10.6 M quadros; 200000 passos com batch global 256 em 4 GPUs | artigo |
Os benchmarks são a razão pela qual as pessoas se preocupam com um modelo de 450 M. No LIBERO, ele tem uma média de 87.3 por cento contra 76.5 para OpenVLA de 7 B e 86.0 para um Pi0 pré-treinado em robótica de 3.3 B; no Meta-World, 57.3 contra 47.9. Em hardware SO-100 real, o treinamento multi-tarefa resulta em 75 por cento em pegar e colocar, 90 em empilhar, 70 em classificar, com média de 78.3, onde ACT treinado por tarefa teve uma média de 48.3. As mesmas linhas estão ao lado de cada VLA publicado na entrada da arena SmolVLA e na comparação ACT contra SmolVLA.
SmolVLA não é melhor que um modelo de 3 B em tudo. A própria tabela SO-101 do artigo revela: 90 por cento de sucesso em distribuição, 50 por cento fora dela, em uma plataforma na qual nunca foi pré-treinado. O que ele afirma, e sustenta, é que, em comparação com o Pi0, ele treina cerca de 40 por cento mais rápido com 6 vezes menos memória.
Por que uma placa de 24 GB é a escolha certa para a primeira execução
LeRobot fornece um guia de dimensionamento de computação, a página mais útil no repositório para isso. Ele agrupa políticas por tamanho de backbone e fornece um envelope de VRAM por grupo, medido com tamanho de lote 8 e AdamW, o padrão do lerobot. O estado do otimizador sozinho adiciona de 30 a 100 por cento sobre uma passagem direta e reversa simples, então estes não são valores apenas de pesos.
| Grupo | Políticas | VRAM de Pico (lote 8, AdamW) | GPUs Iniciais |
|---|---|---|---|
| BC Leve | act, vqbet, tdmpc | cerca de 2 a 6 GB | RTX 3060, L4 |
| Difusão | diffusion, multi_task_dit | cerca de 8 a 14 GB | RTX 4070+, L4 |
| VLA Pequeno | smolvla | cerca de 10 a 16 GB | RTX 4080+, L4, A10G |
| VLA Grande | pi0, pi0_fast, pi05, xvla, wall_x | cerca de 24 a 40 GB | A100 40 GB+ |
| Multimodal | groot, eo1 | cerca de 24 a 40 GB | A100 40 GB+ |
De dez a dezesseis gigabytes com lote 8 é o argumento: uma placa de 24 GB comporta isso mais o dataloader. AY-Robots executa SmolVLA na RTX 4090 ou em qualquer placa de 24 GB, mínimo de 30 episódios, LeRobot v3.0 de dados, 245 ms por passo de ação. Alugado, isso representa de 2 a 5 horas a 0.30 a 0.60 USD por hora, cerca de 1 a 3 USD por ajuste fino execução, contra 4 a 12 USD na camada de 80 GB que GR00T e Pi0.5 exigem (preços). Uma execução falha de SmolVLA é um café; uma execução falha de GR00T, um almoço.

- Compatível com hardware que você já pode possuir: aproximadamente 10 a 16 GB no lote 8.
- Uma execução desperdiçada custa horas e alguns dólares, então você pode se dar ao luxo de errar sobre o conjunto de dados.
- Pré-treinado em conjuntos de dados da comunidade compartilhados sob a tag lerobot, com resultados reais SO-100 e SO-101.
- Ele reside no próprio lerobot: sem repositório de fornecedor, e smolvla_base não é restrito.
- 450 M ainda são 450 M: o sucesso fora da distribuição cai de 90 para 50 por cento na tabela SO-101 do artigo.
- Ele requer dados do LeRobot v3.0; uma gravação v2.1 precisa ser convertida (conjunto de dados rejeitado v3).
- 245 ms por passo de ação é um controlador competente de pegar e colocar, não um reativo.
- O exemplo da documentação executa o lote 64 em uma A100; em 24 GB você troca o lote pelo tempo real.
Passo 0: o conjunto de dados decide a execução, não as flags
Nada abaixo importa se a gravação for ruim. A página LeRobot SmolVLA é direta: o conjunto de dados de referência tinha 50 episódios em 5 posições de cubo, 10 por posição, e a mesma tarefa com 25 episódios teve um desempenho ruim. A repetição por variação generaliza, a contagem bruta de episódios não. Nunca gravou um? Comece em grave seu primeiro conjunto de dados, com o cliente de desktop, que escreve o formato LeRobot a partir de uma sessão de teleoperação, ou pegue um emprestado do diretório de conjuntos de dados.
- Pelo menos 30 episódios em AY-Robots, cerca de 50 para a receita de referência do LeRobot.
- Cada variação esperada na implantação, repetida várias vezes.
- Uma string de tarefa, escrita de forma idêntica no momento da gravação e da implantação. O modelo é condicionado a esse texto.
- Câmeras fixas. Uma câmera movida entre a gravação e a implantação é a razão mais comum para uma curva de perda limpa resultar em um braço imóvel.
- Uma variação reservada na qual você nunca treinou, para ter algo honesto para testar.
SmolVLA, Pi0.5 e ACT exigem LeRobot v3.0. GR00T N1.7 e N1.5 exigem v2.0 ou v2.1 e seu carregador falha na v3.0. Grave uma vez, planeje comparar modelos mais tarde, e você converterá de uma forma ou de outra: conjunto de dados rejeitado v3.
# v2.1 -> v3.0: aggregates per-episode files into shards and writes the episode offsets
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=${HF_USER}/so100_pick_placeMais sobre isso em como coletar dados de treinamento VLA de alta qualidade. A versão resumida: 30 a 50 episódios limpos de uma tarefa com variação deliberada superam 200 episódios desleixados de três, por uma margem que nenhum hiperparâmetro consegue fechar.
Instalar lerobot 0.6.1
# LeRobot needs Python 3.12 or newer as of 0.6.x
conda create -y -n lerobot python=3.12
conda activate lerobot
# TorchCodec decodes the dataset videos and wants ffmpeg
conda install ffmpeg -c conda-forge
# Base package is deliberately thin; extras pull the rest
pip install 'lerobot[smolvla,training,core_scripts]'
# Sanity check: prints the lerobot version, the GPU torch sees, and the console scripts you got
lerobot-infoA instalação base do lerobot é leve e restringe dependências pesadas por trás de extras: smolvla adiciona transformers, num2words e accelerate, training a pilha de dados e wandb, core_scripts as dependências de hardware e visualização. No Linux, o caminho de instalação também decide o seu wheel CUDA: o padrão PyPI é um wheel cu130 com um driver mínimo de 580.65, então em um driver mais antigo instale o torch do índice cu128 primeiro, depois o lerobot.
--policy.path=lerobot/smolvla_base carrega o checkpoint pré-treinado de 450 M e o ajusta. --policy.type=smolvla constrói um SmolVLA novo, e o padrão de configuração load_vlm_weights = False significa que ele nem sequer puxa os pesos do backbone SmolVLM2 a menos que você peça. Se você errar, a execução treina feliz, custa o mesmo e não aprende nada transferível.
A execução do treinamento, comando por comando
- 1Autenticar-se no Hub
O checkpoint base vem do Hub, e seu conjunto de dados provavelmente também.
bashhf auth login - 2Leia as opções uma vez
Cada campo da configuração do pipeline e da política é um flag. Dê uma olhada antes de se aprofundar no código-fonte.
bashlerobot-train --help - 3Iniciar o fine-tune
O exemplo da documentação executa um batch de 64 em uma única A100; o próprio guia de computação para A100 de 40 GB usa batch 16, e 8 é o equivalente para 24 GB. Nenhum flag de agendador aqui de propósito, veja abaixo.
bashlerobot-train \ --policy.path=lerobot/smolvla_base \ --dataset.repo_id=${HF_USER}/so100_pick_place \ --batch_size=8 \ --steps=20000 \ --save_freq=2000 \ --log_freq=200 \ --seed=1000 \ --output_dir=outputs/train/smolvla_pick_place \ --job_name=smolvla_pick_place \ --policy.device=cuda \ --wandb.enable=true - 4Leia a linha de log, não apenas a perda
A cada --log_freq passos, o lerobot imprime loss, grdn, lr, updt_s, data_s, smp/s e, em CUDA, mem_gb. mem_gb indica se o batch cabe, lr se o agendamento está decaindo, e data_s se aproximando de updt_s significa que o dataloader é o gargalo, não a GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Colete checkpoints que você pode comparar
save_freq tem como padrão 20000, então uma execução de 20000 passos deixa um checkpoint e nada para comparar. Defina 2000. Enviar para o Hub requer --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Retomar se a máquina falhar
Aponte --config_path para o train_config.json ao lado do checkpoint. O lerobot se recusa a iniciar em um output_dir existente a menos que você esteja retomando, então você não pode sobrescrever uma execução por acidente.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Os flags que realmente mudam o resultado
| Flag | O que faz | Em 24 GB |
|---|---|---|
| --batch_size | Amostras por passo, aproximadamente linear na VRAM | 4 a 8 |
| --steps | Total de passos do otimizador | 20000 na primeira passagem |
| --policy.scheduler_decay_steps | Duração do decaimento cosseno, predefinido 30000 | Só afeta acima de 30000 |
| --policy.use_amp | Precisão mista; SmolVLA não tem campo dtype | true quando a memória é escassa |
| --num_workers | Processos do dataloader, padrão 4 | Aumente até que data_s pare de subir |
| --dataset.eval_split | Fração de episódios reservados por tarefa | 0.1, com --eval_steps |
| --policy.freeze_vision_encoder | Mantém a torre de visão congelada | true em 24 GB |
| --policy.train_expert_only | Apenas o especialista de ~100 M recebe gradientes | true primeiro |
SmolVLA predefine um agendamento de cosseno: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Conselhos mais antigos dizem que uma execução de 20000 passos, portanto, para no meio do decaimento. Na versão 0.6.1, isso não acontece: `CosineDecayWithWarmupSchedulerConfig.build()` recebe `--steps`, e abaixo de `num_decay_steps` ele reescala ambos, warmup de 1000 para 666 e decaimento de 30000 para 20000, imprimindo Auto-scaling LR scheduler ao fazê-lo. Ele nunca reescala para cima: o decaimento é limitado com `min(current_step, decay_steps)`, então o `--steps=100000` padrão permanece no mínimo do passo 30000 até o final, 70 por cento da execução. Apenas esse lado longo ainda precisa de `--policy.scheduler_decay_steps`. A coluna `lr` é onde você verifica.
Os padrões que você herda se não alterar nada
Uma política de configuração no lerobot carrega seu próprio otimizador e predefinição de agendador, e a menos que você defina use_policy_training_preset=false essas predefinições prevalecem. Metade das perguntas que as pessoas fazem sobre o treinamento do SmolVLA são respondidas por um padrão que elas não sabiam que existia.
| Configuração | Padrão no lerobot 0.6.1 | Definido em |
|---|---|---|
| chunk_size / n_action_steps | 50 / 50 | SmolVLAConfig |
| num_steps (flow matching denoise) | 10 | SmolVLAConfig |
| optimizer_lr | 1e-4 | SmolVLAConfig |
| scheduler_warmup_steps | 1000 | SmolVLAConfig |
| scheduler_decay_steps | 30000 | SmolVLAConfig |
| scheduler_decay_lr | 2.5e-6 | SmolVLAConfig |
| freeze_vision_encoder | true | SmolVLAConfig |
| train_expert_only | true | SmolVLAConfig |
| batch_size / steps | 8 / 100000 | TrainPipelineConfig |
| seed / save_freq / num_workers | 1000 / 20000 / 4 | TrainPipelineConfig |
As duas linhas que surpreendem as pessoas são freeze_vision_encoder e train_expert_only, ambas verdadeiras. De fábrica, você treina aproximadamente 100 M parâmetros, não 450 M, e é por isso que cabe em 24 GB. A própria execução de referência do LeRobot em um cluster H100 de quatro GPUs inverte ambas para falso; em uma placa de 24 GB, isso transforma uma execução funcional em .
O conselho do guia quando você está limitado pela memória é diminuir o tamanho do lote (batch size) e usar acumulação de gradiente para recuperar o lote efetivo. Não há acumulação de gradiente no lerobot 0.6.1: TrainPipelineConfig não possui tal campo e a string não aparece em nenhum lugar no pacote lançado. O formulário AY-Robots mostra um valor de acumulação de gradiente de 8 para SmolVLA e também não o aplica. Suas alavancas em 24 GB são --batch_size, os dois padrões de congelamento, e --policy.use_amp.
Quanto tempo a execução leva e quantos passos são suficientes
LeRobot publica âncoras de tempo real para cinco épocas em um conjunto de dados de aproximadamente 50 episódios, cerca de 45000 quadros a 30 fps. Valores de ordem de magnitude, dizem os documentos, mas eles são a diferença entre esperar uma hora e um dia.
| Configuração | Política | Lote | Tempo de execução |
|---|---|---|---|
| Single L4 / A10G (24 GB) | smolvla | 4 | cerca de 3 a 6 h |
| Single A100 40 GB | smolvla | 16 | cerca de 1 a 2 h |
| 4 x H100 80 GB with accelerate | smolvla | 32 | cerca de 1 a 2 h |
| Single RTX 4090 / RTX 3090 (24 GB) | act | 8 | cerca de 30 a 60 min |
A regra é de 5 a 10 épocas sobre o conjunto de dados, não uma contagem fixa de passos: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). No conjunto de dados de referência apontado pela documentação, lerobot/svla_so100_pickplace, os metadados relatam 50 episódios e 19631 quadros: um lote de 8 resulta em cerca de 2454 passos por época, então 20000 passos são aproximadamente 8 épocas. Reduza o lote pela metade e o mesmo orçamento compra metade das épocas, então refaça isso sempre que alterar --batch_size.
Executando a política ajustada de volta no braço
lerobot-rollout \
--strategy.type=base \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower_arm \
--robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
--task="Grasp the cube and put it in the box." \
--policy.path=${HF_USER}/smolvla_pick_placeOs 245 ms por passo de ação são fáceis de interpretar mal: a política emite chunk_size = 50 ações por passagem direta e executa n_action_steps = 50 delas, então a frequência com que se paga esse custo é definida por esses parâmetros, não pela frequência com que os servos recebem um comando. Isso é o que o agrupamento de ações proporciona, e por que um modelo de 245 ms pode acionar um braço de 30 Hz. O que resta é a latência de inferência no final do agrupamento.
| Medição (SmolVLA, SO-100 real) | Síncrono | Assíncrono |
|---|---|---|
| Tempo de conclusão, pegar e colocar, 10 tentativas | 13.75 s | 9.70 s |
| Ciclos de pegar e colocar em uma janela de tempo fixa | 9 | 19 |
| Taxa de sucesso média nas três tarefas | 78.3 % | 73.3 % |
Essa terceira linha é o que a maioria dos relatórios omite. A inferência assíncrona é cerca de 30 por cento mais rápida e praticamente dobra o rendimento em uma janela fixa, e o artigo considera as taxas de sucesso comparáveis, o que, em média, elas são. Por baixo, a classificação caiu de 70 para 50 por cento, enquanto o pegar e colocar ganhou 5. lerobot 0.6.1 carrega a outra alavanca no mesmo binário: --inference.type=rtc alterna a execução para o agrupamento em tempo real, que o próprio bloco de uso do script recomenda para os VLAs lentos, Pi0, Pi0.5 e SmolVLA.
O loop de controle é de 20 a 485 ms por passo de ação, dependendo do modelo, e as viagens de ida e volta na internet pública transformam uma política funcional em uma hesitante. A inferência remota é viável para pegar e colocar lentamente, não para movimento reativo rápido: se a tarefa exige correções rápidas, a GPU deve estar na mesma LAN que o braço.
Fora do tópico para uma execução de treinamento, mas isso encerra mais projetos SO-100 do que qualquer hiperparâmetro. Os servos Feetech STS3215 nos SO-100 e SO-101 operam a 7.4 V; 12 V os destrói. O LeKiwi mistura um braço de 7.4 V com uma base de 12 V, que é como o conector de barril errado encontra o soquete errado.
Duas rotas para o mesmo checkpoint
Você é o proprietário da máquina, do ambiente e da depuração. A única dependência da nuvem é o download do checkpoint base do Hub. A rota certa se você quiser modificar a política, se os dados não puderem sair da sua rede, ou se a placa estiver ociosa.
- Você controla o CUDA, o driver, a compilação do ffmpeg e o dataloader.
- Você pode aplicar patches em configuration_smolvla.py e retreinar na mesma tarde.
- Você paga em eletricidade e tempo, não por execução, e depura o TorchCodec você mesmo.
pip install 'lerobot[smolvla,training,core_scripts]'
hf auth login
lerobot-train \
--policy.path=lerobot/smolvla_base \
--dataset.repo_id=${HF_USER}/so100_pick_place \
--batch_size=8 --steps=20000 \
--save_freq=2000 --seed=1000 \
--output_dir=outputs/train/smolvla_pick_place \
--job_name=smolvla_pick_place \
--policy.device=cuda --wandb.enable=trueA mesma execução por trás de um formulário: você escolhe o modelo e o conjunto de dados, o backend aluga uma GPU pela VRAM necessária, executa o treinador e grava checkpoints no armazenamento de objetos. O conjunto de dados pode vir de um ID de repositório do Hugging Face, do diretório, ou da sua máquina. Comece em SmolVLA no SO-100, ou na matriz em a página de treinamento.
| Campo | Padrão que a plataforma envia para SmolVLA | Nota |
|---|---|---|
| batch size | 2 | Conservador para o nível de 24 GB |
| learning rate | 1e-4 | A predefinição do lerobot |
| max steps | 20000 | A execução de referência na documentação do LeRobot |
| gradient accumulation | 8 | Mostrado no formulário, não aplicado |
| extra knobs | seed, logFreq | Seed torna a execução repetível |
- 2 a 5 horas no nível de 24 GB, cerca de 1 a 3 USD por execução.
- As mesmas operações de um terminal em /cli e de agentes de IA em /mcp.
- Os pods de inferência carregam um watchdog ocioso, então um pod esquecido se autodestrói em vez de cobrar silenciosamente.
- Ainda sem braço? /live transmite um SO-100 físico que você pode controlar sem se inscrever.
Um trabalho preso na fila é um sintoma do mercado spot, não um bug: trabalho de treinamento preso na fila. Passo a passo: treine sua primeira política e a documentação de treinamento.
Quando SmolVLA é a escolha errada
O teste para saber se o SmolVLA foi a primeira execução certa não é se funcionou, mas se a falha lhe disse algo. Atingir 60 ou 70 por cento e um modelo maior é um próximo investimento razoável: os dados carregam sinal. Atingir 10 por cento e um modelo de 3 B provavelmente também atinge 10 por cento, o que você acabou de aprender por três dólares em vez de doze.

Vale a pena ler antes de gastar mais: Pi0.5 contra SmolVLA para mais capacidade com a mesma ideia, e GR00T N1.7 contra SmolVLA para a rota NVIDIA, ambos com camada de 80 GB a 4 a 12 USD por execução. A outra forma, ACT é a linha de base mais barata: 80 M parâmetros, 20 ms por passo de ação, sem condicionamento de linguagem. Todos os cinco estão em a página de políticas; a arena tem 85 modelos e 332 resultados de benchmark.

A lista de verificação antes de escalar qualquer coisa
- O
lratingiu seu limite inferior de 2.5e-6? Abaixo de 30000 passos, o lerobot reescala o decaimento e informa isso na inicialização; acima disso, defina--policy.scheduler_decay_stepsvocê mesmo. - Mais de um checkpoint, e episódios separados com
--dataset.eval_splitpara que a perda de avaliação signifique algo. - A política se move? Uma perda em queda com um braço imóvel tem causas específicas: a perda cai, a política não faz nada.
- Sobrevive a uma mudança de cenário? Se não: a política só funciona em uma configuração.
- Você anotou a seed? O lerobot usa 1000 por padrão, então duas execuções intocadas permanecem comparáveis.
- Só então: mais episódios, mais variação ou um modelo maior. Nessa ordem.
Para entender por que esses modelos existem e o que eles fazem com a entrada de linguagem, é o contexto; executa a montagem através da até a primeira execução de . Para o checkpoint finalizado, ; se o braço nunca aparecer, .
Treine o SmolVLA no seu próprio braço
Escolha o modelo e o braço, e o guia fornecerá os padrões exatos, o formato do conjunto de dados e os custos da execução. O SmolVLA está no nível de 24 GB, custando de 1 a 3 USD por execução.
Abrir os guias de treinamentoPosso realmente fazer o fine-tuning do SmolVLA numa RTX 4090?▾
Sim. O guia de computação do LeRobot indica que o SmolVLA utiliza aproximadamente 10 a 16 GB de VRAM de pico com batch 8 e AdamW, e lista placas de consumo de 24 GB como confortáveis para ele. O batch 64 no exemplo da documentação é emparelhado com uma única A100. A memória escala aproximadamente linearmente com o batch, então use 4 ou 8 e observe mem_gb.
Quantos episódios eu realmente preciso?▾
A AY-Robots define o mínimo em 30. A documentação do LeRobot recomenda cerca de 50 e relata que 25 episódios da mesma tarefa tiveram um desempenho ruim. A estrutura supera a quantidade: o conjunto de referência consistia em 5 posições de cubo com 10 episódios cada, e essa repetição é o que generaliza.
A documentação diz batch 64, a plataforma envia batch 2. Qual está certo?▾
Ambos, para hardware diferente. O exemplo da documentação usa batch 64 e menciona cerca de 4 horas para 20000 passos numa única A100; o ponto de referência A100 de 40 GB do guia de computação é batch 16. Batch 2 é o que a AY-Robots envia no nível de 24 GB. Localmente, 4 a 8 é o meio-termo, e a aritmética da época muda com isso.
SmolVLA ou ACT para uma primeira execução num SO-100?▾
ACT se a tarefa for um movimento repetitivo e você quiser o loop mais rápido: 20 ms por passo de ação, 80 M parâmetros, sem condicionamento de linguagem. SmolVLA se você quiser condicionamento de linguagem, várias strings de tarefa num único checkpoint e uma base pré-treinada. Ambos se encaixam no nível de 24 GB, então a escolha é a tarefa, não o orçamento.
Preciso definir --policy.scheduler_decay_steps?▾
Apenas quando --steps estiver acima de 30000. O SmolVLA predefine o decaimento cosseno em 30000 passos, e o lerobot 0.6.1 o reescala automaticamente para uma execução mais curta, registrando "Auto-scaling LR scheduler" quando o faz. Ele nunca escala para cima, então o --steps=100000 padrão deixa os últimos 70000 passos no limite de 2.5e-6.
Sources
- SmolVLA: Um Modelo de Visão-Linguagem-Ação para Robótica Acessível e Eficiente
- SmolVLA: Modelo Eficiente de Visão-Linguagem-Ação (blog Hugging Face)
- Cartão do modelo lerobot/smolvla_base
- Documentação LeRobot: SmolVLA
- Documentação LeRobot: Guia de Hardware de Computação para Treinamento LeRobot
- Documentação LeRobot: Instalação
- Documentação LeRobot: LeRobotDataset v3.0 e o conversor v2.1
- Documentação LeRobot: Inferência Assíncrona
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (estratégias e inferência RTC)
- lerobot v0.6.1: pyproject.toml (extras e pontos de entrada de console)
- lerobot no PyPI
- Conjunto de dados lerobot/svla_so100_pickplace (50 episódios, 19631 frames, v3.0)
Sources
- SmolVLA: A Vision-Language-Action Model for Affordable and Efficient Robotics
- SmolVLA: Efficient Vision-Language-Action Model (Hugging Face blog)
- lerobot/smolvla_base model card
- LeRobot docs: SmolVLA
- LeRobot docs: Compute HW Guide for LeRobot Training
- LeRobot docs: Installation
- LeRobot docs: LeRobotDataset v3.0 and the v2.1 converter
- LeRobot docs: Asynchronous Inference
- lerobot v0.6.1: configuration_smolvla.py
- lerobot v0.6.1: TrainPipelineConfig
- lerobot v0.6.1: CosineDecayWithWarmupSchedulerConfig
- lerobot v0.6.1: lerobot_rollout.py (strategies and RTC inference)
- lerobot v0.6.1: pyproject.toml (extras and console entry points)
- lerobot on PyPI
- lerobot/svla_so100_pickplace dataset (50 episodes, 19631 frames, v3.0)
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started