La matriz de entrenamiento de AY-Robots con cinco filas de políticas y cuatro columnas de brazos robóticos, cada celda enlazando a una guía específica de entrenamiento de modelo y brazo
ACTSO-100lerobotaprendizaje por imitaciónentrenamiento de políticas

Cómo Entrenar ACT en el SO-100 desde Cero

AY-Robots ResearchAugust 23, 202616 min de lectura

Entrena un Action Chunking Transformer desde cero en un SO-100 con lerobot: la configuración act, chunk_size y n_action_steps, el cronograma de 100000 pasos, inferencia de 20 ms.

ACT es la excepción entre las políticas SO-100. GR00T N1.7 y N1.5 parten de nvidia/GR00T-N1.7-3B y nvidia/GR00T-N1.5-3B, Pi0.5 de lerobot/pi05_base. ACT parte de cero: no hay un punto de control base, porque no es un modelo fundacional. Es un transformador de aproximadamente 80 millones de parámetros que se entrena desde cero en una tarea, en su brazo, bajo su iluminación.

Esa es también la razón por la que ejecuta un paso de control en 20 ms, mientras que un VLA de 3 mil millones de parámetros necesita de 152 a 485 ms, y cuesta de 1 a 3 USD por ejecución en lugar de 4 a 12. Esta guía sigue la ruta manual con lerobot en un SO-100: grabar, la configuración act, qué controlan chunk_size y n_action_steps, el programa de 100000 pasos, el despliegue. Luego el mismo trabajo en AY-Robots, incluyendo dónde la plataforma no ayuda.

Lo que necesita saber

  • ACT se entrena desde cero: sin modelo base, sin preentrenamiento, sin entrada de lenguaje. Un punto de control, una tarea.
  • El artículo: aproximadamente 80 M parámetros, alrededor de 5 horas en una RTX 2080 Ti de 11 GB, 0.01 s de inferencia.
  • Valores predeterminados de lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 pasos, seed 1000.
  • En AY-Robots: 20 ms por paso, el más rápido de los cinco. 50 episodios mínimo, LeRobot v3.0, una tarjeta de 24 GB, de 1 a 3 USD por ejecución.
  • Gana en una tarea que ha visto, y pierde en el momento en que se desea condicionamiento por lenguaje.
Qué versiones describe esto

Verificado el 23 de agosto de 2026 con lerobot 0.6.x: pyproject.toml en main lee version = "0.6.2", la etiqueta más reciente v0.6.1, 3 de agosto de 2026. Un tutorial que comienza con python lerobot/scripts/train.py es anterior a los puntos de entrada de la consola lerobot-train, lerobot-record y lerobot-rollout.

¿Qué es ACT en realidad?

Action Chunking with Transformers proviene del artículo ALOHA, Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware, por Zhao, Kumar, Levine y Finn, arXiv, 23 de abril de 2023. El equipo graba a 50 Hz con cuatro cámaras web transmitiendo 480x640 a 30 fps: dos en las pinzas, una superior, una frontal. El resumen afirma seis habilidades con un éxito del 80 al 90 por ciento, entre ellas abrir un vaso de condimento translúcido e insertar una batería, a partir de 10 minutos de demostraciones.

El cuerpo es más útil al planificar una sesión de grabación: 50 demostraciones por tarea, excepto Enhebrar Velcro con 100, lo que representa de 10 a 20 minutos de datos y de 30 a 60 minutos de tiempo real una vez que se cuentan los reinicios. El éxito tampoco es uniforme: Enhebrar Velcro termina en 20 por ciento, Poner Zapato en 92, Abrir Vaso en 84, Preparar Cinta en 64.

HiperparámetroArtículo ALOHA, Tabla IIIlerobot en main
tasa de aprendizaje1e-5optimizer_lr = 1e-5
tamaño de lote8batch_size = 8, in TrainPipelineConfig not ACTConfig
capas de codificador / decodificador4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
tamaño de fragmento k100chunk_size = 100
dimensión latente de zausente; la Fig. 11 muestra una proyección de 32 a 512latent_dim = 32
ensamblaje temporalausente; --temporal_agg en el código de referenciatemporal_ensemble_coeff = None
La fila de capas del decodificador no es un error tipográfico

