A matriz de treinamento AY-Robots com cinco políticas como linhas e quatro braços robóticos como colunas, cada célula um link para um guia de ajuste fino específico
Pi0.5Correspondência de FluxoTreinamento de VLALeRobotAjuste Fino

Como Treinar Pi0.5 com Seus Próprios Dados de Robô

AY-Robots ResearchAugust 23, 202616 min de leitura

Ajuste fino de Pi0.5, o VLA de correspondência de fluxo da Physical Intelligence, com seus próprios dados de robô. Comandos reais para openpi e lerobot pi05, armadilhas de formato de conjunto de dados, limites de VRAM e latência.

Pi0.5 é o modelo a ser usado quando uma política precisa funcionar em um ambiente que nunca viu. É também a mais complicada das cinco políticas treináveis aqui para fazer fine-tuning manualmente: o repositório upstream é JAX primeiro, a porta LeRobot moveu a implantação para fora do lerobot-record na versão 0.6.0 e tornou a instalação base muito pequena para treinar, e um fine-tuning completo não cabe em uma 4090. Abaixo: o que correspondência de fluxo custa na inferência, as duas rotas de comando e o número de 485 ms que decide se o resultado é utilizável.

O que você precisa saber

  • Uma VLA de correspondência de fluxo: um VLM PaliGemma 3B mais um especialista em ação de 300M decodificando blocos de ação contínuos. Duas rotas para fazer fine-tuning, openpi e LeRobot pi05, com 0.65 pontos de diferença na média LIBERO.
  • O fine-tuning completo requer mais de 70 GB de VRAM. openpi lista LoRA em 22.5 GB, apenas em seu caminho JAX.
  • O conjunto de dados deve ser LeRobotDataset v3.0 com quantis q01 e q99 em meta/stats.json, ou o primeiro lote falha.
  • Verifique sua versão do lerobot primeiro: 0.6.0 tornou o pacote base leve e moveu a implantação para fora do lerobot-record.
  • Aqui ele executa a 485 ms por passo de ação, requer 50 episódios e custa cerca de 4 a 12 USD por execução.

O que Pi0.5 realmente é

Physical Intelligence publicou pi0 em outubro de 2024: um modelo de correspondência de fluxo de visão-linguagem-ação em um VLM pré-treinado: PaliGemma com 3 bilhões de parâmetros mais um especialista em ação de 300M inicializado do zero, 3,3 bilhões no total. O artigo relata o pré-treinamento em mais de 10.000 horas de dados de robôs em 7 configurações de robôs e 68 tarefas. Mais em o artigo sobre pi0.

Pi0.5 (arXiv 2504.16054, 22 de abril de 2025) mantém esse esqueleto e muda a dieta de treinamento: dados da web, detecção de objetos, instruções verbais de humanos treinando o robô, rótulos de subtarefas, dados de múltiplas encarnações de robôs em muitas casas. O resultado é um robô limpando cozinhas em casas que não estavam no conjunto de treinamento. O README do openpi adiciona um detalhe que o título não menciona: o pi0.5 lançado foi treinado com isolamento de conhecimento (arXiv 2505.23705).

Propriedadepi0pi0.5
Variante do backbone VLMgemma_2b (PaliGemma)gemma_2b (PaliGemma)
Variante do especialista em açãogemma_300mgemma_300m
action_dim3232
action_horizon padrão5050
max_token_len48200
discrete_state_inputfalsetrue, estado discretizado em compartimentos no prompt
Checkpoint basegs://openpi-assets/checkpoints/pi0_basegs://openpi-assets/checkpoints/pi05_base
O que é público não é o artigo completo

O README do openpi é explícito: o repositório suporta apenas o cabeçalho de correspondência de fluxo (flow matching head), tanto para treinamento quanto para inferência do pi0.5. O artigo descreve duas etapas e o código contém apenas a segunda: o pré-treinamento representa cada ação como tokens discretos através do tokenizador FAST, e na implantação o modelo infere uma subtarefa de alto nível antes de cada bloco de ação. Nenhuma dessas etapas está no repositório. O cartão lerobot/pi05_base fornece a mesma lista e adiciona RL, embora o artigo do pi0.5 não descreva nenhuma etapa de aprendizado por reforço. A porta LeRobot herda esse escopo, assim como todo treinador hospedado nela, incluindo o daqui. O licenciamento também é dividido: a página de documentação do pi05 diz Apache 2.0, o cartão lerobot/pi05_base é marcado com license: gemma.

