
SmolVLA es un VLA de 450 millones de parámetros que se ajusta en una sola tarjeta de 24 GB. Comandos reales de lerobot 0.6.1, los valores predeterminados reales, las trampas que cuestan un día y lo que cuesta una ejecución.
SmolVLA en una pantalla
- •450 M parámetros, aproximadamente 100 M de ellos un experto en acción de coincidencia de flujo. lerobot entrena solo a ese experto y mantiene el VLM congelado, por eso cabe en una sola tarjeta.
- •La guía de cómputo de LeRobot sitúa al grupo smolvla en aproximadamente 10 a 16 GB de VRAM pico con un tamaño de lote de 8 y AdamW. Por lo tanto, 24 GB.
- •El punto de entrada es lerobot-train. La publicación del blog de SmolVLA de junio de 2025 todavía imprime python lerobot/scripts/train.py, una ruta que ya no existe. Todo lo que sigue es lerobot 0.6.1.
- •El programa de coseno está preestablecido para decaer en 30000 pasos. lerobot 0.6.1 lo reescala para una ejecución más corta y lo registra, pero nunca hacia arriba: la ejecución estándar de 100000 pasos termina en el piso de 2.5e-6 durante 70000 pasos.
- •Treinta episodios es el mínimo de AY-Robots, en un nivel de 24 GB que cuesta de 1 a 3 USD por ejecución frente a 4 a 12 para los modelos de 80 GB.
La mayoría de las personas que quieren un modelo de acción de lenguaje visual en un brazo real se detienen en la línea de hardware. GR00T N1.7 y Pi0.5 tienen alrededor de tres mil millones de parámetros cada uno y requieren una A100 de 80 GB o una H100. Si lo que posees es un PC gaming con una RTX 4090, ese es el final del camino. SmolVLA es la excepción: 450 M parámetros, dentro de LeRobot, construido para ajustarse en una tarjeta de consumo y servir desde una CPU.
Primero la ruta manual: instala lerobot, descarga el lerobot/smolvla_base checkpoint, ejecuta el comando real, lee la ejecución mientras sucede. Luego la ruta de la plataforma, y dónde no ayuda.
Qué es SmolVLA, en números que puedes verificar
SmolVLA es una coincidencia de flujo política acoplada a un pequeño modelo de lenguaje visual. La arquitectura principal es SmolVLM2-500M-Video-Instruct; el artículo conserva solo las primeras 16 capas de su modelo de lenguaje, limita cada fotograma de cámara a 64 tokens visuales con una mezcla de píxeles en lugar de mosaicos de imagen, e intercala la atención cruzada con una capa de autoatención cada segundo bloque. El costo de inferencia fue una restricción de diseño, no una consideración posterior.
| Propiedad | Valor | Fuente |
|---|---|---|
| Parámetros totales | aproximadamente 450 M | paper |
| Experto en acción | aproximadamente 100 M, coincidencia de flujo | paper |
| Arquitectura VLM | HuggingFaceTB/SmolVLM2-500M-Video-Instruct | vlm_model_name |
| Capas VLM utilizadas | primeras 16 del modelo de lenguaje | num_vlm_layers = 16 |
| Tokens visuales por fotograma | 64, mezcla de píxeles, sin mosaicos | paper |
| Preentrenamiento | 481 conjuntos de datos de la comunidad, 22.9 K episodios, 10.6 M fotogramas; 200000 pasos con un lote global de 256 en 4 GPUs | paper |
Los puntos de referencia son la razón por la que la gente se molesta con un modelo de 450 M. En LIBERO, promedia un 87.3 por ciento frente al 76.5 de OpenVLA con 7 B y el 86.0 de un Pi0 preentrenado en robótica con 3.3 B; en Meta-World, 57.3 frente al 47.9. En hardware real SO-100, el entrenamiento multitarea da un 75 por ciento en recogida y colocación, 90 en apilamiento, 70 en clasificación, promediando 78.3, donde ACT entrenado por tarea promedió 48.3. Las mismas filas se encuentran junto a cada VLA publicado en la entrada de SmolVLA en la arena y la comparación de ACT con SmolVLA.
SmolVLA no es mejor que un modelo de 3 B en todo. La propia tabla SO-101 del artículo lo revela: 90 por ciento de éxito en distribución, 50 por ciento fuera de ella, en una plataforma en la que nunca fue preentrenado. Lo que sí afirma, y respalda, es que frente a Pi0 entrena aproximadamente un 40 por ciento más rápido con 6 veces menos memoria.
¿Por qué una tarjeta de 24 GB es la elección correcta para la primera ejecución?
LeRobot incluye una guía de dimensionamiento de cómputo, la página más útil en el repositorio para esto. Agrupa las políticas por tamaño de backbone y proporciona un sobre de VRAM por grupo, medido con un tamaño de lote de 8 y AdamW, el valor predeterminado de lerobot. El estado del optimizador por sí solo añade del 30 al 100 por ciento sobre un pase de forward y backward simple, por lo que estas no son cifras solo de pesos.
| Grupo | Políticas | VRAM pico (lote 8, AdamW) | GPUs de inicio |
|---|---|---|---|
| BC ligero | act, vqbet, tdmpc | aproximadamente 2 a 6 GB | RTX 3060, L4 |
| Difusión | diffusion, multi_task_dit | aproximadamente 8 a 14 GB | RTX 4070+, L4 |
| VLA pequeño | smolvla | aproximadamente 10 a 16 GB | RTX 4080+, L4, A10G |
| VLA grande | pi0, pi0_fast, pi05, xvla, wall_x | aproximadamente 24 a 40 GB | A100 40 GB+ |
| Multimodal | groot, eo1 | aproximadamente 24 a 40 GB | A100 40 GB+ |
Diez a dieciséis gigabytes con un lote de 8 es el argumento: una tarjeta de 24 GB encaja con eso más el dataloader. AY-Robots pone SmolVLA en la RTX 4090 o cualquier tarjeta de 24 GB, mínimo 30 episodios, LeRobot v3.0 de datos, 245 ms por paso de acción. Alquilado, eso es de 2 a 5 horas a 0.30 a 0.60 USD la hora, aproximadamente 1 a 3 USD por una ejecución de ajuste fino, frente a 4 a 12 USD en el nivel de 80 GB que GR00T y Pi0.5 necesitan (precios). Una ejecución fallida de SmolVLA es un café; una ejecución fallida de GR00T, un almuerzo.

