Modern Robotics и Physical AIУрок 3.2 · Vision-language модели
Глоссарий EN
3.2 Часть 3 · Foundation-модели для роботов

Vision-language модели: как картинка попадает в языковую модель

RT-1 из урока 3.1 знает о мире ровно то, что было в 130 тысячах демонстраций робота. Знание о мире есть у больших языковых моделей, но они читают текст, а робот видит камерой. В этом уроке разберём, как картинку превращают в последовательность токенов и подают в языковую модель. ViT режет изображение на квадраты 16 × 16 пикселей и делает из каждого токен. LLaVA берёт готовую сеть зрения из CLIP и готовую языковую модель и учит между ними одну матрицу, которая переводит токены картинки в векторы, понятные языковой модели. PaliGemma собрана по той же схеме из открытых частей и весит 3 миллиарда параметров. Модели, которые читают картинку вместе с текстом и отвечают словами, называют vision-language моделями, или VLM. В лаборатории маленькая VLM обучается в браузере и описывает предмет двумя словами, а сеть зрения, обученная заранее, соревнуется с сетью, которая учится с нуля.

≈ 40 минут1 лаборатория, 2 интерактива, схема и квизмиссии с целью
НАРЕЗКА КАРТИНКИНарежь картинку предмета на 16 квадратов, преврати каждый в столбик чисел и проверь, заметит ли модель, что квадраты перемешаны
ОПИСАНИЕ СЛОВАМИОбучи в браузере модель, которая описывает предмет двумя словами, и проверь её на сочетании цвета и формы, которого не было в обучении
ГОТОВОЕ ЗРЕНИЕСравни на одних и тех же 200 подписях модель с сетью зрения, обученной заранее, и модель, которая учит зрение с нуля
МОСТ К СЛОВАМПосмотри на карте векторов языковой модели, что меняется, когда обучают одну матрицу между сетью зрения и языковой моделью

Начать урок ↓

1 Знание

Робот знает демонстрации, языковая модель знает мир

RT-1 в уроке 3.1 выбирает действие как токен из 256 корзин, и делает это по 130 тысячам демонстраций. В них нет ничего, кроме того, что люди показали роботу: предметы со стола в офисной кухне, команды из набора, который собирали 17 месяцев. Попроси RT-1 взять предмет, которого не было в демонстрациях, или объяснить, что значит «потухший экран», и модели неоткуда это взять.

Знание о мире есть у больших языковых моделей. В уроке 2.3 SayCan спрашивал языковую модель, какой шаг полезен для просьбы, Code as Policies просил её писать код, а VoxPoser по её коду строил карты. Но каждый раз модель получала текст и отдавала текст, а сцену ей пересказывали детекторы: список предметов, координаты, ответ «успех — нет». Детектор видит только то, чему его учили, и всё, что не попало в его словарь, до языковой модели не доходит.

Хочется убрать пересказчика и показать языковой модели саму картинку. Модель, которая получает картинку и текст и отвечает текстом, называют vision-language моделью, или VLM. Трудность в том, что языковая модель читает последовательность токенов: каждый токен — вектор фиксированной длины из таблицы эмбеддингов, и внимание из урока 1.6 работает с такими векторами. Картинка — это сетка пикселей 224 × 224 × 3, полторы сотни тысяч чисел без всякой последовательности. Как превратить её в токены, которые трансформер прочитает так же, как слова?

🧩 Интерактив 1

ViT: патчи становятся токенами

Трансформер читает последовательность векторов одинаковой длины, а картинка — сетка пикселей. В уроке 1.6 мы уже резали кадр кухни на патчи, чтобы посчитать стоимость внимания; Vision Transformer (ViT, Dosovitskiy и соавторы, Google, 2021) делает из этой нарезки всю модель. Картинку 224 × 224 режут на патчи — квадраты 16 × 16 пикселей, получается 14 × 14 = 196 патчей. Каждый патч разворачивают в вектор из 16 · 16 · 3 = 768 чисел и умножают на одну и ту же обучаемую матрицу: это линейный слой, он переводит патч в вектор ширины модели. Авторы называют результат эмбеддингами патчей, и дальше с ними работает обычный трансформер из урока 1.6: внимание всех ко всем, полносвязные блоки, нормализация. Отдельный обучаемый токен в начале последовательности, как [class] в BERT, собирает ответ для классификации.

