A matriz de treinamento AY-Robots com cinco linhas de políticas e quatro colunas de braços robóticos, cada célula ligada a um guia de treinamento de modelo e braço específico
ACTSO-100lerobotaprendizado por imitaçãotreinamento de política

Como Treinar ACT no SO-100 do Zero

AY-Robots ResearchAugust 23, 202616 min de leitura

Treine um Action Chunking Transformer do zero em um SO-100 com lerobot: a configuração act, chunk_size e n_action_steps, o cronograma de 100000 passos, inferência de 20 ms.

ACT é a exceção entre as políticas SO-100. GR00T N1.7 e N1.5 começam de nvidia/GR00T-N1.7-3B e nvidia/GR00T-N1.5-3B, Pi0.5 de lerobot/pi05_base. ACT começa do zero: não há checkpoint base, porque não é um modelo de fundação. É um transformador de aproximadamente 80 milhões de parâmetros que você treina do zero em uma única tarefa, no seu braço, sob sua iluminação.

É também por isso que ele executa uma etapa de controle em 20 ms, enquanto um VLA de 3 bilhões de parâmetros precisa de 152 a 485 ms, e custa de 1 a 3 USD por execução em vez de 4 a 12. Este guia percorre o caminho manual com lerobot em um SO-100: gravação, a configuração act, o que chunk_size e n_action_steps controlam, o cronograma de 100000 etapas, o rollout. Em seguida, o mesmo trabalho em AY-Robots, incluindo onde a plataforma não ajuda.

O que você precisa saber

  • ACT treina do zero: sem modelo base, sem pré-treinamento, sem entrada de linguagem. Um checkpoint, uma tarefa.
  • O artigo: cerca de 80 M parâmetros, aproximadamente 5 horas em uma RTX 2080 Ti de 11 GB, 0.01 s de inferência.
  • Padrões do lerobot: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000.
  • Em AY-Robots: 20 ms por etapa, o mais rápido dos cinco. Mínimo de 50 episódios, LeRobot v3.0, uma placa de 24 GB, 1 a 3 USD por execução.
  • Ele vence em uma tarefa que já viu e perde no momento em que você deseja condicionamento de linguagem.
Quais versões este descreve

Verificado em 23 de agosto de 2026 contra lerobot 0.6.x: pyproject.toml on main reads version = "0.6.2", newest tag v0.6.1, 3 August 2026. Um tutorial começando com python lerobot/scripts/train.py antecede os pontos de entrada de console lerobot-train, lerobot-record e lerobot-rollout.

O que ACT realmente é

Action Chunking with Transformers vem do artigo ALOHA, Aprendizagem de Manipulação Bimanual Detalhada com Hardware de Baixo Custo, por Zhao, Kumar, Levine e Finn, arXiv, 23 de abril de 2023. O equipamento grava a 50 Hz com quatro webcams transmitindo 480x640 a 30 fps: duas nas garras, uma superior, uma frontal. O resumo afirma seis habilidades com 80 a 90 por cento de sucesso, entre elas abrir um copo de condimento translúcido e encaixar uma bateria, a partir de 10 minutos de demonstrações.

O corpo é mais útil ao planejar uma sessão de gravação: 50 demonstrações por tarefa, exceto Thread Velcro com 100, o que representa 10 a 20 minutos de dados e 30 a 60 minutos de tempo real (wall-clock time) uma vez que as reinicializações são contabilizadas. O sucesso também não é uniforme: Thread Velcro termina em 20 por cento, Put On Shoe em 92, Cup Open 84, Prep Tape 64.

HiperparâmetroArtigo ALOHA, Tabela IIIlerobot no main
taxa de aprendizado1e-5optimizer_lr = 1e-5
tamanho do lote8batch_size = 8, in TrainPipelineConfig not ACTConfig
camadas do codificador / decodificador4 / 7n_encoder_layers = 4 / n_decoder_layers = 1
tamanho do chunk k100chunk_size = 100
dimensão latente de zausente; Fig. 11 mostra uma projeção de 32 para 512latent_dim = 32
agregação temporalausente; --temporal_agg no código de referênciatemporal_ensemble_coeff = None
A linha da camada do decodificador não é um erro de digitação