- Se adapta a hardware que ya podrías poseer: aproximadamente de 10 a 16 GB con un lote de 8.
- Una ejecución fallida cuesta horas y unos pocos dólares, por lo que puedes permitirte equivocarte con el conjunto de datos.
- Preentrenado en conjuntos de datos comunitarios compartidos bajo la etiqueta lerobot, con resultados reales de SO-100 y SO-101.
- Vive en lerobot mismo: sin repositorio de proveedor, y smolvla_base no está restringido.
- 450 M sigue siendo 450 M: el éxito fuera de distribución cae del 90 al 50 por ciento en la tabla SO-101 del artículo.
- Requiere datos de LeRobot v3.0; una grabación v2.1 debe ser convertida (conjunto de datos rechazado v3).
- 245 ms por paso de acción es un controlador competente de 'pick and place', no uno reactivo.
- El ejemplo de la documentación ejecuta un lote de 64 en una A100; en 24 GB se sacrifica el tamaño del lote por el tiempo real.
Paso 0: el conjunto de datos decide la ejecución, no las banderas
Nada de lo siguiente importa si la grabación es mala. La página de LeRobot SmolVLA es directa: el conjunto de datos de referencia fue de 50 episodios en 5 posiciones de cubo, 10 por posición, y la misma tarea con 25 episodios tuvo un rendimiento deficiente. La repetición por variación generaliza, el recuento bruto de episodios no. ¿Nunca has grabado uno? Empieza en graba tu primer conjunto de datos con el cliente de escritorio, que escribe el formato LeRobot a partir de una sesión de teleoperación, o toma uno prestado del directorio de conjuntos de datos.
- Al menos 30 episodios en AY-Robots, unos 50 para la receta de referencia de LeRobot.
- Cada variación que esperas en el despliegue, repetida varias veces.
- Una cadena de tarea, escrita idénticamente en el momento de la grabación y del despliegue. El modelo está condicionado a ese texto.
- Cámaras fijas. Una cámara movida entre la grabación y el despliegue es la razón más común por la que una curva de pérdida limpia resulta en un brazo inmóvil.
- Una variación reservada en la que nunca entrenaste, para que tengas algo honesto contra lo que probar.
SmolVLA, Pi0.5 y ACT requieren LeRobot v3.0. GR00T N1.7 y N1.5 requieren v2.0 o v2.1 y su cargador falla en v3.0. Graba una vez, planea comparar modelos más tarde, y convertirás de una forma u otra: conjunto de datos rechazado 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_placeMás sobre esto en cómo recopilar datos de entrenamiento VLA de alta calidad. La versión corta: de 30 a 50 episodios limpios de una tarea con variación deliberada superan a 200 episodios descuidados de tres, por un margen que ningún hiperparámetro puede cerrar.
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-infoLa instalación base de lerobot es ligera y restringe las dependencias pesadas a través de extras: smolvla añade transformers, num2words y accelerate, training la pila de conjuntos de datos y wandb, core_scripts las dependencias de hardware y visualización. En Linux, la ruta de instalación también decide su wheel de CUDA: el valor predeterminado de PyPI es un wheel cu130 con un requisito mínimo de controlador de 580.65, por lo que en un controlador más antiguo, instale torch desde el índice cu128 primero, y luego lerobot.
--policy.path=lerobot/smolvla_base carga el checkpoint preentrenado de 450 M y lo ajusta. --policy.type=smolvla construye un SmolVLA nuevo, y el valor predeterminado de la configuración load_vlm_weights = False significa que ni siquiera descarga los pesos del backbone de SmolVLM2 a menos que se lo pida. Si se equivoca, la ejecución se entrenará felizmente, costará lo mismo y no aprenderá nada transferible.
La ejecución del entrenamiento, comando por comando
- 1Autenticarse en el Hub
El punto de control base proviene del Hub, y probablemente su conjunto de datos también.
bashhf auth login - 2Leer las opciones una vez
Cada campo de la configuración de la política y del pipeline es un flag. Revíselo antes de profundizar en el código fuente.
bashlerobot-train --help - 3Iniciar el ajuste fino
El ejemplo de la documentación ejecuta un batch de 64 en una única A100; el anclaje de la guía de cómputo para una A100 de 40 GB es un batch de 16, y 8 es el equivalente para 24 GB. No hay un flag de scheduler aquí a propósito, vea a continuación.
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 - 4Leer la línea de registro, no solo la pérdida
Cada --log_freq pasos, lerobot imprime loss, grdn, lr, updt_s, data_s, smp/s y, en CUDA, mem_gb. mem_gb indica si el batch cabe, lr si el schedule está decayendo, y data_s acercándose a updt_s significa que el dataloader es el cuello de botella, no la GPU.
bash# if data_s creeps toward updt_s lerobot-train ... --num_workers=8 - 5Recopilar puntos de control que pueda comparar
save_freq por defecto es 20000, por lo que una ejecución de 20000 pasos deja un único punto de control y nada con qué compararlo. Establezca 2000. Para subir al Hub se necesita --policy.repo_id.
bash--save_freq=2000 \ --policy.repo_id=${HF_USER}/smolvla_pick_place \ --save_checkpoint_to_hub=true - 6Reanudar si la máquina falla
Apunte --config_path al train_config.json junto al punto de control. lerobot se niega a iniciar en un output_dir existente a menos que esté reanudando, por lo que no puede sobrescribir una ejecución por accidente.
bashlerobot-train \ --config_path=<path to the saved train_config.json> \ --resume=true
Los flags que realmente cambian el resultado
| Flag | Qué hace | En 24 GB |
|---|---|---|
| --batch_size | Muestras por paso, aproximadamente lineal en VRAM | 4 to 8 |
| --steps | Pasos totales del optimizador | 20000 primera pasada |
| --policy.scheduler_decay_steps | Longitud de decaimiento coseno, preestablecido 30000 | Solo afecta por encima de 30000 |
| --policy.use_amp | Precisión mixta; SmolVLA no tiene campo dtype | true cuando la memoria es limitada |
| --num_workers | Procesos del dataloader, por defecto 4 | Aumentar hasta que data_s deje de subir |
| --dataset.eval_split | Fracción de episodios reservados por tarea | 0.1, with --eval_steps |
| --policy.freeze_vision_encoder | Mantiene la torre de visión congelada | true on 24 GB |
| --policy.train_expert_only | Solo el experto de ~100 M recibe gradientes | true primero |
SmolVLA preestablece un programador de coseno: `scheduler_warmup_steps = 1000`, `scheduler_decay_steps = 30000`, `scheduler_decay_lr = 2.5e-6`. Consejos anteriores indicaban que una ejecución de 20000 pasos se estancaría a mitad del decaimiento. En 0.6.1 no es así: `CosineDecayWithWarmupSchedulerConfig.build()` recibe `--steps`, y por debajo de `num_decay_steps` reescala ambos, el calentamiento de 1000 a 666 y el decaimiento de 30000 a 20000, imprimiendo Auto-scaling LR scheduler al hacerlo. Nunca reescala hacia arriba: el decaimiento se limita con `min(current_step, decay_steps)`, por lo que el `--steps=100000` predeterminado se mantiene en el mínimo desde el paso 30000 hasta el final, el 70 por ciento de la ejecución. Solo ese lado largo todavía necesita `--policy.scheduler_decay_steps`. La columna `lr` es donde se verifica.
Los valores predeterminados que heredas si no tocas nada
Una política configuración en lerobot lleva su propio optimizador y preajuste de programador, y a menos que establezcas use_policy_training_preset=false esos preajustes prevalecen. La mitad de las preguntas que la gente hace sobre el entrenamiento de SmolVLA son respondidas por un valor predeterminado que no sabían que existía.
| Configuración | Predeterminado en lerobot 0.6.1 | Definido en |
|---|---|---|
| tamaño_chunk / n_pasos_acción | 50 / 50 | SmolVLAConfig |
| num_pasos (denoise por flow matching) | 10 | SmolVLAConfig |
| lr_optimizador | 1e-4 | SmolVLAConfig |
| pasos_calentamiento_programador | 1000 | SmolVLAConfig |
| pasos_decaimiento_programador | 30000 | SmolVLAConfig |
| lr_decaimiento_programador | 2.5e-6 | SmolVLAConfig |
| congelar_codificador_visión | true | SmolVLAConfig |
| entrenar_solo_experto | true | SmolVLAConfig |
| tamaño_lote / pasos | 8 / 100000 | TrainPipelineConfig |
| semilla / freq_guardado / num_trabajadores | 1000 / 20000 / 4 | TrainPipelineConfig |
Las dos líneas que sorprenden a la gente son freeze_vision_encoder y train_expert_only, ambas verdaderas. De forma predeterminada, se entrenan aproximadamente 100 M de parámetros, no 450 M, por lo que cabe en 24 GB. La ejecución de referencia de LeRobot en un clúster H100 de cuatro GPU cambia ambas a falso; en una tarjeta de 24 GB, eso convierte una ejecución funcional en .
El consejo de la guía cuando la memoria es un cuello de botella es reducir el tamaño del lote (batch size) y usar la acumulación de gradientes para recuperar el lote efectivo. No hay acumulación de gradientes en lerobot 0.6.1: TrainPipelineConfig no tiene tal campo y la cadena no aparece en ninguna parte del paquete publicado. El formulario de AY-Robots muestra un valor de acumulación de gradientes de 8 para SmolVLA y tampoco lo aplica. Sus palancas en 24 GB son --batch_size, los dos valores predeterminados de congelación, y --policy.use_amp.
Cuánto tarda la ejecución y cuántos pasos son suficientes
LeRobot publica anclajes de tiempo real para cinco épocas sobre un conjunto de datos de aproximadamente 50 episodios, unas 45000 fotogramas a 30 fps. Cifras de orden de magnitud, dicen los documentos, pero son la diferencia entre esperar una hora y un día.
| Configuración | Política | Lote | Tiempo real |
|---|---|---|---|
| Una sola L4 / A10G (24 GB) | smolvla | 4 | about 3 to 6 h |
| Una sola A100 de 40 GB | smolvla | 16 | about 1 to 2 h |
| 4 x H100 de 80 GB con accelerate | smolvla | 32 | about 1 to 2 h |
| Una sola RTX 4090 / RTX 3090 (24 GB) | act | 8 | about 30 to 60 min |
La regla es de 5 a 10 épocas sobre el conjunto de datos, no un número fijo de pasos: steps_per_epoch = ceil(total_frames / (num_gpus x batch_size)). En el conjunto de datos de referencia al que apuntan los documentos, lerobot/svla_so100_pickplace, los metadatos reportan 50 episodios y 19631 frames: un lote de 8 da aproximadamente 2454 pasos por época, por lo que 20000 pasos son aproximadamente 8 épocas. Reduce el lote a la mitad y el mismo presupuesto te dará la mitad de las épocas, así que repite esto cada vez que modifiques --batch_size.
Ejecutando la política ajustada de nuevo en el brazo
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_placeLos 245 ms por paso de acción son fáciles de malinterpretar: la política emite chunk_size = 50 acciones por pasada hacia adelante y ejecuta n_action_steps = 50 de ellas, por lo que la frecuencia con la que se paga ese costo la establecen esos parámetros, no la frecuencia con la que los servos reciben una orden. Eso es lo que la fragmentación de acciones ofrece, y por qué un modelo de 245 ms puede controlar un brazo de 30 Hz. Lo que queda es la latencia de inferencia al final del fragmento.
| Medición (SmolVLA, SO-100 real) | Síncrono | Asíncrono |
|---|---|---|
| Tiempo de finalización, recoger y colocar, 10 pruebas | 13.75 s | 9.70 s |
| Ciclos de recoger y colocar en una ventana de tiempo fija | 9 | 19 |
| Tasa de éxito promedio en las tres tareas | 78.3 % | 73.3 % |
Esa tercera fila es lo que la mayoría de los informes omiten. La inferencia asíncrona es aproximadamente un 30 por ciento más rápida y duplica aproximadamente el rendimiento en una ventana fija, y el artículo considera que las tasas de éxito son comparables, lo cual en promedio lo son. Debajo de esto, la clasificación cayó del 70 al 50 por ciento, mientras que la acción de recoger y colocar ganó 5. lerobot 0.6.1 lleva la otra palanca en el mismo binario: --inference.type=rtc cambia el despliegue a fragmentación en tiempo real, lo que el propio bloque de uso del script recomienda para los VLAs lentos, Pi0, Pi0.5 y SmolVLA.
El bucle de control es de 20 a 485 ms por paso de acción dependiendo del modelo, y los viajes de ida y vuelta a través de internet público convierten una política funcional en una dubitativa. La inferencia remota es viable para acciones lentas de recoger y colocar, no para movimientos reactivos rápidos: si la tarea necesita correcciones rápidas, la GPU debe estar en la misma LAN que el brazo.
Fuera de tema para una ejecución de entrenamiento, pero termina más proyectos SO-100 que cualquier hiperparámetro. Los servos Feetech STS3215 en el SO-100 y el SO-101 funcionan a 7.4 V; 12 V los destruye. El LeKiwi mezcla un brazo de 7.4 V con una base de 12 V, que es como el conector de barril equivocado encuentra el zócalo equivocado.
Dos rutas al mismo punto de control
Eres dueño de la máquina, el entorno y la depuración. La única dependencia de la nube es la descarga del punto de control base desde el Hub. Es la ruta correcta si quieres modificar la política, si los datos no pueden salir de tu red, o si la tarjeta está inactiva.
- Controlas la rueda CUDA, el controlador, la compilación de ffmpeg y el cargador de datos.
- Puedes parchear configuration_smolvla.py y reentrenar la misma tarde.
- Pagas en electricidad y tiempo, no por ejecución, y depuras TorchCodec tú mismo.
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=trueLa misma ejecución detrás de un formulario: seleccionas el modelo y el conjunto de datos, el backend alquila una GPU según la VRAM requerida, ejecuta el entrenador y escribe puntos de control en el almacenamiento de objetos. El conjunto de datos puede provenir de un ID de repositorio de Hugging Face, del directorio público, o de tu máquina. Empieza en SmolVLA en SO-100, o en la matriz de la página de entrenamiento.
| Campo | Valor predeterminado que la plataforma envía para SmolVLA | Nota |
|---|---|---|
| batch size | 2 | Conservador para el nivel de 24 GB |
| learning rate | 1e-4 | El preajuste de lerobot |
| max steps | 20000 | La ejecución de referencia en la documentación de LeRobot |
| gradient accumulation | 8 | Mostrado en el formulario, no aplicado |
| extra knobs | seed, logFreq | La semilla hace que la ejecución sea repetible |
- De 2 a 5 horas en el nivel de 24 GB, aproximadamente de 1 a 3 USD por ejecución.
- Las mismas operaciones desde un terminal en /cli y desde agentes de IA en /mcp.
- Los pods de inferencia llevan un watchdog inactivo, por lo que un pod olvidado se destruye a sí mismo en lugar de facturar silenciosamente.
- ¿Aún no tienes un brazo? /live transmite un SO-100 físico que puedes conducir sin registrarte.
Un trabajo atascado en la cola es un síntoma del mercado spot, no un error: trabajo de entrenamiento atascado en cola. Paso a paso: entrena tu primera política y la documentación de entrenamiento.
Cuando SmolVLA es la elección equivocada
La prueba de si SmolVLA fue la ejecución inicial correcta no es si funcionó, sino si el fallo te dijo algo. Alcanza el 60 o 70 por ciento y un modelo más grande es una inversión razonable: los datos llevan señal. Alcanza el 10 por ciento y un modelo de 3 B probablemente también alcance el 10 por ciento, lo que acabas de aprender por tres dólares en lugar de doce.

