Modern Robotics и Physical AIУрок 1.7 · ACT: action chunking
Глоссарий
1.7 Часть 1 · Обучение по демонстрациям

ACT: action chunking

Политика, которая решает заново на каждом шаге, на 50 Гц принимает 50 решений в секунду. Она дрожит, копит ошибки и застревает там, где оператор останавливался подумать. ACT, политика двуручного робота ALOHA, отвечает на это пачками: по одному кадру предсказывает сразу сто действий и исполняет их подряд. Разберём, почему пачка помогает, сколько действий в неё брать, чем за неё платят — поздней реакцией и рывками на стыках — и как стыки склеивают большие модели. Урок завершает основную линию части 1.

≈ 40 минутлаборатория и 5 интерактивов17 миссий с целью
ОШИБКАПрогони 200 эпизодов и найди, когда пачка вредит
ПАЧКИСравни пачки из 1, 10 и 100 действий на одной сцене и подбери длину
АРХИТЕКТУРАСобери ACT из блоков так, чтобы сошлись размерности
CVAE И СМЕШИВАНИЕРассуди спор о «стиле» и перемотай смешивание пачек по шагам
СТЫКИНарисуй прогноз скорости и найди режим, который выдерживает задержку 200 мс

Начать урок ↓

1 ALOHA

Дешёвые руки и 50 демонстраций

Чтобы учить робота по демонстрациям, нужны руки, на которых человеку удобно показывать двуручную работу, и данные, которых хватит для обучения. Точные двуручные системы дороги, а на дешёвых трудно делать тонкую работу.

В 2023 году Тони Чжао, Викаш Кумар, Сергей Левин и Челси Финн собрали систему телеоперации из недорогих рук. Оператор двигает две маленькие ведущие руки WidowX, а две большие ведомые руки ViperX повторяют их углы сустав в сустав, поэтому обратная кинематика не нужна. Неспециалист собирает систему меньше чем за 2 часа. На рисунке в статье цена — «<$20k»: базовый комплект стоит $18k, с опциями вроде камер — $20k; ведомая рука ViperX — около $5600, ведущая WidowX — $3300. Четыре камеры Logitech C922x смотрят сверху, спереди и с двух запястий и снимают 480×640 при 30 кадрах в секунду, а телеоперация и запись идут на 50 Гц. Частота важна: при 5 Гц операторы тратят на задачу на 62% больше времени.

Железо неточное: ViperX ошибается на 5–8 мм, полезная нагрузка — 750 г. Если просто повторять записанные углы, такой ошибки хватает, чтобы промахнуться мимо мелкой детали.

Недостающую точность авторы добирают обучением: политика ACT (Action Chunking with Transformers) смотрит в четыре камеры и поправляет движение по кадрам. Её обучали отдельно для каждой задачи на 50 демонстрациях, это 10–20 минут данных, и проверяли каждую задачу 25 раз.

Успех ACT на реальных задачах

Для Thread Velcro записали 100 демонстраций. Лучший из базовых методов, BeT, получил 0%.

Видео авторов

Видео загружается с сайта авторов, когда нажмёшь на обложку. Ролики с реакцией ACT на помехи — на странице проекта.

На дешёвых руках ACT справлялась с тонкими задачами в 64–96% попыток, кроме Thread Velcro, где успех — 20%. Главным приёмом авторы называют пачку действий. Чем плоха обычная политика, которая выдаёт одно действие на кадр?

2 Накопление ошибки

Пятьдесят решений в секунду

Чем плоха обычная политика? Она выдаёт одно действие на каждый кадр. На 50 Гц это 50 решений в секунду и 500 за десять секунд, и каждое решение немного ошибается.

Ошибка уводит руку туда, где демонстраций меньше, а там следующее решение ошибается сильнее. Ошибки складываются: в уроке 1.1 их рост оценивали как εT2\varepsilon T^2, то есть с квадратом длины эпизода.

DAgger из урока 1.2 добавлял примеры туда, куда съезжает политика. Для этого нужен эксперт, который размечает каждое новое состояние, а у ALOHA есть только 50 записанных демонстраций.

