LLaVA. Модель, которая умеет всё

Я веду блог (а вы и не заметили, не правда ли?) и, конечно, мне хочется, чтобы мои посты прочитало побольше людей (иначе я бы читала статьи сама себе и не лезла бы в Интернет, очевидно). По статистике просмотров я вижу, что посты про отдельные модели, кажется, вызывают не так уж много интереса, однако это ровно то, что мне больше всего хочется исследовать. Я стараюсь соблюдать баланс между тем, что интересно мне, и тем, что может быть интересно более широкому кругу людей, которые потом присоединятся к моему маленькому уютному сообществу. Поэтому следующий пост будет про искажение воспоминаний (не у ИИ, у человека), а потом снова несколько постов про модели.
В телеграме у меня больше постов на разные темы: там есть про правовые аспекты, связанные с регулированием и патентованием ИИ, инструменты, взаимоотношения ИИ с человеком и всякие вопросы с перчинкой в духе «А не захлебнется ли ИИ в собственномашинно сгенерированных данных?». В телеграме меньше объем текста, который можно выпустить одним постом, поэтому подробный разбор моделей практически всегда я выношу на эту площадку, в итоге вот такой вот перекос получается.
Но мне все равно хочется заинтересовать вас обзорами моделей тоже, поэтому мне будет очень приятно и полезно узнать, что я могу улучшить, чтобы сделать свои посты про модели более интересными и привлекательными. Если вам захотелось поделиться своими мыслями на этот счет, мои комментарии всегда открыты.
На этом лирическое отступление завершаю, пол – это LLaVA.

Что такое LLaVA

LLaVA была представлена миру в 2023 году в статье «Visual Instruction Tuning» («Обучение по визуальным инструкциям»). Это мультимодальная модель, то есть, такая, которая умеет решать несколько разноплановых задач. В данном случае – работать и с изображениями, и с текстом, в частности, для того, чтобы отвечать на вопросы по картинкам. Помимо мультимодальности, у нее есть еще одна фишка: она обучена на данных, сгенерированных GPT-4.
Возможно, способность работать одновременно с изображением и текстом не покажется вам удивительной, потому что люди это делают даже не задумываясь. Но для ИИ эта задача сложнее и далеко не так очевидна. Любые данные, с которыми он работает, должны быть переведены в числа. Текст и изображение будут переводиться по разным законам и в итоге представлять собой очень разные распределения векторов, и их нужно совместить – это нетривиальная задача. А уж о том, какие для этого нужны вычислительные мощности, мы скромно промолчим.
Самое интересное в публикации, о которой мы сегодня говорим, вот что:

  • авторы переделали формат обучающего набора данных. Вместо пар «текст–изображение» сделали набор инструкций;
  • предложили новую большую мультимодальную модель. Они объединили более раннюю мультимодальную модель CLIP, которая обучена на парах «текст-изображение», и языковую модель Vicuna (викунья – это животное, родственное ламе, кстати; и да, модель Vicuna – производная от модели Llama);
  • подготовили набор данных и задание для оценки эффективности других моделей, что тоже очень ценно.

А еще это проект с открытым исходным кодом. То есть, модель можно взять и использовать для собственных проектов, обучать на новых данных и пускать в производство.

Кажется, инструкции – это самая непонятная часть списка, поэтому ниже приведем пример того, что они из себя представляют.

<i>(Пример инструкций из статьи)</i>
(Пример инструкций из статьи)

Первый блок текста (до разделительной линии) – это промпт, который передали GPT. Он представляет собой пример описания фотографии в верхнем правом углу. Фотография не передавалась в качестве части промпта. Далее приведены примеры ответов на несколько разных запросов: простой вопрос по картинке, развернутое описание и более сложный вопрос, требующий дополнительных рассуждений

Авторы написали подробную инструкцию: «Ты ИИ-ассистент и отвечаешь на вопросы по изображению так, как если бы смотрел на него. Составь диалог между тобой и человеком, задающим вопросы…». Далее следует описание вопросов, которые нужно задать. Здесь приведен мой вольный и сокращенный перевод инструкции, а целиком ее можно найти в статье, в приложении F. Prompts. GPT, соответственно, нагенерировал вопросов с ответами, которые вы видите на картинке выше.
Обучение модели проходило в два этапа. На первом этапе нужно было сделать так, чтобы векторное представление изображения можно было соотнести с векторным представлением текста, доступным Vicuna (потому что это языковая модель, она не умеет работать с изображениями). Для этого векторное представление изображений делает CLIP, а потом это представление видоизменяется, чтобы соответствовать тому векторному пространству, с которым работает Vicuna. Потом комбинация двух моделей [CLIP + Vicuna] тренируется на наборе изображений, каждому из которых соответствует нагенерированный GPT текст.
На этом этапе может возникнуть закономерный вопрос: а зачем столько языковых моделей? CLIP умеет работать с текстом, Vicuna в этой конфигурации тоже работает с текстом. GPT генерирует тренировочные данные. Это точно все нужное?

