Pular para o conteúdo principal
Fase 3 · Capítulo 15 · Prática

15. Treinando sua primeira política ACT

Capítulo 15 do curso para iniciantes em SO-ARM Physical AI — entenda batch size, learning rate e passos de treinamento, treine sua primeira política ACT com lerobot-train, monitore a perda e a GPU, e gerencie os checkpoints.

15.1 Três configurações-chave: batch size, learning rate, passos​

Configurações

15.1 Três configurações-chave: batch size, learning rate, passos

Batch size​

Quantos quadros o modelo vê por atualização. Batches maiores treinam mais estáveis, mas comem mais VRAM. Se faltar memória CUDA, baixe primeiro o batch. Comece no padrão do ACT e só mexa se precisar.

Learning rate​

Quanto os parâmetros andam por atualização. Alto demais — a perda oscila ou explode; baixo demais — o treino rasteja. O padrão do ACT (ordem de 1e-5) é bem testado para tarefas de mesa; não mude na primeira rodada.

Passos de treinamento​

Quantas atualizações no total. Para tarefas na escala do SO-ARM, 100k-300k passos é o comum; mais passos ajudam em tarefas difíceis, mas arriscam overfitting. Julgue pela curva: quando a perda de validação para de melhorar, pare.

dica

Estratégia da primeira rodada: deixe tudo no padrão, treine 100k passos, avalie no robô real (Capítulo 16) e então decida o que ajustar. Iniciante perde mais tempo afinando às cegas do que treinando duas vezes.

15.2 Salvar e gerenciar checkpoints​

Checkpoints

15.2 Salvar e gerenciar checkpoints

Sem salvar manual: um checkpoint é salvo a cada save_freq passos, mais um last ao final. Pode colocar um passo alto — dá para escolher o modelo de menos passos e descartar os subtreinados ou viciados.

outputs/train/act_so101_test/
├── train_config.json ← Configuração completa da rodada (necessária para retomar)
└── checkpoints/
├── 0020000/pretrained_model/ ← Arquivo por contagem de passos
├── 0040000/pretrained_model/
├── ...
└── last/pretrained_model/ ← Último checkpoint, usado no Capítulo 16
  • Disco: cada checkpoint é um arquivo completo de pesos; dezenas somam. Estabilizado o treino, dá para apagar os antigos e manter só last.
  • Na inferência, --policy.path aponta para checkpoints/last/pretrained_model.

15.3 Começar a treinar​

Treinamento

15.3 Começar a treinar

Tudo verificado — inicie (no ambiente conda lerobot). Para um dataset local (gravado no Capítulo 12), confira que o repo_id é o mesmo da coleta e acrescente --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 um dataset no Hugging Face Hub, use seu usuário:

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

O que cada argumento faz:

  • Dataset: --dataset.repo_id aponta para o do Capítulo 12.
  • Passos: --steps=300000. O algoritmo vai mais alto por padrão; ajuste conforme a dificuldade e a curva.
  • Política: --policy.type=act carrega a configuração ACT. A política se adapta automaticamente a estados, ações e número de câmeras do seu robô — tudo já está no dataset. Outras opções: diffusion, pi0, pi0fast, smolvla, groot.
  • Dispositivo: --policy.device=cuda para GPUs NVIDIA; mps em Apple Silicon.
  • Visualização: reative --wandb.enable=true para grafar o treino com Weights and Biases (antes, wandb login).
dica

GPUs RTX da série 50 devem acrescentar --dataset.video_backend=pyav — contorna APIs ausentes na 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 Monitorar perda e GPU​

Monitoramento

15.4 Monitorar perda e GPU

  • Perda: impressa a cada log_freq passos. Espere queda rápida no início e um declínio longo e raso depois — isso é saudável. Perda subindo ou oscilando violentamente costuma indicar learning rate errado para seu ambiente.
  • GPU: acompanhe VRAM e utilização com nvidia-smi (ou watch -n 1 nvidia-smi). Utilização perto de 0% por longos períodos = gargalo na tubulação de dados (disco/CPU), não na GPU.
  • Tempos de referência: 50 episódios levam ~6 horas numa RTX 3060 8GB de notebook e 2–3 horas numa RTX 4090 ou A100. Depende de volume, resolução, batch e hardware.

15.5 Retomar um treino interrompido​

Retomar

15.5 Retomar um treino interrompido

Para retomar do last, devolva a configuração salva:

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

Subir os checkpoints (opcional)​

Concluído o treino, suba o último:

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

15.6 Erros comuns de treinamento​

Solução de problemas

15.6 Erros comuns de treinamento

ErroSolução
TypeError: stack(): argument 'tensors' must be tuple of Tensors, not Columnpip install datasets==2.19
CUDA sem memóriaReduza o batch; feche outros processos de GPU; use --dataset.video_backend=pyav
No valid stream found in input file ao carregarconda install ffmpeg=7.1.1 -c conda-forge (correção do Capítulo 5)
Dataset não encontradoConfira o repo_id exato da gravação; a pasta está em ~/.cache/huggingface/lerobot/

Com um checkpoints/last/pretrained_model treinado na mão, o próximo capítulo o coloca no braço real.

Loading Comments...