# ACT (Agrupamento de Ações com Transformers)

ACT é uma **política leve e eficiente para aprendizado por imitação**, especialmente adequada para tarefas de manipulação de alta precisão. É o **primeiro modelo que recomendamos quando você está começando** com o LeRobot, devido ao seu tempo de treinamento rápido, aos requisitos computacionais baixos e ao seu forte desempenho.

  <iframe width="100%" height="415" src="https://www.youtube.com/embed/ft73x0LfGpM" title="LeRobot ACT Tutorial" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen
  >

_Assista a este tutorial da equipe LeRobot para aprender como o ACT funciona: [Tutorial do ACT do LeRobot](https://www.youtube.com/watch?v=ft73x0LfGpM)_

## Visão geral do modelo

Action Chunking with Transformers (ACT) foi introduzido no artigo [Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware](https://arxiv.org/abs/2304.13705) de Zhao et al. A política foi projetada para permitir tarefas de manipulação precisas e ricas em contato usando hardware acessível e dados de demonstração mínimos.

### Por que o ACT é ótimo para iniciantes

O ACT se destaca como um excelente ponto de partida por várias razões:

- **Fast Training**: Treina em poucas horas em uma única GPU
- **Leve**: Apenas ~80M de parâmetros, o que o torna eficiente e fácil de trabalhar
- **Eficiente em dados**: Frequentemente atinge altas taxas de sucesso com apenas 50 demonstrações

### Arquitetura

O ACT utiliza uma arquitetura baseada em transformers com três componentes principais:

1. **Esqueleto de visão**: o ResNet-18 processa imagens de múltiplas perspectivas de câmera
2. **Encoder Transformer**: Sintetiza informações de recursos da câmera, posições das articulações e uma variável latente aprendida
3. **Decoder de Transformer**: Gera sequências de ações coerentes usando atenção cruzada

A política recebe como entrada:

- Várias imagens RGB (por exemplo, de câmeras de pulso, câmeras frontais/superiores)
- Posições atuais das juntas do robô
- Uma variável de estilo latente `z` (aprendida durante o treinamento, definida como zero durante a inferência)

E gera um bloco de `k` sequências de ações futuras.

## Requisitos de instalação

1. Instale o LeRobot seguindo nosso [Guia de Instalação](./installation).
2. O ACT está incluído na instalação base do LeRobot, portanto, nenhuma dependência adicional é necessária!

## Treinamento de ACT

O ACT funciona perfeitamente com o pipeline de treinamento padrão do LeRobot. Aqui está um exemplo completo para treinar o ACT no seu conjunto de dados:

```bash
lerobot-train \
  --dataset.repo_id=${HF_USER}/your_dataset \
  --policy.type=act \
  --output_dir=outputs/train/act_your_dataset \
  --job_name=act_your_dataset \
  --policy.device=cuda \
  --trackio.enable=true \
  --policy.repo_id=${HF_USER}/act_policy
```

### Dicas de Treinamento

1. **Comece com os padrões**: os hiperparâmetros padrão do ACT funcionam bem para a maioria das tarefas
2. **Duração do treinamento**: Espere algumas horas para 100 mil etapas de treinamento em uma única GPU
3. **Tamanho do lote**: Comece com tamanho de lote 8 e ajuste com base na memória da sua GPU

### Treinar usando o Google Colab

Se o seu computador local não possui uma GPU potente, você pode utilizar o Google Colab para treinar seu modelo seguindo o [notebook de treinamento ACT](./notebooks#training-act).

## Avaliando o ACT

Quando o treinamento estiver concluído, você pode avaliar sua política ACT no seu robô com `lerobot-rollout`. O comando abaixo executa a política por 60 segundos sem gravar nada (`--task` pode ser omitido para ACT). Consulte [Implantação da Política](./inference) para estratégias que gravam episódios de avaliação.

```bash
lerobot-rollout \
  --strategy.type=base \
  --policy.path=${HF_USER}/act_policy \
  --robot.type=so101_follower \
  --robot.port=/dev/ttyACM0 \
  --robot.cameras="{ front: {type: opencv, index_or_path: 0, width: 640, height: 480, fps: 30}}" \
  --display_data=true \
  --task="Your task description" \
  --duration=60
```