El artículo enumera 7 capas de decodificador, lerobot envía 1, deliberadamente. El comentario en configuration_act.py indica que la implementación original tiene un error que significa que solo se utiliza la primera capa, citando el problema 25 en tonyzhaozh/act: el cabezal de acción lee hs[0], por lo que las siete capas se ejecutan pero solo la primera salida llega a la predicción. Ese problema está abierto y sin respuesta desde el 23 de abril de 2024. lerobot coincide con el comportamiento que produjo los resultados publicados, no con el número impreso. Aumente --policy.n_decoder_layers y entrenará un modelo que el artículo nunca evaluó.

El chunking de acciones es la idea principal

La clonación de comportamiento ordinaria mapea una observación a una acción, y los errores se acumulan: una desviación saca el brazo de la distribución, produciendo una acción peor, y treinta pasos después el efector final no está cerca del objeto. Chunking de acciones predice k acciones a la vez y las ejecuta, reduciendo el horizonte efectivo en un factor de k. También maneja una molestia específica de los datos humanos: los teleoperadores hacen pausas, y una política markoviana de un solo paso no puede modelar una pausa que dependa de lo que vino antes.

El artículo abla k en lugar de afirmarlo. Con el ensamble temporal desactivado, promediado en cuatro configuraciones, el éxito aumenta del 1 por ciento en k = 1 al 44 por ciento en k = 100, luego disminuye en 200 y 400 a medida que la política se acerca al control de lazo abierto. Esa curva es la razón por la cual el valor predeterminado es 100.

  • chunk_size: cuántas acciones futuras predice el decodificador por pasada hacia adelante. Por defecto 100.
  • n_action_steps: cuántas de ellas ejecutas antes de volver a consultar. Por defecto 100, por lo que lerobot ejecuta todo el chunk en bucle abierto.
  • lerobot valida n_action_steps <= chunk_size y lanza un ValueError si lo configuras al revés.

Lo que importa operativamente es chunk_size dividido por la velocidad de fotogramas (frame rate). A los 30 fps que usan los ejemplos SO-100 de lerobot, un chunk de 100 acciones compromete aproximadamente 3.3 segundos desde una observación. Si la tarea necesita una corrección dentro de esa ventana, reduce n_action_steps, no chunk_size: mantienes la predicción larga y re-observas con más frecuencia.

bash
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --policy.chunk_size=100 \
  --policy.n_action_steps=25 \
  --policy.device=cuda
Acortar la parte ejecutada del chunk sin acortar la predicción.
La trampa del ensembling temporal

Establece --policy.temporal_ensemble_coeff y lerobot requiere n_action_steps = 1, lanzando un NotImplementedError en caso contrario. El ensembling consulta la política en cada paso de tiempo y mezcla las predicciones superpuestas para ese paso de tiempo con pesos w_i = exp(-m * i), siendo w_0 el más antiguo. El artículo lo sitúa en un 3.3 por ciento para ACT: real pero modesto, y multiplica el recuento de inferencias por la longitud del chunk. Asequible a 20 ms por paso, no a 485 ms. Consulta latencia de inferencia.

Cuando ACT supera a un modelo fundacional

Las cinco políticas entrenables una al lado de la otra, con los números que AY-Robots mide y utiliza para dimensionar la GPU que alquila.

PolíticaFamiliaParámetrosPor pasoNivel de GPUEpisodios mínimosConjunto de datos
ACTTransformador de fragmentación, desde cero~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAVLA compacto~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7Fundación VLA, cabezal de difusión~3 B (~40 M trained)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5Fundación VLA, predecesor~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5VLA de ajuste de flujo, ver ajuste de flujo~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
La página de políticas de AY-Robots que muestra una tabla comparativa de ACT, SmolVLA, GR00T N1.5, GR00T N1.7 y Pi0.5 con recuentos de parámetros, requisitos de GPU, latencia de inferencia y recuentos mínimos de episodios
La tabla de /policies: ACT tiene el menor número de parámetros y el tiempo de paso más corto.
Entrenamiento de ACT desde cero
Ventajas
  • 20 ms por paso de acción, el más rápido de los cinco, en una tarjeta de 24 GB, no una A100.
  • De 1 a 3 USD por ejecución frente a 4 a 12 para la clase de 3 B.
  • Preciso en trabajos con mucho contacto que ha visto: 88 y 96 por ciento en Slide Ziploc y Slot Battery, donde los métodos anteriores nunca superaron la primera etapa.
