
Обучите Action Chunking Transformer с нуля на SO-100 с помощью lerobot: конфигурация ACT, chunk_size и n_action_steps, расписание на 100000 шагов, инференс за 20 мс.
ACT выделяется среди политик SO-100. GR00T N1.7 и N1.5 начинаются с nvidia/GR00T-N1.7-3B и nvidia/GR00T-N1.5-3B, Pi0.5 с lerobot/pi05_base. ACT начинается с нуля: нет базовой контрольной точки, потому что это не фундаментальная модель. Это трансформер примерно с 80 миллионами параметров, который вы обучаете с нуля для одной задачи, на вашей руке, при вашем освещении.
Именно поэтому он выполняет шаг управления за 20 мс, тогда как VLA с 3 миллиардами параметров требуется от 152 до 485 мс, а стоимость одного запуска составляет от 1 до 3 USD вместо 4 до 12. Это руководство описывает ручной путь с lerobot на SO-100: запись, конфигурация act, что chunk_size и n_action_steps контролируют, расписание из 100000 шагов, развертывание. Затем та же задача на AY-Robots, включая случаи, когда платформа не помогает.
Что нужно знать
- •ACT обучается с нуля: без базовой модели, без предварительного обучения, без языкового ввода. Одна контрольная точка, одна задача.
- •В статье: около 80 млн параметров, около 5 часов на 11 ГБ RTX 2080 Ti, вывод 0.01 с.
- •lerobot defaults: chunk_size 100, n_action_steps 100, batch 8, lr 1e-5, 100000 steps, seed 1000.
- •На AY-Robots: 20 мс на шаг, самый быстрый из пяти. Минимум 50 эпизодов, LeRobot v3.0, карта 24 ГБ, от 1 до 3 USD за запуск.
- •Он выигрывает в задаче, которую видел, и проигрывает, как только вы хотите языковое обусловливание.
Проверено 23 августа 2026 года на соответствие lerobot 0.6.x: pyproject.toml в main содержит version = "0.6.2", новейший тег v0.6.1, 3 августа 2026 года. Руководство, начинающееся с python lerobot/scripts/train.py, предшествует точкам входа консоли lerobot-train, lerobot-record и lerobot-rollout.
Что такое ACT на самом деле
Метод Action Chunking with Transformers основан на статье ALOHA, Обучение точной бимануальной манипуляции с использованием недорогого оборудования, авторы Zhao, Kumar, Levine и Finn, arXiv, 23 апреля 2023 года. Установка записывает данные с частотой 50 Гц с четырех веб-камер, транслирующих видео 480x640 при 30 кадрах в секунду: две на захватах, одна сверху, одна спереди. В аннотации заявлено о шести навыках с успехом от 80 до 90 процентов, среди которых открытие полупрозрачной чашки для приправ и установка батарейки, на основе 10 минут демонстраций.
Основная часть статьи более полезна при планировании сессии записи: 50 демонстраций на задачу, за исключением Thread Velcro — 100 демонстраций, что составляет от 10 до 20 минут данных и от 30 до 60 минут реального времени с учетом сбросов. Успех также не является равномерным: Thread Velcro завершается на 20 процентах, Put On Shoe — на 92, Cup Open — на 84, Prep Tape — на 64.
| Гиперпараметр | Статья ALOHA, Таблица III | lerobot в main |
|---|---|---|
| скорость обучения | 1e-5 | optimizer_lr = 1e-5 |
| размер батча | 8 | batch_size = 8, in TrainPipelineConfig not ACTConfig |
| слои энкодера / декодера | 4 / 7 | n_encoder_layers = 4 / n_decoder_layers = 1 |
| размер чанка k | 100 | chunk_size = 100 |
| размерность латентного пространства z | отсутствует; Рис. 11 показывает проекцию от 32 до 512 | latent_dim = 32 |
| темпоральное ансамблирование | отсутствует; --temporal_agg в эталонном коде | temporal_ensemble_coeff = None |
В статье указано 7 слоев декодера, lerobot поставляет 1, намеренно. Комментарий в configuration_act.py гласит, что оригинальная реализация содержит ошибку, из-за которой используется только первый слой, ссылаясь на проблему 25 в tonyzhaozh/act: головка действий считывает hs[0], поэтому все семь слоев выполняются, но только первый выход достигает предсказания. Эта проблема открыта и остается без ответа с 23 апреля 2024 года. lerobot соответствует поведению, которое привело к опубликованным результатам, а не напечатанному числу. Увеличьте --policy.n_decoder_layers, и вы обучите модель, которую статья никогда не оценивала.
Разбиение действий на чанки — это вся идея
Обычное клонирование поведения сопоставляет одно наблюдение одному действию, и ошибки накапливаются: отклонение выводит руку из распределения, что приводит к худшему действию, и через тридцать шагов захват находится далеко от объекта. Разбиение действий на чанки предсказывает k действий одновременно и выполняет их, уменьшая эффективный горизонт в k раз. Это также решает проблему, специфичную для человеческих данных: телеоператоры делают паузы, а одношаговая марковская политика не может моделировать паузу, которая зависит от того, что было раньше.
В статье k исследуется путем абляции, а не постулируется. При отключенном временном ансамблировании, усредненном по четырем настройкам, успех возрастает с 1 процента при k = 1 до 44 процентов при k = 100, затем снижается при 200 и 400, когда политика приближается к управлению с разомкнутым контуром. Эта кривая объясняет, почему значение по умолчанию равно 100.
- chunk_size: сколько будущих действий декодер предсказывает за один прямой проход. По умолчанию 100.
- n_action_steps: сколько из них вы выполняете до повторного запроса. По умолчанию 100, поэтому lerobot выполняет весь фрагмент в разомкнутом цикле.
- lerobot проверяет, что
n_action_steps <= chunk_size, и вызываетValueError, если вы зададите их наоборот.
Что имеет значение с операционной точки зрения, так это chunk_size, деленный на частоту кадров. При 30 кадрах в секунду, используемых в примерах SO-100 от lerobot, фрагмент из 100 действий занимает около 3,3 секунды от одного наблюдения. Если задача требует коррекции внутри этого окна, уменьшите n_action_steps, а не chunk_size: вы сохраняете длительное предсказание и повторно наблюдаете чаще.
# 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Установите --policy.temporal_ensemble_coeff, и lerobot потребует n_action_steps = 1, в противном случае будет вызвано NotImplementedError. Ансамблирование запрашивает политику на каждом временном шаге и смешивает перекрывающиеся предсказания для этого временного шага с весами w_i = exp(-m * i), где старейшее получает w_0. В статье это значение для ACT составляет 3,3 процента: реально, но скромно, и оно умножает количество инференсов на длину фрагмента. Доступно при 20 ms на шаг, но не при 485 ms. См. задержку инференса.
Когда ACT превосходит базовую модель
Пять обучаемых политик рядом, с числами, которые AY-Robots измеряет и использует для определения размера арендуемого GPU.
| Политика | Семейство | Параметры | За шаг | Уровень GPU | Мин. эпизодов | Набор данных |
|---|---|---|---|---|---|---|
| ACT | Трансформер с разбиением на чанки, с нуля | ~80 M | 20 ms | RTX 4090 / 24 GB | 50 | LeRobot v3.0 |
| SmolVLA | Компактный VLA | ~450 M | 245 ms | RTX 4090 / 24 GB | 30 | LeRobot v3.0 |
| GR00T N1.7 | Основа VLA, диффузионная голова | ~3 B (~40 M trained) | 152 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| GR00T N1.5 | Основа VLA, предшественник | ~3 B | 165 ms | A100 / H100 80 GB | 50 | LeRobot v2.0 or v2.1 |
| Pi0.5 | VLA с сопоставлением потоков, см. сопоставление потоков | ~3 B, PaliGemma backbone | 485 ms | A100 / H100 80 GB | 50 | LeRobot v3.0 |

