Assuma o controle quando a policy errar, depois treine exatamente essa correção.
Uma policy treinada por Behavior Cloning só conhece os estados visitados pelas suas demonstrações. O DAgger fecha essa lacuna com dados dos estados que a própria policy alcança. A AY-Robots roda o loop completo em um SO-100: rodar um checkpoint, assumir o controle no meio da execução, manter os episódios corrigidos, montar a mistura e continuar o treinamento a partir do checkpoint que você acabou de rodar.
- HG-DAgger, com controle humano
- SO-100 / SO-101
- ACT, SmolVLA, Pi0, GR00T N1.5 / N1.7
- Taxa de intervenção por rodada
Por que uma policy treinada faz algo que nunca foi demonstrado
Behavior Cloning trata o controle como aprendizado supervisionado comum: observação na entrada, alvo de junta na saída, ajustado aos frames que uma pessoa gravou. Isso só é válido enquanto o robô permanece nos estados que essa pessoa visitou, e ele não permanece. Uma garra que fecha quarenta milissegundos cedo demais desloca o cubo dois milímetros da pose demonstrada. A observação seguinte é uma que o conjunto de treino não contém, logo a ação ali é uma extrapolação, e o estado seguinte a esse fica ainda mais distante. A distribuição de treino e a distribuição que a policy aprendida realmente induz são duas coisas diferentes, e a segunda se afasta da primeira à medida que o episódio avança.
Ross, Gordon e Bagnell descreveram exatamente esse fracasso em 2011 e quantificaram o dano: um classificador que erra com probabilidade e sob a distribuição do especialista pode cometer da ordem de T ao quadrado vezes e erros ao longo de um horizonte de T passos sob a distribuição que ele mesmo induz, porque um erro produz observações que o especialista nunca gerou, e os erros se acumulam. A solução deles é o algoritmo do qual esta página trata: rodar a policy atual, coletar labels do especialista para os estados que ela visita, agregá-los a tudo que já foi coletado, retreinar, repetir. Mais demonstrações do mesmo tipo não ajudam, porque reamostram a mesma distribuição. Labels sobre os estados que a policy alcança ajudam. A variante implementada aqui é com controle humano (HG-DAgger, Kelly et al.): a policy mantém o controle até que uma pessoa decida que algo está errado e assuma, de modo que correções só surgem onde são necessárias, e o braço nunca é levado a um estado que o operador não permitiria.
- Behavior Cloning só vale para a distribuição de estados na qual foi treinado.
- O erro se autoamplifica: um pequeno desvio gera um estado desconhecido, que gera um desvio maior.
- O remédio não são mais demonstrações, e sim labels sobre os estados que a própria policy alcança.
- Controle humano significa que o operador decide quando intervir, não uma pontuação de autonomia.
Por que o erro se acumula
Arraste o horizonte. Sob Behavior Cloning, o custo extra esperado cresce aproximadamente com o quadrado do número de passos, porque cada erro produz estados que as demonstrações nunca cobriram; um loop de agregação mantém esse crescimento próximo do linear (Ross et al., 2011).
Curvas ilustrativas a partir dos limites de Ross et al. (2011), não medições do seu robô. O que importa é a forma, não os números.
Uma rodada de DAgger em seis passos
É assim que o loop realmente roda na plataforma, não um esquema. Cada passo abaixo corresponde a um controle no cockpit.
Percorra o loop
Os mesmos seis passos, um de cada vez, com o que acontece no braço e no dataset em cada um deles.
Rodar a policy e gravar
Inicie uma execução de inferência com um checkpoint que você treinou. A execução é gravada enquanto acontece, com o texto da tarefa da própria execução, de modo que os frames sirvam depois como dados de treino, e não apenas como um vídeo para assistir.
Assumir o controle e corrigir
No momento em que o braço fizer algo errado, clique em Assumir controle. O runner pausa e o braço é seu. Com um braço leader, ele primeiro se move até a pose do follower e só depois transfere o controle; com entrada por teclado ou slider, escolhida no início da execução, a retomada já é manual desde o começo. Corrija o movimento e devolva o controle à policy. Os frames gravados durante a retomada são marcados como intervenção automaticamente.
Triagem da execução
Decida, execução por execução, o que ela foi: registrar como correção, manter como execução de avaliação ou descartar. Os frames congelados ao redor de uma transferência permanecem no diretório raw e nunca entram no dataset.
Sincronizar o dataset de correções
As correções se acumulam em um dataset de correções por policy e vão para o seu bucket pela sincronização automática na nuvem. Nesse ponto nada é mesclado a nada; as correções são, por enquanto, apenas um dataset à parte.
Montar a mistura você mesmo
Use Montar dataset para construir o conjunto de treino da próxima rodada: o dataset original mais as correções, com episódios escolhidos explicitamente por origem. O resultado é um dataset comum, que sincroniza e treina como qualquer outro. Nada é misturado nos bastidores, e nenhum dado de simulação é adicionado automaticamente.
Continuar o treinamento a partir do checkpoint
Treine o dataset montado com Continuar a partir de checkpoint em vez de partir do modelo base, de modo que a rodada comece a partir da policy que você acabou de rodar. Para ser preciso: isso inicializa os pesos a partir desse checkpoint, não é uma retomada do otimizador.
O que a plataforma tira das suas mãos
Cada item aqui é um passo do loop que você, de outra forma, teria que construir e manter sozinho.
Retomada sem braço leader
Escolha entrada por teclado ou slider no início da execução e você já pode corrigir só com um laptop. Os ajustes de teclado são limitados no servidor a dois graus por junta e quatro na garra; os alvos de slider são absolutos, e o servidor move no máximo seis graus na direção deles por chamada. Os limites são aplicados pelo servidor, não pela interface, então uma tecla travada não consegue jogar o braço para fora do lugar.
Documentação de teleoperaçãoIntervenções marcadas por frame
Todo frame gravado enquanto você segura o controle do braço carrega uma marca de intervenção, e a coluna action carrega a pose completa comandada. Você não mantém uma coluna de flag manualmente nem a alinha aos índices de frame depois.
Formato de dataset do LeRobotTriagem: correção, avaliação ou lixeira
Cada execução recebe uma decisão no cartão de salvar. Execuções de correção alimentam a próxima rodada de treino, execuções de avaliação ficam fora do treino e continuam sendo uma medição limpa, e execuções ruins somem em vez de contaminar a mistura silenciosamente.
Sessões e episódiosMonte a mistura de forma explícita
O conjunto de treino da rodada n é montado por você: dataset original mais correções, episódios selecionados por origem. Sem mistura automática, sem dados de simulação escondidos, e o resultado montado se comporta como qualquer outro dataset.
DatasetsContinue a partir de um checkpoint
Aponte uma execução de treino para o checkpoint que você acabou de rodar em vez do modelo base, de modo que cada rodada comece onde a anterior terminou. Só os pesos são inicializados; o estado do otimizador não é restaurado, por isso vale tratar a primeira rodada como um teste de viabilidade.
TreinamentoGPUs alugadas por rodada
ACT e SmolVLA em uma 4090, Pi0 e GR00T N1.5 ou N1.7 em uma A100 com 80 GB. Você inicia uma rodada, o pod sobe, os checkpoints chegam no seu bucket, e você paga pelas horas que a rodada levou.
Preços de GPUPlaneje suas rodadas
A taxa de intervenção é a métrica de progresso do loop: frames corrigidos dividido pelos frames da execução. Defina o ponto de partida e quanto cada rodada melhora, e veja quantas rodadas são necessárias para chegar aonde você quer.
| Rodada | Taxa de intervenção | Frames corrigidos |
|---|---|---|
| 1 | 30.0 % | 900 |
| 2 | 22.5 % | 675 |
| 3 | 16.9 % | 506 |
| 4 | 12.7 % | 380 |
| 5 | 9.5 % | 285 |
| 6 | 7.1 % | 214 |
| Σ | 2 960 | |
Um modelo, não uma previsão. Rodadas reais são irregulares, e uma rodada que não move a taxa não trouxe nada; esse é exatamente o sinal que vale observar.
Construir o loop você mesmo ou rodar aqui
Nada disso é impossível de fazer à mão. É uma questão de quantas noites vão para infraestrutura em vez de para rodadas, e há uma linha em que fazer sozinho é claramente a resposta melhor.
| Passo do loop | Montar à mão | Na AY-Robots |
|---|---|---|
| Assumir o controle no meio da execução | Um braço leader, ou seu próprio código no barramento dos servos. Retomada por teclado e slider, incluindo limites seguros, é algo que você escreve e depois depura em hardware real. | Braço leader, teclado ou sliders, escolhidos no início da execução. Os limites de ângulo ficam no servidor. |
| Marcar intervenções | Você adiciona a coluna de flag, mantém ela alinhada ao índice de frame e revisa tudo de novo a cada mudança no formato de gravação. | Todo frame gravado durante uma retomada é marcado automaticamente, com a pose comandada na coluna action. |
| Organizar as execuções | Convenções de diretório e scripts de shell. Os frames congelados ao redor de uma transferência são seus para encontrar e filtrar. | Uma decisão por execução no cartão de salvar. Os frames de transferência ficam no diretório raw. |
| Construir o dataset misturado | Scripts de merge por versão de formato. Manter índices de episódio, metadados e referências de vídeo consistentes é a parte tediosa. | Montagem a partir do original mais correções com seleção de episódios por origem; o resultado é um dataset normal. |
| Começar a próxima rodada a partir da última policy | Você mesmo conecta o checkpoint ao trainer, e também pode restaurar o estado do otimizador se quiser uma retomada de verdade. | Um campo para o checkpoint base. Só pesos: inicializa a partir do checkpoint, não é uma retomada do otimizador. |
| Controle sobre o loop de treino | Total. Sua loss, seu cronograma, suas ablações, sua instrumentação, nenhuma plataforma no caminho. Se a pergunta de pesquisa é o próprio loop de treino, faça à mão. | Um caminho fixo com uma lista definida de policies e os hiperparâmetros que o formulário expõe, não código arbitrário. |
Os artigos em que isso se baseia
Leia antes de discordar do loop. Cada link vai para a página do abstract, não para um paywall.
- A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
Stephane Ross, Geoffrey J. Gordon, J. Andrew Bagnell · 2011 · AISTATS 2011 (PMLR 15)
O artigo original do DAgger: apresenta o problema do erro cumulativo, dá o limite de T ao quadrado para a abordagem puramente supervisionada e propõe agregar dados dos estados que o próprio aprendiz visita.
- HG-DAgger: Interactive Imitation Learning with Human Experts
Michael Kelly, Chelsea Sidrane, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1810.02890, ICRA 2019
A variante com controle humano: o especialista decide quando assumir o controle, em vez de ser consultado sobre estados escolhidos pela policy; esse é o modo implementado nesta plataforma.
- EnsembleDAgger: A Bayesian Approach to Safe Imitation Learning
Kunal Menda, Katherine Driggs-Campbell, Mykel J. Kochenderfer · 2019 · arXiv:1807.08364, IROS 2019
A outra forma de controlar intervenções: divergência entre um ensemble como sinal de confiança para quando o aprendiz pode agir sozinho. Contraste útil em relação a deixar uma pessoa julgar.
- ThriftyDAgger: Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning
Ryan Hoque, Ashwin Balakrishna, Ellen Novoseller, Albert Wilcox, Daniel S. Brown, Ken Goldberg · 2021 · CoRL 2021
Trata a atenção humana como o recurso escasso e só pede ajuda em estados novos ou arriscados, o enquadramento certo quando uma pessoa supervisiona o braço a tarde inteira.
- DART: Noise Injection for Robust Imitation Learning
Michael Laskey, Jonathan Lee, Roy Fox, Anca Dragan, Ken Goldberg · 2017 · CoRL 2017
A alternativa honesta: em vez de corrigir a policy em tempo real, perturbar as demonstrações para que o especialista mostre a recuperação. Vale conhecer antes de se comprometer com intervenções.
- Interactive Imitation Learning in Robotics: A Survey
Carlos Celemin, Rodrigo Perez-Dattari, Eugenio Chisari, Giovanni Franzese, Leandro de Souza Rosa, Ravi Prakash, Zlatan Ajanovic, Marta Ferraz, Abhinav Valada, Jens Kober · 2022 · arXiv:2211.00600
O mapa da área: quais formas de feedback humano existem, quais interfaces as transportam e onde a intervenção ao estilo DAgger se encaixa entre elas.
- Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware
Tony Z. Zhao, Vikash Kumar, Sergey Levine, Chelsea Finn · 2023 · arXiv:2304.13705
O artigo do ACT. Action chunking é o motivo pelo qual um braço barato consegue ser controlado por uma policy de imitação, e o ACT é a policy mais rápida para iterar uma rodada de DAgger.
- π0: A Vision-Language-Action Flow Model for General Robot Control
Kevin Black, Noah Brown, Danny Driess, Adnan Esmail, Michael Equi, Chelsea Finn et al. · 2024 · arXiv:2410.24164
Um VLA de flow matching construído sobre um modelo de visão e linguagem pré-treinado, e um dos checkpoints que você pode ajustar por fine-tuning aqui; o artigo é explícito ao dizer que novas habilidades vêm do fine-tuning, não do modelo base sozinho.
Perguntas que as pessoas realmente fazem
Preciso de um braço leader para o DAgger?
Não. Escolha entrada por teclado ou slider no início da execução e a retomada já é manual desde o primeiro frame, controlada pelo navegador. Um braço leader é mais agradável para movimentos finos, e é o modo em que o braço se alinha sozinho antes de transferir o controle, mas o loop roda sem ele.
Quantas rodadas de DAgger eu preciso?
Não existe um número fixo honesto. Observe a taxa de intervenção: se ela não cair de uma rodada para a outra, essa rodada não trouxe nada, e o problema geralmente está na configuração da tarefa, nas câmeras ou no dataset original, não no número de rodadas.
Isso é DAgger de verdade ou algo mais solto?
É HG-DAgger, a variante com controle humano. O DAgger clássico consulta o especialista sobre estados escolhidos pela policy, incluindo estados aos quais nenhum operador sensato deixaria um braço real chegar. Aqui, uma pessoa decide quando intervir, e só esses trechos viram labels.
Eu treino só nas correções?
Não, e você não deveria. Treinar só nas correções produz uma policy que só sabe se recuperar. O dataset montado é o dado original mais as correções, com os episódios de cada origem escolhidos explicitamente.
Continuar de um checkpoint retoma a execução de treino?
Isso inicializa os pesos a partir desse checkpoint. O estado do otimizador não é restaurado, então, em sentido estrito, não é uma retomada. Na prática, os pesos são o que carrega o comportamento aprendido entre as rodadas, mas vale saber qual dos dois você está obtendo.
Como a taxa de intervenção é calculada?
Frames marcados como intervenção divididos pelo total de frames da execução. Ela aparece no status de retomada, e é o único número que vale a pena anotar por rodada, junto com o checkpoint rodado e a mistura treinada.
Com quais policies esse loop funciona?
ACT, SmolVLA, Pi0 e GR00T N1.5 ou N1.7. O loop em si é agnóstico à policy, porque só produz datasets e checkpoints; na prática, o que muda entre elas é quanto tempo uma rodada leva e qual GPU ela precisa.
Dá para fazer isso sem ter um robô?
Dá para gravar e treinar sem um robô, comprando datasets no marketplace ou contratando operadores, e dá para pilotar um SO-100 real pelo navegador na página ao vivo. Uma rodada de DAgger é diferente: precisa de um braço que você possa assumir no meio da execução, então, para o loop em si, você precisa de hardware na sua própria mesa.
A real SO-100, live in the browser. No signup, no hardware needed.
Rode sua primeira rodada esta semana
Instale o cliente, rode um checkpoint que você já tem e assuma o controle na primeira vez que o braço passar do cubo. Essa única execução já é uma rodada de DAgger em miniatura: tudo depois disso é montar a mistura e pagar pelas horas de GPU.