O artigo lista 7 camadas de decodificador, o lerobot envia 1, deliberadamente. O comentário em configuration_act.py diz que a implementação original tem um bug que significa que apenas a primeira camada é usada, citando o problema 25 em tonyzhaozh/act: o cabeçalho de ação lê hs[0], então todas as sete camadas são executadas, mas apenas a primeira saída atinge a previsão. Esse problema está aberto e sem resposta desde 23 de abril de 2024. O lerobot corresponde ao comportamento que produziu os resultados publicados, não ao número impresso. Aumente --policy.n_decoder_layers e você treinará um modelo que o artigo nunca avaliou.

O agrupamento de ações é a ideia principal

A clonagem comportamental comum mapeia uma observação para uma ação, e os erros se acumulam: um desvio coloca o braço fora da distribuição, produzindo uma ação pior, e trinta passos depois a garra não está nem perto do objeto. Agrupamento de ações prevê k ações de uma vez e as executa, diminuindo o horizonte efetivo por um fator de k. Também lida com um incômodo específico de dados humanos: teleoperadores pausam, e uma política markoviana de passo único não consegue modelar uma pausa que depende do que veio antes.

O artigo abla k em vez de afirmá-lo. Com o agrupamento temporal desativado, em média em quatro configurações, o sucesso aumenta de 1 por cento em k = 1 para 44 por cento em k = 100, depois diminui em 200 e 400 à medida que a política se aproxima do controle em malha aberta. Essa curva é o motivo pelo qual o padrão é 100.

  • chunk_size: quantas ações futuras o decodificador prevê por passagem direta. Padrão 100.
  • n_action_steps: quantas delas você executa antes de consultar novamente. Padrão 100, então o lerobot executa o chunk inteiro em loop aberto.
  • O lerobot valida n_action_steps <= chunk_size e levanta um ValueError se você inverter a ordem.

O que importa operacionalmente é o chunk_size dividido pela taxa de quadros. A 30 fps, que os exemplos SO-100 do lerobot usam, um chunk de 100 compromete cerca de 3,3 segundos a partir de uma observação. Se a tarefa precisar de uma correção dentro dessa janela, diminua n_action_steps, não chunk_size: você mantém a previsão longa e reobserva com mais frequência.

bash
# predict 100 actions, re-query after 25 of them (about 0.8 s at 30 fps)
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --policy.chunk_size=100 \
  --policy.n_action_steps=25 \
  --policy.device=cuda
Encurtando a parte executada do chunk sem encurtar a previsão.
A armadilha do ensembling temporal

Defina --policy.temporal_ensemble_coeff e o lerobot exigirá n_action_steps = 1, levantando um NotImplementedError caso contrário. O ensembling consulta a política a cada passo de tempo e combina as previsões sobrepostas para esse passo de tempo com pesos w_i = exp(-m * i), sendo w_0 atribuído ao mais antigo. O artigo indica 3,3 por cento para ACT: real, mas modesto, e multiplica a contagem de inferências pelo comprimento do chunk. Acessível a 20 ms por passo, não a 485 ms. Veja latência de inferência.

Quando o ACT supera um modelo de base

As cinco políticas treináveis lado a lado, com os números que a AY-Robots mede e usa para dimensionar a GPU que aluga.

PolíticaFamíliaParâmetrosPor passoNível de GPUMín. episódiosConjunto de dados
ACTTransformer de fragmentação, do zero~80 M20 msRTX 4090 / 24 GB50LeRobot v3.0
SmolVLAVLA Compacto~450 M245 msRTX 4090 / 24 GB30LeRobot v3.0
GR00T N1.7Base VLA, cabeça de difusão~3 B (~40 M treinados)152 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
GR00T N1.5Base VLA, predecessor~3 B165 msA100 / H100 80 GB50LeRobot v2.0 or v2.1
Pi0.5VLA de correspondência de fluxo, ver correspondência de fluxo~3 B, PaliGemma backbone485 msA100 / H100 80 GB50LeRobot v3.0
A página de políticas da AY-Robots mostrando uma tabela de comparação de ACT, SmolVLA, GR00T N1.5, GR00T N1.7 e Pi0.5 com contagens de parâmetros, requisitos de GPU, latência de inferência e contagens mínimas de episódios
A tabela /policies: ACT tem a menor contagem de parâmetros e o menor tempo de passo.
Treinando ACT do zero
Vantagens
  • 20 ms por passo de ação, o mais rápido dos cinco, em uma placa de 24 GB, não uma A100.
  • 1 a 3 USD por execução contra 4 a 12 para a classe 3 B.
  • Preciso em trabalhos com muito contato que ele viu: 88 e 96 por cento em Slide Ziploc e Slot Battery, onde métodos anteriores nunca passaram da primeira fase.