Другой выход — решать реже: по одному кадру предсказать пачку из kk действий и исполнить её целиком. Решений станет в kk раз меньше, но между решениями рука едет вслепую. Проверим на 200 эпизодах простой модели, когда это выигрыш. В модели отклонение кружки от пути за каждый шаг умножается на λ\lambda — это устойчивость системы без управления. При λ<1\lambda < 1 рука сама возвращается к цели, как позиционный регулятор. При λ>1\lambda > 1 отклонение растёт само, как у робота, который балансирует.

📊 200 прогонов

По горизонтали — отклонение кружки от пути в конце эпизода, см. Высота столбика — сколько прогонов из 200 закончились с таким отклонением. Стрелки по краям — прогоны, которые ушли дальше графика.

Под капотом: модель и что говорит теория
внутри пачки:x←λ x,в момент решения:x←(λ−c+δ) x+ε ξ.\begin{aligned} &\text{внутри пачки:} && x \leftarrow \lambda\,x,\\ &\text{в момент решения:} && x \leftarrow (\lambda - c + \delta)\,x + \varepsilon\,\xi. \end{aligned}

Здесь xx — отклонение кружки от пути в сантиметрах, ξ\xi — стандартный шум. Эпизод — 200 шагов по 20 мс, то есть 4 с; прогонов 200, у каждого своё фиксированное зерно, поэтому картинка повторяется в точности. ε=0,3\varepsilon = 0{,}3 см — ошибка на каждом решении. δ=0,01\delta = 0{,}01 — ошибка, которая растёт с отклонением: вдали от данных политика ошибается сильнее. c=max⁡(0,λ−1)c = \max(0, \lambda - 1) — поправка, которую политика выучила у эксперта: на неустойчивой системе эксперт всё время гасит рост отклонения, и в данных это есть. Последнее решение у любой политики приходится на последний шаг, поэтому сравнение честное. Разброс σ\sigma — стандартное отклонение конечного xx.

Теория. Simchowitz, Pfrommer и Jadbabaie (COLT 2025) показали, что гладкая детерминированная марковская политика при исполнении ошибается экспоненциально по горизонту сильнее, чем на данных, даже при устойчивой динамике. Обойти это помогают немарковские, негладкие и стохастические политики, и авторы прямо называют пачки действий и диффузию. Zhang и соавторы (ICLR 2026) доказали: при достаточно длинной пачке накопление ошибки ограничено, если система устойчива без обратной связи. Механизм — устойчивость в смысле теории управления. Для неустойчивых систем нужен шум при сборе демонстраций, чтобы в данных были поправки.

Спор не закончен. В препринте Lazzati и соавторов (август 2026) сокращение горизонта успех не объясняет: работают немарковская выразительность и «неявное ансамблирование». Zeng и соавторы из группы Тедрейка (август 2026) считают главным немарковость демонстраций, а при длинном контексте лучше всего у них работают замкнутые политики.

Пачка сужает разброс, если система сама гасит отклонения, и вредит, если раскачивает их. Но у пошаговой политики есть вторая беда, которой в этой модели нет: она застревает там, где оператор останавливался подумать. Справится ли с этим пачка и сколько действий в неё брать?

🔬 Лаборатория

Плавность против реактивности

Справится ли пачка с паузами? Оператор ведёт руку неравномерно: посередине пути он останавливается подумать, и пошаговая политика в этом месте застревает.

В точке паузы на каждую демонстрацию приходится много кадров «стоять» и один кадр «ехать». Политика видит только текущий кадр и не знает, сколько уже стоит, поэтому снова и снова выбирает «стоять».

Больше демонстраций не поможет: оператор останавливается в каждой, и кадров «стоять» станет столько же больше.

Пачка несёт продолжение движения: в ней есть и пауза, и то, что оператор сделал после неё. Захват Ады ведёт кружку по столу к полке, вид сверху. Политика обучена на десяти демонстрациях и в похожем положении берёт медиану того, что делал оператор, — так ведёт себя сеть, обученная с L1. Сравним на одной сцене пачки из 1, 10 и 100 действий, толкнём кружку посреди пачки и подберём длину.