Desventajas
  • Sin condicionamiento de lenguaje: la cadena de la tarea se ignora, por lo que un punto de control es una tarea.
  • Sin conocimientos previos semánticos: todo lo que sabe proviene de tus 50 episodios.
  • Generalización limitada: mueve una cámara y tendrás que volver a entrenar.
  • Falla silenciosamente: la pérdida disminuye, el brazo no hace nada, los registros no dicen nada.
  • La ventaja de velocidad solo ayuda si la inferencia está junto a los servos.

Elige ACT cuando la tarea y la escena son fijas y el movimiento debe ser rápido y preciso. Elige un cuando un punto de control debe cubrir varias instrucciones. Dos páginas comparan la decisión directamente: y . Para los benchmarks publicados, enlaza cada número a su fuente.

Lo que necesitas antes de empezar

Un brazo seguidor, un brazo líder para , al menos una cámara, una GPU de 24 GB. ACT solo lee imágenes y posiciones de articulaciones. Dos cámaras son lo ideal: una vista frontal fija para saber dónde están las cosas, una cámara de muñeca para lo que el está a punto de tocar, como en ALOHA.

BrazoServosVoltajeCosto de piezasEstado
SO-100Feetech STS32157.4 V~110 a 150 EURSoporte completo, brazo de referencia
SO-101Feetech STS32157.4 V~130 a 170 EURSoporte completo
Koch v1.1Dynamixel XL330 / XL430Rieles de 5 V y 12 V~250 a 350 EURCompatible
LeKiwiFeetech STS3215 (brazo)Brazo de 7.4 V, base de 12 V~400 a 500 EURCompatible
7.4 V, no 12 V

Los SO-100 y SO-101 utilizan servos Feetech STS3215 en un riel de 7.4 V. Alimentarlos con 12 V los destruye, de forma lo suficientemente silenciosa como para que la gente culpe primero al software, y una fuente de alimentación Koch de 12 V encaja físicamente en una placa SO-100. Verifique la etiqueta. Síntomas: servo no responde, el brazo se sacude y luego cede. También SO-100 vs SO-101.

Del brazo desnudo al conjunto de datos grabado

El flujo a continuación es lerobot 0.6.x. Omítalo si tiene un brazo calibrado y un conjunto de datos. De lo contrario, la guía de inicio de SO-100, cubre el ensamblaje, el tutorial de grabación cubre la captura y la documentación del conjunto de datos el formato.

  1. 1
    Instalar lerobot con los extras correctos

    La grabación necesita core_scripts, el entrenamiento training, los servos Feetech feetech. Python 3.12+.

    bash
    conda create -y -n lerobot python=3.12
    conda activate lerobot
    conda install ffmpeg -c conda-forge
    
    pip install 'lerobot[core_scripts,training,feetech]'
    lerobot-info
  2. 2
    Encontrar el puerto USB de cada brazo

    Ejecútalo con ambos brazos conectados, desconectando uno cuando se te solicite. En Linux, es posible que necesites abrir los permisos del nodo.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Establecer los IDs de los motores y la velocidad de transmisión

    En el SO-100 esto ocurre antes del montaje: a diferencia del SO-101, los conectores son inaccesibles una vez construido. El script recorre el bus un motor a la vez desde la pinza, escribiendo IDs en la EEPROM.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    Calibrar ambos brazos

    Ajusta cada articulación al centro de su rango, presiona Enter y luego barre cada una a través de su rango completo. La calibración permite que una política entrenada en un brazo se ejecute en otro. Reutiliza el mismo id.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader
  5. 5
    Teleoperar una vez con las cámaras encendidas

    La regla general de lerobot: deberías poder realizar la tarea mirando solo las imágenes de la cámara. Si no puedes, ACT tampoco podrá. Esto detecta más conjuntos de datos defectuosos que la depuración posterior.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --display_data=true
  6. 6
    Grabar 50 episodios

    50 es el mínimo de AY-Robots y lo que ALOHA usó por tarea. lerobot aconseja 10 por ubicación de objeto, cámaras fijas, agarre consistente. n finaliza un episodio, r vuelve a grabar, q detiene y codifica.

    bash
    HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')
    
    lerobot-record \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --dataset.repo_id=${HF_USER}/so100_cube \
        --dataset.num_episodes=50 \
        --dataset.single_task="Grab the black cube and put it in the bin" \
        --display_data=true
