Автор: Георгий Бредис

Редактура: Даниил Водолазский

Введение

В последнее время LLM всё больше входят в нашу жизнь. Их используют во многих областях: от творчества до структурированного извлечения информации. Но, как правило, применение LLM связано с текстовой информацией, обработкой других модальностей с помощью OCR, транскрибации и иных решений.

В этой статье мы рассмотрим Visual Large Language Models — группу мультимодальных моделей, которые используются для обработки визуально-текстовой информации.

Адаптеры

Как известно, языковые модели получают на вход токены — отрезки текста, обработанные специальным образом для наиболее ёмкого и эффективного представления текста.

Как же нам добиться аналогичной ситуации с изображениями? Для этого используются способы закодировать изображение, наиболее распространенный из которых — применение энкодеров с качественными представлениями. Ещё есть авторегрессионый способ и VQ-VAE кодирование изображений. Здесь после получения признаков необходимо найти способ подать их на вход в LLM. Это можно сделать с помощью нескольких вариантов. Обычно выделяют два глобальных подхода: Deep Fusion и Early fusion, каждый из которых можно разбить ещё на несколько подтипов.

Давайте разберём каждый из них, обсудим плюсы и минусы, а также их связь с этапами обучения 🙂

Deep Fusion

Начнём с менее популярного в open-source, но важного подхода к использованию представлений изображений в LLM.

Основная идея Deep Fusion: встраивание представлений изображений в слои декодера посредством cross-attention. Впервые данный подход был представлен в статье Flamingo. После был использован во многих работах, наиболее интересной из которых является LLaMA 3.

Главный недостаток подхода — необходимость использовать огромное количество данных для обучения cross-attention слоя. При этом метод имеет преимущество в работе с любым разрешением, которое может обработать энкодер.

Early Fusion

Этот подход используется в подавляющем большинстве open-source моделей.

Основная идея: передавать в декодер представления изображений после энкодера. Для этого нужен какой-то адаптер, который будет «готовить»‎ признаки в подходящем представлении для LLM. Одной из первых статей с применением данного метода была LLaVA, которая затем была улучшена в различных работах. Адаптером здесь является какая-то сеть, например, MLP или Q-Former, параметрезированная и дифференцируемая (как и любая сеть), способная вынимать информацию из полученных представлений.

Рисунок 1. Архитектура LLaVA

Рисунок 1. Архитектура LLaVA

Так, в базовом сетапе LLaVA у нас есть возможность пропускать изображение через энкодер, но большинство качественных энкодеров принимают на вход его в фиксированном размере (от 224 до 448 пикселей, стандартный скейл в районе 336-384, например, у большинства c(sig)lip’овых энкодеров), который обычно не подходит для распознания низкоуровневых признаков.

Для решения этой проблемы авторы нескольких работ предложили довольно простое решение — нарезать изображение и подать каждую часть энкодеру, а затем отправить их на вход LLM (подобным образом нарезать изображение можно и при Deep Fusion). В качестве референса подхода возьмём работу LLaVA-Next:

Рисунок 2. Способ нарезки изображений в LLaVA-Next

Рисунок 2. Способ нарезки изображений в LLaVA-Next