Внимание не знает порядка токенов: переставь их, и выход переставится так же. Для слов это решали позиционные кодировки из урока 1.6, для патчей — так же: к эмбеддингу каждого патча прибавляют обучаемый вектор его позиции. В ViT эти векторы в начале обучения ничего не знают о том, что патч 2 лежит правее патча 1: все пространственные отношения модель выучивает из данных, в отличие от свёрточной сети, где соседство зашито в каждом слое.

На сцене — иконка 16 × 16 из мира стола урока 2.1, нарезанная на 16 патчей по 4 × 4 пикселя. Линейный слой переводит каждый патч в вектор из 16 чисел, к нему прибавляется вектор позиции, и 16 токенов идут в один блок внимания. Это энкодер — часть модели, которая превращает картинку в векторы; он понадобится маленькой VLM в лаборатории ниже. Справа — среднее всех токенов на выходе и его сходство с выходом для исходной, неперемешанной картинки.

Схема энкодера на одной картинке, а не рисунок модели. Слева — иконка 16 × 16 пикселей, нарезанная на 16 патчей 4 × 4; число в углу — исходный номер патча, оранжевое — если патч переставлен. В середине — 16 токенов: столбик — вектор из 16 чисел, оранжевая клетка — положительное число, синяя — отрицательное, чем ярче, тем больше по модулю. Фиолетовые квадратики с номерами под столбиками — векторы позиций 0–15. Справа — выход энкодера, среднее всех токенов после блока внимания, для исходной картинки и для текущей; сходство — косинус угла между ними, 1,000 — выходы совпадают.

Предмет
Патчи
Векторы позиций
Под капотом: формула ViT, размеры моделей и что дали позиции

Картинку x∈RH×W×Cx \in \mathbb R^{H \times W \times C} режут на N=HW/P2N = HW/P^2 патчей со стороной PP; NN и есть длина последовательности. Вход трансформера в статье записан так:

z0=[ xclass; xp1E; xp2E; … ; xpNE ]+Epos,E∈R(P2C)×D,Epos∈R(N+1)×D.\begin{gathered} z_0 = [\,x_\text{class};\ x_p^1 E;\ x_p^2 E;\ \dots;\ x_p^N E\,] + E_\text{pos}, \\ E \in \mathbb R^{(P^2 C) \times D}, \qquad E_\text{pos} \in \mathbb R^{(N+1) \times D}. \end{gathered}

Одна матрица EE для всех патчей, своя строка EposE_\text{pos} для каждой позиции, дальше LL одинаковых блоков: внимание с несколькими головами и полносвязный блок, каждый с нормализацией перед входом и остаточной связью. Три размера из статьи: ViT-Base — 12 слоёв, ширина 768, 86 млн параметров; ViT-Large — 24 слоя, ширина 1024, 307 млн; ViT-Huge — 32 слоя, ширина 1280, 632 млн. Запись ViT-L/16 означает модель Large с патчем 16 × 16; длина последовательности обратно пропорциональна квадрату стороны патча, поэтому ViT-L/14 с патчем 14 дороже, чем ViT-L/16.

Позиционные векторы в статье одномерные: 196 обучаемых строк, по одной на номер патча в порядке чтения. Двумерные (отдельно для строки и столбца) и относительные кодировки авторы тоже проверили: на ImageNet в режиме пяти примеров на класс ViT-B/16 без позиционных векторов даёт 0,614, с одномерными — 0,642, с двумерными — 0,640, с относительными — 0,640. Разрыв между «без позиций» и «с позициями» большой, между способами кодирования — почти никакого. Без позиций авторы называют вход «мешком патчей» (bag of patches).

Данные решили больше, чем архитектура. Предобученный на ImageNet с 1,3 млн картинок ViT-Large проигрывает ViT-Base, на ImageNet-21k с 14 млн они сравниваются, и только на закрытом наборе JFT с 303 млн картинок большие модели раскрываются. ViT-H/14 после JFT даёт 88,55% на ImageNet за 2,5 тысячи ядро-дней TPUv3, ResNet BiT-L — 87,54% за 9,9 тысячи. У нас энкодер крошечный: патч 4 × 4 × 3 = 48 чисел, ширина 16, один блок, одна голова, 3200 параметров.

