Почему ACT превосходно справляется с бимануальными задачами

ACT (Action Chunked Transformers) изначально был разработан специально для исследований бимануальных манипуляций. Его основная идея — то, что прогнозирование последовательности будущих действий (кусков), а не одношаговых действий, снижает совокупную ошибку — особенно ценна для бимануальных задач, где небольшая ошибка в траектории одной руки может вызвать каскадный сбой в выполнении другой руки.

Механизм разделения действий эффективно дает политике горизонт планирования. Вместо того, чтобы выполнять одну совместную команду на каждом временном шаге 50 Гц, ACT планирует на 100 шагов вперед и плавно выполняет выполнение. Для задачи переключения это означает, что политика может «видеть» приближение обоих плеч к точке переключения как часть запланированной последовательности, а не реагировать на каждый кадр независимо. Эмпирически это вдвое снижает количество сбоев в середине передачи по сравнению с нефрагментированными подходами к двуручным наборам данных.

Одно предостережение: ACT предполагает, что демонстрации в вашем наборе данных представляют собой последовательная стратегия. Если разные демонстрации демонстрируют принципиально разные способы выполнения передачи обслуживания — разные руки, которые инициируют передачу, разную высоту передачи обслуживания — компоненту CVAE будет сложно закодировать единый стиль. Все ваши 100 демонстраций должны использовать одну и ту же стратегию движения.

Учебное командование

источник ~/dk1-env/bin/activate python -m lerobot.scripts.train \ --policy-type act \ --dataset-repo-id куб-хэндофф-v1 \ --root ~/dk1-datasets \ --output-dir ~/dk1-policies/cube-handoff-v1 \ --config-overrides \ policy.action_dim=14 \ policy.chunk_size=100 \ policy.n_action_steps=100 \ policy.dim_feedforward=3200 \ policy.n_heads=8 \ policy.n_encoder_layers=4 \ policy.n_decoder_layers=7 \ Training.num_steps=80000 \ Training.eval_freq=5000 \ Training.save_freq=5000 \ Training.batch_size=16 # policy.action_dim=14 tells ACT the action space is 14-dimensional (6+6 joints + 2 grippers) # Run this before sleeping — checkpoints save every 5k steps
Графический процессор, необходимый для практического обучения: На RTX 3080 (10 ГБ) 80 000 шагов занимает примерно 90 минут. На RTX 4090 примерно 50 минут. На процессоре ожидайте 10–14 часов. Используйте --device cuda отметьте, если у вас есть графический процессор. Варианты облачных графических процессоров (Lambda Labs, Vast.ai) стоят около 0,50–1,50 долларов в час за необходимое оборудование.

Чтение кривых бимануального обучения

Кривые бимануального обучения отличаются от кривых однорукого обучения в одном важном отношении: у вас есть два пространства действий, и политика должна научиться их координировать. Следите за этими закономерностями на кривых потерь (см. в TensorBoard по адресу tensorboard --logdir ~/dk1-policies/):

L_reconstruction (общая потеря действия)

Должно уменьшаться с ~3,0 до уровня ниже 0,4 на 60 000 шагов. Плато выше 0,7 после 40 000 шагов указывает на проблемы с качеством набора данных — вероятно, слишком большая разница во времени или положении передачи обслуживания.

L_kl (регуляризация CVAE)

Начинается около 0 и медленно возрастает до 5–15. Если оно превышает 30, CVAE пытается найти встраивание компактного стиля. Это часто означает, что в ваших демонстрациях слишком много поведенческого разнообразия. Подумайте о том, чтобы отсеять нижние 20% наименее последовательных демонстраций и провести переподготовку.

Ошибка действия: лево или право

Если вы включите регистрацию ошибок действий для каждой руки (через training.log_per_action_dim=true переопределить), вы увидите отдельные кривые потерь для левого и правого измерения действия. Большой постоянный разрыв между этими двумя показателями указывает на то, что демонстрации одной группы более последовательны, чем другой — просмотрите контрольный список качества модуля 4 для отстающей группы.

Бимануальные гиперпараметры

Параметр По умолчанию (одна рука) Рекомендуется бимануальный режим DK1 Почему
action_dim 7 14 Два рычага с 6 степенями свободы + 2 захвата = 14 измерений действия
chunk_size 100 100 То же самое — разделение действий уже хорошо подходит для двуручной координации.
dim_feedforward 3200 3200 Никаких изменений не требуется — большее пространство действия обрабатывается головкой действия, а не шириной трансформера.
num_steps 50000 80000 Бимануальная координация требует большего количества этапов обучения для надежной конвергенции; 80 тысяч — это практический минимум для 100 демок.
batch_size 32 16 Уменьшено, чтобы соответствовать более крупным образцам бимануального набора данных (потоки с двух камер) в памяти графического процессора.
kl_weight 10 10 По умолчанию работает хорошо; увеличьте до 20, только если L_kl остается близким к нулю после 30 тыс. шагов (CVAE не обучается)

Выбор контрольной точки

Сохраняйте контрольные точки каждые 5000 шагов (training.save_freq=5000). Не думайте, что последняя контрольная точка будет лучшей. Бимануальные политики могут переработаться при большом количестве шагов — политика учится идеально воспроизводить обучающие демонстрации, но теряет обобщение из-за небольших реальных изменений, с которыми вы столкнетесь во время оценки.

Выберите контрольную точку на шаге, где L_reconstruction достиг минимума, прежде чем начать выходить на плато или слегка увеличиваться. Обычно это находится в диапазоне 60 000–80 000 шагов для бимануальных наборов данных из 100 демонстраций. Разверните две контрольные точки (контрольную точку минимальных потерь и последнюю) и сравните их реальную производительность в модуле 6.

Глава 5 завершена, когда...

В ходе обучения выполнено 80 000 шагов, контрольные точки сохранены в ~/dk1-policies/cube-handoff-v1/. Финал L_reconstruction значение ниже 0,5. Вы определили лучшую контрольную точку на основе кривых потерь. Вы понимаете, почему кривая L_kl ведет себя так, как во время вашего пробега. Вы готовы к развертыванию на реальном оборудовании в модуле 6 — целевой уровень успеха при передаче куба составляет >60 % (бимануальный режим сложнее, чем одноручный, и это хороший результат при первом запуске).