- 20 мс на шаг действия, самый быстрый из пяти, на карте 24 ГБ, а не A100.
- От 1 до 3 долларов США за запуск против 4–12 долларов для класса 3 B.
- Точность в контактных задачах, которые модель видела: 88 и 96 процентов на Slide Ziploc и Slot Battery, где предыдущие методы никогда не проходили первый этап.
- Отсутствие языкового обусловливания: строка задачи игнорируется, поэтому одна контрольная точка — это одна задача.
- Отсутствие семантических априорных знаний: все, что модель знает, получено из ваших 50 эпизодов.
- Узкая обобщаемость: переместите камеру, и вам придется переобучать модель.
- Отказы происходят незаметно: потери уменьшаются, рука ничего не делает, логи молчат.
- Преимущество в скорости помогает только в том случае, если вывод находится рядом с сервоприводами.
Выбирайте ACT, когда задача и сцена фиксированы, а движение должно быть быстрым и точным. Выбирайте модель зрения-языка-действия, когда одна контрольная точка должна охватывать несколько инструкций. Две страницы сравнивают решения напрямую: ACT vs SmolVLA и ACT vs GR00T N1.7. Для опубликованных бенчмарков запись ACT на арене ссылается на источник каждого числа.
Что вам понадобится, прежде чем начать
Одна ведомая рука, одна ведущая рука для телеуправления, как минимум одна камера, GPU 24 ГБ. ACT считывает только изображения и положения суставов. Две камеры — оптимальный вариант: фиксированный вид спереди для определения местоположения объектов, и камера на запястье для того, к чему собирается прикоснуться конечный эффектор, как в ALOHA.
| Манипулятор | Сервоприводы | Напряжение | Стоимость компонентов | Статус |
|---|---|---|---|---|
| SO-100 | Feetech STS3215 | 7.4 V | ~110 to 150 EUR | Полная поддержка, эталонный манипулятор |
| SO-101 | Feetech STS3215 | 7.4 V | ~130 to 170 EUR | Полная поддержка |
| Koch v1.1 | Dynamixel XL330 / XL430 | 5 V and 12 V rails | ~250 to 350 EUR | Совместимо |
| LeKiwi | Feetech STS3215 (arm) | 7.4 V arm, 12 V base | ~400 to 500 EUR | Совместимо |
SO-100 и SO-101 используют сервоприводы Feetech STS3215 на шине 7.4 V. Подача на них 12 V уничтожает их, достаточно тихо, чтобы люди сначала винили программное обеспечение, а блок питания Koch 12 V физически подходит к плате SO-100. Проверьте этикетку. Симптомы: сервопривод не отвечает, манипулятор дергается, затем провисает. Также SO-100 против SO-101.
От пустого манипулятора до записанного набора данных
Описанный ниже процесс относится к lerobot 0.6.x. Пропустите его, если у вас есть откалиброванный манипулятор и набор данных. В противном случае руководство по началу работы с SO-100 охватывает сборку, пошаговое руководство по записи охватывает захват, а документация по наборам данных — формат.
- 1Установите lerobot с нужными дополнениями
Для записи требуются
core_scripts, для обученияtraining, для сервоприводов Feetechfeetech. Python 3.12+.bashconda 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Найдите USB-порт каждой руки
Запустите его с подключенными обеими руками, отключая одну по запросу. В Linux может потребоваться открыть разрешения узла.
bashlerobot-find-port # on Linux, if the port exists but is unreadable: sudo chmod 666 /dev/ttyACM0 - 3Установите идентификаторы моторов и скорость передачи данных
На SO-100 это происходит до сборки: в отличие от SO-101, разъемы недоступны после сборки. Скрипт обходит шину по одному мотору, начиная с захвата, записывая идентификаторы в EEPROM.
bashlerobot-setup-motors \ --robot.type=so100_follower \ --robot.port=/dev/ttyACM0 lerobot-setup-motors \ --teleop.type=so100_leader \ --teleop.port=/dev/ttyACM1 - 4Откалибруйте обе руки
Установите каждый сустав в середину его диапазона, нажмите Enter, затем проведите каждый через весь его диапазон. Калибровка позволяет политике, обученной на одной руке, работать на другой. Используйте тот же
id.bashlerobot-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Выполните телеуправление один раз с включенными камерами
Эмпирическое правило lerobot: вы должны быть в состоянии выполнить задачу, глядя только на изображения с камеры. Если вы не можете, то и ACT не сможет. Это выявляет больше плохих наборов данных, чем последующая отладка.
bashlerobot-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Запишите 50 эпизодов
50 — это минимум для AY-Robots и то, что ALOHA использовала для каждой задачи. lerobot рекомендует 10 для каждого положения объекта, фиксированные камеры, согласованный захват.
nзавершает эпизод,rперезаписывает,qостанавливает и кодирует.bashHF_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