La página del tutorial de grabación de AY-Robots que explica cómo capturar un conjunto de datos en formato LeRobot a partir de una sesión de teleoperación
El tutorial de grabación. El cliente de escritorio escribe el mismo diseño que lerobot-record.
La trampa que consume un día: un conjunto de datos inconsistente

ACT no tiene conocimientos previos a los que recurrir, por lo que cada inconsistencia se vuelve permanente. Las tres más costosas: una cámara movida entre el episodio 20 y 21, la luz que cambió porque grabaste la mitad del conjunto por la tarde, un agarre realizado de dos maneras. Cada una produce una curva de pérdida de aspecto perfecto y un brazo que va al lugar equivocado. Consulta la pérdida disminuye, la política no hace nada, la política solo funciona en una configuración y recopilación de datos de entrenamiento de alta calidad.

Antes de entrenar, reproduce al menos cinco episodios. El formato de conjunto de datos LeRobot almacena flujos de cámara, estados de articulaciones y acciones por episodio, y la reproducción devuelve esas acciones al brazo. Si la reproducción no realiza la tarea, los datos no la contienen y el entrenamiento no la inventará.

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
Reproduciendo el episodio 0. Si esto falla, detenga y vuelva a grabar.

Entrenamiento de la política ACT

Este es el comando completo. Todo lo específico de ACT ya es un valor predeterminado, por lo que la página de ACT de lerobot recomienda empezar con ellos.

bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_cube \
  --job_name=act_so100_cube \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_so100_cube
El comando de entrenamiento de la documentación de lerobot 0.6.x, en un conjunto de datos SO-100.

--policy.type=act carga ACTConfig, que se adapta a la cantidad de motores y cámaras que registró su conjunto de datos, por lo que nunca declara la forma de la observación. --wandb.enable=true es opcional y vale la pena: la curva de pérdida es la única señal económica en una ejecución de 100000 pasos. La programación proviene de la configuración de entrenamiento de lerobot, no de ACTConfig: 100000 pasos, lote 8, semilla 1000, un punto de control cada 20000 pasos, registrando cada 200.

Una ejecución completa deja cinco directorios de puntos de control, del 020000 al 100000, más un último enlace simbólico. Guárdelos todos: la mejor política a menudo no es la última.

ConfiguraciónValor predeterminado de lerobotFormulario ACT de AY-RobotsComentario
tamaño de lote88Redúzcalo primero si alcanza los límites de VRAM.
tasa de aprendizaje1e-51e-5Igual que el artículo de ALOHA.
pasos máximos100000100000Aproximadamente donde un conjunto de 50 episodios deja de mejorar.
acumulación de gradiente11, no aplicaCambie el tamaño del lote en su lugar.
semilla1000expuestoEl punto de entrada tyro de GR00T no tiene semilla; las ejecuciones de ACT son las reproducibles.
chunk_size / n_action_steps100 / 100100 / 100, editableHorizonte de predicción y ejecución. Reduzca el segundo, no el primero.
frecuencia de punto de control20000no expuestosaveSteps es un parámetro de GR00T aquí.
La falta de memoria es un problema de tamaño de lote, no de tarjeta

ACT con un tamaño de lote de 8 y dos cámaras de 640x480 cabe cómodamente en 24 GB. Deja de caber cuando la gente aumenta el tamaño del lote para acelerar, o le alimenta los fotogramas de 1920x1080 que muestra un ejemplo de grabación de lerobot. Dos backbones ResNet-18 a 1080p tienen un perfil de memoria muy diferente. Reduzca --batch_size a 4 antes de alquilar una tarjeta más grande. Consulte falta de memoria en el entrenamiento.