После нарезки картинка ничем не отличается от текста: это последовательность векторов, и трансформер читает её тем же вниманием. На этом стоит всё дальнейшее: PerAct в уроке 2.2 резал сетку вокселей на патчи 5 × 5 × 5, RT-1 в 3.1 брал 81 токен из свёрточной сети, а VLM, о которых пойдёт речь, получают от ViT сотни токенов картинки. Но у языковой модели своя таблица эмбеддингов: вектор слова «красный» — строка этой таблицы, а вектор патча — выход чужой сети другой ширины и другого масштаба. Как положить их в одну последовательность?

2 Проектор

LLaVA и PaliGemma: проектор между энкодером и языковой моделью

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

LLaVA (Liu и соавторы, Университет Висконсина и Microsoft Research, 2023) берёт обе части готовыми. Зрение — энкодер картинок CLIP из урока 2.1 в варианте ViT-L/14; его веса заморожены. Язык — модель Vicuna. Между ними стоит проектор: обучаемая матрица WW, которая переводит каждый выходной токен энкодера в вектор той же размерности, что эмбеддинги слов языковой модели. Токены картинки после проектора просто ставят в последовательность перед токенами вопроса, и языковая модель читает их обычным вниманием, не отличая от слов. Авторы называют этот этап обучением «визуального токенизатора для замороженной языковой модели».

Обучение идёт в два этапа. На первом замораживают и энкодер, и языковую модель и обучают только проектор на 595 тысячах пар «картинка — подпись», отобранных из набора CC3M: модель учится по картинке выдавать подпись. На втором проектор и языковую модель дообучают вместе на инструкциях: 158 тысяч примеров, которые текстовая GPT-4 написала по подписям и рамкам картинок COCO — 58 тысяч диалогов, 23 тысячи подробных описаний и 77 тысяч ответов с рассуждением. Энкодер заморожен всегда. Всё обучение шло на восьми видеокартах A100, и результат на синтетическом наборе вопросов составил 85,1% от оценки GPT-4; без второго этапа способность следовать инструкциям падала больше чем на 50 пунктов. В LLaVA-1.5 того же года линейный проектор заменили двухслойным MLP, а энкодер взяли с разрешением 336 px.

PaliGemma (Beyer, Steiner, Pinto, Kolesnikov, Wang и соавторы, Google DeepMind, 2024) собрана по той же схеме из открытых частей: энкодер SigLIP-So400m на 400 млн параметров, обученный контрастно с сигмоидной функцией потерь, языковая модель Gemma-2B и линейный проектор между ними, инициализированный нулями. Всего меньше 3 млрд параметров. Картинку приводят к квадрату 224, 448 или 896 пикселей, и она даёт 256, 1024 или 4096 токенов; они идут первыми, за ними токен начала текста, запрос и перевод строки как разделитель, потом ответ. Внимание префиксное: токены картинки и запроса видят друг друга целиком, в обе стороны, так что картинка может «подсмотреть» вопрос, а токены ответа порождаются авторегрессивно и видят только то, что перед ними. Авторы проверили и обычную каузальную маску из урока 1.6 на запросе и на картинке: обе работают хуже. Потери считают только по токенам ответа.

В отличие от LLaVA, PaliGemma не замораживает ничего уже на первом мультимодальном этапе: энкодер дообучается вместе с языковой моделью на миллиарде примеров при 224 px, с медленным разогревом его скорости обучения, чтобы градиенты ещё не выровненной языковой модели не испортили признаки. По абляции авторов после переноса на задачи разницы между замороженным и обучаемым энкодером нет, но на задачах про положение предметов перплексия без заморозки заметно лучше; замороженная языковая модель — значительно хуже, а любая часть, обученная с нуля вместо готового чекпойнта, обрушивает результат. Сравнили и проектор: линейный против MLP — 77,2 против 77,1 балла при обучении всех весов. Потом разрешение поднимают до 448 на 50 млн примеров и до 896 на 10 млн, и три базовые модели дообучают под конкретную задачу.

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

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

Мини-VLM описывает картинку