У ACT нет априорных знаний, на которые можно было бы опереться, поэтому каждая несогласованность становится постоянной. Три самых дорогостоящих: камера сдвинулась между эпизодами 20 и 21, изменилось освещение, потому что вы записали половину набора данных днем, захват выполнен двумя способами. Каждый из них дает идеально выглядящую кривую потерь и руку, которая движется не туда. См. потери падают, политика ничего не делает, политика работает только в одной конфигурации и сбор высококачественных данных для обучения.
Перед обучением воспроизведите как минимум пять эпизодов. хранит потоки с камер, состояния суставов и действия для каждого , а воспроизведение передает эти действия обратно руке. Если воспроизведение не выполняет задачу, данные не содержат ее, и обучение не сможет ее изобрести.
lerobot-replay \
--robot.type=so100_follower \
--robot.port=/dev/ttyACM0 \
--robot.id=my_follower \
--dataset.repo_id=${HF_USER}/so100_cube \
--dataset.episode=0Обучение политики ACT
Это полная команда. Все специфичное для ACT уже является значением по умолчанию, поэтому страница lerobot ACT рекомендует начинать с них.
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--policy.type=act загружает ACTConfig, который адаптируется к любому количеству моторов и камер, записанных вашим набором данных, поэтому вам никогда не нужно объявлять форму наблюдения. --wandb.enable=true необязателен, но полезен: кривая потерь — это единственный дешевый сигнал в прогоне на 100000 шагов. Расписание берется из конфигурации обучения lerobot, а не из ACTConfig: 100000 шагов, пакет 8, seed 1000, контрольная точка каждые 20000 шагов, логирование каждые 200.
Полный запуск оставляет пять директорий контрольных точек, от 020000 до 100000, плюс last символическую ссылку. Сохраните их все: лучшая политика часто не последняя.
| Настройка | Значение по умолчанию lerobot | Форма AY-Robots ACT | Комментарий |
|---|---|---|---|
| Размер пакета | 8 | 8 | Сначала уменьшите его, если столкнетесь с ограничениями VRAM. |
| Скорость обучения | 1e-5 | 1e-5 | То же, что и в статье ALOHA. |
| Максимальное количество шагов | 100000 | 100000 | Примерно там, где набор из 50 эпизодов перестает улучшаться. |
| Накопление градиента | 1 | 1, does not apply | Вместо этого измените размер пакета. |
| Зерно | 1000 | exposed | Точка входа tyro GR00T не имеет зерна; запуски ACT являются воспроизводимыми. |
| chunk_size / n_action_steps | 100 / 100 | 100 / 100, editable | Горизонт предсказания и выполнения. Уменьшайте второе, а не первое. |
| Частота контрольных точек | 20000 | not exposed | saveSteps здесь является параметром GR00T. |
ACT с размером пакета 8 и двумя камерами 640x480 комфортно помещается в 24 ГБ. Он перестает помещаться, когда люди увеличивают размер пакета для скорости или подают ему кадры 1920x1080, как показано в одном из примеров записи lerobot. Два бэкбона ResNet-18 при 1080p имеют совершенно другой профиль потребления памяти. Уменьшите --batch_size до 4, прежде чем арендовать более мощную видеокарту. См. нехватка памяти при обучении.
Продолжительность: около 5 часов на 11 ГБ RTX 2080 Ti (согласно статье), несколько часов для 100 тыс. шагов (согласно странице ACT lerobot), от 2 до 5 часов на уровне AY-Robots 24 ГБ. Не сокращайте. README репозитория-источника указывает, что прерывистая или замедляющаяся политика обычно просто нуждается в большем количестве обучения, потому что успех и плавность продолжают улучшаться после стабилизации функции потерь: для реальных данных требуется не менее 5000 эпох, или в 3-4 раза больше после плато.
lerobot-train \
--config_path=outputs/train/act_so100_cube/checkpoints/last/pretrained_model/train_config.json \
--resume=trueЗапуск обученной политики на манипуляторе
Развертывание использует lerobot-rollout. Ключи камер должны соответствовать записанным: политика, обученная на front и wrist не примет cam0 и cam1, а rename_map не поможет, так как требуется предварительно обученный контрольный пункт. Строку задачи можно опустить; собственный пример lerobot помечает ее как пропускаемую для ACT.
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Оценка раньше выполнялась с помощью lerobot-record --policy.path=.... В версии 0.6.x это lerobot-rollout с селектором --strategy.type: base, sentry (запись с автозагрузкой), highlight (кольцевой буфер, сохраняемый по нажатию клавиши), dagger (человек в цикле) и episodic. По состоянию на 23 августа 2026 года на странице документации ACT по-прежнему говорится «используя команду lerobot-record» непосредственно над блоком, который запускает lerobot-rollout. Следуйте команде, а не предложению.
Чтобы закрепить контрольную точку, а не финальную модель, добавьте --policy.pretrained_revision. Для этого запуск должен был начаться с --save_checkpoint_to_hub=true, по умолчанию отключено: без этого lerobot отправляет только финальную модель. С ним каждая контрольная точка помечается своим шагом с ведущими нулями, поэтому --policy.pretrained_revision=060000 восстанавливает контрольную точку на шаге 60000. Сравнение ее с 100000 на реальной руке — это самый дешевый доступный эксперимент.
Два пути к одной и той же контрольной точке
Все вышеперечисленное — это ручной путь, и он работает. Путь через платформу обменивает контроль на отсутствие необходимости владеть GPU или средой Python.
- Установите lerobot 0.6.x с
core_scripts,training,feetech, ffmpeg. - Найдите порты, установите идентификаторы двигателей, откалибруйте обе руки, запишите 50 эпизодов.
- Воспроизведите несколько эпизодов, чтобы убедиться, что данные содержат задачу.
- Арендуйте или приобретите GPU на 24 ГБ, согласуйте CUDA и PyTorch, запустите
lerobot-train --policy.type=act. - Подождите несколько часов, затем запустите
lerobot-rolloutна машине у манипулятора.
# 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Полный контроль: отредактируйте configuration_act.py, добавьте камеру, форкните тренажер. Для исследований, а не для выполнения задачи, платформа является отвлекающим фактором.
- Записывайте с помощью настольного клиента или используйте Hugging Face repo id или локальный набор данных.
- Откройте руководство ACT на SO-100 и выберите модель и набор данных. По умолчанию используются параметры lerobot; chunkSize, nActionSteps, seed и logFreq редактируемы.
- Бэкенд арендует GPU, размер которого определяется VRAM, и записывает контрольные точки в объектное хранилище.
- Затем
/api/inference/podпредоставляет политику локальному клиенту робота. Бездействующий сторожевой таймер уничтожает под, поэтому ничего не оплачивается незаметно. - Те же операции существуют в CLI, сервере MCP и документации по обучению.
Это не исправляет ваши данные: набор данных с перемещенной камерой обучается здесь так же плохо, и форма не может это обнаружить. Это также не устраняет проблему задержки. Цикл управления составляет от 20 до 485 мс на шаг действия, с учетом задержек публичного интернета, и ACT страдает больше всего, потому что его шаг самый короткий: 60 мс — это замедление на 12 процентов по сравнению с 485 мс у Pi0.5, но в четыре раза больше шага у ACT в 20 мс. Удаленный вывод подходит для медленного захвата и размещения, а не для быстрого реактивного движения.