Duración: alrededor de 5 horas en una RTX 2080 Ti de 11 GB según el artículo, unas pocas horas para 100k pasos según la página ACT de lerobot, de 2 a 5 horas en el nivel de 24 GB de AY-Robots. No lo acortes. El README del repositorio de referencia indica que una política inestable o con pausas generalmente solo necesita más entrenamiento, porque el éxito y la fluidez siguen mejorando después de que la pérdida se estabiliza: para datos del mundo real, requiere al menos 5000 épocas, o de 3 a 4 veces la duración nuevamente después de la estabilización.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Reanudando una ejecución interrumpida desde su último punto de control.

Ejecutando la política entrenada en el brazo

La implementación utiliza lerobot-rollout. Las claves de la cámara deben coincidir con las grabadas: una política entrenada en front y wrist no aceptará cam0 y cam1, y rename_map no ayuda, ya que necesita un punto de control preentrenado. La cadena de tarea puede omitirse; el propio ejemplo de lerobot la marca como opcional para ACT.

bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_so100_cube \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
  --display_data=true \
  --duration=60
Despliegue autónomo sin grabación. Usa --strategy.type=sentry para grabar los episodios de evaluación.
Este comando fue renombrado recientemente, por lo que los tutoriales antiguos no concuerdan

La evaluación solía ejecutarse con lerobot-record --policy.path=.... En la versión 0.6.x es lerobot-rollout con un selector --strategy.type: base, sentry (grabación con auto-subida), highlight (búfer circular guardado por pulsación de tecla), dagger (humano en el bucle) y episodic. A fecha de 23 de agosto de 2026, la página de documentación de ACT todavía dice "usando el comando lerobot-record" directamente encima de un bloque que ejecuta lerobot-rollout. Sigue el comando, no la frase.

Para fijar un punto de control en lugar del modelo final, añade --policy.pretrained_revision. Eso requiere que la ejecución haya comenzado con --save_checkpoint_to_hub=true, desactivado por defecto: sin él, lerobot sube el modelo final y nada más. Con él, cada punto de control se etiqueta con su paso rellenado con ceros, por lo que --policy.pretrained_revision=060000 recupera el de 60000 pasos. Compararlo con el de 100000 en el brazo real es el experimento más barato disponible.

Dos rutas al mismo punto de control

Todo lo anterior es la ruta manual y funciona. La ruta de la plataforma sacrifica el control a cambio de no poseer una GPU o un entorno Python.

  1. Instala lerobot 0.6.x con core_scripts, training, feetech, ffmpeg.
  2. Encuentra puertos, configura IDs de motor, calibra ambos brazos, graba 50 episodios.
  3. Reproduce algunos episodios para confirmar que los datos contienen la tarea.
  4. Alquila o posee una GPU de 24 GB, empareja CUDA y PyTorch, ejecuta lerobot-train --policy.type=act.
  5. Espera unas horas, luego ejecuta lerobot-rollout en la máquina junto al brazo.
bash
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
  --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
  --dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
  --dataset.single_task="Grab the black cube"

lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
  --output_dir=outputs/train/act_so100_cube --policy.device=cuda
Lo que te ofrece esta ruta

Control total: edita configuration_act.py, añade una cámara, bifurca el entrenador. Para investigación en lugar de entregar una tarea, una plataforma es una distracción.

La matriz de entrenamiento de AY-Robots con cinco filas de políticas y cuatro columnas de brazos robóticos, donde cada celda enlaza a la guía de entrenamiento específica para esa combinación de modelo y brazo
La matriz en /train. La fila ACT contra la columna SO-100 es la guía de este artículo.

Qué sale mal en realidad

Casi ninguno de los problemas está en el comando de entrenamiento. Está en las cosas que lo rodean, ordenadas por la frecuencia con la que fallan la primera vez.

