
Пошаговый отчёт об одном человеко-контролируемом DAgger-цикле на SO-100: запустите политику и записывайте её, берите управление, когда она ошибается, подавайте цикл как корректировку, составьте смешанный датасет и продолжайте обучение с контрольной точки. Включает путь перехвата клавиатурой и слайдерами для тех, у кого нет leader-arm, и четыре ошибки, которые делают цикл бесполезным.
Ваша политика работает. Она тянется к кубику, закрывает захват на сантиметр раньше и продолжает двигаться, как будто захватила его. Ошибок нет, и никакой объём стейкриптов не объясняет это. Решение — не ещё 20 000 градиентных шагов на тех же демонстрациях. Это вернуть руку на манипулятор ровно там, где всё идёт не так, записать то, что вы сделали вместо этого, и обучить следующую контрольную точку на старых данных плюс эту корректировку. Это DAgger-цикл, и вот как его запустить на SO-100 с vision-language-action-политикой.
Теория описана в другом месте: почему dataset aggregation вообще работает и что человеко-контролирование меняет в нём. Это руководство по эксплуатации, и оно предполагает обученную контрольную точку, работающий набор камер и манипулятор, который движется. Шесть шагов ниже — это цикл, как реализовано на DAgger-странице этой платформы, но последовательность одинакова из ваших собственных скриптов.
Один цикл коротко
- •Запустите обученную политику и записывайте, с текстом задачи цикла вместо универсального лейбла телеуправления.
- •Берите управление в момент, когда поведение ошибается: зеркальная передача с leader-arm, немедленное и ручное управление клавиатурой или слайдерами, если нет второго манипулятора.
- •Сортируйте каждый цикл: подавайте как корректировку, сохраняйте как оценочный эпизод или удаляйте.
- •Составьте смесь вручную — исходные демонстрации плюс корректировки, эпизоды выбраны по источнику. Никогда не обучайте только на корректировках.
- •Продолжайте обучение с последней контрольной точки и записывайте, какая контрольная точка произвела какую смесь.
- •Число, которое говорит, стоило ли того цикла, — это intervention rate, а не training loss.
Почему второй цикл — это не просто больше данных
Behaviour cloning обучается на состояниях, которые посещал человек. При тестировании политика посещает состояния, которые она вызывает, и небольшие ошибки в действиях накапливаются в состояния, которые ни одна демонстрация не охватывала. Росс, Гордон и Бэньелл формализовали этот отказ для AISTATS 2011 и ответили итеративным алгоритмом, который обучает стационарную детерминированную политику и, согласно их сведению, должен хорошо работать под распределением состояний, которое он вызывает: запустите текущую политику, пусть эксперт пометит состояния, которые она действительно достигла, добавьте их в датасет, переобучите, повторяйте. Kelly et al. сделали запрос практичным с HG-DAgger, где человек решает, когда взять управление вместо ометки состояний без удержания элементов управления; они сообщают об улучшенной производительности как по сравнению с DAgger, так и по сравнению с behaviour cloning на симулированной и реальной задаче автономного вождения. Человеко-контролирование — это то, что делает цикл переносимым на настольном манипуляторе — вы двигаете руки только, когда что-то идёт не так.
Два следствия имеют большее значение на практике, чем теория. Корректировки — это не обычные демонстрации: они концентрируются в областях узких мест, которые описывают Mandlekar et al., где небольшое отклонение толкает политику в состояния, которые демонстрации никогда не охватывали. И датасет, состоящий только из этих сложных частей, — это плохо сформированный датасет — Belkhale, Cui и Sadigh утверждают со стороны данных, что разнообразие состояний не всегда полезно, и что дивергенция действий и разнообразие переходов вместе решают качество датасета. Смешанный датасет — это не компромисс, это смысл.
Заморозьте это перед циклом 1
DAgger-цикл сравнивает политику с самой собой во времени. Всё, что вы меняете между циклами, что не является датасетом, делает это сравнение бессмысленным.
- Позиции и крепления камер, включая wrist camera. Ослабьте один зажим, и вы изменили распределение наблюдений, а не политику.
- Экспозиция и баланс белого, если ваш стек захвата позволяет вам их закрепить. Автоэкспозиция, дрейфующая между циклами, — это медленный, невидимый domain shift.
- Калибровка манипулятора и нулевые позиции сервопривода. Если вы должны пересчитывать, рассматривайте всё, записанное до этого, как отдельный датасет.
- Текст задачи. Каждая VLA здесь обусловлена им; переформулировка его в цикле — это другая задача.
- Освещение, поверхность стола, набор предметов. Новый предмет — это новый эксперимент, а не следующий цикл.
- Частота кадров записи. Сравнение intervention rates через две сетки дискретизации даёт различия, которые происходят из сетки.
Hsu et al. сравнили вид от руки с обычным видом от третьего лица и обнаружили, что perspective eye-in-hand последовательно улучшает эффективность обучения и обобщение out-of-distribution, несмотря на то, что видит меньше сцены. На пятизвенном манипуляторе timing захвата обычно это то, что вы исправляете в корректировках, и timing захвата — это то, что несёт wrist view.
Цикл, от начала до конца
- 1Запустите inference и записывайте
Начните цикл против контрольной точки, которую вы хотите улучшить, затем начните запись в корень inference. Записанный таким образом, он наследует собственный текст задачи цикла, который обучает политику, вместо лейбла телеуправления по умолчанию. Без записи вы можете наблюдать отказ, но не обучаться на нём.
bash# two calls, not one: the run, then its recording POST /inference/start # model_id, and hf_repo_id = the checkpoint to drive POST /recording/start # root=inference # root=inference also makes the recording inherit the run's task text - 2Берите управление, когда всё идёт не так
Нажмите Take over и выберите режим ввода: leader arm, клавиатура или слайдеры. Runner паузируется, вы исправляете, вы передаёте обратно. Кадры, записанные пока вы управляли, помечаются как interventions автоматически.
bashPOST /inference/takeover/start # input = leader | keyboard | sliders POST /inference/takeover/nudge # keyboard, relative delta per call POST /inference/takeover/set # sliders, absolute target POST /inference/takeover/stop # back to the policy - 3Сортируйте эпизоды
Решайте за эпизод: подавайте как корректировку, сохраняйте как оценку, или удаляйте. Цикл, который политика завершила без помощи, — это оценочные данные.
- 4Синхронизируйте датасет корректировок
Корректировки собираются в локальный датасет для каждой политики и идут в облачное хранилище через автоматическую синхронизацию. Ничто не смешивается, что вы туда не положили.
- 5Составьте смешанный датасет
Объедините исходный датасет с датасетом корректировок, выбирая эпизоды явно по источнику. Результат — это обычный датасет с этой точки зрения.
bashPOST /training/datasets/compose sources = [ original_dataset, korrekturen_<policy> ] episodes = explicit selection per source - 6Продолжайте обучение с контрольной точки
Обучайте смесь с предыдущей контрольной точки вместо базовой модели. Записывайте, какая контрольная точка и какая смесь; без этой пары цикл не воспроизводим.
bash# field on the training job base_checkpoint = s3://ay-robots/checkpoints/<run>/<checkpoint> # the platform passes it to the training pod as BASE_CKPT_S3
Шаг 2 в деталях: два способа взять управление
С leader arm
В режиме leader-follower передача — это передача между двумя манипуляторами, которые не находятся в одной позе. Нажатие Take over паузирует runner и ведёт leader на текущую позу follower, так что ничто не прыгает при передаче крутящего момента. Если это выравнивание истекает по времени, вы выравниваете leader вручную и отпускаете только когда оба находятся в пределах пяти градусов. Отсюда вы телеуправляете обычно и колонка действий записывает то, что вы командовали.
Будьте честны об этом пути: выравнивание и передача крутящего момента — это наименее протестированная часть цикла на реальном оборудовании. Протестируйте передачу на медленной, безвредной позе перед тем, как полагаться на неё в цикле, который вам важен. Leader arm производит самые плавные корректировки из трёх режимов, и также имеет больше всего, что может пойти не так механически.
Без leader arm: клавиатура и слайдеры
Большинство людей, читающих это, владеют одним манипулятором. Этого достаточно. Выберите клавиатуру или слайдеры в момент нажатия Take over, и перехват немедленный и ручной — нет второго манипулятора для выравнивания, поэтому нет шага выравнивания. Follower удерживает свою позу и ждёт ввода.
| Режим ввода | Как движется манипулятор | Лимит на один вызов, применяемый сервером | Заблокирован когда |
|---|---|---|---|
| Leader arm | Mirror ведёт follower из углов соединения leader | Нет nudge или set вызовов в этом режиме; mirror пишет цели follower непрерывно | Никогда не заблокирован, и по умолчанию если нет режима ввода — но нужна второй манипулятор; без leader id перехват отклоняется |
| Клавиатура | Относительный nudge на нажатие клавиши, отправляемый в takeover nudge endpoint | Жёсткий зажим в 2 градуса за соединение, 4 градуса для захвата | Отклонено с 409 если перехват был запущен в режиме leader |
| Слайдеры | Абсолютная целевая поза, отправляемая в takeover set endpoint | Не более 6 градусов хода к цели на вызов; интерфейс держит отправку примерно десять раз в секунду | Отклонено с 409 если перехват был запущен в режиме leader |
Зажимы применяются на стороне сервера, а не в интерфейсе, потому что опечатка в дельте на bus-servo манипуляторе — это столкновение. Корректировки клавиатуры выходят пошагово и немного грубо; корректировки слайдерами плавнее, потому что сервер идёт к цели, пока интерфейс держит отправку. Так или иначе колонка действий получает полный командуемый вектор позы и пометка intervention идентична пути leader, поэтому корректировки клавиатуры приземляются в один датасет без различия формата.
Q / A joint 1 R / F joint 4
W / S joint 2 T / G joint 5
E / D joint 3 Z / X gripper
Когда нажимать кнопку
Раньше, чем позже. Корректировка, которая начинается после закрытия захвата на пустом месте, обучает восстановлению после отказа, в который политика не должна была входить, и данные восстановления стоят намного меньше, чем данные уклонения. Прерывайте в первый момент, когда уверены, что траектория неправильна, исправьте сложную часть, передайте назад, как только состояние то, которое политика обработала раньше. ThriftyDAgger автоматизирует это решение, контролируя interventions на новизне и предполагаемом риске под фиксированным человеческим бюджетом, но на одном манипуляторе с человеком, уже наблюдающим, человеческий gate дешевле и лучше откалиброван, чем всё, что вы будете настраивать.
Возможно с open-source стеком и несколькими скриптами. Чего это стоит — это ведение записей, и ведение записей — это где DAgger циклы умирают.
- Напишите кадры из вашего собственного inference скрипта в LeRobot датасет с текстом задачи, на котором обучалась политика.
- Паузируйте цикл политики, переключайте источник команды и помечайте каждый кадр, который вы управляли, как intervention. Без пометки корректировки выглядят как обычные демонстрации.
- Решайте сознательно, что происходит с кадрами перехода между отпусканием управления политикой и вашим первым вводом.
- Сохраняйте корректировки в их собственный датасет для каждой политики и отслеживайте индексы эпизодов вручную, чтобы смесь могла быть восстановлена.
- Укажите fine-tuning точку входа на предыдущую контрольную точку и проверьте в логе, что она загрузила те веса.
Те же шесть шагов существуют как кнопки. Что автоматизировано — это то, что легко ошибиться вручную: пометка per-frame intervention, разделение между корректировками и оценками, и запись того, какая контрольная точка произвела какую смесь. Ничто не входит в составленный датасет, что вы не выбрали.
Это не решает за вас. Какой цикл считается корректировкой, какие эпизоды идут в смесь и когда остановиться — остаются суждениями. Поля задокументированы под training, режимы ввода под teleoperation.
Шаг 3 в деталях: сортировка решает качество
После цикла у вас есть запись с некоторыми кадрами, помеченными как interventions. Существуют три места назначения, и неправильное тихо отравляет следующий цикл.
- Подавайте как корректировку, когда вмешательство было подлинным исправлением: политика шла куда-то не то и ваш ввод показал правильное из состояния, которое сама политика произвела.
- Сохраняйте как оценку для чистых автономных циклов и для циклов, на которые вы взяли управление из осторожности. Оценочные эпизоды — это как вы измеряете следующую контрольную точку, и они никогда не должны обучаться.
- Удаляйте циклы, испорченные чем-то не связанным — потерянным кадром камеры, зависшим сервоприводом, предметом, который вы сбили. Грязная корректировка хуже, чем нет корректировки.
Между отпусканием управления политикой и вашим первым вводом манипулятор стоит неподвижно, пока записыватель держит писать — цикл идентичных поз в паре со слегка разными изображениями. Здесь те кадры передачи остаются в сырой записи и вне датасета корректировок. Если вы строите цикл сами, разрежьте их сознательно: политика, обученная на них, учится паузировать где она должна действовать.
Шаг 5 в деталях: составление смеси
Состав берёт исходный датасет плюс датасет корректировок и производит новый, обычный LeRobot датасет который обучается как любой другой. Важное свойство — что выбор эпизодов явен для каждого источника — ничто не смешивается автоматически. Это звучит мелко, пока в первый раз политика себя странно не ведёт и вы должны восстановить то, на чём она обучалась.
Открытый вопрос — это соотношение, и никто не имеет числа, которое переносится. Что литература согласует — это что корректировки должны считаться за больше, чем их доля кадров. Mandlekar et al. переобучают итеративно на данных, которые их система вмешательства собирает, поэтому политика учится пересекать узкие места, и сообщают, что агенты, обученные таким образом, превосходят агентов, обученных эквивалентному числу образцов от non-interventional демонстраторов. Sirius идёт дальше и пересчитывает обучающие образцы по приблизительному человеческому доверию, сообщая о 8-процентном прибыли в симуляции и 27-процентном на реальном оборудовании в частоте успеха политики против методов, с которыми она сравнивает, в два раза быстрее сходимости. Ни один из training точек входа здесь не открывает ручку пересчёта образцов, поэтому грубый заменитель — это сохранять каждый эпизод корректировки, пока субдискретизируете исходные демонстрации — и написать, что вы сделали.

