Saltar al contenido principal

Desplegar el entorno RL de Microduck en Jetson

Este capítulo prepara el sistema Jetson, instala el entorno del proyecto, explica la estructura de directorios y verifica que el entrenamiento PPO pueda ejecutarse en CUDA.

Hardware y software

La siguiente plataforma se validó para esta demo:

ElementoVersión
DispositivoSeeed reComputer con Jetson Orin NX 16GB
SOUbuntu 24.04 LTS, aarch64
JetPack / L4TJetPack 7.2 / L4T R39.2
CUDA del sistema13.2
Python3.12
PyTorch2.9.1+cu130
MuJoCo3.10.0
Warp1.12.0

Utiliza almacenamiento NVMe con al menos 25GB de espacio libre. Se recomiendan refrigeración activa, una fuente de alimentación estable y una conexión de red fiable.

aviso

No reemplaces de forma independiente el controlador CUDA proporcionado por JetPack ni los paquetes L4T. El proyecto de Python está aislado en .venv, mientras que la pila GPU del sistema sigue gestionada por JetPack.

Directorio del proyecto

~/microduck-jetson/
├── deploy_microduck_jetson.sh
├── microduck_rl/
│ ├── src/mjlab_microduck/tasks/
│ ├── scripts/
│ ├── pretrained/pollen-robotics/
│ ├── models/checkpoints/
│ └── logs/rsl_rl/
├── microduck_jetson_startup.md
├── microduck_jetson_training_guide.md
└── microduck_custom_action_training.md

El directorio .venv se crea localmente en Jetson y, de forma intencionada, no se incluye en el repositorio Git.

Clonar el repositorio

mkdir -p ~/microduck-jetson
cd ~/microduck-jetson

git clone -b develop https://github.com/jjjadand/microduck_rl.git
cd microduck_rl

Ejecutar el script de despliegue

cd ~/microduck-jetson/microduck_rl

SUDO_PASSWORD=<JETSON_PASSWORD> \
TARGET_DIR=$HOME/microduck-jetson/microduck_rl \
bash deploy_microduck_jetson.sh

El script instala las dependencias de compilación y visualización, instala uv, crea .venv de Python 3.12, sincroniza las dependencias bloqueadas del proyecto, instala la rueda de PyTorch con CUDA compatible y realiza la validación de CUDA.

nota

Pasar una contraseña a través de una variable de entorno es conveniente para esta configuración de laboratorio reproducible. Para un dispositivo compartido o de producción, revisa el script y ejecuta los comandos con privilegios de forma interactiva.

Entrar en el entorno

Todos los comandos del proyecto deben ejecutarse desde la raíz del repositorio:

cd ~/microduck-jetson/microduck_rl
export MUJOCO_GL=egl

Utiliza uv run --no-sync para los comandos de esta guía. Esto evita que una resincronización de dependencias no deseada reemplace la instalación de PyTorch con CUDA para Jetson.

Verificar CUDA

uv run --no-sync python3 - <<'PY'
import torch

print("PyTorch:", torch.__version__)
print("CUDA runtime:", torch.version.cuda)
print("CUDA available:", torch.cuda.is_available())
print("GPU:", torch.cuda.get_device_name(0))

left = torch.randn(512, 512, device="cuda")
right = torch.randn(512, 512, device="cuda")
result = left @ right
torch.cuda.synchronize()
print("CUDA matmul:", result.device)
PY

Los resultados esperados incluyen CUDA available: True, un nombre de GPU Orin y CUDA matmul: cuda:0.

Ejecutar la prueba rápida de entrenamiento

uv run --no-sync train Mjlab-Velocity-Flat-MicroDuck \
--env.scene.num-envs 64 \
--agent.logger tensorboard \
--agent.max_iterations 5

Una ejecución correcta crea un directorio bajo logs/rsl_rl/velocity/ que contiene archivos de configuración, eventos de TensorBoard y uno o más checkpoints .pt.

Cuando MuJoCo y los gestores de entrenamiento se inician, la terminal imprime la configuración activa de terminación, recompensa, currículo, actor y crítico:

MuJoCo de Microduck y gestores de entrenamiento iniciándose en la terminal

Después de que comience la recopilación de rollouts, cada iteración de aprendizaje informa del rendimiento, términos de recompensa, duración del episodio, valores de currículo y estadísticas de terminación:

Métricas de iteración de entrenamiento PPO de Microduck en Jetson

Ejecutar 4096 entornos de entrenamiento en paralelo

Para la ejecución de entrenamiento completa utilizada en esta demo, el backend simula 4096 entornos Microduck independientes en paralelo:

uv run --no-sync train Mjlab-Velocity-Flat-MicroDuck \
--env.scene.num-envs 4096 \
--agent.logger tensorboard

jtop muestra la carga de la GPU y el estado del dispositivo mientras se ejecuta el proceso de entrenamiento con 4096 entornos:

Salida de jtop en Jetson mientras se entrenan 4096 entornos Microduck

Si la memoria es insuficiente, reduce el número de entornos usando 4096 → 2048 → 1024 → 512.

Visualizar los entornos de entrenamiento

El backend sigue entrenando los 4096 entornos. Los ajustes del visor solo controlan cuántos robots se renderizan para inspección y no reducen el lote de entrenamiento del backend a menos que se cambie --env.scene.num-envs.

Renderizar un Microduck

Renderizar un robot es la forma más clara de inspeccionar la postura, los contactos y la marcha durante el entrenamiento:

Un Microduck visualizado mientras el backend entrena 4096 entornos

Renderizar múltiples Microducks

Renderizar muchos robots hace visible el concepto de entornos paralelos. La ejecución completa del backend sigue conteniendo 4096 entornos aunque solo se muestre un subconjunto en el visor:

Múltiples Microducks visualizados mientras el backend entrena 4096 entornos

El visor está pensado para ejecuciones cortas de inspección. Las ejecuciones largas de entrenamiento normalmente usan renderizado EGL sin cabeza para evitar la sobrecarga de dibujo continuo.

Configuración de rendimiento opcional

Comprueba los modos de energía compatibles antes de seleccionar uno:

sudo nvpmodel -q
sudo nvpmodel

Supervisa el dispositivo mientras entrenas:

tegrastats

No copies un número de modo de energía de otro modelo de Jetson. Selecciona un modo de alto rendimiento compatible para el dispositivo exacto.

Siguiente paso

Loading Comments...