Тонкая настройка модели ACT (Action Chunking Transformer)
Обзор
ACT (Action Chunking Transformer) - это сквозная модель имитационного обучения, специально разработанная для задач точных манипуляций. Модель преодолевает проблему накопления ошибок в традиционном имитационном обучении путем предсказания блоков действий (action chunks), достигая высоких показателей успеха в манипуляциях роботов на недорогом оборудовании.
Основные особенности
- Предсказание блоков действий: Предсказывает несколько последовательных действий одновременно, уменьшая накопление ошибок
- Архитектура Transformer: Использует механизм внимания для обработки последовательных данных
- Сквозное обучение: Напрямую предсказывает действия из необработанных наблюдений
- Высокая частота успеха: Отличные результаты в задачах точных манипуляций
- Дружелюбность к оборудованию: Может работать на потребительском оборудовании
Предварительные требования
Системные требования
- Операционная система: Linux (рекомендуется Ubuntu 20.04+) или macOS
- Версия Python: 3.8+
- GPU: NVIDIA GPU (рекомендуется RTX 3070 или выше), минимум 6GB видеопамяти
- Память: Минимум 16GB RAM
- Дисковое пространство: Минимум 30GB свободного места
Подготовка среды
1. Установка LeRobot
# Клонировать репозиторий LeRobot
git clone https://github.com/huggingface/lerobot.git
cd lerobot
# Создать виртуальную среду
conda create -n lerobot python=3.10
conda activate lerobot
# Установить зависимости
pip install -e .
2. Установка специфичных зависимостей ACT
# Установить дополнительные пакеты
pip install einops
pip install timm
pip install wandb
# Войти в Weights & Biases (опционально)
wandb login
Архитектура модели ACT
Основные компоненты
- Кодировщик изображений: Обрабатывает входные изображения с нескольких ракурсов
- Кодировщик состояний: Обрабатывает информацию о состоянии робота
- Декодер Transformer: Генерирует последовательности действий
- Головка действий: Выводит финальные предсказания действий
Ключевые параметры
- Chunk Size: Количество предсказываемых действий за раз (обычно 50-100)
- Context Length: Длина исторических наблюдений
- Hidden Dimension: Скрытая размерность Transformer
- Number of Heads: Количество голов внимания
- Number of Layers: Количество слоев Transformer
Подготовка данных
Данные формата LeRobot
ACT требует использования наборов данных формата LeRobot, содержащих следующую структуру:
your_dataset/
├── data/
│ ├── chunk-001/
│ │ ├── observation.images.cam_high.png
│ │ ├── observation.images.cam_low.png
│ │ ├── observation.images.cam_left_wrist.png
│ │ ├── observation.images.cam_right_wrist.png
│ │ ├── observation.state.npy
│ │ ├── action.npy
│ │ └── ...
│ └── chunk-002/
│ └── ...
├── meta.json
├── stats.safetensors
└── videos/
├── episode_000000.mp4
└── ...
Требования к качеству данных
- Минимум 50 эпизодов для базового обучения
- Рекомендуется 200+ эпизодов для оптимальных результатов
- Каждый эпизод должен содержать полное выполнение задачи
- Изображения с нескольких ракурсов (минимум 2 камеры)
- Высококачественные аннотации действий
Тонкая настройка обучения
Важное ограничение параметров
Параметр n_action_steps
модели ACT должен быть ≤ chunk_size
. Рекомендуется установить оба параметра на одно и то же значение (например, оба на 100).
chunk_size
: Длина последовательности действий, предсказываемой моделью за разn_action_steps
: Количество фактически выполняемых шагов действий
Базовая команда обучения
# Установить переменные среды
export HF_USER="your-huggingface-username"
export CUDA_VISIBLE_DEVICES=0
# Запустить обучение ACT
lerobot-train \
--policy.type act \
--dataset.repo_id ${HF_USER}/your_dataset \
--batch_size 8 \
--steps 50000 \
--output_dir outputs/train/act_finetuned \
--job_name act_finetuning \
--policy.device cuda \
--policy.chunk_size 100 \
--policy.n_action_steps 100 \
--policy.n_obs_steps 1 \
--policy.optimizer_lr 1e-5 \
--policy.optimizer_weight_decay 1e-4 \
--policy.push_to_hub false \
--save_checkpoint true \
--save_freq 10000 \
--wandb.enable true
Расширенная конфигурация обучения
Конфигурация с несколькими камерами
# Обучение ACT с настройкой нескольких камер
lerobot-train \
--policy.type act \
--dataset.repo_id ${HF_USER}/your_dataset \
--batch_size 4 \
--steps 100000 \
--output_dir outputs/train/act_multicam \
--job_name act_multicam_training \
--policy.device cuda \
--policy.chunk_size 100 \
--policy.n_action_steps 100 \
--policy.n_obs_steps 2 \
--policy.vision_backbone resnet18 \
--policy.dim_model 512 \
--policy.dim_feedforward 3200 \
--policy.n_encoder_layers 4 \
--policy.n_decoder_layers 1 \
--policy.n_heads 8 \
--policy.optimizer_lr 1e-5 \
--policy.optimizer_weight_decay 1e-4 \
--policy.push_to_hub false \
--save_checkpoint true \
--wandb.enable true