La página del modelo SmolVLA en AY-Robots mostrando el recuento de parámetros, el nivel de GPU, la latencia de inferencia por paso de acción y el recuento mínimo de episodios
SmolVLALeRobotEntrenamiento VLAAjuste FinoSO-100

Cómo entrenar SmolVLA en una GPU de 24 GB (lerobot 0.6.1)

AY-Robots ResearchAugust 23, 202617 min de lectura

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.

PropiedadValorFuente
Parámetros totalesaproximadamente 450 Mpaper
Experto en acciónaproximadamente 100 M, coincidencia de flujopaper
Arquitectura VLMHuggingFaceTB/SmolVLM2-500M-Video-Instructvlm_model_name
Capas VLM utilizadasprimeras 16 del modelo de lenguajenum_vlm_layers = 16
Tokens visuales por fotograma64, mezcla de píxeles, sin mosaicospaper
Preentrenamiento481 conjuntos de datos de la comunidad, 22.9 K episodios, 10.6 M fotogramas; 200000 pasos con un lote global de 256 en 4 GPUspaper

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.

La versión honesta de la afirmación sobre el tamaño

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.

GrupoPolíticasVRAM pico (lote 8, AdamW)GPUs de inicio
BC ligeroact, vqbet, tdmpcaproximadamente 2 a 6 GBRTX 3060, L4
Difusióndiffusion, multi_task_ditaproximadamente 8 a 14 GBRTX 4070+, L4
VLA pequeñosmolvlaaproximadamente 10 a 16 GBRTX 4080+, L4, A10G
VLA grandepi0, pi0_fast, pi05, xvla, wall_xaproximadamente 24 a 40 GBA100 40 GB+
Multimodalgroot, eo1aproximadamente 24 a 40 GBA100 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.

Tabla de costes de AY-Robots: tarjeta por política, tiempo de ejecución, precio por ejecución, episodios necesarios
SmolVLA y ACT se encuentran en la fila de 24 GB, los tres modelos de 3 B en la fila de 80 GB.
Empezando con SmolVLA en lugar de un modelo de 3 B
Lo que obtienes
  • 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.
Lo que sacrificas
  • 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.
La trampa del conjunto de datos que cuesta un día

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.

bash
# 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_place
El conversor se incluye dentro de lerobot, por lo que no hay nada extra que instalar. No hay un conversor en la otra dirección en el paquete.

Má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

bash
# 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-info
La ruta de PyPI. Para parchear el entrenador, clone el repositorio y use `pip install -e ".[smolvla,training]"` en su lugar.

La 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 y policy.type no son la misma bandera

--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

  1. 1
    Autenticarse en el Hub

    El punto de control base proviene del Hub, y probablemente su conjunto de datos también.

    bash
    hf auth login
  2. 2
    Leer 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.

    bash
    lerobot-train --help
  3. 3
    Iniciar 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.

    bash
    lerobot-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
  4. 4
    Leer 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
  5. 5
    Recopilar 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
  6. 6
    Reanudar 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.

    bash
    lerobot-train \
      --config_path=<path to the saved train_config.json> \
      --resume=true

Los flags que realmente cambian el resultado

FlagQué haceEn 24 GB
--batch_sizeMuestras por paso, aproximadamente lineal en VRAM4 to 8
--stepsPasos totales del optimizador20000 primera pasada
--policy.scheduler_decay_stepsLongitud de decaimiento coseno, preestablecido 30000Solo afecta por encima de 30000
--policy.use_ampPrecisión mixta; SmolVLA no tiene campo dtypetrue cuando la memoria es limitada
--num_workersProcesos del dataloader, por defecto 4Aumentar hasta que data_s deje de subir
--dataset.eval_splitFracción de episodios reservados por tarea0.1, with --eval_steps
--policy.freeze_vision_encoderMantiene la torre de visión congeladatrue on 24 GB
--policy.train_expert_onlySolo el experto de ~100 M recibe gradientestrue primero
El programador: lo que 0.6.1 maneja y lo que no

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ónPredeterminado en lerobot 0.6.1Definido en
tamaño_chunk / n_pasos_acción50 / 50SmolVLAConfig
num_pasos (denoise por flow matching)10SmolVLAConfig
lr_optimizador1e-4SmolVLAConfig
pasos_calentamiento_programador1000SmolVLAConfig
pasos_decaimiento_programador30000SmolVLAConfig
lr_decaimiento_programador2.5e-6SmolVLAConfig
congelar_codificador_visióntrueSmolVLAConfig
entrenar_solo_expertotrueSmolVLAConfig
tamaño_lote / pasos8 / 100000TrainPipelineConfig
semilla / freq_guardado / num_trabajadores1000 / 20000 / 4TrainPipelineConfig

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 control de memoria que no existe

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ónPolíticaLoteTiempo real
Una sola L4 / A10G (24 GB)smolvla4about 3 to 6 h
Una sola A100 de 40 GBsmolvla16about 1 to 2 h
4 x H100 de 80 GB con acceleratesmolvla32about 1 to 2 h
Una sola RTX 4090 / RTX 3090 (24 GB)act8about 30 to 60 min
Haz la aritmética de épocas antes de elegir --steps

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

bash
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_place
La cadena de la tarea debe coincidir con la que usaste para grabar. El modelo está condicionado a ese texto, por lo que una paráfrasis es una instrucción diferente.

Los 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íncronoAsíncrono
Tiempo de finalización, recoger y colocar, 10 pruebas13.75 s9.70 s
Ciclos de recoger y colocar en una ventana de tiempo fija919
Tasa de éxito promedio en las tres tareas78.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.

La inferencia debe estar junto a los servos

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.

7.4 V, no 12 V

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.
bash
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=true
Toda la ruta manual en un bloque, lerobot 0.6.1.

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.

La matriz de entrenamiento de AY-Robots: cinco políticas como filas, cuatro brazos de robot como columnas
Cada celda es su propia guía. SmolVLA tiene una para cada uno de los cuatro brazos.

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 comparación de políticas de AY-Robots: parámetros, nivel de GPU, latencia, episodios mínimos
Los cuatro números que deciden una ejecución.

La lista de verificación antes de escalar cualquier cosa

  1. ¿Alcanzó el lr su 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_steps usted mismo.
  2. Más de un punto de control, y episodios reservados con --dataset.eval_split para que la pérdida de evaluación signifique algo.
  3. ¿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.
  4. ¿Sobrevive a un cambio de escena? Si no: la política solo funciona en una configuración.
  5. ¿Anotó la semilla? lerobot usa 1000 por defecto, por lo que dos ejecuciones sin modificar siguen siendo comparables.
  6. 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.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started