O que a correspondência de fluxo muda no treinamento e inferência

Uma política que você pode treinar em um SO-100 ou regride ações diretamente (ACT) ou as tokeniza e decodifica autoregressivamente (pi0-FAST). O flow matching não faz nenhum dos dois: ele aprende um campo vetorial que transporta ruído para um chunk de ação limpo, e então o integra. O artigo pi0 usa 10 passos de integração com tamanho de passo 0.1; a configuração pi05 do LeRobot mantém o mesmo `num_inference_steps: int = 10`.

  • Treinamento: a perda regride um chunk de ação ruidoso. Nenhum tokenizador para ajustar, nenhuma discretização dos seus ângulos de junta.
  • Inferência: um chunk custa dez passagens para frente através do especialista em ação. Isso é estrutural, não um problema de ajuste.
  • Saída: ações contínuas de dimensão 32, preenchidas internamente, perda calculada nas dimensões que seu robô possui. Um braço de 6-DoF mais garra usa 7.
python
# openpi/src/openpi/models/pi0_config.py - the defaults every pi05 config inherits
@dataclasses.dataclass(frozen=True)
class Pi0Config(_model.BaseModelConfig):
    dtype: str = "bfloat16"
    paligemma_variant: _gemma.Variant = "gemma_2b"
    action_expert_variant: _gemma.Variant = "gemma_300m"

    action_dim: int = 32
    action_horizon: int = 50
    max_token_len: int = None      # 200 if pi05 else 48

    pi05: bool = False             # flips discrete_state_input to True
Lido de src/openpi/models/pi0_config.py no branch principal do openpi, 23 de agosto de 2026.

O backbone PaliGemma, e o portão à sua frente

PaliGemma (arXiv 2407.07726) é um codificador de visão SigLIP-So400m em um modelo de linguagem Gemma-2B, com cerca de 3B de parâmetros. Pi0.5 herda seu tokenizador, e esse tokenizador reside em um repositório restrito. Esta é a forma mais comum de uma primeira execução falhar, antes do primeiro passo de treinamento.

Aceite a licença restrita antes de alugar uma GPU

A documentação do LeRobot pi05 afirma claramente: pi0.5 usa o tokenizador restrito google/paligemma-3b-pt-224, então aceite sua licença no Hub e execute hf auth login primeiro. O acesso é concedido manualmente, não instantaneamente. Ignore isso, inicie uma execução paga na nuvem, e você pagará por um pod que não consegue baixar um tokenizador.

Antes de começar: formato do conjunto de dados, episódios, hardware

Pi0.5 no LeRobot lê um conjunto de dados LeRobot no layout v3.0, que foi lançado com o lerobot 0.4.0 em outubro de 2025: muitos episódios por arquivo Parquet e MP4 em vez de um arquivo por episódio, com limites em meta/episodes/ em vez de nomes de arquivo. Grave com o cliente de desktop ou siga grave seu primeiro conjunto de dados e você o terá.

ModoMemória GPU necessáriaExemplo de GPU
Inferênciamais de 8 GBRTX 4090
Ajuste fino, LoRAmais de 22,5 GBRTX 4090
Ajuste fino, completomais de 70 GBA100 80 GB ou H100
A armadilha da versão que custa um dia

Pi0.5 e SmolVLA exigem LeRobot v3.0. GR00T N1.7 e GR00T N1.5 exigem v2.0 ou v2.1 e falham em um conjunto de dados v3.0. Uma sessão de gravação não pode alimentar ambos sem uma conversão, e o erro não diz "versão errada do conjunto de dados". Veja conjunto de dados rejeitado: v3 necessário.

bash
# v2.1 -> v3.0, run against a dataset already on the Hub
python -m lerobot.scripts.convert_dataset_v21_to_v30 --repo-id=<HF_USER/DATASET_ID>

# aggregates episode-0000.parquet, episode-0001.parquet, ... -> file-0000.parquet
# aggregates episode-0000.mp4, episode-0001.mp4, ...         -> file-0000.mp4
# rewrites meta/episodes/* with per-episode lengths, tasks and offsets
Da documentação do LeRobotDataset v3.0.

A plataforma exige pelo menos 50 episódios para Pi0.5, o mesmo mínimo que GR00T e ACT. O pré-treinamento faz o trabalho pesado, então 50 episódios limpos superam 200 desleixados. Novo nisso? Comece com o guia de coleta de dados.

