As ferramentas que todo engenheiro VLA precisa dominar: do tensor ao environment. PyTorch para autograd, HuggingFace para modelos pré-treinados, Gymnasium para ambientes padronizados.
O framework de deep learning dominante em robótica. Entender tensores e o sistema de diferenciação automática é o pré-requisito técnico para qualquer trabalho sério com VLA.
Box conceito principalPyTorch é o framework de deep learning dominante em robótica e VLA. Tensores são arrays multidimensionais com suporte nativo a GPU via CUDA. O sistema autograd calcula gradientes automaticamente através do grafo computacional — essencial para backpropagation durante treinamento de políticas neurais. Praticamente todo VLA relevante (OpenVLA, pi-0, ACT) é implementado em PyTorch.
bfloat16 em GPUs Ampere+ para treinar VLAs grandes.to(device)torch.compile() para acelerar loops de treinamento repetitivosoptimizer.zero_grad() antes de cada backwardfloat32 e float16 sem torch.amp.item() dentro do loop de treino (sincroniza CPU/GPU)model.eval() / torch.no_grad() na inferênciaimport torch
import torch.nn as nn
# device-agnostic
device = torch.device("cuda" if torch.cuda.is_available() else "cpu")
model = PolicyNet().to(device)
optimizer = torch.optim.AdamW(model.parameters(), lr=1e-4)
# mixed precision (Ampere+)
scaler = torch.cuda.amp.GradScaler()
for batch in dataloader:
obs, action = batch["obs"].to(device), batch["action"].to(device)
optimizer.zero_grad()
with torch.autocast(device_type="cuda", dtype=torch.bfloat16):
pred = model(obs)
loss = nn.functional.mse_loss(pred, action)
scaler.scale(loss).backward()
scaler.step(optimizer)
scaler.update()
A biblioteca que democratizou o acesso a modelos de linguagem e visão — e que hospeda praticamente todo VLA open-source relevante.
Por que aprender boxO HuggingFace Hub é o centro do ecossistema open-source de VLA. OpenVLA, SmolVLA, Qwen-VL, PaliGemma — todos distribuídos via Hub com pipeline de inferência pronto. LeRobot hospeda 58k+ datasets lá. Sem dominar from_pretrained(), você não consegue nem fazer inferência.
from transformers import AutoModelForVision2Seq, AutoProcessor
import torch
processor = AutoProcessor.from_pretrained("openvla/openvla-7b", trust_remote_code=True)
model = AutoModelForVision2Seq.from_pretrained(
"openvla/openvla-7b",
attn_implementation="flash_attention_2",
torch_dtype=torch.bfloat16,
low_cpu_mem_usage=True,
trust_remote_code=True
).to("cuda")
# Processar frame + instrução em linguagem natural
inputs = processor(
"In: What action should the robot take to pick up the cup?\nOut:",
image,
return_tensors="pt"
).to("cuda", dtype=torch.bfloat16)
action = model.predict_action(**inputs, unnorm_key="bridge_orig", do_sample=False)
safetensors em vez de pickle (.bin)revision="main" ou tagflash_attention_2 quando disponíveltrust_remote_code=True em VLAs customlow_cpu_mem_usage (OOM)A API universal entre política e ambiente. MuJoCo, Isaac Sim e PyBullet implementam essa interface — entender obs/act/reward/done é fundamental para qualquer loop de treinamento.
Conceito principalGymnasium (sucessor do OpenAI Gym) define a interface padrão para ambientes de RL. Em robótica VLA, serve como wrapper para simuladores e permite treinar políticas com interface consistente. A API é simples mas poderosa:
observation_space — o que o robô vêaction_space — o que ele pode fazerBox para contínuo, Discrete para discretoenv.reset() → estado inicialenv.step(action) → (obs, reward, done, info)terminated ou truncatedobs, info = env.reset(seed=42)Inicia episódio, retorna observação inicial. Seed garante reprodutibilidade do estado inicial.
action = policy(obs)Política processa observação e retorna ação no espaço contínuo (ex.: velocidades de juntas, delta cartesiano).
obs, reward, terminated, truncated, info = env.step(action)Ambiente executa ação, retorna nova observação, sinal de recompensa e flags de término.
VectorEnv: N ambientes paralelosPara treinar mais rápido: gymnasium.vector.make("env-id", num_envs=8) roda 8 episódios simultâneos num único processo.
Dados são o gargalo número um em robótica. Estruturar, carregar e aumentar trajetórias de forma eficiente é tão importante quanto a arquitetura do modelo.
Box dados/pesquisafrom_hub().Trajetórias têm comprimentos variáveis. Use collate_fn customizado para pad ou truncar sequências ao montar batches. Combine com num_workers=4 e pin_memory=True para maximizar throughput GPU.
loader = DataLoader(
dataset, batch_size=32, num_workers=4,
pin_memory=True, collate_fn=pad_trajectory_batch
)
Sem tracking estruturado, treinamentos de VLA viram caixa preta. W&B torna loss, success rate e hiperparâmetros visual e reproduzível.
SVG W&B pipeline tracking Tip box W&B LeRobotLeRobot tem suporte nativo a W&B via config YAML. Basta setar wandb.enable: true no arquivo de configuração — sem uma linha de código extra.
# config/train_act.yaml
wandb:
enable: true
project: "vla-pickup-cup"
entity: "meu-time"
notes: "ACT baseline lr=1e-4"
A combinação CUDA driver + PyTorch + MuJoCo pode quebrar de formas misteriosas. Containers eliminam o "funciona na minha máquina" da equação.
Box conceitoDocker containeriza o ambiente de desenvolvimento: versões exatas de Python, PyTorch, CUDA e dependências ficam fixas. Em robótica, onde a combinação CUDA driver + PyTorch + MuJoCo pode quebrar facilmente, containers são essenciais. NVIDIA NGC e LeRobot fornecem containers prontos com tudo configurado.
nvcr.io/nvidia/pytorch:24.01-py3docker run sem --gpus all# Base: PyTorch + CUDA oficial NVIDIA
FROM nvcr.io/nvidia/pytorch:24.01-py3
WORKDIR /workspace
# Instalar LeRobot e dependências
RUN pip install lerobot[gymnasium,wandb] huggingface_hub
# Montar datasets externamente (não copiar)
VOLUME ["/data"]
# GPU passthrough: nvidia-docker2 ou --gpus all
CMD ["python", "train.py", "--config", "config/act.yaml"]
Adicione .devcontainer/devcontainer.json com "runArgs": ["--gpus", "all"] e toda a equipe abre o projeto com o mesmo ambiente, incluindo CUDA, sem configuração manual. LeRobot disponibiliza um devcontainer pronto no repositório oficial.
Diga a resposta em voz alta antes de revelar — recordar é o que fixa, não releituras.
PyTorch é o coração do treino VLA— tensores, autograd, mixed precision e torch.compile formam a base técnica de todo engenheiro.
HuggingFace Hub + LoRA— acesso a 300k+ modelos pré-treinados e fine-tune eficiente com 1-10% dos parâmetros originais.
Gymnasium: contrato universal obs/act/reward— qualquer simulador (MuJoCo, Isaac Sim, PyBullet) fala essa linguagem; VectorEnv paraleliza episódios.
Docker + W&B = reprodutibilidade— ambientes fixos com containers e rastreamento visual de experimentos são tão importantes quanto o modelo.