Saltar al contenido principal
Etapa 3 · Capítulo 15 · Práctica

15. Entrenando tu primera política ACT

Capítulo 15 del curso para principiantes de SO-ARM Physical AI — entiende batch size, learning rate y pasos de entrenamiento, entrena tu primera política ACT con lerobot-train, vigila la pérdida y la GPU, y gestiona los checkpoints.

15.1 Tres configuraciones clave: batch size, learning rate, pasos​

Configuraciones

15.1 Tres configuraciones clave: batch size, learning rate, pasos

Batch size​

Cuántos fotogramas ve el modelo por actualización. Batches mayores entrenan más estable pero consumen más VRAM. Si te quedas sin memoria CUDA, baja primero el batch. Empieza con el valor por defecto y tócalo solo si es necesario.

Learning rate​

Cuánto se mueven los parámetros en cada actualización. Muy alto — la pérdida oscila o explota; muy bajo — el entrenamiento arrastra. El valor por defecto de ACT (orden de 1e-5) está bien probado para tareas de mesa; no lo cambies en la primera corrida.

Pasos de entrenamiento​

Cuántas actualizaciones en total. Para tareas tipo SO-ARM, 100k-300k pasos es lo habitual; más pasos ayudan en tareas difíciles pero arriesgan sobreajuste. Guíate por la curva: cuando la pérdida de validación deja de mejorar, para.

tip

Estrategia de la primera corrida: deja todo por defecto, entrena 100k pasos, evalúa en el robot real (Capítulo 16) y luego decide qué ajustar. Los principiantes pierden más tiempo afinando a ciegas que entrenando dos veces.

15.2 Guardar y gestionar checkpoints​

Checkpoints

15.2 Guardar y gestionar checkpoints

No hace falta guardar a mano: se guarda un checkpoint cada save_freq pasos más uno final last. Puedes poner un paso alto y luego elegir el modelo de menos pasos, descartando los sobreentrenados.

outputs/train/act_so101_test/
├── train_config.json ← Configuración completa (necesaria para reanudar)
└── checkpoints/
├── 0020000/pretrained_model/ ← Archivo por cada hito
├── 0040000/pretrained_model/
├── ...
└── last/pretrained_model/ ← Último checkpoint, usado en el Capítulo 16
  • Disco: cada checkpoint son pesos completos; docenas suman. Estable el entrenamiento, puedes borrar los tempranos y quedarte con last.
  • En la inferencia, --policy.path apunta a checkpoints/last/pretrained_model.

15.3 Empezar a entrenar​

Entrenamiento

15.3 Empezar a entrenar

Todo verificado — arranca (en el entorno conda lerobot). Para un dataset local (grabado en el Capítulo 12), asegúrate de que el repo_id coincida con el de la recolección y añade --policy.push_to_hub=false:

lerobot-train \
--dataset.repo_id=seeedstudio123/test \
--policy.type=act \
--output_dir=outputs/train/act_so101_test \
--job_name=act_so101_test \
--policy.device=cuda \
--wandb.enable=false \
--policy.push_to_hub=false \
--steps=300000

Para un dataset en Hugging Face Hub, usa tu usuario:

lerobot-train \
--dataset.repo_id=${HF_USER}/so101_test \
--policy.type=act \
--output_dir=outputs/train/act_so101_test \
--job_name=act_so101_test \
--policy.device=cuda \
--wandb.enable=false \
--steps=300000

Qué hace cada argumento:

  • Dataset: --dataset.repo_id apunta al del Capítulo 12.
  • Pasos: --steps=300000. El algoritmo va más alto por defecto; ajústalo según dificultad y curva.
  • Política: --policy.type=act carga la configuración ACT, que se adapta automáticamente a estados, acciones y cámeras — todo ya está en el dataset. Otras opciones: diffusion, pi0, pi0fast, smolvla, groot.
  • Dispositivo: --policy.device=cuda para GPUs NVIDIA; mps en Apple Silicon.
  • Visualización: reactiva --wandb.enable=true para graficar con Weights and Biases (antes wandb login).
tip

Las RTX de la serie 50 deben añadir --dataset.video_backend=pyav — evita APIs ausentes en la torchvision preliminar. Comando completo:

lerobot-train \
--dataset.repo_id=seeedstudio123/test \
--dataset.video_backend=pyav \
--policy.type=act \
--output_dir=outputs/train/act_so101_test \
--policy.device=cuda \
--wandb.enable=false \
--policy.push_to_hub=false \
--steps=300000

15.4 Vigilar la pérdida y la GPU​

Monitorización

15.4 Vigilar la pérdida y la GPU

  • Pérdida: impresa cada log_freq pasos. Espera una caída rápida al inicio y luego un descenso largo y suave — eso es sano. Si sube u oscila violentamente, el learning rate no encaja con tu equipo.
  • GPU: observa VRAM y uso con nvidia-smi (o watch -n 1 nvidia-smi). Uso cercano a 0% durante ratos = el cuello de botella es la tubería de datos (disco/CPU), no la GPU.
  • Tiempos orientativos: 50 episodios tardan ~6 horas en una RTX 3060 8GB de portátil y 2–3 horas en una RTX 4090 o A100. Depende de tamaño, resolución, batch y hardware.

15.5 Reanudar un entrenamiento interrumpido​

Reanudar

15.5 Reanudar un entrenamiento interrumpido

Para reanudar desde last, devuélvele la configuración guardada:

lerobot-train \
--config_path=outputs/train/act_so101_test/checkpoints/last/pretrained_model/train_config.json \
--resume=true

Subir los checkpoints (opcional)​

Al terminar, sube el último:

huggingface-cli upload ${HF_USER}/act_so101_test \
outputs/train/act_so101_test/checkpoints/last/pretrained_model

15.6 Errores comunes de entrenamiento​

Solución de problemas

15.6 Errores comunes de entrenamiento

ErrorSolución
TypeError: stack(): argument 'tensors' must be tuple of Tensors, not Columnpip install datasets==2.19
CUDA sin memoriaBaja el batch; cierra otros procesos GPU; usa --dataset.video_backend=pyav
No valid stream found in input file al cargarconda install ffmpeg=7.1.1 -c conda-forge (arreglo del Capítulo 5)
Dataset no encontradoRevisa el repo_id exacto de la grabación; la carpeta está bajo ~/.cache/huggingface/lerobot/

Con un checkpoints/last/pretrained_model entrenado en la mano, el próximo capítulo lo lleva al brazo real.

Loading Comments...