Соберём LLaVA в миниатюре из трёх частей, и каждая будет обучаться здесь, в браузере. Энкодер — мини-ViT из интерактива выше: 16 патчей, один блок внимания, 3200 параметров. Его предобучаем контрастно, той же целью InfoNCE, что у мини-CLIP в уроке 2.1: среднее токенов картинки сближается с суммой векторов двух слов подписи, а чужие пары расталкиваются. Поток картинок для предобучения — все 24 сочетания шести цветов и четырёх форм, по 16 новых картинок на шаг: это «интернет» энкодера. Проектор — линейный слой из 16 чисел энкодера в 16 чисел языковой модели, 272 параметра. Языковая модель — один блок трансформера с префиксным вниманием, как в PaliGemma, и словарём из десяти слов и двух служебных токенов, 2400 параметров; её предобучаем на тексте подписей без картинок, чтобы она знала, что после цвета идёт форма, а после формы — конец ответа.

Подписи для самой VLM — 200 картинок с подписями из двух слов. Среди них нет ни одного фиолетового кубика: 23 сочетания из 24. Обучение идёт как в LLaVA: сначала при замороженных энкодере и языковой модели учится только проектор, потом проектор и языковая модель вместе, а энкодер остаётся замороженным. Ответ порождается слово за словом: по токенам картинки и токену начала модель выбирает цвет, по картинке и слову цвета — форму, затем токен конца. Проверка — на новых картинках всех 24 сочетаний, которых в обучении не было.

Схема мини-VLM на одной картинке, а не рисунок модели. Слева — иконка, нарезанная на 16 патчей. Дальше столбики — векторы по 16 чисел (оранжевое — положительные, синее — отрицательные, ярче — больше): 16 токенов энкодера, проектор W — матрица 16 × 16 — и 16 токенов картинки после него, которые читает языковая модель. Справа — ответ слово за словом: полоска — вероятность выбранного слова, зелёное — слово верное, красное — ошибка, <eos> — конец ответа. После миссии 2 внизу справа синим — ответ модели с энкодером с нуля.

Предмет
Под капотом: контрастная цель, префиксная маска и потери мини-VLM

Энкодер предобучаем на пакетах из B=16B = 16 пар. Пусть uiu_i — нормированное среднее токенов картинки ii, vjv_j — нормированная сумма векторов слов подписи jj, τ=0,1\tau = 0{,}1. Потери симметричные, как в CLIP и в уроке 2.1:

Lenc=−12B∑i=1B[log⁡eui⋅vi/τ∑jeui⋅vj/τ+log⁡eui⋅vi/τ∑jeuj⋅vi/τ].\mathcal L_\text{enc} = -\frac{1}{2B}\sum_{i=1}^{B}\Bigl[\log \frac{e^{u_i \cdot v_i/\tau}}{\sum_j e^{u_i \cdot v_j/\tau}} + \log \frac{e^{u_i \cdot v_i/\tau}}{\sum_j e^{u_j \cdot v_i/\tau}}\Bigr].

Проектор — матрица W∈R16×16W \in \mathbb R^{16 \times 16} со сдвигом, как Hv=WZvH_v = W Z_v в LLaVA: токены энкодера ZvZ_v (16 × 16) становятся токенами картинки HvH_v в пространстве языковой модели. Последовательность языковой модели — 16 токенов картинки, затем ⟨bos⟩\langle\text{bos}\rangle, цвет, форма; у текстовых токенов свои позиционные векторы. Маска внимания префиксная, как на рисунке 2 PaliGemma: токен ii видит токен jj, если jj — токен картинки или j≤ij \le i. Выход читается через ту же таблицу эмбеддингов, что и вход (tied embeddings): логит слова ww на позиции tt — скалярное произведение нормированного состояния hth_t и вектора слова ewe_w. Потери — перекрёстная энтропия по трём позициям ответа:

Lvlm=−13∑t=13log⁡eht⋅eyt∑weht⋅ew,y=(цвет, форма, ⟨eos⟩).\mathcal L_\text{vlm} = -\frac{1}{3}\sum_{t=1}^{3} \log \frac{e^{h_t \cdot e_{y_t}}}{\sum_{w} e^{h_t \cdot e_w}}, \qquad y = (\text{цвет},\ \text{форма},\ \langle\text{eos}\rangle).