Что на самом деле идет не так
Почти все трудности не в команде обучения. Они в сопутствующих вещах, упорядоченных по частоте возникновения при первом запуске.
| Симптом | Обычная причина | Страница |
|---|---|---|
| lerobot-find-port ничего не показывает | Драйвер, кабель или права доступа к узлу | рука не обнаружена |
| Камера отсутствует во время записи | Индекс изменился после перезагрузки, или две камеры на одном USB-контроллере | камера не обнаружена |
| Обучение отклоняет набор данных | ACT требует v3.0, GR00T нуждается в v2.1 | набор данных отклонен как v3 |
| Недостаточно памяти CUDA | Размер пакета увеличен, или кадры 1080p вместо 480p | недостаточно памяти при обучении |
| Потери выглядят отлично, рука ничего не делает | Данные не содержат задачу, или камера переместилась | потери падают, политика ничего не делает |
| Рывковое движение или пауза в середине эпизода | Недостаточно обучено, задержка на границе блока или вызов вывода по таймауту | политика зависает в середине движения |
Две строки заслуживают особого внимания. ACT обучается на LeRobot v3.0, в то время как загрузчик GR00T на нем падает и требует v2.1, поэтому набор данных, который обучает ACT, может привести к сбою GR00T. И последняя строка содержит два исправления: авторы ACT отвечают на рывковое движение дополнительным обучением, в то время как при n_action_steps равном 100, настоящая задержка происходит на границе блока, видимая пауза каждые 3.3 секунды при 30 кадрах в секунду. Еще два момента, которые стоит знать: один неработающий сустав обычно является идентификатором сервопривода, который никогда не был записан, и захват, который приближается, но никогда не закрывается означает слишком малый диапазон захвата в демонстрациях. Полный индекс: страницы режимов отказа.
Что стоит запуск
| Уровень | Модели | Время выполнения | Цена за час | Стоимость одного запуска |
|---|---|---|---|---|
| RTX 4090 / 24 GB | ACT, SmolVLA | 2 to 5 hours | 0.30 to 0.60 USD | about 1 to 3 USD |
| A100 80 GB / H100 | GR00T N1.7, GR00T N1.5, Pi0.5 | 3 to 6 hours | 1.20 to 2.00 USD | about 4 to 12 USD |
Это аргумент в пользу начала работы с ACT, даже если позже вы захотите использовать VLA. Неудачный запуск ACT стоит как чашка кофе и в течение нескольких часов покажет, содержит ли ваш набор данных нужную задачу. Неудачный запуск GR00T стоит в четыре раза дороже за тот же урок. Переход на GR00T N1.7 или SmolVLA впоследствии — это изменение формы, а не перестройка. Справочная информация: модели зрения, языка и действий, полное руководство по SO-100, обучите свою первую политику и обучение с имитацией. Нет манипулятора? Страница трансляции транслирует реальный SO-100, которым можно управлять без регистрации.
Обучите ACT на вашем SO-100
Руководство по этой конкретной комбинации: настройки по умолчанию, уровень GPU и стоимость запуска. Выберите набор данных, бэкенд арендует карту и записывает контрольные точки.
Открыть руководство по обучениюСуществует ли предварительно обученная модель ACT, которую я могу дообучить?▾
Нет. У ACT нет базовой модели; она существует только после того, как вы ее обучите. Это не недостаток инструментария, это суть ACT: в статье политика обучается с нуля для каждой задачи. Для контрольной точки поставщика используйте GR00T N1.7 или Pi0.5.
Сколько эпизодов мне действительно нужно?▾
50: столько ALOHA записывала для каждой задачи (100 для Thread Velcro, самой сложной) и минимум для AY-Robots. lerobot рекомендует около 10 на каждое местоположение объекта, при фиксированных камерах и постоянном захвате. Пятьдесят чистых эпизодов лучше ста, где камера двигалась.
Стоит ли менять chunk_size со 100?▾
Обычно нет. Абляция поднимается с 1 процента при k = 1 до 44 процентов при k = 100 и затем снижается, так что 100 находится близко к максимуму. Если манипулятор слишком долго выполняет действие, вместо этого уменьшите n_action_steps: при 30 fps, 25 повторных запросов каждые 0.8 секунды.
Сколько времени занимает обучающий запуск, и можно ли его остановить раньше?▾
От двух до пяти часов на карте 24 ГБ для 100000 шагов. Контрольные точки сохраняются каждые 20000 шагов, и --resume=true возобновляет запуск, так что ранняя остановка безопасна. Только не на первом ровном участке: плавность улучшается после того, как потери стабилизируются.
Потери снизились, а манипулятор все еще не справляется. Что теперь?▾
Почти всегда дело в наборе данных. Воспроизведите записанные эпизоды на манипуляторе: если воспроизведение не выполняет задачу, значит, данные ее не содержат. Затем проверьте, не перемещалось ли что-либо, особенно камера. У ACT нет априорных знаний, поэтому небольшое изменение в эпизоде 21 является постоянным.
Sources
- Zhao, Kumar, Levine, Finn: Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT), arXiv 2304.13705
- ALOHA / ACT project page
- tonyzhaozh/act, the reference implementation and its training-length advice
- tonyzhaozh/act issue 25: the action head reads only the first decoder layer
- huggingface/lerobot
- lerobot ACTConfig: chunk_size, n_action_steps, n_decoder_layers and the rest of the defaults
- lerobot TrainPipelineConfig: steps, batch_size, seed, save_freq, log_freq, save_checkpoint_to_hub
- lerobot train_utils: zero-padded checkpoint dirs, the last symlink and checkpoint push tagging
- lerobot v0.6.1 release, 3 August 2026
- LeRobot docs: ACT
- LeRobot docs: imitation learning on real robots (record, replay, train, rollout)
- LeRobot docs: SO-100 setup, motor ids and calibration
- LeRobot docs: installation and the optional extras
- Hugging Face blog: LeRobot Community Datasets, the ImageNet of Robotics, When and How?
- TheRobotStudio/SO-ARM100: Standard Open Arm 100
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started