LeRobot documentation
π₀ (Pi0)
π₀ (Pi0)
π₀ é um modelo Vision-Language-Action para controle geral de robôs, da Physical Intelligence. A implementação do LeRobot é adaptada do repositório de código aberto OpenPI deles.
Visão geral do modelo
π₀ representa um avanço na robótica, sendo o primeiro modelo de fundação para robôs de uso geral desenvolvido pela Physical Intelligence. Diferente dos programas de robôs tradicionais, que são especialistas estreitos programados para movimentos repetitivos, o π₀ é projetado como uma política generalista capaz de compreender entradas visuais, interpretar instruções em linguagem natural e controlar uma variedade de robôs diferentes em diversas tarefas.
A Visão para a Inteligência Física
Conforme descrito pela Physical Intelligence, embora a IA tenha alcançado um sucesso notável em domínios digitais, desde o jogo de xadrez até a descoberta de medicamentos, a inteligência humana ainda supera drasticamente a IA no mundo físico. Para parafrasear o paradoxo de Moravec, vencer uma partida de xadrez representa um problema “fácil” para a IA, mas dobrar uma camisa ou limpar uma mesa exige a resolução de alguns dos problemas de engenharia mais difíceis já concebidos. O π₀ representa um primeiro passo em direção ao desenvolvimento de uma inteligência física artificial que permita aos usuários simplesmente pedir a robôs que executem qualquer tarefa desejada, assim como podem fazer com modelos de linguagem de grande escala.
Arquitetura e Abordagem
π₀ combina várias inovações-chave:
- Flow Matching: Utiliza um método inovador para aumentar VLMs pré-treinadas com saídas de ação contínuas por meio de flow matching (uma variante de modelos de difusão)
- Treinamento Cross-Embodiment: Treinado com dados de 8 plataformas de robôs distintas, incluindo UR5e, Bimanual UR5e, Franka, Bimanual Trossen, Bimanual ARX, Mobile Trossen e Mobile Fibocom
- Pré-treinamento em escala de internet: Herda conhecimento semântico de um Modelo de Visão-Linguagem pré-treinado com 3B parâmetros
- Controle de alta frequência: Emite comandos de motor em até 50 Hz para manipulação ágil em tempo real
Requisitos de instalação
Instale o LeRobot seguindo nosso Guia de Instalação.
Instale as dependências do Pi0 executando:
pip install -e ".[pi]"
Dados de Treinamento e Capacidades
π₀ é treinado no maior conjunto de dados de interação com robôs até o momento, combinando três fontes de dados principais:
- Pré-treinamento em escala de internet: Dados de visão-linguagem da web para compreensão semântica
- Conjunto de dados Open X-Embodiment: Conjuntos de dados de manipulação robótica de código aberto
- Conjunto de dados da Physical Intelligence: Conjunto de dados grande e diversificado de tarefas de destreza em 8 robôs distintos
Uso
Para usar π₀ no LeRobot, especifique o tipo de política como:
policy.type=pi0Treinamento
Para treinar o π₀, você pode usar o script de treinamento padrão do LeRobot com a configuração apropriada:
lerobot-train \
--dataset.repo_id=your_dataset \
--policy.type=pi0 \
--output_dir=./outputs/pi0_training \
--job_name=pi0_training \
--policy.pretrained_path=lerobot/pi0_base \
--policy.repo_id=your_repo_id \
--policy.compile_model=true \
--policy.gradient_checkpointing=true \
--policy.dtype=bfloat16 \
--policy.freeze_vision_encoder=false \
--policy.train_expert_only=false \
--steps=3000 \
--policy.device=cuda \
--batch_size=32Parâmetros Principais de Treinamento
--policy.compile_model=true: Habilita a compilação do modelo para um treinamento mais rápido--policy.gradient_checkpointing=true: reduz significativamente o uso de memória durante o treinamento--policy.dtype=bfloat16: Use treinamento com precisão mista para eficiência--batch_size=32: Tamanho do lote para o treinamento, adapte com base na memória da sua GPU--policy.pretrained_path=lerobot/pi0_base: O modelo base π₀ que você deseja fazer o finetuning. As opções são:- lerobot/pi0_base
- lerobot/pi0_libero (treinado especificamente no conjunto de dados Libero)
--policy.optimizer_fused=true: Usa AdamW fundido para etapas de otimizador mais rápidas; essa flag é ignorada ao retomar uma execução
Parâmetros de Treinamento Explicados
| Parâmetro | Padrão | Descrição |
|---|---|---|
freeze_vision_encoder | false | Não congele o codificador de visão |
train_expert_only | false | Não congele o VLM, treine todos os parâmetros |
💡 Dica: Definir train_expert_only=true congela o VLM e treina apenas o especialista de ação e as projeções, permitindo o ajuste fino com uso reduzido de memória.
Ações Relativas
Por padrão, o π₀ prevê ações absolutas. Você pode habilitar ações relativas para que o modelo preveja deslocamentos em relação ao estado atual do robô. Isso pode melhorar a estabilidade do treinamento para certas configurações.
Para usar ações relativas, primeiro recalcule as estatísticas do seu conjunto de dados no espaço relativo via CLI:
lerobot-edit-dataset \
--repo_id your_dataset \
--new_repo_id your_dataset \
--operation.type recompute_stats \
--operation.overwrite true \
--operation.relative_action true \
--operation.chunk_size 50 \
--operation.relative_exclude_joints "['gripper']" \
--push_to_hub trueOu, equivalentemente, em Python:
from lerobot.datasets import LeRobotDataset, recompute_stats
dataset = LeRobotDataset("your_dataset")
recompute_stats(dataset, relative_action=True, chunk_size=50, relative_exclude_joints=["gripper"])
dataset.push_to_hub()O chunk_size deve corresponder ao chunk_size da sua política (padrão 50 para π₀). relative_exclude_joints lista os nomes das juntas que devem permanecer no espaço absoluto (por exemplo, comandos do garra). Use --push_to_hub true para enviar as estatísticas atualizadas para o Hub.
Depois, treine com ações relativas habilitadas:
lerobot-train \
--dataset.repo_id=your_dataset \
--policy.type=pi0 \
--policy.use_relative_actions=true \
--policy.relative_exclude_joints='["gripper"]' \
...Licença
Este modelo segue a Apache 2.0 License, em conformidade com o repositório original OpenPI.
Update on GitHub