Как и в LLaVA, потери считаются только по токенам ответа; токены картинки и ⟨bos⟩\langle\text{bos}\rangle ничего не предсказывают. Этап 1: обновляется только WW, 20 проходов по 200 подписям. Этап 2: WW и языковая модель, 80 проходов. Оптимизатор Adam, пакет 10. Модель с энкодером с нуля обучается с тех же начальных весов проектора и языковой модели на тех же подписях теми же 80 проходами, но энкодер в ней случайный и обучается вместе со всем.

Одинаково в любом браузере. Все числа на сцене считаются при каждом запуске заново и повторяются: зёрна случайности фиксированы, а экспоненту, логарифм, гиперболический тангенс и степени в Adam движок считает сам, сложениями, умножениями и делениями. Встроенные Math.exp и Math.pow в Chrome и Safari иногда расходятся в последнем знаке, а обучение энкодера с нуля раздувает такую разницу примерно в десять раз за проход, и к концу у модели другие ответы.

Десять зёрен. В лаборатории зерно одно, 9. На зёрнах 1–10 предобученная модель права на новых картинках в 82–98% случаев, модель с энкодером с нуля — в 60–87%, и предобученная точнее на каждом зерне, на 5–32 пункта. Модель с нуля учится неустойчиво: при зерне 9 её точность на обучении в последних десяти проходах скачет между 82 и 97%, и если изменить шаг обучения на одну триллионную долю, на проверке она даёт от 78 до 90%. Фиолетовый кубик модель с нуля не описала верно ни разу. Предобученная на семи зёрнах из десяти тоже ни разу, на трёх — в 1–3 картинках из 8, и на девяти зёрнах её самый частый ответ — «фиолетовый мяч».

Три части, обученные порознь, после короткого совместного обучения отвечают словами на картинку, которую ни одна из них раньше не видела. Проектор при этом — всего лишь матрица 16 × 16, и в LLaVA он тоже одна матрица. Что именно эта матрица делает с токенами картинки, если языковая модель на первом этапе заморожена и своих эмбеддингов слов не меняет?

🧩 Интерактив 2

Проектор: что меняется в пространстве слов

На первом этапе LLaVA языковая модель заморожена: её таблица эмбеддингов, внимание и полносвязные блоки не меняются, учится только матрица проектора. Авторы пишут, что так токены картинки выравниваются с эмбеддингами слов, и называют проектор визуальным токенизатором. Посмотрим, что это значит в нашей мини-VLM: возьмём пространство её языковой модели, 16 чисел, и спроецируем на две главные оси — два направления, вдоль которых векторы различаются сильнее всего, — три вида векторов. Слова — десять строк таблицы эмбеддингов. Чтение модели — состояние на последней позиции перед тем, как выбрать слово: именно его скалярное произведение с векторами слов даёт вероятности, так что чтение обязано лежать ближе всего к слову, которое модель назовёт. И сами токены картинки после проектора — для каждой из 24 картинок их среднее.

Слева всегда состояние до обучения проектора: матрица случайная, языковая модель обучена только на тексте. Справа — после первого этапа, когда учился один проектор, или после второго, когда дообучилась и языковая модель. Оси общие для обеих панелей.

до обучения проектора
после этапа 1: обучен проектор

Карта пространства языковой модели: векторы из 16 чисел спроецированы на две главные оси. Единиц у осей нет — важны расстояния и направления; оси общие для обеих панелей, подпись внизу панели — какую долю разброса векторов они показывают. Кольца с подписью — слова-цвета, квадраты с подписью — слова-формы, маленькие значки — 24 картинки: цвет значка — цвет предмета, форма значка — его форма. Что именно показывают значки, задаёт переключатель «Точки».

Легенда: значки на сцене
Справа
Точки
Под капотом: как считаются оси и почему чтение обязано быть рядом со словом

Две главные оси считаются по ковариации набора из 10 векторов слов и 24 чтений перед цветом после второго этапа; все три вида точек на обеих панелях проецируются на одни и те же оси, поэтому панели можно сравнивать. Логит слова ww на позиции tt — ht⋅ewh_t \cdot e_w, и softmax выбирает слово с наибольшим скалярным произведением. Чтение hth_t нормировано, поэтому «ближе всего по скалярному произведению» почти совпадает с «ближе всего по углу»; на плоскости двух осей это видно приблизительно, часть расстояния остаётся в остальных 14 измерениях.