Ада — домашний гуманоидный робот, на котором построены лабораторные работы курса. Подробнее о ней — в уроке 0.1.

Под капотом: как устроена лаборатория
  • Демонстрации. 10 проездов на 0,8 м со скоростью около 0,25 м/с, запись на 50 Гц. Оператор останавливается у отметки 34 см. Короткие паузы — от 12 до 19 шагов, в среднем 0,31 с; длинные — от 22 до 35 шагов, в среднем 0,58 с.
  • Политика. По положению кружки берём кадры демонстраций рядом, с гауссовыми весами (σ=8\sigma = 8 мм). Для каждого шага jj пачки — взвешенная медиана положений, в которых эти кадры оказались через j шагов. Это абсолютные целевые положения, как в ACT. К пачке добавляется сдвиг около 3 мм в случайную сторону, вдали от данных он растёт: в 3 см от них — вдвое. Захват догоняет цель с запаздыванием: за шаг проходит 80% расстояния.
  • Почему застревает k=1k = 1. В точке паузы в данных десять раз по 12–19 кадров «стоять» и по одному кадру «ехать». Медиана следующего положения — «стоять», и захват стоит, сколько бы ни прошло времени. Пачка проходит паузу, если больше половины кадров уже едут к её концу: тогда и медиана едет.
  • Толчок сдвигает кружку в захвате на 6 см вбок. Захват идёт по старому плану, и кружка едет со сдвигом, пока новая пачка его не учтёт. В миссиях 3 и 4 толчок приходит после паузы, сразу после начала новой пачки, то есть в худший момент. Время реакции — от толчка до первой пачки, которая его видит. С temporal ensembling считаем, когда кружка вернулась на путь хотя бы наполовину.
  • Исходы. Кружка на полке, если её поставили не дальше 3 см от отметки. На путь даётся 8 с. Рывок — шаг, на котором ускорение захвата больше 4 м/с².

Пачка проходит паузу, но пока она исполняется, рука не видит толчка. Рабочее окно в игрушке — от 14 до 25 действий, и большие системы тоже исполняют только часть пачки. У ACT пачка — 100 действий. Как одна сеть выдаёт сразу сто действий?

3 Архитектура

Сто действий за один проход

Как одна сеть выдаёт сразу сто действий? Ей нужно превратить четыре кадра и положения суставов в 100 действий по 14 чисел, причём быстро: ACT опрашивают на каждом шаге, 50 раз в секунду.

Сеть из урока 1.1 устроена под одно действие: кадр на входе, действие на выходе.

Можно выдавать действия по одному, как языковая модель выдаёт слова. Но тогда на пачку уходит сто проходов сети подряд, а на каждом шаге столько не успеть.

ACT берёт трансформер из урока 1.6. Кадр с каждой камеры проходит через свёрточную сеть ResNet18 и превращается в карту признаков 15×20×512. Карту разворачивают в 300 токенов и добавляют 2D-синусоидальные позиции, чтобы сеть знала, из какого места кадра каждый токен. С четырёх камер выходит 1200 токенов, к ним добавляют токен суставов и токен «стиля» z — всего 1202. Энкодер перемешивает токены, а декодер получает kk фиксированных запросов, по одному на будущее действие, и через cross-attention выдаёт все kk действий сразу. Каждое действие — 14 абсолютных целевых положений ведущих рук, по 6 суставов и захват на каждую; с приращениями результат был хуже. Собери эту схему из блоков: на каждом стыке видна размерность.

🧱 Песочница

Нажми на блок, потом на место в схеме, или перетащи блок. Блок в схеме можно вернуть нажатием. Среди блоков есть лишние.

Под капотом: числа ACT