Compromissos
  • Sem condicionamento de linguagem: a string da tarefa é ignorada, então um checkpoint é uma tarefa.
  • Sem conhecimentos prévios semânticos: tudo o que ele sabe veio dos seus 50 episódios.
  • Generalização restrita: mova uma câmera e você estará retreinando.
  • Falha silenciosamente: a perda diminui, o braço não faz nada, os logs não dizem nada.
  • A vantagem de velocidade só ajuda se a inferência estiver próxima dos servos.

Escolha ACT quando a tarefa e a cena são fixas e o movimento deve ser rápido e preciso. Escolha um modelo de visão-linguagem-ação quando um checkpoint deve cobrir várias instruções. Duas páginas abordam a decisão diretamente: ACT vs SmolVLA e ACT vs GR00T N1.7. Para benchmarks publicados, a entrada da arena ACT vincula cada número à sua fonte.

O que você precisa antes de começar

Um braço seguidor, um braço líder para teleoperação, pelo menos uma câmera, uma GPU de 24 GB. ACT lê apenas imagens e posições de juntas. Duas câmeras é o ideal: uma visão frontal fixa para onde as coisas estão, uma câmera de pulso para o que o efetor final está prestes a tocar, como no ALOHA.

BraçoServosTensãoCusto das peçasStatus
SO-100Feetech STS32157.4 V~110 to 150 EURSuporte completo, braço de referência
SO-101Feetech STS32157.4 V~130 to 170 EURSuporte completo
Koch v1.1Dynamixel XL330 / XL4305 V and 12 V rails~250 to 350 EURCompatível
LeKiwiFeetech STS3215 (arm)7.4 V arm, 12 V base~400 to 500 EURCompatível
7.4 V, não 12 V

Os SO-100 e SO-101 utilizam servos Feetech STS3215 em um trilho de 7.4 V. Alimentá-los com 12 V os destrói, silenciosamente o suficiente para que as pessoas culpem o software primeiro, e uma fonte de 12 V da Koch se encaixa fisicamente em uma placa SO-100. Verifique a etiqueta. Sintomas: servo não responde, braço treme e depois cede. Veja também SO-100 vs SO-101.

Do braço nu ao conjunto de dados gravado

O fluxo abaixo é lerobot 0.6.x. Ignore-o se você já tiver um braço calibrado e um conjunto de dados. Caso contrário, o guia de primeiros passos do SO-100 cobre a montagem, o passo a passo de gravação cobre a captura e a documentação do conjunto de dados o formato.

  1. 1
    Instalar o lerobot com os extras corretos

    A gravação requer `core_scripts`, o treinamento `training`, os servos Feetech `feetech`. Python 3.12+.

    bash
    conda create -y -n lerobot python=3.12
    conda activate lerobot
    conda install ffmpeg -c conda-forge
    
    pip install 'lerobot[core_scripts,training,feetech]'
    lerobot-info
  2. 2
    Encontrar a porta USB de cada braço

    Execute-o com ambos os braços conectados, desconectando um quando solicitado. No Linux, pode ser necessário abrir as permissões do nó.

    bash
    lerobot-find-port
    # on Linux, if the port exists but is unreadable:
    sudo chmod 666 /dev/ttyACM0
  3. 3
    Definir os IDs dos motores e a taxa de transmissão

    No SO-100, isso acontece antes da montagem: ao contrário do SO-101, os conectores ficam inacessíveis depois de montado. O script percorre o barramento um motor de cada vez a partir da garra, escrevendo IDs na EEPROM.

    bash
    lerobot-setup-motors \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0
    
    lerobot-setup-motors \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1
  4. 4
    Calibrar ambos os braços

    Defina cada junta para o meio de seu alcance, pressione Enter e, em seguida, mova cada uma por todo o seu alcance. A calibração permite que uma política treinada em um braço seja executada em outro. Reutilize o mesmo id.

    bash
    lerobot-calibrate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower
    
    lerobot-calibrate \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader
  5. 5
    Teleoperar uma vez com as câmeras ligadas

    A regra geral do lerobot: você deve ser capaz de realizar a tarefa olhando apenas para as imagens da câmera. Se você não conseguir, o ACT também não conseguirá. Isso detecta mais conjuntos de dados ruins do que a depuração posterior.

    bash
    lerobot-teleoperate \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --display_data=true
  6. 6
    Gravar 50 episódios

    50 é o mínimo da AY-Robots e o que o ALOHA usava por tarefa. O lerobot aconselha 10 por localização de objeto, câmeras fixas, agarre consistente. n encerra um episódio, r regrava, q para e codifica.

    bash
    HF_USER=$(NO_COLOR=1 hf auth whoami | awk -F': *' 'NR==1 {print $2}')
    
    lerobot-record \
        --robot.type=so100_follower \
        --robot.port=/dev/ttyACM0 \
        --robot.id=my_follower \
        --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
        --teleop.type=so100_leader \
        --teleop.port=/dev/ttyACM1 \
        --teleop.id=my_leader \
        --dataset.repo_id=${HF_USER}/so100_cube \
        --dataset.num_episodes=50 \
        --dataset.single_task="Grab the black cube and put it in the bin" \
        --display_data=true