Ответ в том, что каждая модель используется для решения задачи, с которой справляется лучше всего. GPT хорошо генерирует инструкции по запросу. Возможно, она не лучший кандидат, но тут уже вопрос в том, что именно было доступно авторам на момент проведения экспериментов. Vicuna непосредственно создана для выполнения заданий, которые требуют следования инструкций, ответов на вопросы и многоступенчатых рассуждений. Она следует инструкциям лучше, чем GPT (а GPT их лучше пишет, все как у людей). CLIP и правда умеет работать с текстом, но его сильная сторона – обработка изображений. Отвечать на вопросы он умеет не так хорошо, как Vicuna. Так что дело в специализации (и это хорошая практика – подбирать модель под задачу).
Результаты получились вдохновляющие. На картинке ниже приведен пример ответа LLaVA на вопрос пользователя в сравнении с другими моделями (GPT-4, BLIP-2, OpenFlamingo).

<i>(Ответы LLaVA, как вы можете заметить, весьма подробны. Она не только называет, что необычно на изображении, но и приводит аргументы, объясняя свой выбор – это как раз благодаря использованию инструкций при обучении)</i>
(Ответы LLaVA, как вы можете заметить, весьма подробны. Она не только называет, что необычно на изображении, но и приводит аргументы, объясняя свой выбор – это как раз благодаря использованию инструкций при обучении)

Модель протестировали на нескольких типах задач, и везде она выступила весьма достойно. Авторы также провели исследование, которое называется Ablation Study. Найти хороший перевод на русский язык мне не удалось, но суть вот в чем: проводится несколько экспериментов, на каждом из которых «отключается» один компонент модели, и проверяется, как изменилась ее эффективность. Такие исследования помогают понять, что именно вносит наибольший вклад в результат. Назовем такое исследование исследованием важности компонентов.
Так вот, авторы провели исследование важности компонентов и обнаружили следующее:

  • разные слои визуальной части CLIP обрабатывают разные аспекты изображения: одни концентрируются на деталях, другие – на более глобальных и абстрактных чертах. Немного интуитивного понимания обработки изображений можно почерпнуть вот в этом посте. Он про сверточные нейросети, а CLIP использует трансформер, но кое-какие общие соображения, в частности, про разные слои и их особенности, там прочитать можно. Пост про использование трансформеров для работы с изображениями будет в начале октября;
  • применение метода цепочки рассуждений (chain-of-thought) улучшает результат (про цепочку рассуждений можно почитать здесь);
  • предварительное обучение важно, его пропускать не стоит;
  • размер модели тоже важен, 13 млрд. параметров лучше, чем 7 (но это все равно не такая уж большая модель).

Что сейчас

Актуальную информацию о модели и все обновления можно найти здесь. До лета этого года по той же ссылке была интерактивная демонстрация, но ее, к сожалению, убрали.
Свежая версия модели была представлена в статье «Improved Baselines with Visual Instruction Tuning». Исходную модель немного улучшили, добавив еще один слой для соединения частей модели, работающих с изображениями и текстом. Кроме того, модель еще дообучили на новых данных, увеличили разрешение изображений, которые можно передать на вход, и улучшили эффективность.
Сейчас LLaVA – это одна из лучших моделей для решения задач, связанных с обработкой одновременно текста и изображений.

Уже после того, как пост был написан, вышла модель Pixtral. Я прикрепила ссылку на видео с ее тестированием. Вкратце, она не так хорошо справляется с текстом, однако с изображениями работает очень хорошо. Это модель из другой семьи (Mistral), но тоже с открытым исходным кодом.

Заключение

Надеюсь, LLaVA вам понравилась, потому что она интересная и замечательная и заслуживает любви. Если вдруг ваш вкус очень специфичен, ничего страшного. Дальше будут еще модели, думаю, каждый найдет себе что-то по душе.

Начать дискуссию