A página de políticas da AY-Robots comparando as cinco políticas treináveis por parâmetros, categoria de GPU, latência e número mínimo de episódios
Pi0.5 se posiciona na categoria A100 e H100 com 485 ms por passo de ação, com um mínimo de 50 episódios.

Rota A: ajuste fino com o repositório openpi

A implementação de referência: JAX primeiro, testada apenas no Ubuntu 22.04, impulsionada por objetos de configuração em vez de flags. Um caminho para PyTorch chegou em setembro de 2025, validado no LIBERO. Três etapas: converta seus dados, defina uma configuração, treine e sirva.

  1. 1
    Clonar e instalar

    openpi usa uv. GIT_LFS_SKIP_SMUDGE é o que permite que LeRobot seja uma dependência sem blobs LFS.

    bash
    git clone --recurse-submodules git@github.com:Physical-Intelligence/openpi.git
    cd openpi
    
    GIT_LFS_SKIP_SMUDGE=1 uv sync
    GIT_LFS_SKIP_SMUDGE=1 uv pip install -e .
  2. 2
    Converter seus dados para um conjunto de dados LeRobot

    O upstream fornece conversores para LIBERO e DROID e espera que você adapte um. O trabalho é o mapeamento de chaves.

    bash
    uv run examples/libero/convert_libero_data_to_lerobot.py --data_dir /path/to/your/data
  3. 3
    Adicionar uma configuração de treinamento

    As configurações são entradas TrainConfig em src/openpi/training/config.py. Esta adapta pi05_droid_finetune, com o carregador de pesos apontado para pi05_base.

    python
    TrainConfig(
        name="pi05_so100",
        model=pi0_config.Pi0Config(
            pi05=True,
            action_dim=32,        # pi05 is trained with 32-dim actions
            action_horizon=16,
        ),
        # Copy LeRobotLiberoDataConfig in the same file and rewrite the key
        # mapping for your camera names, then reference your copy here.
        data=LeRobotLiberoDataConfig(
            repo_id="your_hf_username/my_so100_dataset",
            base_config=DataConfig(prompt_from_task=True),
        ),
        weight_loader=weight_loaders.CheckpointWeightLoader(
            "gs://openpi-assets/checkpoints/pi05_base/params"
        ),
        batch_size=32,
        num_train_steps=20_000,
    )
  4. 4
    Calcular estatísticas de normalização

    Executa contra o nome da configuração, não o conjunto de dados. Ignorá-lo é a primeira falha clássica aqui.

    bash
    uv run scripts/compute_norm_stats.py --config-name pi05_so100
  5. 5
    Treinar

    A variável permite que o JAX use 90% da memória da GPU em vez dos 75% padrão. Em uma placa de 80 GB, isso decide se a execução sobrevive.

    bash
    XLA_PYTHON_CLIENT_MEM_FRACTION=0.9 uv run scripts/train.py pi05_so100 \
        --exp-name=my_experiment \
        --overwrite
  6. 6
    Servir

    O servidor escuta na porta 8000 e responde a consultas de observação; seu tempo de execução do robô é o cliente.

    bash
    uv run scripts/serve_policy.py policy:checkpoint \
        --policy.config=pi05_so100 \
        --policy.dir=checkpoints/pi05_so100/my_experiment/20000
O caminho PyTorch não é o caminho JAX

A implementação PyTorch da openpi não suporta pi0-FAST, precisão mista, FSDP, LoRA ou pesos EMA, então o LoRA que atinge 22.5 GB é apenas JAX, através das variantes gemma_2b_lora e gemma_300m_lora. Pior: a configuração copia arquivos corrigidos sobre seus transformers 4.53.2 instalados, e o README adverte que com o modo hardlink padrão do uv isso modifica permanentemente os transformers no cache do uv e pode vazar para outros projetos. Desfaça isso com uv cache clean transformers.

Rota B: ajuste fino com lerobot pi05

A porta LeRobot encapsula os mesmos pesos na CLI que você já usa para ACT e SmolVLA. Tudo abaixo foi verificado com lerobot 0.6.1, a versão desde 3 de agosto de 2026, e a documentação do pi05 em 23 de agosto de 2026. As versões importam aqui: os conjuntos de dados v3.0 chegaram com 0.4.0 em outubro de 2025, o blog 0.5.0 de 9 de março de 2026 apresenta pi0-FAST e Real-Time Chunking, e 0.6.0 em 6 de julho de 2026 tornou o pacote base leve e moveu a implantação para lerobot-rollout.