A página do tutorial de gravação da AY-Robots explicando como capturar um conjunto de dados no formato LeRobot a partir de uma sessão de teleoperação
O tutorial de gravação. O cliente de desktop escreve o mesmo layout que o lerobot-record.
A armadilha que consome um dia: um conjunto de dados inconsistente

O ACT não tem conhecimentos prévios para recorrer, então cada inconsistência se torna permanente. As três mais custosas: uma câmera ligeiramente movida entre o episódio 20 e 21, luz que mudou porque você gravou metade do conjunto à tarde, um agarre feito de duas maneiras. Cada uma resulta em uma curva de perda com aparência perfeita e um braço que vai para o lugar errado. Veja a perda diminui, a política não faz nada, a política só funciona em uma configuração e coleta de dados de treinamento de alta qualidade.

Antes do treinamento, reproduza pelo menos cinco episódios. O formato de conjunto de dados LeRobot armazena fluxos de câmera, estados de junta e ações por episódio, e a reprodução empurra essas ações de volta para o braço. Se a reprodução não realizar a tarefa, os dados não a contêm e o treinamento não a inventará.

bash
lerobot-replay \
    --robot.type=so100_follower \
    --robot.port=/dev/ttyACM0 \
    --robot.id=my_follower \
    --dataset.repo_id=${HF_USER}/so100_cube \
    --dataset.episode=0
Reproduzindo o episódio 0. Se isso falhar, pare e grave novamente.

Treinando a política ACT

Este é o comando completo. Tudo o que é específico do ACT já é um padrão, e é por isso que a página ACT do lerobot recomenda começar com eles.

bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/so100_cube \
  --policy.type=act \
  --output_dir=outputs/train/act_so100_cube \
  --job_name=act_so100_cube \
  --policy.device=cuda \
  --wandb.enable=true \
  --policy.repo_id=${HF_USER}/act_so100_cube
O comando de treinamento da documentação do lerobot 0.6.x, em um conjunto de dados SO-100.

--policy.type=act carrega o ACTConfig, que se adapta ao número de motores e câmeras que seu conjunto de dados registrou, então você nunca declara o formato da observação. --wandb.enable=true é opcional e vale a pena: a curva de perda é o único sinal barato em uma execução de 100000 passos. O agendamento vem da configuração de treinamento do lerobot, não do ACTConfig: 100000 passos, lote 8, seed 1000, um checkpoint a cada 20000 passos, com registro a cada 200.

Uma execução completa deixa cinco diretórios de checkpoint, de 020000 a 100000, mais um último symlink. Mantenha todos eles: a melhor política muitas vezes não é a última.

ConfiguraçãoPadrão lerobotFormulário ACT AY-RobotsComentário
tamanho do lote88Diminua-o primeiro se atingir os limites da VRAM.
taxa de aprendizado1e-51e-5O mesmo que no artigo ALOHA.
passos máximos100000100000Aproximadamente onde um conjunto de 50 episódios para de melhorar.
acumulação de gradiente11, não se aplicaAltere o tamanho do lote em vez disso.
semente1000expostoO ponto de entrada tyro do GR00T não tem semente; as execuções ACT são as reproduzíveis.
chunk_size / n_action_steps100 / 100100 / 100, editávelHorizonte de previsão e execução. Diminua o segundo, não o primeiro.
frequência de checkpoint20000não expostosaveSteps é um controle do GR00T aqui.
Falta de memória é um problema de tamanho de lote, não de placa

ACT com tamanho de lote 8 e duas câmeras 640x480 se encaixa confortavelmente em 24 GB. Ele para de se encaixar quando as pessoas aumentam o tamanho do lote para velocidade, ou o alimentam com os quadros 1920x1080 que um exemplo de gravação do lerobot mostra. Dois backbones ResNet-18 a 1080p têm um perfil de memória muito diferente. Reduza --batch_size para 4 antes de alugar uma placa maior. Veja falta de memória no treinamento.