У токенов картинки такого обязательства нет. Их никто не сравнивает со словами напрямую: они входят во внимание как ключи и значения, и языковая модель сама решает, что из них взять. Поэтому выравнивание проектора в LLaVA не значит, что токен картинки становится похож на вектор какого-то слова. Оно значит, что замороженная языковая модель начинает извлекать из этих токенов то, что нужно для ответа. В статье PaliGemma проектор инициализируют нулями: в начале обучения токены картинки — нулевые векторы, и языковая модель не видит ничего, пока проектор не начнёт их заполнять.

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

3 Путь картинки

От пикселей до ответа словами

Соберём вместе всё, что было в уроке. Картинку режут на патчи, линейный слой с позиционными векторами делает из патчей токены, энкодер пропускает их через свои блоки внимания, проектор переводит выходы энкодера в ширину языковой модели, за ними встают токены текстового запроса, и языковая модель читает всё одной последовательностью: токены картинки и запроса — целиком, как в префиксном внимании PaliGemma, ответ — слово за словом. В PaliGemma при 224 px это 256 токенов картинки на один кадр; в RT-1 из урока 3.1 кадр давал 81 токен, а TokenLearner оставлял 8.

Схема пути одной картинки через VLM, а не рисунок модели. Слева — картинка с сеткой патчей. Синие квадратики — патчи и токены энкодера, фиолетовые — токены картинки после проектора, оранжевые — слова запроса и ответа; стрелки — куда идут токены. Языковая модель читает токены картинки и запроса вместе и выдаёт ответ слово за словом. Патчей и токенов показано по нескольку, подписи внизу — сколько их в PaliGemma при 224 px. Нажми на схему, чтобы остановить её.

Для робота важно, что на этом пути нет ничего, что знает только о словах: ответом языковой модели может быть любой токен из её словаря. Если научить её выдавать после картинки и команды не слова, а токены действий, как RT-1 выдавал корзины, получится модель, которая по пикселям и словам сразу выдаёт действия. Что из устройства VLM живёт в системах 2025–2026 годов?

4 Сегодня

VLM внутри роботов 2026 года

Схема «энкодер — проектор — языковая модель» стала основой почти всех моделей части 3. π0 (Physical Intelligence, 2024) берёт PaliGemma целиком как основу на 3 млрд параметров и добавляет к ней эксперт действий на 300 млн — всего 3,3 млрд; авторы пишут, что выбрали PaliGemma за открытость и небольшой размер, важный для управления в реальном времени, и что подошла бы любая предобученная VLM. π0.5 (2025) оставляет ту же основу. OpenVLA (2024) построена на VLM Prismatic-7B: энкодер из двух частей, SigLIP и DINOv2, двухслойный MLP-проектор и языковая модель Llama 2 на 7 млрд, а сама Prismatic дообучена на наборе данных LLaVA-1.5. GR00T N1 (NVIDIA, 2025) читает сцену через VLM Eagle-2 с энкодером SigLIP-2: кадр 224 × 224 даёт 64 токена картинки. Gemini Robotics (Google DeepMind, 2025) построена на Gemini 2.0 — VLM общего назначения, которой авторы добавили рассуждение о физическом мире.

SigLIP, контрастно обученный энкодер семейства CLIP, стоит почти везде; споры идут о том, замораживать ли энкодер картинок (LLaVA — да, PaliGemma — нет) и сколько токенов картинки оставлять: 256 на кадр у PaliGemma и π0, 64 у GR00T N1. Чем больше токенов, тем лучше видны детали и тем дороже каждый шаг управления — тот же компромисс, который RT-1 решал TokenLearner.

Первой моделью, которая научила VLM выдавать действия, была RT-2: она взяла готовые PaLI-X и PaLM-E и дообучила их на демонстрациях робота вместе с данными из интернета. Как действия становятся токенами языковой модели и что при этом переносится из интернета на робота — следующий урок.

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

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

6 Итог