Uma coisa não mudou: lerobot-train e lerobot-record já eram pontos de entrada em 0.3.2, agosto de 2025. Um tutorial que ainda chama python -m lerobot.scripts.train é anterior a um ano de mudanças e também não é confiável no restante.

  1. 1
    Instalar com os extras corretos

    Desde 0.6.0, a instalação base inclui apenas as dependências essenciais de ML, e o extra 'pi' não adiciona código de dataset ou treinamento, então um fine-tune também precisa do extra 'training'. Comandos de uma linha mais antigos falham aqui no momento da importação.

    bash
    # policy dependencies plus the training stack
    pip install 'lerobot[pi,training]'
    
    # from a source checkout
    pip install -e ".[pi,training]"
    
    # driving an SO-100 afterwards needs the robot extras too
    pip install 'lerobot[core_scripts,feetech]'
  2. 2
    Autenticar

    Aceite a licença paligemma-3b-pt-224 em um navegador e, em seguida, faça login na máquina que realiza o treinamento.

    bash
    hf auth login
  3. 3
    Adicionar estatísticas de quantis

    O Pi0.5 normaliza STATE e ACTION com quantis, então meta/stats.json precisa de q01 e q99. Datasets mais antigos contêm apenas min, max, mean, std.

    bash
    lerobot-edit-dataset \
        --repo_id your_dataset \
        --new_repo_id your_dataset \
        --operation.type recompute_stats \
        --operation.overwrite true
  4. 4
    Ajustar a partir de lerobot/pi05_base

    Defina o tamanho do batch para o que sua placa suporta; a documentação usa 64 no LIBERO com 80 GB. Passe bfloat16 explicitamente, o padrão da configuração é float32.

    bash
    lerobot-train \
        --dataset.repo_id=${HF_USER}/my_so100_dataset \
        --policy.type=pi05 \
        --policy.pretrained_path=lerobot/pi05_base \
        --policy.gradient_checkpointing=true \
        --policy.dtype=bfloat16 \
        --policy.device=cuda \
        --policy.push_to_hub=false \
        --output_dir=./outputs/pi05_so100 \
        --job_name=pi05_so100 \
        --batch_size=4 \
        --num_workers=8 \
        --steps=30000 \
        --save_freq=5000 \
        --seed=1000
  5. 5
    Executar no braço

    Em 0.6.x, isso é lerobot-rollout: lerobot-record recusa uma política e rejeita nomes de datasets eval_. Base controla o braço, sentry registra o rollout.

    bash
    lerobot-rollout \
        --strategy.type=base \
        --policy.path=${HF_USER}/my_policy \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM1 \
        --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
        --task="Put lego brick into the transparent box" \
        --duration=60
    
    # same run, recorded into an eval_ dataset
    lerobot-rollout \
        --strategy.type=sentry \
        --policy.path=${HF_USER}/my_policy \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM1 \
        --dataset.repo_id=${HF_USER}/eval_so100 \
        --dataset.single_task="Put lego brick into the transparent box" \
        --duration=600
FlagO que fazNota
--policy.type=pi05seleciona Pi0.5obrigatório com pretrained_path, omitir com --policy.path
--policy.pretrained_pathcarrega apenas os pesosnomes de features do seu dataset, configurações armazenadas são redefinidas
--policy.pathpesos mais o config.json do checkpointconfigurações armazenadas, como n_action_steps, são herdadas
--policy.n_action_stepspassos consumidos por chunkretorna a 50, nunca acima de chunk_size (padrão 50)
--policy.train_expert_onlycongela o VLM, treina o especialistapadrão falso, menos memória, algum custo no sucesso
--policy.gradient_checkpointingrecomputa em vez de armazenar ativaçõespadrão falso, a primeira alavanca quando uma execução não se encaixa
--peft.method_type=LORAadaptadores LoRA em vez de pesos completosprecisa do extra peft, exemplo documentado é SmolVLA
--policy.rtc_training_max_delaycondicionamento de prefixo de ação para RTCapenas na branch principal, não em 0.6.1, deve permanecer abaixo de chunk_size
--rename_mapmapeia colunas do dataset para features da políticanecessário quando suas chaves de câmera diferem
O erro que a maioria das primeiras execuções encontra