Duração: cerca de 5 horas em uma RTX 2080 Ti de 11 GB no artigo, algumas horas para 100 mil passos por página ACT do lerobot, 2 a 5 horas na camada de 24 GB da AY-Robots. Não o interrompa. O README do repositório de referência diz que uma política instável ou com pausas geralmente só precisa de mais treinamento, porque o sucesso e a suavidade continuam a melhorar depois que a perda se estabiliza: para dados do mundo real, são necessários pelo menos 5000 épocas, ou 3 a 4 vezes o comprimento novamente após o platô.

bash
lerobot-train \
  --config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
  --resume=true
Retomando uma execução interrompida a partir do seu último checkpoint.

Executando a política treinada no braço

A implantação usa lerobot-rollout. As chaves da câmera devem corresponder às gravadas: uma política treinada em front e wrist não aceitará cam0 e cam1, e rename_map não ajuda, pois precisa de um checkpoint pré-treinado. A string da tarefa pode ser omitida; o próprio exemplo do lerobot a marca como opcional para ACT.

bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_so100_cube \
  --robot.type=so100_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.id=my_follower \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}, wrist: {type: opencv, index_or_path: 1, width: 640, height: 480, fps: 30} }" \
  --display_data=true \
  --duration=60
Rollout autônomo sem gravação. Use --strategy.type=sentry para gravar os episódios de avaliação.
Este comando foi renomeado recentemente, então tutoriais antigos discordam

A avaliação costumava ser executada através de lerobot-record --policy.path=.... Na versão 0.6.x, é lerobot-rollout com um seletor --strategy.type: base, sentry (gravação com upload automático), highlight (buffer circular salvo por tecla), dagger (humano no loop) e episodic. Em 23 de agosto de 2026, a página de documentação do ACT ainda diz "usando o comando lerobot-record" diretamente acima de um bloco que executa lerobot-rollout. Siga o comando, não a frase.

Para fixar um checkpoint em vez do modelo final, adicione --policy.pretrained_revision. Isso exige que a execução tenha começado com --save_checkpoint_to_hub=true, desativado por padrão: sem ele, o lerobot envia o modelo final e nada mais. Com ele, cada checkpoint é marcado com seu passo preenchido com zeros, então --policy.pretrained_revision=060000 recupera o de 60000 passos. Compará-lo com o de 100000 no braço real é o experimento mais barato disponível.

Duas rotas para o mesmo checkpoint

Tudo acima é a rota manual e funciona. A rota da plataforma troca controle por não possuir uma GPU ou um ambiente Python.

  1. Instale o lerobot 0.6.x com core_scripts, training, feetech, ffmpeg.
  2. Encontre portas, defina IDs de motor, calibre ambos os braços, grave 50 episódios.
  3. Reproduza alguns episódios para confirmar que os dados contêm a tarefa.
  4. Alugue ou possua uma GPU de 24 GB, combine CUDA e PyTorch, execute lerobot-train --policy.type=act.
  5. Espere algumas horas, depois execute lerobot-rollout na máquina junto ao braço.
bash
# the two commands that matter, end to end
lerobot-record --robot.type=so100_follower --robot.port=/dev/ttyACM0 \
  --teleop.type=so100_leader --teleop.port=/dev/ttyACM1 \
  --dataset.repo_id=${HF_USER}/so100_cube --dataset.num_episodes=50 \
  --dataset.single_task="Grab the black cube"

lerobot-train --dataset.repo_id=${HF_USER}/so100_cube --policy.type=act \
  --output_dir=outputs/train/act_so100_cube --policy.device=cuda
O que esta rota oferece

Controle total: edite configuration_act.py, adicione uma câmera, faça um fork do treinador. Para pesquisa, em vez de entregar uma tarefa, uma plataforma é uma distração.

A matriz de treinamento AY-Robots com cinco linhas de políticas e quatro colunas de braços robóticos, onde cada célula se liga ao guia de treinamento específico para essa combinação de modelo e braço
A matriz em /train. A linha ACT contra a coluna SO-100 é o guia deste artigo.

O que realmente dá errado

Quase nenhuma da dificuldade está no comando de treinamento. Ela está nas coisas ao redor, ordenadas pela frequência com que causam problemas na primeira vez.

