RT-1: одна модель на семьсот задач
В уроке 2.3 робот был собран из отдельных частей: языковая модель планировала, навыки и функции ценности обучались по отдельности, детекторы смотрели на сцену, и каждая часть могла подвести другую. Политики части 1 устроены проще: картинка на входе, действие на выходе, но каждая училась одной задаче по десяткам демонстраций. RT-1 (Google, 2022) соединяет обе линии: одна сеть получает кадры с камеры и текст команды и выдаёт действия для 700 с лишним задач. Для этого 13 роботов 17 месяцев собирали 130 тысяч демонстраций, а каждое из 11 чисел действия заменили номером одного из 256 равных интервалов, так что модель выбирает действие, как слово из словаря. Разберём, как кадр и команда становятся 48 токенами, почему действие удобно предсказывать как класс и что в данных важнее для работы с новыми командами и в новой обстановке: объём или разнообразие.
Одна модель и сто тридцать тысяч демонстраций
В уроке 2.3 детектор успеха сказал «да», когда чашка выскользнула, и языковая модель повела план дальше, а планировщик VoxPoser видел только карты и ничего не знал о том, что в них не попало. Система из отдельных частей держится на договорённостях между ними, и каждая часть может подвести другую. Хочется одну модель: на входе пиксели и слова, на выходе действия, без промежуточных форматов.
Такие модели в курсе уже были. Политики части 1 переводят картинку в действие напрямую, но каждая училась одной задаче по десяткам демонстраций, и новая задача означала новые демонстрации и новую сеть. В зрении и обработке языка к 2022 году от узких наборов данных под каждую задачу перешли к большим моделям, которые учатся в два этапа.
Предобучение — первый этап: одну большую модель учат на большом и разнообразном наборе данных многих задач, и она выучивает общее, например как выглядят предметы и как устроен язык. Дообучение — второй: обучение продолжают с готовых весов, а не со случайных, на небольшом наборе данных нужной задачи; иногда оно не требуется, и модель справляется с новой задачей сразу. Модель, которая служит такой общей основой для многих задач, называют foundation-моделью (foundation — фундамент), отсюда название части 3. В RT-1 эта пара уже есть в малом виде: сеть, которая читает кадры, предобучена на ImageNet, наборе размеченных фотографий из урока 2.1, а дальше учится вместе со всей моделью на демонстрациях робота. Авторы RT-1 (Brohan и соавторы, Google, 2022) ставят вопрос шире: можно ли обучить одну большую модель на данных множества задач робота и получить то же, что в других областях, — перенос на новые задачи, предметы и обстановку.
Для этого нужны данные. 13 мобильных манипуляторов Everyday Robots — рука с 7 степенями свободы, захват с двумя пальцами и подвижная база — 17 месяцев собирали демонстрации в «классе роботов»: офисной кухне из стоек и ящиков, собранной для сбора данных. Получилось около 130 тысяч эпизодов — так называют одну запись задачи от начала до конца: кадры камеры, команда и действия оператора на каждом шаге — и 744 инструкции. Инструкция — глагол и один-два существительных: «подними банку колы», «подвинь яблоко к губке», «открой верхний ящик». Инструкции группируют по глаголам в навыки:
| Навык | Инструкций | Пример |
|---|---|---|
| Подвинуть предмет к другому предмету | 337 | move pepsi can near rxbar blueberry |
| Взять предмет из ёмкости и поставить на стол | 162 | pick green jalapeno chip bag from paper bowl and place on counter |
| Поднять предмет | 130 | pick iced tea can |
| Положить предмет в ёмкость | 84 | place brown chip bag into white bowl |
| Поставить вытянутый предмет вертикально | 8 | place water bottle upright |
| Опрокинуть вытянутый предмет | 8 | knock redbull can over |
| Открыть или закрыть ящик | 6 | open the top drawer |
| Задачи для длинных инструкций | 9 | pull napkin out of dispenser |
| Всего | 744 |
Демонстрации записывали с помощью телеоперации: оператор стоял рядом с роботом и вёл его двумя VR-пультами, положение и поворот пульта переводились в смещение захвата, джойстик — в поворот и проезд базы. Робот сам подъезжал к станции, сообщал оператору, какую инструкцию показать и как переставить предметы: так набор получался сбалансированным по задачам и разнообразным по сценам. В обучение попали только успешные эпизоды, а обучение — то же клонирование поведения, что в уроке 1.1: максимизировать правдоподобие действий оператора при данных кадрах и команде.
Чтобы почувствовать масштаб, посчитай сам. Темп сбора RT-1 — 130 тысяч эпизодов на 13 роботов за 17 месяцев, около 590 эпизодов на робота в месяц; это простое деление цифр статьи, а не измеренная производительность оператора.
Эпизоды — задачи, умноженные на демонстрации; срок — эпизоды, делённые на темп RT-1: около 590 эпизодов на робота в месяц. Карточка с пунктирной рамкой — настоящие цифры RT-1 для сравнения, ползунки её не меняют.
Одна задача из части 1 на одном роботе — дело одного дня. Семьсот задач — год работы целого парка. Данные такого размера и разнообразия ещё нужно чем-то выучить: сеть должна прочитать кадр и команду, выдать действие и успеть сделать это достаточно быстро, чтобы управлять роботом в реальном времени. Как она устроена?
От кадра до токенов действия
Трансформер хорошо выучивает много задач по языковой команде, но внимание всех токенов ко всем стоит дорого, а робот ждать не может. Люди выполняют инструкции из набора за 2–4 секунды, поэтому авторы требуют от модели не меньше трёх действий в секунду, и с учётом задержек камеры и связи на саму сеть остаётся меньше 100 мс.
Поэтому вход сжимают до небольшого числа токенов. Кадр 300 × 300 проходит через свёрточную сеть EfficientNet-B3, предобученную на ImageNet, и даёт карту признаков 9 × 9 × 512: это 81 токен картинки. Команду кодирует Universal Sentence Encoder в один вектор, и этот вектор попадает внутрь свёрточной сети через слои FiLM: по вектору команды вычисляют масштаб и сдвиг для каждого канала признаков. Признаки картинки с самого начала извлекаются с оглядкой на команду, а не склеиваются с текстом в конце, как у Gato. Чтобы FiLM не испортил предобученные веса, его слои инициализируют тождеством: масштаб 1, сдвиг 0. Токенизатор картинки и команды — 16 млн параметров.
Дальше TokenLearner оставляет из 81 токена 8: небольшая сеть считает веса внимания по токенам и собирает из них восемь взвешенных сумм, так что до трансформера доходят только важные для команды сочетания. История из 6 кадров даёт 48 токенов с позиционными кодами, и их читает декодер-трансформер из 8 слоёв внимания на 19 млн параметров. Всего в RT-1 35 млн параметров, сеть считает одно действие за 15 мс: TokenLearner ускоряет её в 2,4 раза, а токены прошлых пяти кадров не пересчитываются — ещё в 1,7 раза.
Выход устроен иначе, чем в части 1. Действие — 11 чисел: 7 для руки (смещения по x, y, z, три поворота и раскрытие захвата), 3 для базы (x, y и поворот) и режим: двигать руку, двигать базу или закончить эпизод. Каждое непрерывное измерение делят на 256 равных корзин между его границами, и модель предсказывает не число, а номер корзины: 11 распределений по 256 классам, перекрёстная энтропия, как в классификации. Все 11 токенов выдаются за один проход: авторегрессия, когда следующий токен действия зависит от предыдущих, замедлила модель вдвое и не улучшила результат.
Под капотом: FiLM, TokenLearner и цель обучения
FiLM (feature-wise linear modulation) умножает и сдвигает каждый канал карты признаков числами, которые зависят от эмбеддинга команды :
Матрицы и в начале обучения нулевые, поэтому : предобученная сеть работает как прежде, а команда начинает влиять на признаки по мере обучения. TokenLearner для каждого из выходных токенов считает веса по входным и берёт взвешенную сумму:
Непрерывное измерение действия с границами превращается в номер корзины, а цель обучения — сумма перекрёстных энтропий по 11 измерениям при данных команде и шести последних кадрах:
При исполнении для каждого измерения берут самую вероятную корзину и возвращают её центр как число. Чтобы частота действий не плавала, перед применением действия система выжидает фиксированные 280 мс, наибольшую из наблюдаемых задержек компонентов.
Политики части 1 выдавали действие числами, и в уроке 1.3 регрессия со средним квадратом ошибки усреднила объезды чайника. Корзины этого не делают: распределение по 256 классам может иметь два пика, как карта из урока 2.1. В статье есть и прямая проверка: та же модель с непрерывными действиями и нормальным распределением на выходе выполнила 68% знакомых задач вместо 97%. Но корзины приносят свой вопрос. Если их мало, центр корзины далеко от нужной точки. Если их 256, у каждого класса мало примеров. Сколько корзин нужно, чтобы и попадать в предмет, и обучиться на доступных демонстрациях?
Действие как токен
Прежде чем обучать модель с корзинами, нужно выбрать, сколько их. Мало корзин — центр корзины далеко от нужной точки, и даже идеально обученная модель промахнётся. Много корзин — у каждого класса мало примеров, и модель не успеет выучить, где какая корзина. Это компромисс между разрешением действия и объёмом данных.
Проверим его на столе Ады из урока 2.1: 96 × 96 пикселей, три кубика разных цветов и миска, команда «возьми <цвет> кубик», действие — точка захвата. Сначала без обучения: наложим на стол сетку из корзин на ось, положим точку захвата в корзину и вернём центр корзины, как делает робот с токеном действия. Потом обучим мини-RT-1: токенизатор по клеткам 3 × 3 пикселя с FiLM-условием на слово команды, мягкий отбор одного токена из клеток, как в TokenLearner, маленькая полносвязная сеть вместо трансформера и две головы — корзина по x и корзина по y. Модель обучается здесь, в браузере, за 1000 шагов на 300 демонстрациях, проверка — 30 новых сцен.
Ада — домашний гуманоидный робот на колёсной базе, на котором построены лабораторные работы курса. Подробнее о ней — в уроке 0.1.
Вид на стол сверху, как в уроке 2.1: 96 × 96 пикселей, три кубика и миска (кольцо). Тонкие линии — сетка корзин, подпись вверху — сколько их на ось. Пунктирное кольцо — зона попадания вокруг кубика из команды, крестик — центр его корзины: зелёный — попадает, красный — мимо. Кольца с числом — куда целятся обученные модели, цвет — как у карточки модели под сценой. Остальные значки — в легенде.
Легенда: значки на сцене
Под капотом: мини-RT-1 и её упрощения
Клетка стола даёт цвет минус фон и положение . Токенизатор с FiLM-условием на слово команды , мягкий отбор одного токена и головы классификации устроены так:
Матрицы и — по одной паре векторов на каждое из шести слов, в начале нулевые: FiLM стартует тождеством, как в статье. Веса — это внимание по клеткам, оно и нарисовано на столе цветом модели. Голова — сеть 2 → 48 → с tanh, по логитов на каждую ось; предсказание — самая вероятная корзина, действие — её центр. Обучение — 1000 шагов Adam по 16 примеров, шаг обучения убывает от 0,03 к 0,003.
Упрощения относительно RT-1: один кадр вместо шести, одно слово вместо предложения, один токен вместо восьми, полносвязная сеть вместо трансформера, две оси вместо одиннадцати измерений. Клетки пустого стола одинаковы, поэтому фон участвует в отборе одной клеткой со своим средним положением, а голова видит только положение токена, не его признаки. Всё остальное — настоящее обучение на странице, и его результат зависит от зерна случайности и числа шагов: цифры в разборах миссий считаются по тому, что получилось у тебя.
Сетка из 8 корзин промахивается по кубику независимо от обучения, 256 корзин на 300 демонстрациях не выучиваются, середина работает. Та же логика в статье: 256 корзин на измерение стали возможными при 130 тысячах эпизодов, а замена корзин непрерывными действиями с одним пиком уронила успех на знакомых задачах с 97% до 68%. Корзины платят данными за точность, и данных нужно много. Но каких: больше эпизодов или больше разных задач?
Разнообразие важнее объёма
Каждый эпизод стоит минуты работы оператора и робота, и перед сбором данных нужно решить, на что их тратить: записывать больше демонстраций уже знакомых задач или добавлять новые задачи. Авторы RT-1 ответили на это абляциями — опытами, в которых из системы убирают одну часть и измеряют, что теряется: обучили модель на урезанных наборах данных.
Урезали двумя способами, чтобы развести разнообразие данных — сколько в наборе разных задач — и их объём, число эпизодов. Первый сохраняет все задачи, но ограничивает число эпизодов на задачу: не больше 200, 100 или 50 — остаётся 51%, 37% и 22% данных. Второй сохраняет почти все данные, но убирает задачи с наименьшим числом эпизодов: остаётся 75% задач и 97% эпизодов. Проверка та же, что в основной таблице статьи: знакомые задачи, новые инструкции, лишние предметы на столе и новые фоны. Три последние проверки — обобщение: успех на том, чего не было в обучении, а «обобщение, всего» — среднее по ним.
Были и обратные опыты: к демонстрациям добавляли чужие данные. Из симуляции добавили 518 тысяч эпизодов, где робот брал предметы, которых в «классе роботов» не было, и настоящий робот стал брать эти предметы в 87% попыток вместо 23%, а на знакомых задачах успех почти не изменился: 90% против 92%. С другого робота, руки Kuka, которая брала предметы из корзины, добавили 209 тысяч эпизодов: их действия пересчитали в формат RT-1, а все эпизоды подписали одной командой — «pick anything», «возьми что-нибудь». После этого робот Everyday Robots брал предметы из похожей корзины в 39% попыток вместо 22%, хотя сам этому не учился, а на своих задачах потерял лишь 2 процентных пункта. Модель, обученная только на данных Kuka, на нём не справилась ни разу. Абляции делали и для самой модели, убирая из неё по одной части. Без истории, с одним кадром вместо шести, успех среди лишних предметов упал с 83% до 50%. Без предобучения на ImageNet, когда EfficientNet начинает обучение со случайных весов, новые инструкции упали с 76% до 43%: авторы связывают это с тем, насколько велик и разнообразен набор картинок ImageNet. Строки таблицы откроются после ставки, а под таблицей эти и другие опыты из статьи нужно разложить по тому, что они дали.
Таблица 7 статьи: строки — наборы данных, столбцы — виды проверки, в ячейках — доля успешных попыток в процентах. Полоска под числом — его величина: синяя — знакомые задачи, оранжевая — проверки на обобщение. В скобках — разница с полным набором в процентных пунктах; красным — потеря больше 2 п. п.
Что помогло, а что нет
Под капотом: сравнение с Gato и BC-Z, абляции модели и длинные задачи
Базовые модели обучили на тех же данных RT-1, иначе им нечего было бы обобщать. Gato — тоже трансформер, но токены картинки у него по патчам и без языка, текст добавляется поздно, и размер урезан до 37 млн параметров, чтобы работать на роботе; оригинальные 1,2 млрд давали 1,9 с на действие. BC-Z — свёрточная сеть ResNet без истории кадров и с непрерывными действиями; BC-Z XL — увеличенная до размера RT-1. Таблица 2 статьи, успех в процентах:
| Модель | Знакомые задачи | Новые инструкции | Лишние предметы | Новые фоны |
|---|---|---|---|---|
| Gato | 65 | 52 | 43 | 35 |
| BC-Z | 72 | 19 | 47 | 41 |
| BC-Z XL | 56 | 43 | 23 | 35 |
| RT-1 | 97 | 76 | 83 | 59 |
Абляции модели (таблица 13): без предобучения на ImageNet новые инструкции падают с 76% до 43%; без истории кадров лишние предметы — с 83% до 50%; с непрерывными действиями знакомые задачи — с 97% до 68%; без трансформера, с одним EfficientNet, — до 86%. Авторегрессия по токенам действия не помогла и замедлила вывод с 15 до 36 мс. В настоящей офисной кухне, где меняются стойки, освещение, предметы и места, RT-1 выполнил 70% задач, Gato — 30%, BC-Z — 45%.
Длинные задачи проверяли внутри SayCan из урока 2.3: языковая модель раскладывает просьбу вроде «принеси мне две разные газировки» на шаги, RT-1 исполняет каждый шаг как навык. На 15 просьбах по 9,6 шагов в среднем планирование верно в 87% случаев у всех политик, а исполнение — 67% у RT-1 против 53% у BC-Z и 33% у Gato в знакомой кухне; в новой кухне RT-1 сохранил 67%, BC-Z дал 13%, Gato — 0%. В видео к статье одна просьба раскладывается на 50 шагов.
Четверть задач стоит столько же обобщения, сколько половина всех эпизодов, а данные из симуляции и с другого робота модель принимает без потерь на своих задачах. Авторы делают из этого вывод, с которого начнётся вторая половина части 3: модель должна впитывать разнообразные данные, и чем шире набор задач, предметов и роботов, тем лучше она обобщает. Ограничения они тоже называют: имитация не превосходит оператора, новые инструкции — только сочетания виденных навыков и предметов, задачи не требуют ловкости. Что из RT-1 осталось в системах 2026 года?
Что осталось от RT-1
Действие как токен осталось. RT-2 (2023, урок 3.3) выдаёт те же корзины действий как текстовые токены языковой модели, и ему уже не нужна отдельная голова. OpenVLA (2024, урок 3.5) делит каждое измерение на 256 корзин, как RT-1, и записывает их в редко используемые токены словаря языковой модели. FAST (2025, урок 3.6) идёт дальше: пачку действий сжимают дискретным косинусным преобразованием и кодируют токенами, как текст, так что токенов на секунду движения становится в разы меньше, чем корзин по измерениям.
Остался и сам тип модели: трансформер-политика, которая читает кадры и команду и выдаёт действие. Изменилось то, чем кодируют вход: вместо EfficientNet и эмбеддинга предложения — предобученная модель зрения и языка, которая принесла с собой знание о мире из интернета. Изменилась и частота. RT-1 выдавал одно действие три раза в секунду и за это платил размером модели, а политики 2025–2026 годов выдают пачки действий на десятки шагов управления вперёд, как ACT из урока 1.7, и ведут робота на 50 Гц; π0 из урока 3.6 для этого заменяет корзины на flow matching из урока 1.8.
Вывод «разнообразие важнее объёма» определил следующий шаг. Данные с робота Kuka в RT-1 были первым опытом смешивания роботов; через год Open X-Embodiment (урок 3.4) собрал данные 22 роботов из десятков лабораторий и обучил на них RT-1 и RT-2. Прежде чем смотреть на эти модели, нужно понять, как картинка вообще попадает в языковую модель. Об этом урок 3.2.
Восемь вопросов о типичных заблуждениях
Итоги урока
- RT-1 — одна модель для 744 инструкций: кадры и команда на входе, действия на выходе. Данные — 130 тысяч демонстраций, собранных 13 роботами за 17 месяцев; на знакомых задачах 97% успеха, на новых инструкциях 76%.
- Вход сжат до 48 токенов: EfficientNet-B3 с FiLM-условием на команду даёт 81 токен на кадр, TokenLearner оставляет 8, история из шести кадров — 48. Трансформер из 8 слоёв, 35 млн параметров и 3 действия в секунду.
- Действие как токен: 11 измерений по 256 корзин, классификация вместо регрессии. Распределение по корзинам держит несколько пиков; непрерывные действия с одним пиком дали 68% вместо 97%.
- Число корзин — компромисс: мало корзин — грубое действие и промахи, много — классов больше, чем примеров. 256 корзин окупаются только большим набором данных.
- Разнообразие важнее объёма: убрать 25% задач стоило столько же обобщения, сколько убрать 49% эпизодов. Данные из симуляции и с другого робота модель впитывает без потерь на своих задачах.
- Ограничения: имитация не превосходит оператора, новые инструкции — только сочетания виденных навыков и предметов, одно действие за шаг на 3 Гц.
Открытые вопросы
Каждое из 11 измерений — свой argmax по 256 корзинам. Как получается согласованное действие, если оси выбираются независимо?
Все 11 распределений считаются из одних и тех же признаков трансформера, поэтому они согласованы через общий контекст, а не через условие друг на друга. Там, где распределение по оси двухпиковое, независимый выбор может взять x одного решения и y другого: в уроке 1.3 это названо потерей связей между измерениями. Авторы проверили авторегрессию — каждый следующий токен с учётом предыдущих, как в Gato, — и она не улучшила результат, но вдвое замедлила вывод. Модели следующих уроков решают это иначе: RT-2 выдаёт токены действия последовательно, как текст, а π0 предсказывает все измерения всех действий пачки одним непрерывным генератором.
Почему 256 корзин, а не 64 или 1024, и как выбрать число корзин для своей задачи?
Корзины равномерны между границами измерения, поэтому разрешение действия — диапазон, делённый на число корзин: при шаге захвата в несколько сантиметров 256 корзин дают доли миллиметра, и точность упирается в данные, а не в сетку. Нижнюю границу задаёт задача: корзина должна быть меньше допуска на попадание, как в лаборатории 16 корзин для обычного кубика и 32 для мелкого. Верхнюю — данные: на класс должно приходиться достаточно примеров, иначе соседние корзины путаются. В статье число 256 не обосновано отдельно, это выбор авторов при 130 тысячах эпизодов; на 300 демонстрациях он не работает.
Гид по статье
A. Brohan и соавторы, «RT-1: Robotics Transformer for Real-World Control at Scale», RSS 2023.
- Читать внимательноРаздел 5.1 и рисунок 3: токенизация картинки с FiLM, TokenLearner, корзины действий. Таблицы 2 и 7 и раздел 6.5: сравнение с Gato и BC-Z и абляции данных, из которых следует «разнообразие важнее объёма».
- Можно пропуститьПриложение C.3 про отбор моделей через симуляцию с RetinaGAN и списки инструкций в приложении D.1.
- Вопрос по ходуАвторегрессию по токенам действия используют Gato и Decision Transformer. Почему в RT-1 она ничего не дала, и что бы изменилось, если бы 11 измерений были сильно связаны между собой?
Материалы
- Страница проекта RT-1Видео: 744 инструкции, новые кухни, длинные задачи с SayCan
- Код RT-1Открытая реализация модели на TensorFlow
- E. Perez и соавторы, «FiLM: Visual Reasoning with a General Conditioning Layer», AAAI 2018Слой условия, через который команда входит в свёрточную сеть
- M. Ryoo и соавторы, «TokenLearner: What Can 8 Learned Tokens Do for Images and Videos?», NeurIPS 2021Мягкий отбор токенов, который сжимает 81 токен до 8
Дальше: 3.2 Vision-language модели. RT-1 читает картинку свёрточной сетью, а команду — одним вектором. Чтобы модель знала о мире больше, чем видел робот, картинку нужно подать в языковую модель: как патчи изображения становятся токенами рядом со словами и чему такая модель учится на парах «картинка — текст» из интернета. Урок 3.2 →