Sem quantis, você receberá ValueError: QUANTILES normalization mode requires q01 and q99 stats no primeiro batch. Recalcule as estatísticas, mas o resultado será salvo em $HF_LEROBOT_HOME/your_dataset, não no cache que --dataset.repo_id lê, então treine com --dataset.root apontando para lá ou faça push para o Hub. Ou ignore os quantis com --policy.normalization_mapping='{"ACTION": "MEAN_STD", "STATE": "MEAN_STD", "VISUAL": "IDENTITY"}', como faz o comando de referência do LIBERO.

Três conjuntos de padrões, e quais deles chegam ao treinador

A TrainConfig da openpi é a referência, a PI05Config da LeRobot é o que o lerobot-train usa quando você não especifica nada, e o formulário aqui envia um terceiro conjunto. A surpresa é a taxa de aprendizado: ambos os padrões upstream atingem o pico de 2.5e-5, enquanto a própria configuração pi05_libero da openpi e esta plataforma a elevam para 5e-5.

Configuraçãoopenpi TrainConfiglerobot pi05 e lerobot-trainAY-Robots envia
Tamanho do lote3281
Taxa de aprendizado de pico2.5e-5, cosine decayoptimizer_lr 2.5e-55e-5
Passos de treinamento30,000100,00030,000
Intervalo de checkpoint1,000 steps20,000 stepsnão no formulário
Semente421,000no formulário
Fragmento de açãoaction_horizon 50chunk_size 50, n_action_steps 50não no formulário
Tipo de dado do pesobfloat16float32 until you pass --policy.dtypenão no formulário
Acumulação de gradienteno such knob, fsdp_devices insteadabsent from every release so far16, and it is dropped

A portabilidade é fiel? A equipe LeRobot ajustou o modelo base LIBERO por mais 6k passos e comparou com os números de referência da openpi em quatro suítes: 97.5 por cento de média contra 96.85, à frente no Libero 10, atrás no Spatial. A rota é uma escolha de ferramenta, não de qualidade.

Ajustando Pi0.5 com seus próprios dados
Vantagens
  • Mais de 10,000 horas de pré-treinamento de robôs por trás, então 50 episódios da sua tarefa podem ser suficientes.
  • Ações contínuas: nenhum tokenizador para ajustar, nenhum limite de discretização nos seus ângulos de junta.
  • A portabilidade LeRobot atinge 97.5 por cento na média LIBERO contra 96.85 da openpi, então a CLI mais amigável não custa nada mensurável.
  • Caminhos eficientes em parâmetros em ambos os lados: variantes JAX LoRA da openpi, integração PEFT da LeRobot.
Compromissos
  • O ajuste fino completo requer mais de 70 GB. O valor de 22.5 GB para LoRA é o número JAX da openpi; nenhum é publicado para pi05 sob PEFT.
  • 485 ms por passo de ação, o mais lento dos cinco aqui: o dobro de SmolVLA, vinte e quatro vezes ACT.
  • LeRobot v3.0 é necessário, então um conjunto de dados gravado para uma execução de GR00T precisa ser convertido, e vice-versa.
  • Novas opções chegam primeiro no main: RTC e memória MEM em tempo de treinamento não estão na versão 0.6.1, então a documentação mais recente pode significar instalar do git.

A realidade de 485 ms, e onde deixa de ser utilizável

Isso decide o seu projeto, por isso vem antes da tabela de custos. A por passo de ação medida aqui para Pi0.5 é de 485 ms. Contra os outros quatro:

PolíticaInferência por passo de açãoParâmetrosNível de GPUEpisódios mínimos
ACT20 ms~80 MRTX 4090 or any 24 GB card50
GR00T N1.7152 ms~3 BA100 80 GB or H100 80 GB50
GR00T N1.5165 ms~3 BA100 80 GB or H100 80 GB50
SmolVLA245 ms~450 MRTX 4090 or any 24 GB card30
Pi0.5485 ms~3 BA100 80 GB or H100 80 GB50
A página de comparação AY-Robots para GR00T N1.7 contra Pi0.5, com parâmetros, nível de GPU, latência e formato do conjunto de dados
Mesmo nível de GPU, mesmo piso de episódios, versão de conjunto de dados diferente, lacuna de latência de três vezes.
A inferência precisa estar próxima aos servos