SíntomaCausa habitualPágina
lerobot-find-port no muestra nadaPermisos de controlador, cable o nodobrazo no detectado
Cámara ausente al momento de la grabaciónÍndice cambiado al reiniciar, o dos cámaras en un solo controlador USBcámara no detectada
El entrenamiento rechaza el conjunto de datosACT requiere v3.0, GR00T necesita v2.1conjunto de datos rechazado como v3
CUDA sin memoriaTamaño de lote aumentado, o fotogramas de 1080p en lugar de 480psin memoria en el entrenamiento
La pérdida parece buena, el brazo no hace nadaLos datos carecen de la tarea, o una cámara se movióla pérdida disminuye, la política no hace nada
Movimiento brusco o una pausa a mitad del episodioSubentrenado, un bloqueo en el límite de un fragmento, o una llamada de inferencia con tiempo de espera agotadola política se congela a mitad del movimiento

Dos filas merecen énfasis. ACT entrena con LeRobot v3.0 mientras que el cargador de GR00T falla con él y necesita v2.1, por lo que un conjunto de datos que entrena ACT puede hacer fallar una ejecución de GR00T. Y la última fila tiene dos soluciones: los autores de ACT responden al movimiento brusco con más entrenamiento, mientras que con n_action_steps en 100, un bloqueo genuino ocurre en el límite de un fragmento, una pausa visible cada 3.3 segundos a 30 fps. Dos cosas más a saber: una sola articulación muerta suele ser un ID de servo que nunca fue escrito, y un efector final que se acerca pero nunca se cierra significa un rango de efector final demasiado pequeño en las demostraciones. Índice completo: las páginas de modos de fallo.

¿Qué cuesta una ejecución?

NivelModelosTiempo de ejecuciónPrecio por horaCosto por ejecución
RTX 4090 / 24 GBACT, SmolVLA2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD

Este es el argumento para empezar con ACT incluso si más tarde quieres un VLA. Una ejecución fallida de ACT cuesta el precio de un café y te dice en horas si tu conjunto de datos contiene la tarea. Una ejecución fallida de GR00T cuesta cuatro veces eso por la misma lección. Pasar a GR00T N1.7 o SmolVLA después es un cambio de forma, no una reconstrucción. Antecedentes: modelos de visión-lenguaje-acción, la guía completa del SO-100, entrena tu primera política y aprendizaje por imitación. ¿No tienes brazo? La página en vivo transmite un SO-100 real para conducir sin registrarse.

Entrena ACT en tu SO-100

La guía para esta combinación exacta: valores predeterminados, nivel de GPU y lo que cuesta una ejecución. Elige el conjunto de datos, el backend alquila la tarjeta y escribe los puntos de control.

Abrir la guía de entrenamiento
¿Hay un modelo ACT preentrenado que pueda ajustar en su lugar?

No. ACT no tiene un modelo base; solo existe después de que lo entrenas. Eso no es una deficiencia en las herramientas, es lo que es ACT: el artículo entrena una política desde cero por tarea. Para un punto de control de proveedor, usa GR00T N1.7 o Pi0.5.

¿Cuántos episodios necesito realmente?

50: lo que ALOHA registró por tarea (100 para Thread Velcro, la más difícil) y el mínimo de AY-Robots. lerobot aconseja unos 10 por ubicación de objeto, cámaras fijas, agarre consistente. Cincuenta episodios limpios superan a cien donde la cámara se movió.

¿Debería cambiar chunk_size de 100?

Normalmente no. La ablación sube del 1 por ciento en k = 1 al 44 por ciento en k = 100 y disminuye después, por lo que 100 se sitúa cerca de la cima. Si el brazo se compromete demasiado tiempo, reduce n_action_steps en su lugar: a 30 fps, 25 reconsultas cada 0.8 segundos.

¿Cuánto tiempo tarda una ejecución de entrenamiento y puedo detenerla antes?

De dos a cinco horas en una tarjeta de 24 GB para 100000 pasos. Los puntos de control se guardan cada 20000 pasos y --resume=true retoma una ejecución, por lo que detenerse antes es seguro. Solo no en el primer tramo plano: la suavidad mejora después de que la pérdida se estabiliza.

La pérdida disminuyó y el brazo sigue fallando. ¿Y ahora qué?

Casi siempre el conjunto de datos. Reproduce los episodios grabados en el brazo: si la reproducción no realiza la tarea, los datos no la contienen. Luego verifica si algo se movió, especialmente una cámara. ACT no tiene priors, por lo que un empujón en el episodio 21 es permanente.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started