Entrenamiento RL en Google Colab Pro¶
Esta guía cubre el flujo completo para entrenar una política de locomoción para el Unitree Go2 usando Google Colab Pro, sin necesidad de GPU propia ni instalaciones complejas de Isaac Sim.
Colab vs. Cloud Run — no son lo mismo¶
Es importante entender que son herramientas para cosas distintas:
| Cloud Run | Google Colab | |
|---|---|---|
| Qué es | Servicio de contenedores serverless | Notebook Jupyter alojado |
| Cómo se accede | URL del sandbox del curso | Enlace al notebook .ipynb |
| Infraestructura | Tu imagen Docker, tus reglas | Infraestructura de Google |
| GPU disponible | L4 (garantizada) | T4 / V100 / A100 (best-effort) |
| Duración de sesión | Hasta 24h (Jobs) | 12h Pro / 24h Pro+ |
| ROS 2 | ✅ Sí (contenedor completo) | ❌ No (no hay daemon support) |
| Entrenamiento RL | ✅ Sí (Cloud Run Jobs L4) | ✅ Sí (más simple) |
| Uso en el curso | Sandbox U1–U12 | Módulo RL avanzado |
Resumen: Cloud Run = ROS 2 interactivo. Colab = entrenamiento RL. No se reemplazan.
¿Por qué Colab Pro para RL?¶
Para el módulo de RL del curso, Colab Pro es la mejor opción por varias razones:
Simplicidad: los estudiantes abren un enlace, hacen clic en "Open in Colab" y empiezan a entrenar en minutos. No hay Docker, gcloud CLI ni configuración de red.
Costo: $9.99/mes da acceso a A100 y T4. Un experimento típico (3 000 iteraciones de Go2 en terreno plano) consume solo el 6–7% del presupuesto mensual de un estudiante.
Persistencia: los modelos entrenados se guardan en Google Drive, que ya tienen los estudiantes.
¿Por qué NO Isaac Lab en Colab?¶
Isaac Sim (sobre el que corre Isaac Lab) pesa ~50 GB y requiere drivers NVIDIA específicos. Existe una solución no oficial (j3soon/isaac-sim-colab) pero la instalación falla ocasionalmente y no es práctica para un curso.
Solución: usamos unitree_rl_mjlab — el framework oficial de Unitree que usa
MuJoCo como motor de física en lugar de Isaac Sim. La instalación completa es
pip install -e . (~2 minutos). Las políticas entrenadas se despliegan en el robot
real con el mismo pipeline (ONNX → C++ → SDK2).
Precios de Google Colab¶
| Tier | Precio | Compute Units/mes | GPUs disponibles | Sesión máx. |
|---|---|---|---|---|
| Free | $0 | 30 CU | T4 (con límites) | 12h |
| Pro | $9.99/mes | 100 CU | T4 / V100 / A100 | 12h |
| Pro+ | $49.99/mes | 500 CU | T4 / V100 / A100 | 24h |
¿Cuánto dura el crédito mensual?¶
| GPU | CU/hora | T4: horas/mes (Pro) | A100: horas/mes (Pro) |
|---|---|---|---|
| T4 | 1.76 CU/hr | 56.8 horas | — |
| V100 | ~5.0 CU/hr | — | — |
| A100 | 15.0 CU/hr | — | 6.7 horas |
Para un estudiante que solo usa Colab para RL del curso: - 3 experimentos × 3 000 iter en T4 ≈ 3.5 hr = 6.2 CU (6.2% del mes) - 3 experimentos × 3 000 iter en A100 ≈ 0.5 hr = 7.5 CU (7.5% del mes)
Un estudiante con Colab Pro puede hacer 10–15 experimentos de Go2 por mes dentro del presupuesto.
Tiempos de entrenamiento estimados¶
El entrenamiento de unitree_rl_mjlab usa MuJoCo (no Isaac Sim), que es más ligero
en GPU. La física paralela corre en CPU/GPU combinado. Estimaciones para 4 096 entornos:
| GPU | Terreno plano 3K iter | Terreno plano 10K iter | Terreno irregular 20K iter |
|---|---|---|---|
| RTX 4090 (local) | ~20 min | ~65 min | ~3.5 h |
| A100 (Colab Pro) | ~10 min | ~30 min | ~1.5 h |
| T4 (Colab Pro) | ~70 min | ~3.5 h | ~12 h |
| L4 (Cloud Run Jobs) | ~67 min | ~3.5 h | ~34 h |
T4 o A100 para el curso
Para experimentos de 3 000 iteraciones (suficiente para una política funcional), la T4 gratuita o de Pro tarda ~70 minutos — aceptable para una tarea de clase. Si disponible, selecciona A100 (Pro) para reducirlo a 10 minutos.
Configuración del notebook¶
Paso 1: Conseguir Google Colab Pro¶
Ir a colab.research.google.com/settings → "Comprar unidades de procesamiento" o suscribirse a Pro ($9.99/mes).
Free tier para experimentar
Puedes comenzar con la T4 gratuita (30 CU/mes). Si el entrenamiento falla por timeout de 12h (poco probable para 3K iter), actualiza a Pro.
Paso 2: Abrir el notebook del curso¶
Abrir el notebook pre-configurado:
Reemplaza el enlace con la URL de tu repositorio GitHub una vez que lo hayas subido.
Paso 3: Seleccionar GPU¶
Si A100 no está disponible (no hay cuota), selecciona T4. El notebook funciona con ambos.
Paso 4: Ejecutar las celdas en orden¶
El notebook instala todo automáticamente. Solo necesitas ejecutar las celdas:
Celda 0 → verificar GPU (~10 segundos)
Celda 1 → instalar deps sistema (~60 segundos)
Celda 2 → clonar repo (~30 segundos)
Celda 3 → pip install (~90 segundos)
Celda 4 → verificar instalación (~5 segundos)
Celda 5 → entrenamiento (~10–70 min según GPU)
Celda 6 → guardar en Drive (~30 segundos)
Celda 7 → visualizar política (~opcional)
Celda 8 → exportar ONNX (~10 segundos)
Instalación manual (sin el notebook)¶
Si prefieres hacer el setup manualmente en una nueva sesión de Colab:
# Celda 1: Sistema
!apt-get install -y -qq libyaml-cpp-dev libboost-all-dev libeigen3-dev \
libspdlog-dev libfmt-dev xvfb ffmpeg
# Celda 2: Repositorio
!git clone --depth 1 https://github.com/unitreerobotics/unitree_rl_mjlab.git
%cd unitree_rl_mjlab
# Celda 3: Python
!pip install -e . --quiet
# Celda 4: Verificar
import mujoco, torch
print(f"MuJoCo {mujoco.__version__} | CUDA: {torch.cuda.is_available()}")
# Celda 5: Entrenamiento
import subprocess, os
os.chdir("/content/unitree_rl_mjlab")
!python scripts/train.py Unitree-Go2-Flat \
--env.scene.num-envs=2048 \
--max_iterations=3000 \
--headless
# Celda 6: Guardar en Drive
from google.colab import drive
import shutil, glob
from datetime import datetime
drive.mount('/content/drive')
dest = f"/content/drive/MyDrive/unitree_rl/{datetime.now():%Y%m%d_%H%M}"
os.makedirs(dest)
shutil.copytree("logs", f"{dest}/logs", dirs_exist_ok=True)
# Copiar checkpoint
ckpts = sorted(glob.glob("logs/**/*.pt", recursive=True))
if ckpts: shutil.copy2(ckpts[-1], dest)
print(f"Guardado en Drive: {dest}")
Robots soportados por unitree_rl_mjlab¶
El mismo framework entrena políticas para toda la línea Unitree:
| Robot | Tarea | Comando |
|---|---|---|
| Go2 | Terreno plano | Unitree-Go2-Flat |
| Go2 | Terreno irregular | Unitree-Go2-Rough |
| AS2 | Terreno plano | Unitree-As2-Flat |
| G1 | Terreno plano | Unitree-G1-Flat |
| G1 | Imitación de movimiento | Unitree-G1-Tracking-No-State-Estimation |
| H1_2 | Terreno plano | Unitree-H1-2-Flat |
| R1 | Terreno plano | Unitree-R1-Flat |
Para Go2 en terreno irregular (más avanzado):
!python scripts/train.py Unitree-Go2-Rough \
--env.scene.num-envs=1024 \ # menos entornos para terreno complejo
--max_iterations=10000 \
--headless
Pipeline completo: Colab → Go2 real¶
1. Entrenar en Colab (este notebook)
└─→ logs/.../model_3000.pt
2. Exportar a ONNX
└─→ go2_policy.onnx
3. Copiar a Google Drive
└─→ MyDrive/unitree_rl/go2_policy.onnx
4. Descargar en el host del robot (con Ethernet al Go2)
└─→ scp go2_policy.onnx student@HOST:~/deploy/
5. Compilar controlador
cd unitree_rl_mjlab/deploy && mkdir build && cd build
cmake .. && make -j4
6. Poner Go2 en modo debug (L2 + R2 en el mando)
7. Ejecutar política
./unitree_go2_deploy --interface eth0 --policy ~/deploy/go2_policy.onnx
Solución de problemas comunes¶
OOM (sin memoria de GPU)¶
# Reducir número de entornos paralelos:
!python scripts/train.py Unitree-Go2-Flat --env.scene.num-envs=1024 ...
# Si sigue fallando:
!python scripts/train.py Unitree-Go2-Flat --env.scene.num-envs=512 ...
Sesión expirada durante el entrenamiento¶
El notebook guarda checkpoints automáticamente cada 50 iteraciones. Si la sesión expira, reinicia y carga el último checkpoint:
# Continuar desde checkpoint guardado en Drive
last_ckpt = "/content/drive/MyDrive/unitree_rl/go2_FECHA/logs/.../model_2500.pt"
!python scripts/train.py Unitree-Go2-Flat \
--checkpoint_file={last_ckpt} \
--max_iterations=3000 \
--headless
GPU no disponible (T4 en lugar de A100)¶
El notebook funciona con T4. El entrenamiento tardará ~70 min en lugar de ~10 min. Puedes reducir iteraciones para una demo rápida:
# Demo rápida en T4: 500 iteraciones (~12 minutos)
!python scripts/train.py Unitree-Go2-Flat --env.scene.num-envs=1024 --max_iterations=500
Comparación de opciones de RL para el curso¶
| Opción | Setup | Costo/estudiante/semestre | Velocidad | Recomendado para |
|---|---|---|---|---|
| Colab Pro + mjlab | Abrir notebook | $10/mes | T4: 70min / A100: 10min | Curso RL (mejor opción) |
| Cloud Run Jobs L4 | Docker + gcloud | $1.83/run | ~67 min | Una vez, sin suscripción |
| CE Spot A100 | VM + setup | $0.18/run (flat) | ~10 min | Investigación seria |
| Local RTX 4090 | Instalación local | Solo electricidad | ~20 min | Quien tenga hardware |
Recomendación para el curso: Colab Pro a $9.99/mes es la opción más accesible, más simple de gestionar como instructor, y da a cada estudiante suficientes recursos para completar el módulo cómodamente.
Ver también: - Go2 en Isaac Lab — para investigación avanzada con Isaac Sim - Go2 Hardware en profundidad — deployment en el robot real - Costos en la nube — comparativa completa