O loop de controle nesses cinco modelos executa de 20 a 485 ms por etapa de ação. Viagens de ida e volta pela internet pública, somadas aos 485 ms, transformam uma política funcional em uma hesitante. A inferência remota é viável para operações lentas de pegar e colocar (pick-and-place), não para movimentos reativos rápidos. Preferimos dizer isso a vender uma demonstração que só funciona em uma LAN. Se o seu braço pausar entre os blocos, comece em política congela no meio do movimento.

O upstream tem uma resposta, e metade dela já está na versão que você pode instalar. O Real-Time Chunking gera o próximo bloco enquanto o braço ainda está executando o atual, e então guia os passos sobrepostos do novo bloco para permanecerem próximos à parte já executada, para que o braço não pare ou engasgue na junção. A forma de tempo de inferência foi incluída no changelog 0.4.2 para Pi0, Pi0.5 e SmolVLA e é uma flag de rollout, não um retreinamento:

bash
lerobot-rollout \
    --strategy.type=base \
    --policy.path=${HF_USER}/my_policy \
    --inference.type=rtc \
    --inference.rtc.execution_horizon=10 \
    --inference.rtc.max_guidance_weight=10.0 \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM1 \
    --robot.cameras="{ up: {type: opencv, index_or_path: /dev/video10, width: 640, height: 480, fps: 30}}" \
    --task="Put lego brick into the transparent box" \
    --duration=60
execution_horizon é o número de passos do bloco anterior com os quais o novo bloco deve concordar; a documentação do RTC indica 8 a 12 como o intervalo usual. O backend de inferência padrão é --inference.type=sync.

Isso não torna o modelo mais rápido. Ele esconde a lacuna: os 485 ms ainda são gastos, mas fora do caminho crítico, para que a fila não se esgote entre os blocos. A variante de tempo de treinamento do arXiv 2512.05964 vai além: o modelo aprende a condicionar-se a um prefixo de ação limpo, de modo que na inferência a sobreposição é preenchida (hard-inpainted) com timesteps de fluxo por ação em vez de guiada, e a passagem de retropropagação da guia desaparece. Durante o treinamento, ele amostra um comprimento de prefixo por exemplo e calcula a perda de fluxo no postfix restante. Essa flag existe apenas na versão principal (main), não na 0.6.1, e o atraso para o qual você treina deve permanecer abaixo de chunk_size.

Duas formas de obter um checkpoint Pi0.5

Você aluga ou possui uma placa de 80 GB, instala uma das stacks acima, converte seu dataset e supervisiona a execução. Você mantém todos os controles: JAX LoRA do openpi, adaptadores PEFT do LeRobot, ações relativas, mapeamentos de teclas personalizados. Você também mantém todas as falhas.

  • Hardware: A100 80 GB ou H100, ou uma placa de 24 GB no caminho JAX LoRA do openpi.
  • Configuração: uma tarde para a primeira execução, principalmente mapeamento de teclas e o tokenizer restrito.
  • Não no formulário hospedado: adaptadores PEFT, ações relativas, RTC em tempo de treinamento, memória MEM.
bash
lerobot-train \
    --dataset.repo_id=${HF_USER}/my_so100_dataset \
    --policy.type=pi05 \
    --policy.pretrained_path=lerobot/pi05_base \
    --policy.rtc_training_max_delay=10 \
    --policy.gradient_checkpointing=true \
    --policy.dtype=bfloat16 \
    --batch_size=4 --steps=30000 --seed=1000
O comando que nenhum formulário hospedado executa, e o pip não pode instalar: RTC em tempo de treinamento é uma flag do branch principal.

Quando não funciona

SintomaCausa mais provável
Execução rejeitada antes de iniciarDataset v2.1 mas Pi0.5 quer v3.0, ou o inverso para GR00T
ImportError, pacote datasets ausentelerobot 0.6.x sem o extra de treinamento
ValueError sobre q01 e q99 no batch umNenhum quantil em meta/stats.json; recalcule ou use MEAN_STD
CUDA sem memória no passo 0Fine-tune completo abaixo de 70 GB; tente checkpointing ou train_expert_only
Erro 401 ou de repositório restritoLicença do tokenizer PaliGemma não aceita
A perda cai, o robô não faz nadaIncompatibilidade de normalização, ou a política copia o estado
Braço pausa entre os chunksLatência por passo mais ida e volta; a fila de chunks esgota
Funciona em uma configuração, falha em outraPoucos episódios, ou todos em uma única configuração