Шаг 6 в деталях: что на самом деле означает продолжение с контрольной точки
Обучение смеси из базовой модели работает, но выбрасывает предыдущий цикл и стоит полный запуск. Продолжение с предыдущей контрольной точки быстрее и обычно лучше. Это также более ограничено, чем фраза предполагает.
Контрольная точка только весов содержит параметры и ничего больше. Загрузка её даёт следующему запуску лучшую начальную точку, чем базовая модель, но moments оптимизатора, позиция learning-rate schedule и порядок данных всё начинаются с нуля. Ожидайте всплеск loss в начале продолжаемого запуска, не читайте его как отказ, и не называйте цикл resume. Это warm start.
| Policy | Размер | GPU tier | Inference за шаг действия | Формат датасета | Эпизоды перед тем, как стоит пробовать |
|---|---|---|---|---|---|
| GR00T N1.7 | около 3 B, примерно 40 M обученных во время fine-tuning | A100 80 GB или H100 80 GB | около 152 ms | LeRobot v2.0 или v2.1 | 50 |
| GR00T N1.5 | около 3 B | A100 80 GB или H100 80 GB | около 165 ms | LeRobot v2.0 или v2.1 | 50 |
| Pi0.5 | около 3 B на backbone PaliGemma | A100 80 GB или H100 80 GB | около 485 ms | LeRobot v3.0 | 50 |
| SmolVLA | около 450 M | RTX 4090 или любая 24 GB карта | около 245 ms | LeRobot v3.0 | 30 |
| ACT | около 80 M, обученный с нуля | RTX 4090 или любая 24 GB карта | около 20 ms | LeRobot v3.0 | 50 |
Latency накапливается внутри DAgger цикла так, как не происходит во время демо: при примерно 485 ms за шаг действия вы берёте управление, потому что манипулятор замешкался, а не потому что он был неправильный, и корректировки замешкания — это не полезные обучающие данные. Если вы итерируете над данными, а не гонитесь за финальной частотой успеха, итерируйте на быстрой модели. Shukor et al. описывают SmolVLA как предназначенную для обучения на одном GPU и развёртывания на consumer GPUs или CPUs, с asynchronous inference стеком, который разделяет предсказание действий и выполнение для разрешения более высоких контрольных частот — свойство, которое держит takeover цикл отзывчивым.
Форматы датасета не взаимозаменяемы. GR00T берёт LeRobot v2.0 или v2.1, и Isaac-GR00T репозиторий описывает его вход как вкус формата LeRobot v2 с добавленным файлом описания модальности; новые trainers здесь ожидают v3.0. Смесь, составленная в неправильной версии, не загружается вместо производства плохой политики — лучший режим отказа, всё ещё потерянный слот в очереди. Документация dataset documentation перечисляет, какой формат берёт каждый trainer.
Цикл, с ведением записей уже сделанным
Перехват с leader arm, клавиатурой или слайдерами; per-frame пометка intervention; подача циклов как корректировок или оценок; составление смешанного датасета с явным выбором эпизодов за источник; и продолжение обучения с контрольной точки вместо базовой модели. Что остаётся вашим решением — это какой цикл считается корректировкой, что идёт в смесь, и когда intervention rate перестал падать.
Смотрите, как DAgger цикл подключенЧетыре способа потратить цикл впустую
1. Обучение только на корректировках
Самый общий отказ и самый соблазнительный ярлык. Датасет только с корректировками — это почти полностью сложная середина задачи, с подходом и отступлением отсутствующие; политика становится лучше в сложной части и забывает, как туда прибыть. Агрегация — это не деталь реализации метода, это механизм: старые данные — это то, что держит остальное поведение на месте, пока корректировки движут одну его часть.
2. Перемещение камеры между циклами
Камера, которая смещается на два сантиметра между циклами, производит политику хуже начальной, и диагноз, который стоит дня. Каждая VLA здесь обусловлена образами; состояние соединения одного не разбирает, где предмет. Сфотографируйте установку перед первым циклом и проверьте эту фотографию перед каждым последующим.
3. Пускание handover артефактов в обучение
Описано выше, и в списке, потому что это невидимо. Симптом — политика, которая стоит на долю секунды ровно там, где operator предыдущего цикла взял управление. Это выглядит как колебание; это подражание.
4. Называние warm start resume
Если вы верите, что состояние оптимизатора перенеслось, начальный всплеск loss читается как баг и вы охотитесь за испорченными данными. Если вы знаете, что оптимизатор начался свежим, всплеск ожидается и вы смотрите на то, что идёт после него. Те же числа, противоположные выводы.
Измерение цикла
Метрика для человеко-контролируемого цикла — это intervention rate: кадры, записанные пока вы были в управлении, разделены на общее количество кадров цикла. Это в статусе takeover, и это единственное число, которое ответит вопрос, который задал цикл. Training loss падает, была ли политика улучшена или нет; частота успеха двоичная и шумная при размерах образцов, которые настольный манипулятор производит. Intervention rate — это непрерывный, измеренный на состояниях, которые сама политика вызвала, и он падает, как политика нужна вам меньше.
Сравнивайте только через циклы, записанные под идентичными условиями. Полный аргумент, и как построить набор оценок, который переживает больше чем два цикла, находится в статье об измерении DAgger цикла. Цикл один реалистично — это тест осуществимости: вы проверяете, что перехват работает на вашем оборудовании, что корректировки приземляются с их пометками, и что продолжаемый запуск загрузил контрольную точку, которую вы назвали. Циклы два и три — это где частота должна начать двигаться. Если она не двигалась к четвёртому циклу, проблема выше по течению от DAgger.
| Напишите за цикл | Почему это имеет значение позже |
|---|---|
| Контрольная точка, которая была полной | Без неё вы не можете атрибутировать улучшение смеси |
| Режим ввода, используемый для перехвата | Корректировки клавиатуры грубее, чем корректировки leader, и это видно в данных |
| Количество циклов и как каждый был сортирован | Был ли у цикла достаточно корректировок, чтобы иметь значение |
| Intervention rate за цикл, и среднее | Метрика прогресса цикла |
| Точный выбор эпизодов за источник | Единственный способ воспроизвести или отменить цикл |
| Warm start или свежее обучение | Объясняет кривую loss, которую вы будете смотреть через неделю |
Если у вас ещё нет контрольной точки
Цикл не имеет точки входа без неё. Запишите первый датасет, обучите первую политику, запустите её — запись, обучение и запуск политики охватывают этот путь. Клиент записи находится на странице загрузки, GPU tiers и часовые ставки на странице цен, и что похоже на пригодный эпизод в SO-100 справочнике сбора данных. Правьте демонстрации перед корректировками: DAgger — это механизм восстановления, и он работает намного лучше на чём-то, что было почти правильным уже.
Могу ли я запустить DAgger цикл без leader arm?▾
Да. Выберите ввод клавиатурой или слайдерами, когда нажимаете Take over: перехват немедленный и ручной, без второго манипулятора для выравнивания. Клавиатура отправляет относительные nudges, которые сервер жёстко зажимает на 2 градуса за соединение и 4 за захват; слайдеры отправляют абсолютную цель и сервер движется не более 6 градусов к ней за вызов, пока интерфейс держит отправку. Колонка действий и пометка intervention те же, что в режиме leader, поэтому корректировки неразличимы в датасете.
Сколько корректировок нужно одному циклу?▾
Нет защищаемого универсального числа, и подсчёт кадров имеет большее значение, чем подсчёт эпизодов. Рабочее правило — что корректировки не должны потеряться в смеси: с 200 исходными эпизодами и тремя эпизодами корректировок ничто не движется. Стремитесь к корректировкам, которые охватывают отказное поведение из нескольких начальных конфигураций, а не трёх повторений того же спасения.
Почему обучение только на корректировках такая плохая идея?▾
Потому что корректировки — это почти полностью сложная середина задачи. Подход, выравнивание и отступление отсутствуют, поэтому политика теряет то, что она уже делала хорошо, пока улучшается в части, которую вы исправили. Сохранение старых данных и добавление к ним — это сам механизм, а не опциональное дополнение.
Возобновляет ли продолжение с контрольной точки предыдущий обучающий запуск?▾
Нет. Контрольная точка только весов восстанавливает параметры и ничего больше: moments оптимизатора, позиция learning-rate schedule и порядок данных начинаются свежим. Это warm start, и начальный всплеск loss ожидается, а не симптом. Напишите, какое из двух вы на самом деле сделали, так что вы правильно читаете кривую через неделю.
Что, если intervention rate не падает?▾
Прекратите добавлять циклы. Плоская частота означает, что корректировки не обучают тому, что вы думаете. Обычные причины выше по течению: камера движется, корректировки начинаются слишком поздно, чтобы быть данными уклонения, кадры handover находятся в обучающем наборе, или задача недоопределена из наблюдений, которые политика действительно получает.
Ничто из этого не является решённой проблемой и ничто из этого — это один клик. Interactive imitation learning — это активная область исследований именно потому, что её вопросы — когда вмешаться, как взвешивать то, что сделал человек, сколько старых данных сохранять — не имеют урегулированных ответов; обзор Celemin et al. отображает, что ещё открыто. Что цикл имеет — это измеримая сходимость, когда он запущен тщательно, на оборудовании, которое стоит несколько сотен евро. Заморозьте установку, вмешайтесь рано, сортируйте честно, составьте сознательно, и записывайте intervention rate каждый раз.
Sources
- Ross, Gordon, Bagnell (AISTATS 2011): A Reduction of Imitation Learning and Structured Prediction to No-Regret Online Learning
- Kelly, Sidrane, Driggs-Campbell, Kochenderfer (2019): HG-DAgger - Interactive Imitation Learning with Human Experts
- Mandlekar et al. (2020): Human-in-the-Loop Imitation Learning using Remote Teleoperation
- Liu, Nasiriany, Zhang, Bao, Zhu (2022): Robot Learning on the Job - Human-in-the-Loop Autonomy and Learning During Deployment (Sirius)
- Hoque et al. (2021): ThriftyDAgger - Budget-Aware Novelty and Risk Gating for Interactive Imitation Learning
- Celemin et al. (2022): Interactive Imitation Learning in Robotics - A Survey
- Belkhale, Cui, Sadigh (2023): Data Quality in Imitation Learning
- Hsu et al. (2022): Vision-Based Manipulators Need to Also See from Their Hands
- Zhao et al. (2023): Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware (ACT / ALOHA)
- Black et al. (2024): Pi0 - A Vision-Language-Action Flow Model for General Robot Control
- Bjorck et al. (2025): GR00T N1 - An Open Foundation Model for Generalist Humanoid Robots
- Shukor et al. (2025): SmolVLA - A Vision-Language-Action Model for Affordable and Efficient Robotics
- LeRobot documentation (Hugging Face)
- NVIDIA Isaac-GR00T repository
Ready for high-quality robotics data?
AY-Robots connects your robots to skilled operators worldwide.
Get Started