SintomaCausa comumPágina
lerobot-find-port não mostra nadaPermissões de driver, cabo ou nóbraço não detectado
Câmera ausente no momento da gravaçãoÍndice alterado na reinicialização, ou duas câmeras em um controlador USBcâmera não detectada
Treinamento rejeita o conjunto de dadosACT requer v3.0, GR00T precisa de v2.1conjunto de dados rejeitado como v3
CUDA sem memóriaTamanho do lote aumentado, ou quadros 1080p em vez de 480psem memória no treinamento
A perda parece ótima, o braço não faz nadaOs dados não contêm a tarefa, ou uma câmera se moveua perda diminui, a política não faz nada
Movimento irregular ou uma pausa no meio do episódioSubtreinado, uma paralisação na fronteira do chunk, ou uma chamada de inferência com tempo esgotadopolítica congela no meio do movimento

Duas linhas merecem destaque. O ACT treina no LeRobot v3.0, enquanto o carregador do GR00T falha nele e precisa da v2.1, então um conjunto de dados que treina o ACT pode falhar em uma execução do GR00T. E a última linha tem duas soluções: os autores do ACT respondem ao movimento irregular com mais treinamento, enquanto com n_action_steps em 100, uma paralisação genuína ocorre em um limite de chunk, uma pausa visível a cada 3.3 seconds a 30 fps. Mais duas coisas a saber: uma única junta morta é geralmente um ID de servo que nunca foi escrito, e uma garra que se aproxima mas nunca fecha significa pouca amplitude da garra nas demonstrações. Índice completo: as páginas de modos de falha.

O custo de uma execução

NívelModelosTempo de execuçãoPreço por horaCusto por execução
RTX 4090 / 24 GBACT, SmolVLA2 to 5 hours0.30 to 0.60 USDabout 1 to 3 USD
A100 80 GB / H100GR00T N1.7, GR00T N1.5, Pi0.53 to 6 hours1.20 to 2.00 USDabout 4 to 12 USD

Este é o argumento para começar com ACT mesmo que você queira um VLA mais tarde. Uma execução ACT falha custa o preço de um café e informa em poucas horas se seu conjunto de dados contém a tarefa. Uma execução GR00T falha custa quatro vezes mais pela mesma lição. Passar para GR00T N1.7 ou SmolVLA depois é uma mudança de forma, não uma reconstrução. Contexto: modelos de visão-linguagem-ação, o guia completo do SO-100, treine sua primeira política e aprendizagem por imitação. Sem braço? A página ao vivo transmite um SO-100 real para operar sem precisar se inscrever.

Treine ACT no seu SO-100

O guia para esta combinação exata: padrões, nível de GPU e o custo de uma execução. Escolha o conjunto de dados, o backend aluga a placa e grava os checkpoints.

Abrir o guia de treinamento
Existe um modelo ACT pré-treinado que eu possa ajustar em vez disso?

Não. ACT não tem modelo base; ele só existe depois que você o treina. Isso não é uma falha nas ferramentas, é o que ACT é: o artigo treina uma política do zero por tarefa. Para um checkpoint de fornecedor, use GR00T N1.7 ou Pi0.5.

Quantos episódios eu realmente preciso?

50: o que ALOHA registrou por tarefa (100 para Thread Velcro, a mais difícil) e o mínimo da AY-Robots. lerobot aconselha cerca de 10 por localização de objeto, câmeras fixas, agarre consistente. Cinquenta episódios limpos superam cem onde a câmera se moveu.

Devo mudar chunk_size de 100?

Geralmente não. A ablação sobe de 1 por cento em k = 1 para 44 por cento em k = 100 e diminui depois, então 100 fica perto do topo. Se o braço se comprometer por muito tempo, diminua n_action_steps em vez disso: a 30 fps, 25 reconsultas a cada 0,8 segundos.

Quanto tempo leva uma execução de treinamento e posso pará-la antes?

Duas a cinco horas em uma placa de 24 GB para 100000 passos. Checkpoints são salvos a cada 20000 passos e --resume=true retoma uma execução, então parar antes é seguro. Apenas não na primeira parte plana: a suavidade melhora depois que a perda se estabiliza.

A perda diminuiu e o braço ainda falha. E agora?

Quase sempre o conjunto de dados. Reproduza os episódios gravados no braço: se a reprodução não executa a tarefa, os dados não a contêm. Em seguida, verifique se algo se moveu, especialmente uma câmera. ACT não tem priors, então um empurrão no episódio 21 é permanente.

Ready for high-quality robotics data?

AY-Robots connects your robots to skilled operators worldwide.

Get Started