Vale la pena leer antes de gastar más: Pi0.5 contra SmolVLA para mayor capacidad con la misma idea, y GR00T N1.7 contra SmolVLA para la ruta de NVIDIA, ambos en el nivel de 80 GB a 4 a 12 USD por ejecución. Por otro lado, ACT es la línea base más económica: 80 M parámetros, 20 ms por paso de acción, sin condicionamiento de lenguaje. Las cinco se encuentran en la página de políticas; la arena tiene 85 modelos y 332 resultados de referencia.

La lista de verificación antes de escalar cualquier cosa
- ¿Alcanzó el
lrsu límite inferior de 2.5e-6? Por debajo de 30000 pasos, lerobot reescala la decadencia y lo indica al inicio; por encima de eso, configure--policy.scheduler_decay_stepsusted mismo. - Más de un punto de control, y episodios reservados con
--dataset.eval_splitpara que la pérdida de evaluación signifique algo. - ¿Se mueve la política en absoluto? Una pérdida decreciente con un brazo inmóvil tiene causas específicas: la pérdida disminuye, la política no hace nada.
- ¿Sobrevive a un cambio de escena? Si no: la política solo funciona en una configuración.
- ¿Anotó la semilla? lerobot usa 1000 por defecto, por lo que dos ejecuciones sin modificar siguen siendo comparables.
- Solo entonces: más episodios, más variación o un modelo más grande. En ese orden.
Para entender por qué existen estos modelos y qué hacen con la entrada de lenguaje, es el contexto; cubre el montaje desde la hasta la primera ejecución de . Para el punto de control final, ; si el brazo nunca aparece, .
Entrene SmolVLA en su propio brazo
Elija el modelo y el brazo, y la guía le proporcionará los valores predeterminados exactos, el formato del conjunto de datos y el costo de la ejecución. SmolVLA se encuentra en el nivel de 24 GB con un costo de 1 a 3 USD por ejecución.
Abrir las guías de entrenamiento¿Realmente puedo ajustar SmolVLA en una RTX 4090?▾
Sí. La guía de cómputo de LeRobot sitúa a SmolVLA en aproximadamente 10 a 16 GB de VRAM pico en batch 8 con AdamW y enumera las tarjetas de consumo de 24 GB como cómodas para ello. El batch 64 en el ejemplo de la documentación se empareja con una única A100. La memoria escala aproximadamente de forma lineal con el batch, así que use 4 u 8 y observe mem_gb.
¿Cuántos episodios necesito realmente?▾
AY-Robots establece el mínimo en 30. La documentación de LeRobot recomienda unos 50 e informa que 25 episodios de la misma tarea tuvieron un rendimiento deficiente. La estructura supera a la cantidad: el conjunto de referencia fue de 5 posiciones de cubo con 10 episodios cada una, y esa repetición es lo que generaliza.
La documentación dice batch 64, la plataforma envía batch 2. ¿Cuál es correcto?▾
Ambos, para hardware diferente. El ejemplo de la documentación usa batch 64 y cita unas 4 horas para 20000 pasos en una única A100; el anclaje de la guía de cómputo para A100 de 40 GB es batch 16. Batch 2 es lo que AY-Robots envía en el nivel de 24 GB. Localmente, 4 a 8 es el punto intermedio, y la aritmética de épocas cambia con ello.
¿SmolVLA o ACT para una primera ejecución en un SO-100?▾
ACT si la tarea es un movimiento repetitivo y desea el bucle más rápido: 20 ms por paso de acción, 80 M parámetros, sin condicionamiento de lenguaje. SmolVLA si desea condicionamiento de lenguaje, varias cadenas de tareas en un solo checkpoint y una base preentrenada. Ambos se sitúan en el nivel de 24 GB, por lo que la elección es la tarea, no el presupuesto.
¿Tengo que configurar --policy.scheduler_decay_steps?▾
Solo cuando --steps está por encima de 30000. SmolVLA preestablece la caída del coseno en 30000 pasos, y lerobot 0.6.1 lo reescala automáticamente para una ejecución más corta, registrando "Auto-scaling LR scheduler" cuando lo hace. Nunca escala hacia arriba, por lo que el --steps=100000 predeterminado deja los últimos 70000 pasos en el suelo de 2.5e-6.
Sources
- SmolVLA: Un modelo de visión-lenguaje-acción para robótica asequible y eficiente
- SmolVLA: Modelo eficiente de visión-lenguaje-acción (blog de Hugging Face)
- Tarjeta del modelo lerobot/smolvla_base
- Documentación de LeRobot: SmolVLA
- Documentación de LeRobot: Guía de hardware de cómputo para el entrenamiento de LeRobot
- Documentación de LeRobot: Instalación
- Documentación de LeRobot: LeRobotDataset v3.0 y el convertidor v2.1
- Documentación de LeRobot: Inferencia así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 (estrategias e inferencia RTC)
- lerobot v0.6.1: pyproject.toml (extras y puntos de entrada de consola)
- lerobot en PyPI
- Conjunto de datos lerobot/svla_so100_pickplace (50 episodios, 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