Энкодер — 4 слоя, d = 512, 8 голов. По статье в декодере 7 слоёв, но в исходном коде на выход идёт только первый (issue #25 в репозитории ACT; в LeRobot стоит 1). ResNet18 начинает с весов ImageNet. Всего около 80 млн параметров, обучение — около 5 часов на RTX 2080 Ti, AdamW, шаг обучения 1e-5, батч 8, своя модель на каждую задачу. Вывод занимает около 10 мс.

Целевые положения отрабатывает ПИД-регулятор в моторах Dynamixel. Предсказывают положения ведущих рук, а не ведомых: расхождение между ними через ПИД неявно задаёт силу. Почему приращения хуже, статья не объясняет. Возможное объяснение — из урока 0.3: позиционные цели вместе с регулятором дают систему, устойчивую без обратной связи, а это условие, при котором пачки помогают.

На входе 1202 токена, на выходе 100×14, около 80 млн параметров и около 10 мс на вывод. В схеме есть блок, который на выводе не работает, — энкодер CVAE. Зачем он нужен при обучении?

4 CVAE

Латентная переменная «стиль»

Зачем ACT энкодер CVAE? Люди показывают одну задачу по-разному: один объезжает вазу слева, другой справа.

Регрессия со среднеквадратичной ошибкой усредняет манеры: среднее двух объездов ведёт прямо в вазу. Это вывод урока 1.3.

ACT учат с L1 вместо MSE. L1 не усредняет, а берёт медиану — сторону, где демонстраций больше. В вазу политика не едет, но вторая манера теряется.

Чтобы не терять манеры, ACT учат как условный вариационный автоэнкодер, CVAE. При обучении отдельный энкодер смотрит на суставы и на k действий из демонстрации, без картинок, и сжимает манеру в вектор zz из 32 чисел. Политика получает zz вместе с картинками и восстанавливает действия. Функция потерь — L1+β KLL_1 + \beta\,\mathrm{KL} с β=10\beta = 10: слагаемое KL\mathrm{KL} тянет zz к стандартному нормальному распределению. На выводе действий демонстрации нет, поэтому энкодер выбрасывают и подают z=0z = 0. Что это даёт, объясняют двумя способами. Выбери одно объяснение и проверь опытом: оператор объезжал вазу 26 раз слева и 24 справа, на схемах робот едет снизу вверх.

⚖️ Спор двух объяснений
Объяснение А

z — это стиль. На выводе политика выбирает манеру и объезжает вазу то слева, то справа, как оператор.

Объяснение Б

z нужен только при обучении. На выводе z = 0, и политика каждый раз делает одно и то же, как регрессия с L1.

Регрессия с L1без латентной переменной
ACT, z = 0как на выводе
Случайный zтот же декодер, z ~ N(0, I)
Под капотом: игрушечный CVAE

Сторона объезда — единственное, что можно закодировать. Энкодер переводит «слева» в z∼N(+μ,σ2)z \sim \mathcal N(+\mu, \sigma^2), «справа» — в z∼N(−μ,σ2)z \sim \mathcal N(-\mu, \sigma^2). Декодер с L1L_1 выдаёт медиану, то есть ту сторону, которая вероятнее при данном zz. μ\mu и σ\sigma подобраны перебором так, чтобы минимизировать сумму двух слагаемых: доли неверных сторон (цена ошибки — 1, в тех же единицах, что L1L_1) и β KL(N(±μ,σ2) ∥ N(0,1))\beta\,\mathrm{KL}\bigl(\mathcal N(\pm\mu, \sigma^2)\,\|\,\mathcal N(0, 1)\bigr).

β=10:μ=0, ошибка стороны 48 %,β=1:μ=0,39, σ=0,92, ошибка 34 %.\begin{aligned} \beta = 10:&\quad \mu = 0,\ \text{ошибка стороны } 48\,\%,\\ \beta = 1:&\quad \mu = 0{,}39,\ \sigma = 0{,}92,\ \text{ошибка } 34\,\%. \end{aligned}

При β=10\beta = 10 энкодер ничего не кодирует: zz не знает о стороне. При β=1\beta = 1 он различает стороны. При β=10\beta = 10 энкодеру выгоднее ничего не кодировать: каждый бит о стороне стоит дороже, чем он экономит в L1. Регрессия с L1L_1 без zz выдаёт медиану всех демонстраций — сторону, где их больше. Если демонстраций слева и справа поровну, медиана не определена: L1 одинаково хороша для любой траектории между сторонами, в том числе прямо в вазу. Случайные z — десять чисел из генератора с зерном 21.

На выводе ACT детерминирована и ведёт себя как регрессия с L1. У авторов без CVAE успех на данных человека падал с 35,3% до 2%, но независимый перезапуск — препринт 2026 года с говорящим названием «The Latent That Never Was» — это падение не воспроизвёл. А когда данных стало много, авторы ALOHA сами перешли на диффузию: в ALOHA Unleashed на задаче ShirtMessy диффузионная функция потерь дала 70%, вариант ACT с L1 — 25%. Осталась проблема из лаборатории: пачка из 100 действий видит мир раз в 2 секунды. Как ACT реагирует быстрее, не укорачивая пачку?

5 Temporal ensembling

Смешивание перекрывающихся пачек

Как реагировать быстрее, не укорачивая пачку? Пачка из 100 действий исполняется 2 секунды, и всё это время рука не видит новых кадров.

Новый кадр учитывается только в следующей пачке.

В лаборатории мы исполняли только часть пачки и составляли новую чаще. Реакция стала быстрее, но каждая новая пачка начинается немного иначе, чем шла старая, и на стыках появляются рывки.

ACT опрашивает модель на каждом шаге, а для текущего шага усредняет все предсказания, которые для него накопились, — при k = 100 их до ста. Это temporal ensembling. Веса — wi=e−miw_i = e^{-m i}, где w0w_0 — самое старое предсказание; в коде ACT m=0,01m = 0{,}01. Заглянем внутрь и перемотаем процесс по шагам. Наверху лента: по горизонтали шаги, по вертикали боковое смещение захвата; тонкие линии — пачки, которые предсказали выбранный шаг, толстая — что захват исполнил. Внизу — вес каждого предсказания, от самого старого слева до самого свежего справа.

🧠 Мысли модели по шагам
Под капотом: формула и лента
a(t)=∑iwi a^i(t)∑iwi,wi=e−mi,a(t) = \frac{\sum_i w_i\,\hat a_i(t)}{\sum_i w_i}, \qquad w_i = e^{-m i},

где i=0i = 0 — самая старая пачка. В коде ACT предсказания для текущего шага лежат в порядке, в котором появлялись пачки, и веса e−0,01 ie^{-0{,}01\,i} идут от самой старой. При k=100k = 100 сумма весов ≈ 63,5, поэтому самое старое предсказание даёт ≈ 1,6% действия, самое свежее — ≈ 0,6%. Чем меньше mm, тем быстрее учитываются новые наблюдения.

В ленте новая пачка начинается на каждом шаге из того места, где захват сейчас, и за 12 шагов сходится к выбранному объезду. В режиме двух стратегий пачки до шага 100 выбирают объезд сверху, а начиная с шага 100 — снизу. Препятствие занимает шаги 132–168 и ±4 см по высоте.

Смешивание сглаживает движение, но больше доверяет старым предсказаниям, а среднее двух разных стратегий может вести в препятствие. На практике у ACT temporal ensembling добавил к успеху 3,3 процентного пункта, в π0 он ухудшал работу, а в ALOHA Unleashed не понадобился: пачку из 50 действий там исполняют целиком, а перепланирование раз в секунду авторы называют ограничением. Опрашивать модель на каждом шаге можно, потому что ACT быстрая: вывод занимает около 10 мс. Что делать, если модель думает в десятки раз дольше?

6 Задержка и стыки

Пока модель думает, робот едет

Что делать, если модель думает долго? π0 выдаёт пачку за 73 мс на RTX 4090, у Gemini Robotics путь от наблюдения до пачки — около 250 мс. Всё это время робот должен что-то делать.

Новая пачка приходит с опозданием и посчитана по кадру, который уже устарел: робот за это время уехал.

Ждать новую пачку стоя — робот замирает. Переключаться на неё сразу, как пришла, — на стыке скачок. Смешивать пачки, как temporal ensembling, — усредняются разные стратегии.

Real-Time Chunking (RTC; Black, Galliker, Levine, NeurIPS 2025) генерирует следующую пачку, пока исполняется текущая. Действия, которые успеют исполниться за время вывода, замораживаются, а остальные дорисовываются так, чтобы продолжать старую пачку; переобучать модель не нужно. Проверим на роботе, который объезжает препятствие сверху или снизу. Политика генеративная, как π0: пачка из 50 действий, сторону объезда она выбирает случайно, пока робот не отъехал от оси. Сначала нарисуй прогноз скорости при синхронном исполнении, потом сравни четыре режима при задержке 200 мс.

✏️ Прогноз кривой и условия
Под капотом: режимы и другие решения
  • Синхронно. Исполнить 25 действий, остановиться, подождать вывод, начать новую пачку с того места, где стоим.
  • Наивно асинхронно. Вывод новой пачки начинается за время задержки до конца 25 действий, по кадру того момента. Когда пачка приходит, робот переключается на неё сразу с нужного шага, не сглаживая стык.
  • TE. Новая пачка приходит на каждом шаге, посчитанная по кадру dd шагов назад. Действие — среднее всех пачек с весами e−0,01 ie^{-0{,}01\,i}, как в ACT.
  • RTC (упрощённо). Первые dd действий новой пачки — те же, что у старой. Дальше новая пачка смешивается со старой с весом старой e−j/6e^{-j/6}, последние 25 действий — только новые. Новая пачка продолжает ту же сторону объезда: в настоящем RTC это делает наведение при генерации.
  • Критерии. Пауза — шаги, на которых робот едет медленнее 5 см/с; пройти нужно с паузами меньше 0,1 с суммарно. Скачок скорости — наибольшее изменение скорости между соседними шагами по 20 мс, порог — 0,15 м/с. Препятствие — круг радиусом 7 см, робот — 2 см.

Есть и другие решения. BID (ICLR 2025) на каждом шаге сэмплирует несколько пачек и выбирает одну по согласованности с прошлым решением; относительный прирост — 32%, с EMA — 46%, ценой примерно вдвое больших вычислений. Асинхронный вывод в SmolVLA сократил время на задачу с 13,75 до 9,7 с.

В игрушке задержку 200 мс выдерживает только RTC. В статье на π0.5 при искусственной задержке +100 и +200 мс RTC не деградирует, синхронный режим деградирует линейно, а temporal ensembling раскачивает робота до защитной остановки. RTC выполняет то же движение на 20% быстрее синхронного режима и зажигает спичку при задержке больше 300 мс. В версии RTC с обучением (декабрь 2025) задержку имитируют прямо при обучении, поэтому лишних вычислений на выводе нет; на π0.6 результат на уровне исходного RTC. Какие пачки в итоге берут большие системы и сколько из них исполняют?

7 Пачки у больших систем

Сколько действий в пачке в 2023–2025 годах

Какие пачки берут большие системы? Почти все современные политики выдают пачки и чаще всего исполняют их не целиком: длинная пачка даёт связное продолжение, частый вывод — реакцию.

СистемаПачкаИсполняется до нового выводаЧастота
ACT, 2023100 (на сайте 90)с TE — опрос на каждом шаге; без TE — все k50 Гц, пачка — 2 с
Diffusion Policy, 202316810 Гц
Mobile ALOHA (ACT), 202445н/д50 Гц
ALOHA Unleashed, 202450 (1 с)50, без TE50 Гц
π0, 20245025 (0,5 с) на роботах с 50 Гц; 16 (0,8 с) на UR5e и Franka50 / 20 Гц
π0.5 + RTC, 202550синхронно 25; с RTC — асинхронно50 Гц
GR00T N1, 202516 (63,9 мс на пачку)н/ддействия 120 Гц, VLM 10 Гц
TRI LBM, 202516 (1,6 с)8 (0,8 с)10 Гц
Atlas LBM, 202548 (1,6 с)24 (0,8 с)30 Гц
SmolVLA, 202550асинхронно, по порогу очередин/д
Gemini Robotics, 2025н/дн/д«эффективно 50 Гц»

Что выросло из ALOHA

  • Mobile ALOHA (2024) — ALOHA с подвижной базой за $32k, 3 камеры, пачка ACT — 45. Совместное обучение со статичными демонстрациями ALOHA (825 штук) по аннотации повышает успех «до 90%». В таблице для ACT: Call Elevator — с 0 до 95%, Rinse Pan — с 0 до 80%, Wipe Wine — с 50 до 95%.
  • ALOHA 2 (2024) — ведущим захватам нужно примерно в 10 раз меньше усилия, пассивная компенсация гравитации, 4 камеры RealSense D405, модель для MuJoCo.
  • ALOHA Unleashed (2024) — больше 26 000 демонстраций на 5 задач, трансформер с диффузионной функцией потерь на 217 млн параметров, вывод за 0,043 с на RTX 4090.
  • Atlas LBM (Boston Dynamics и TRI, 2025) — 450 млн параметров. Исполнение можно ускорить в 1,5–2 раза без заметной потери качества.

Пачки, стыки и задержка разобраны. Какие из этих идей легче всего понять неправильно? Проверим.

8 Проверь себя

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

9 Итог

Итоги урока

  1. Action chunking: по одному кадру предсказать kk действий. Решений в kk раз меньше, и пачка проходит паузы, на которых застревает пошаговая политика.
  2. У длины пачки есть окно: короткие застревают, длинные поздно реагируют на неожиданное. Большие системы исполняют часть пачки: π0 — 25 из 50.
  3. ACT: ResNet18 → 1200 токенов, плюс суставы и z, энкодер-декодер, 100 запросов → 100×14 абсолютных положений за один проход.
  4. CVAE нужен только при обучении. На выводе z=0z = 0, и ACT детерминирована.
  5. Temporal ensembling больше доверяет старым предсказаниям (w0w_0 — самое старое). Он сглаживает, но усредняет разные стратегии и плохо переносит задержку.
  6. RTC склеивает пачки при задержке вывода: замораживает то, что успеет исполниться, и дорисовывает остальное.
  7. Пачка помогает на системе, устойчивой без обратной связи, и может навредить на неустойчивой.

ACT учат отдельно на каждую задачу: 50 демонстраций на навык, одна политика — одна задача. Политика повторяет движения оператора, но не знает геометрии сцены и не понимает слов, поэтому не может понять, что именно делать в новой ситуации. С этой проблемы начинается часть 2.

Открытые вопросы

Задержка вывода 150 мс, робот управляется на 50 Гц. Какую длину пачки и какой способ исполнения выберешь и почему?

150 мс — это 7–8 шагов. Пачка должна с запасом покрывать задержку, а исполняемая часть — укладываться во время, за которое нужно успевать реагировать. Например, пачка из 50 действий (1 с), исполнять около 25 (0,5 с), как у π0. Синхронный режим давал бы паузу 150 мс на каждые полсекунды движения, наивное переключение — скачки на стыках. Лучше асинхронно с RTC: заморозить 8 действий, которые исполнятся за время вывода, и дорисовать остальные. Temporal ensembling опасен, если политика генеративная и соседние пачки могут выбрать разные стратегии.

Почему пачка действий помогает на устойчивой системе, но может навредить на неустойчивой, например при балансировании?

Пачку исполняют без обратной связи. Если система устойчива сама — например, позиционный регулятор держит цель, — отклонения между решениями гаснут, а решений и их ошибок меньше. Если система неустойчива, за время пачки отклонение растёт в λk\lambda^k раз и исправить его некому до следующего решения. По ICLR 2026 для таких систем нужен шум при сборе демонстраций, чтобы политика выучила поправки; пачки при этом приходится делать короткими.

Гид по статье

Zhao, Kumar, Levine, Finn, «Learning Fine-Grained Bimanual Manipulation with Low-Cost Hardware», RSS 2023.

Материалы

➡️

Дальше: часть 2. Как роботу понять, что и где делать, если он умеет только повторять движения? В части 2 ему дают геометрию сцены и язык: Transporter и CLIPort, PerAct и планировщики на больших языковых моделях. RTC придумали для flow-политик вроде π0: о flow matching — дополнительный урок 1.8.

Урок был понятен?
Нашли ошибку или неточность? Сообщить на GitHub
Урок пригодился? Скажи спасибо — так автор узнает, что курс читают.