Pular para o conteúdo principal

Implantar o Ambiente de RL do Microduck no Jetson

Este capítulo prepara o sistema Jetson, instala o ambiente do projeto, explica a estrutura de diretórios e verifica se o treinamento PPO pode ser executado em CUDA.

Hardware e Software

A seguinte plataforma foi validada para esta demonstração:

ItemVersão
DispositivoSeeed reComputer com Jetson Orin NX 16GB
SOUbuntu 24.04 LTS, aarch64
JetPack / L4TJetPack 7.2 / L4T R39.2
CUDA do sistema13.2
Python3.12
PyTorch2.9.1+cu130
MuJoCo3.10.0
Warp1.12.0

Use armazenamento NVMe com pelo menos 25GB de espaço livre. Refrigeração ativa, uma fonte de alimentação estável e uma conexão de rede confiável são recomendadas.

atenção

Não substitua de forma independente o driver CUDA fornecido pelo JetPack ou os pacotes L4T. O projeto Python é isolado em .venv, enquanto a pilha de GPU do sistema continua sendo gerenciada pelo JetPack.

Diretório do Projeto

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

O diretório .venv é criado localmente no Jetson e é intencionalmente não incluído no repositório Git.

Clonar o Repositório

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

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

Executar o Script de Implantação

cd ~/microduck-jetson/microduck_rl

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

O script instala as dependências de compilação e visualização, instala o uv, cria o .venv de Python 3.12, sincroniza as dependências travadas do projeto, instala o wheel de PyTorch com CUDA compatível e realiza a validação de CUDA.

nota

Passar uma senha por meio de uma variável de ambiente é conveniente para esta configuração de laboratório reprodutível. Para um dispositivo compartilhado ou de produção, revise o script e execute os comandos privilegiados de forma interativa.

Entrar no Ambiente

Todos os comandos do projeto devem ser executados a partir da raiz do repositório:

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

Use uv run --no-sync para os comandos neste guia. Isso evita que uma re-sincronização de dependências não intencional substitua a instalação do PyTorch com CUDA do 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

Os resultados esperados incluem CUDA available: True, um nome de GPU Orin e CUDA matmul: cuda:0.

Executar o Smoke Test de Treinamento

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

Uma execução bem-sucedida cria um diretório em logs/rsl_rl/velocity/ contendo arquivos de configuração, eventos do TensorBoard e um ou mais checkpoints .pt.

Quando o MuJoCo e os gerenciadores de treinamento iniciam, o terminal imprime a configuração ativa de terminação, recompensa, currículo, ator e crítico:

MuJoCo do Microduck e gerenciadores de treinamento iniciando no terminal

Depois que a coleta de rollouts começa, cada iteração de aprendizado relata throughput, termos de recompensa, duração do episódio, valores de currículo e estatísticas de terminação:

Métricas de iteração de treinamento PPO do Microduck no Jetson

Executar 4096 Ambientes de Treinamento em Paralelo

Para a execução completa de treinamento usada nesta demonstração, o backend simula 4096 ambientes Microduck independentes em paralelo:

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

jtop mostra a carga da GPU e o estado do dispositivo enquanto o processo de treinamento com 4096 ambientes está em execução:

Saída do jtop do Jetson enquanto treina 4096 ambientes Microduck

Se a memória for insuficiente, reduza a contagem de ambientes usando 4096 → 2048 → 1024 → 512.

Visualizar os Ambientes de Treinamento

O backend ainda treina todos os 4096 ambientes. As configurações do Viewer apenas controlam quantos robôs são renderizados para inspeção e não reduzem o lote de treinamento do backend, a menos que --env.scene.num-envs seja alterado.

Renderizar um Microduck

Renderizar um robô é a forma mais clara de inspecionar postura, contatos e marcha durante o treinamento:

Um Microduck visualizado enquanto o backend treina 4096 ambientes

Renderizar Vários Microducks

Renderizar muitos robôs torna visível o conceito de ambientes paralelos. A execução completa do backend ainda contém 4096 ambientes, mesmo que apenas um subconjunto seja mostrado no Viewer:

Vários Microducks visualizados enquanto o backend treina 4096 ambientes

O Viewer é destinado a execuções curtas de inspeção. Execuções longas de treinamento normalmente usam renderização headless via EGL para evitar a sobrecarga de desenho contínuo.

Configuração de Desempenho Opcional

Verifique os modos de energia suportados antes de selecionar um:

sudo nvpmodel -q
sudo nvpmodel

Monitore o dispositivo durante o treinamento:

tegrastats

Não copie um número de modo de energia de outro modelo de Jetson. Selecione um modo de alto desempenho suportado para o dispositivo exato.

Próxima Etapa

Loading Comments...