Мультимодальная LLM принимает на вход не только текст, но и изображения, а отвечает связным текстом. Внутри это не магия и не «модель, которая видит», а конвейер из трёх компонентов: vision-энкодера, проекционного слоя и языковой модели. Каждый выполняет свою роль, и понимание этой связки объясняет как возможности, так и ограничения таких систем.
Типичная мультимодальная модель состоит из трёх блоков:
На вход подаётся промпт, в котором изображение представлено как набор специальных токенов-заполнителей. Модель заменяет их на эмбеддинги, полученные из vision-энкодера, и дальше работает с единой последовательностью.
Vision-энкодер (чаще всего на базе Vision Transformer, ViT) разбивает изображение на квадратные патчи фиксированного размера — например, 14×14 или 16×16 пикселей. Каждый патч линейно проецируется в вектор. Для изображения 336×336 с патчами 14×14 получается 576 визуальных токенов.
К каждому патч-вектору добавляется позиционная информация, чтобы модель учитывала пространственное расположение фрагментов. Без этого энкодер не отличал бы верхний левый угол от нижнего правого.
Последовательность патч-эмбеддингов проходит через стек трансформерных блоков с self-attention. На выходе получается набор контекстных векторов, где каждый учитывает содержимое соседних патчей.
Чем выше разрешение входного изображения, тем больше патчей и тем длиннее последовательность. Это напрямую влияет на потребление памяти и время инференса.
Vision-энкодер и LLM обучались в разных пространствах. Задача проектора — отобразить визуальные векторы в пространство эмбеддингов языковой модели так, чтобы LLM могла интерпретировать их как осмысленные токены.
Варианты реализации проектора:
Выбор проектора влияет на то, сколько визуальных токенов попадёт в LLM и насколько детально модель «видит» изображение.
Проектор обучается на парах «изображение — текстовое описание». Vision-энкодер и LLM при этом заморожены. Цель — научить проектор переводить визуальные признаки в понятные для LLM представления. Данные на этом этапе обычно масштабные, но простые: подписи к изображениям, альтернативный текст.
Размораживается LLM (иногда и проектор). Модель обучается на диалоговых данных, где пользователь задаёт вопрос об изображении, а модель даёт развёрнутый ответ. Здесь формируются способности к рассуждению, описанию, сравнению и извлечению информации из картинок.
Некоторые архитектуры добавляют третий этап — обучение с подкреплением на предпочтениях (RLHF/DPO) для улучшения качества и безопасности ответов.
Пошаговый поток данных:
С точки зрения LLM, визуальные токены ничем не отличаются от текстовых — это просто векторы в том же пространстве. Модель не «видит» пиксели; она работает с абстрактными представлениями.
Одна из ключевых практических проблем — баланс между детализацией и стоимостью.
Каждый визуальный токен занимает место в контекстном окне LLM. Изображение, дающее 1000+ токенов, может существенно сократить доступный бюджет для текста. При проектировании приложения это нужно учитывать.
vLLM поддерживает ряд мультимодальных архитектур, включая LLaVA, Qwen-VL и Pixtral. Библиотека обеспечивает:
Для продакшн-развёртывания мультимодальных моделей это означает, что узким местом часто становится не вычислительная мощность, а объём GPU-памяти под KV-кэш длинных последовательностей KV Cache в LLM: как устроен, сколько памяти занимает и как оптимизировать.
Галлюцинации на изображениях. Модель может описывать объекты, которых нет на картинке, особенно если изображение размытое или содержит много похожих элементов. Это следствие того, что LLM обучена генерировать правдоподобный текст, а не строго верифицировать визуальные факты.
Потеря мелких деталей. При низком разрешении или агрессивном сжатии визуальных токенов модель не различает мелкий текст, тонкие линии или небольшие объекты.
Проблемы с пространственным пониманием. Мультимодальные LLM часто ошибаются в точном подсчёте объектов, определении относительного положения («левее/правее») и чтении сложных диаграмм.
Контекстное окно. Большое изображение + длинный текстовый промпт могут превысить лимит контекста. В таком случае часть информации отбрасывается или усредняется.
Неоднородность качества. Модель может отлично описывать фотографии, но плохо работать со скриншотами интерфейсов, рукописным текстом или научными графиками — в зависимости от того, какие данные преобладали при обучении.
Эти простые тесты быстро показывают, подходит ли конкретная модель для вашей задачи, без необходимости запускать формальные бенчмарки.
Общая архитектура
Типичная мультимодальная модель состоит из трёх блоков:
- Vision-энкодер — извлекает признаки из изображения.
- Проекционный слой (adapter) — преобразует визуальные признаки в пространство, совместимое с языковой моделью.
- LLM-бэкенд — обрабатывает объединённую последовательность токенов (текстовых и визуальных) и генерирует ответ.
На вход подаётся промпт, в котором изображение представлено как набор специальных токенов-заполнителей. Модель заменяет их на эмбеддинги, полученные из vision-энкодера, и дальше работает с единой последовательностью.
Как изображение становится токенами
Патч-эмбеддинг
Vision-энкодер (чаще всего на базе Vision Transformer, ViT) разбивает изображение на квадратные патчи фиксированного размера — например, 14×14 или 16×16 пикселей. Каждый патч линейно проецируется в вектор. Для изображения 336×336 с патчами 14×14 получается 576 визуальных токенов.
Позиционное кодирование
К каждому патч-вектору добавляется позиционная информация, чтобы модель учитывала пространственное расположение фрагментов. Без этого энкодер не отличал бы верхний левый угол от нижнего правого.
Трансформерные слои
Последовательность патч-эмбеддингов проходит через стек трансформерных блоков с self-attention. На выходе получается набор контекстных векторов, где каждый учитывает содержимое соседних патчей.
Чем выше разрешение входного изображения, тем больше патчей и тем длиннее последовательность. Это напрямую влияет на потребление памяти и время инференса.
Проекционный слой: мост между зрением и языком
Vision-энкодер и LLM обучались в разных пространствах. Задача проектора — отобразить визуальные векторы в пространство эмбеддингов языковой модели так, чтобы LLM могла интерпретировать их как осмысленные токены.
Варианты реализации проектора:
| Тип | Механика | Компромисс |
|---|---|---|
| Линейный слой | Одна матрица W, умножение на каждый вектор | Минимум параметров, но ограниченная выразительность |
| MLP (2–3 слоя) | Несколько линейных слоёв с нелинейностью | Лучше захватывает нелинейные соответствия |
| Perceiver Resampler | Обучаемые query-токены attend к визуальным признакам | Фиксированное число выходных токенов независимо от разрешения |
| Q-Former | Аналогично Perceiver, но с перекрёстным вниманием | Позволяет сжимать длинные визуальные последовательности |
Выбор проектора влияет на то, сколько визуальных токенов попадёт в LLM и насколько детально модель «видит» изображение.
Этапы обучения
Stage 1: выравнивание (alignment pretraining)
Проектор обучается на парах «изображение — текстовое описание». Vision-энкодер и LLM при этом заморожены. Цель — научить проектор переводить визуальные признаки в понятные для LLM представления. Данные на этом этапе обычно масштабные, но простые: подписи к изображениям, альтернативный текст.
Stage 2: мультимодальный instruction tuning
Размораживается LLM (иногда и проектор). Модель обучается на диалоговых данных, где пользователь задаёт вопрос об изображении, а модель даёт развёрнутый ответ. Здесь формируются способности к рассуждению, описанию, сравнению и извлечению информации из картинок.
Некоторые архитектуры добавляют третий этап — обучение с подкреплением на предпочтениях (RLHF/DPO) для улучшения качества и безопасности ответов.
Что происходит при инференсе
Пошаговый поток данных:
- Пользователь отправляет запрос с изображением и текстовым промптом.
- Изображение проходит предобработку: ресайз, нормализация, разбивка на патчи.
- Vision-энкодер выдаёт последовательность визуальных векторов.
- Проектор трансформирует их в пространство LLM.
- Текстовый промпт токенизируется стандартным токенизатором LLM.
- Визуальные эмбеддинги вставляются в позицию, обозначенную специальными токенами.
- Объединённая последовательность подаётся в LLM, которая генерирует ответ авторегрессионно.
С точки зрения LLM, визуальные токены ничем не отличаются от текстовых — это просто векторы в том же пространстве. Модель не «видит» пиксели; она работает с абстрактными представлениями.
Разрешение и бюджет токенов
Одна из ключевых практических проблем — баланс между детализацией и стоимостью.
- Фиксированное разрешение. Изображение масштабируется к одному размеру (например, 336×336). Просто, но мелкие детали теряются.
- Динамическое разрешение (dynamic resolution / tiling). Изображение разбивается на несколько кропов, каждый обрабатывается энкодером отдельно, результаты конкатенируются. Позволяет сохранять детали на больших изображениях, но увеличивает число визуальных токенов.
- Any-resolution подходы. Модель адаптирует количество патчей под исходный размер, иногда с ограничением сверху.
Каждый визуальный токен занимает место в контекстном окне LLM. Изображение, дающее 1000+ токенов, может существенно сократить доступный бюджет для текста. При проектировании приложения это нужно учитывать.
Обслуживание мультимодальных моделей через vLLM
vLLM поддерживает ряд мультимодальных архитектур, включая LLaVA, Qwen-VL и Pixtral. Библиотека обеспечивает:
- PagedAttention для эффективного управления KV-кэшем, что критично при длинных визуальных последовательностях.
- Continuous batching — запросы с изображениями разной длины обрабатываются в одном потоке без простоя.
- Prefix caching — если несколько запросов используют одно и то же изображение, визуальные эмбеддинги вычисляются один раз.
- Поддержку различных стратегий квантования (FP8, INT8, INT4, GPTQ, AWQ) для снижения требований к памяти.
Для продакшн-развёртывания мультимодальных моделей это означает, что узким местом часто становится не вычислительная мощность, а объём GPU-памяти под KV-кэш длинных последовательностей KV Cache в LLM: как устроен, сколько памяти занимает и как оптимизировать.
Типичные ограничения и ошибки
Галлюцинации на изображениях. Модель может описывать объекты, которых нет на картинке, особенно если изображение размытое или содержит много похожих элементов. Это следствие того, что LLM обучена генерировать правдоподобный текст, а не строго верифицировать визуальные факты.
Потеря мелких деталей. При низком разрешении или агрессивном сжатии визуальных токенов модель не различает мелкий текст, тонкие линии или небольшие объекты.
Проблемы с пространственным пониманием. Мультимодальные LLM часто ошибаются в точном подсчёте объектов, определении относительного положения («левее/правее») и чтении сложных диаграмм.
Контекстное окно. Большое изображение + длинный текстовый промпт могут превысить лимит контекста. В таком случае часть информации отбрасывается или усредняется.
Неоднородность качества. Модель может отлично описывать фотографии, но плохо работать со скриншотами интерфейсов, рукописным текстом или научными графиками — в зависимости от того, какие данные преобладали при обучении.
Как проверить качество мультимодальной модели
- Подайте изображение с мелким текстом и попросите его прочитать — это проверяет разрешение.
- Спросите о количестве объектов — это проверяет внимание к деталям.
- Задайте вопрос, ответ на который отсутствует на изображении, — хорошая модель должна сказать, что не видит этого, а не выдумывать.
- Используйте изображения с неоднозначным содержанием и оцените, признаёт ли модель неопределённость.
Эти простые тесты быстро показывают, подходит ли конкретная модель для вашей задачи, без необходимости запускать формальные бенчмарки.