Quanto custa uma execução

Pi0.5 está na camada mais cara porque precisa de uma placa de 80 GB, e os preços spot variam, então o valor é uma faixa em vez de um preço. Para muitas tarefas SO-100, treine SmolVLA ou ACT na camada de 24 GB primeiro, confirme se a tarefa é aprendível, e só então dedique horas de A100 a ela. Treine sua primeira política descreve esse ciclo mais barato, e preços contém as camadas atuais.

CamadaPolíticasExecução típicaPreço por horaCusto por execução
A100 80 GB ou H100Pi0.5, GR00T N1.7, GR00T N1.53 a 6 horas1.20 a 2.00 USDcerca de 4 a 12 USD
RTX 4090 ou qualquer placa de 24 GBSmolVLA, ACT2 a 5 horas0.30 a 0.60 USDcerca de 1 a 3 USD
A tabela de custos da AY-Robots mostrando qual GPU cada política precisa, o tempo de execução e preço típicos, e quantos episódios são necessários antes que uma política seja útil.
Os mesmos dois níveis na página do produto: Pi0.5 aluga a placa de 80 GB, SmolVLA e ACT cabem numa 4090.

Antes de dedicar uma noite: GR00T N1.7 contra Pi0.5 e Pi0.5 contra SmolVLA apresentam os mesmos números lado a lado. A Arena contém 85 modelos VLA com 332 resultados de benchmark, cada um ligado à sua fonte, e o histórico da família está em nossa visão geral de VLA.

Treine Pi0.5 sem construir a stack

Escolha o conjunto de dados e os hiperparâmetros num formulário. O backend aluga uma placa de 80 GB no mercado spot, executa o treinador e escreve os checkpoints para o armazenamento de objetos. Guias para SO-100, SO-101, Koch v1.1 e LeKiwi.

Abrir os guias de treino
Posso fazer fine-tuning de Pi0.5 numa RTX 4090?

Não é um fine-tuning completo: openpi lista mais de 70 GB para isso, então uma A100 de 80 GB ou uma H100. O seu valor de 22.5 GB para LoRA pertence ao caminho JAX; a implementação PyTorch não tem LoRA. A integração PEFT do LeRobot existe, mas o seu exemplo documentado é SmolVLA e nenhum valor de VRAM é publicado para pi05.

Quantos episódios preciso?

Cinquenta, o mesmo mínimo que GR00T e ACT; apenas SmolVLA vai mais baixo, com 30. O checkpoint base carrega mais de 10.000 horas de pré-treino, então o fine-tuning adapta-se em vez de aprender do zero: 50 episódios limpos e variados superam duzentos de uma única configuração.

Qual é a diferença entre --policy.path e --policy.pretrained_path?

--policy.path carrega pesos e o config.json do checkpoint, então configurações armazenadas como n_action_steps são herdadas e --policy.type deve ser omitido. --policy.pretrained_path carrega apenas os pesos: os nomes das features vêm do seu conjunto de dados, as configurações armazenadas são redefinidas, --policy.type é obrigatório. É por isso que o comando LIBERO passa n_action_steps=10 e empty_cameras=1 explicitamente; caso contrário, eles voltam para 50 e 0.

A versão aberta me dá o Pi0.5 completo do artigo?

Não. Ambos suportam apenas o cabeçalho de ação de flow matching. A fase de pré-treino de token discreto com o tokenizador de ação FAST e a previsão de subtarefas de alto nível não foram lançadas, e o cartão lerobot/pi05_base adiciona RL a essa lista, embora o artigo pi0.5 não descreva nenhuma fase de aprendizado por reforço. Você treina uma política de baixo nível condicionada a uma string de linguagem que você fornece, não um modelo que decompõe uma tarefa longa por si só.

Contra quais versões este guia foi escrito?

openpi no main e lerobot 0.6.1, o lançamento desde 3 de agosto de 2026, ambos lidos em 23 de agosto de 2026. Os conjuntos de dados v3.0 chegaram com 0.4.0 em outubro de 2025. 0.6.0 tornou o pacote base leve, então lerobot[pi] sozinho não instala mais uma stack de treino, e moveu a implantação para lerobot-rollout. O RTC em tempo de treino está apenas no main; o treinador hospedado aqui executa 0.5.1.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started