Итоги урока

  1. Картинку превращают в последовательность так же, как текст: ViT режет её на патчи 16 × 16, один линейный слой делает из каждого патча вектор, к нему прибавляют вектор позиции, дальше работает обычный трансформер. Без позиций вход — мешок патчей.
  2. Токены картинки и слова живут в разных пространствах. Проектор — в LLaVA одна матрица, в LLaVA-1.5 и OpenVLA двухслойный MLP, в PaliGemma линейный слой с нулевой инициализацией — переводит выходы энкодера в ширину языковой модели, и она читает их как часть последовательности.
  3. Готовые части дешевле новых. LLaVA оставляет энкодер CLIP замороженным и за два этапа на 595 тысячах подписей и 158 тысячах инструкций от GPT-4 учит проектор, а потом проектор с языковой моделью; в нашей лаборатории предобученный энкодер на тех же 200 подписях точнее энкодера с нуля.
  4. PaliGemma собрана из SigLIP-So400m и Gemma-2B, меньше 3 млрд параметров, 256 токенов картинки при 224 px и 4096 при 896. Внимание префиксное: картинка и запрос видят друг друга целиком, ответ порождается авторегрессивно. Ничего не заморожено, и это не хуже после переноса, а на задачах о положении предметов лучше.
  5. Языковая модель отвечает по картинке и по привычке сразу. Наша мини-VLM называла фиолетовый кубик мячом, потому что в подписях после «фиолетовый» ни разу не было «кубик», хотя энкодер кубик видел; LLaVA так же отвечала «да» про клубничный йогурт. Разнообразие подписей — такая же часть модели, как её веса.
  6. На выходе языковой модели может стоять любой токен словаря. Это открывает путь к моделям, которые по картинке и команде выдают токены действий, — к RT-2 в уроке 3.3.

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

Токены картинки после проектора не лежат рядом с векторами слов. Значит ли это, что проектор можно обучать как угодно, лишь бы ответы были верны?

Нет: пространство, в которое проектор кладёт токены картинки, определяет, что замороженная языковая модель сможет из них извлечь своим вниманием. В LLaVA первый этап учит проектор на подписях при замороженной модели, и авторы отмечают, что без второго этапа, где дообучается и языковая модель, качество следования инструкциям падает больше чем на 50 пунктов. PaliGemma идёт дальше и не замораживает ничего, а проектор инициализирует нулями, чтобы в начале обучения языковая модель не получала случайного шума вместо картинки. Открытым остаётся, сколько токенов и какой ширины нужно картинке на самом деле: PaliGemma берёт 256 на кадр, GR00T N1 оставляет 64.

Энкодер в LLaVA заморожен, в PaliGemma обучается. Что выбрать для робота?

Абляция PaliGemma говорит, что после переноса на задачи разницы нет, а на задачах о положении предметов обучаемый энкодер даёт лучшую перплексию — для робота положение предметов как раз важно. Но обучаемый энкодер требует разогрева скорости обучения и больших данных, иначе градиенты от не выровненной языковой модели портят его признаки, что и показывает наша модель с энкодером с нуля на 200 подписях. OpenVLA вместо этого добавляет к SigLIP второй энкодер DINOv2 ради признаков положения. Какой путь выигрывает при данных робота, которых всегда мало, — вопрос части 4.

Гид по статье

H. Liu, C. Li, Q. Wu, Y. J. Lee, «Visual Instruction Tuning», NeurIPS 2023 — LLaVA.

L. Beyer, A. Steiner, A. S. Pinto, A. Kolesnikov, X. Wang и соавторы, «PaliGemma: A versatile 3B VLM for transfer», 2024 — разделы 3.1 и 3.2 про архитектуру и стадии, раздел 5 с абляциями: маска внимания, заморозка, проектор.

A. Dosovitskiy и соавторы, «An Image is Worth 16x16 Words: Transformers for Image Recognition at Scale», ICLR 2021 — раздел 3.1 с уравнением 1, раздел 4.3 про размер данных и приложение D.4 про позиционные кодировки.

Материалы

➡️

Дальше: RT-2. У VLM на выходе любой токен словаря. RT-2 берёт готовые PaLI-X и PaLM-E, записывает действия робота как токены и дообучает модель на демонстрациях вместе с данными из интернета: знание о мире начинает переноситься на движения. Урок 3.3 →

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