Код
#статьи

Kandinsky, GigaChat и иже с ними: как работают мультимодальные нейросети

Краткое пособие по мультимодальным нейросетям от одного из разработчиков модели OmniFusion.

Иллюстрация: Оля Ежак для Skillbox Media

«Разговорные» нейросети недолго пробыли главной технологической сенсацией десятилетия. Теперь в ходу — мультимодальные ИИ, которые одинаково хорошо пишут тексты и код, рисуют картинки, сочиняют музыку и умеют, кажется, всё на свете. Теперь можно скормить ИИ постироничный мем и получить внятное объяснение — или, например, получить инструкцию по сборке велосипеда по одной лишь фотографии деталей.

О том, как работают такие модели, рассказал Матвей Михальчук — один из разработчиков команды OmniFusion. В рамках эфира Skillbox Code Experts он рассказал, что такое мультимодальные LLM, как они работают и чем отличаются от других своих «собратьев по разуму».

Матвей Михальчук

AI-исследователь в лаборатории Fusion Brain института AIRI. Один из ключевых разработчиков модели OmniFusion. Автор научных работ о глубоком обучении и больших языковых моделях.

Как обучают большие языковые модели

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

Несмотря на производимый вау-эффект, большие языковые модели устроены довольно просто. Более того, механика их работы напоминает знакомый многим T9. Модель принимают на вход начало предложения, а затем самостоятельно его продолжают. Задача разработчиков в том, чтобы обучить нейронные сети предсказывать, каким будет следующее слово в предложении по его началу.

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

На картинке ниже можно увидеть, как это работает: у нас есть начало предложения — «the students opened their», — а дальше возможны варианты. Из всех возможных вариантов токенов, которых конечное количество, как букв в языке, мы каждый раз выбираем одну из 33 букв. Таким образом нейронная сеть обучается генерировать текст.

Изображение: Antonio Lopardo / Medium

Одна из архитектур, которая умеет это делать, — GPT. Это так называемая трансформерная декодерная архитектура. Модель принимает на вход набор токенов, которые потом кодируются в виде векторов.

Вектор — набор чисел фиксированной длины. У модели (токенизатора) есть фиксированный набор токенов, где каждому токену соответствует вектор, состоящий из параметров модели. При кодировании последовательности токенов каждый токен (число) из последовательности заменяется на вектор, соответствующий данному токену. В итоге последовательности токенов кодируются в последовательность векторов. Именно по этим векторам модель и предсказывает, какое слово будет следующим.

Изображение: Karthik Vadhri / Medium

Языковые модели обучаются на больших наборах текстов в несколько этапов. Разберём их по очереди.

Первый этап — pretraining, или претренинг. На этом этапе языковой модели «скармливают» огромные наборы разнообразных текстовых данных. Например, отрывки книг, статьи с сайтов и другой контент.

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

На этапе претрейна используются огромные наборы текстов — в закодированном виде их размер часто достигает десятков триллионов токенов. Поэтому обучение больших моделей требует значительных вычислительных ресурсов и стоит очень дорого. Часто обучение занимает несколько месяцев работы вычислительных кластеров с сотнями или тысячами специализированных видеокарт.

Изображение: Varghese C. / LinkedIn

На этом этапе модель узнаёт, как устроен язык, и учится генерировать правдоподобные предложения наподобие тех, что были в обучающей выборке. Однако этого пока недостаточно, чтобы получить чат-бота вроде GigaChat и ChatGPT, способных отвечать на вопросы пользователя.

Второй этап — supervised fine-tuning (файнтюн, или дообучение). На этапе «тонкой настройки» модель учится отвечать на вопросы пользователей. Для этого используют меньший, чем для претрейна, набор данных, которые часто получают с помощью разметки людьми. В этих датасетах содержится уже не просто текст, который модель научилась продолжать, а набор вопросов и ответов. Важную роль в этом играет размер и качество обучающей выборки.

На втором этапе (SFT) важно использовать качественные диалоговые датасеты. Поскольку такие датасеты сложно собрать автоматически, часто они создаются вручную людьми — разметчиками. Поэтому объём SFT-выборки гораздо меньше объёма выборки для претрейна.

Третий этап — reinforcement learning from human feedback, или обучение с помощью обратной связи от человека (RLHF). На этом этапе люди вручную исправляют ответы модели, чтобы они соответствовали ожиданиям. На этапе RLHF мы собираем варианты диалогов и обучаем модели генерировать именно такой ответ, какой хотим видеть.

Например, модель должна этично отвечать на вопросы, связанные с расами. А на вопросы, как сделать бомбу или устроить теракт, тактично предлагать сменить тему :) Именно такие точечные правки в модель вносятся на этапе дообучения с подкреплением. Этот этап применялся не для всех моделей — только для самых крупных, вроде GPT-4.

Изображение: Cameron R. Wolfe, Ph.D. / Deep (Learning) Focus

На схеме выше подробно описан пайплайн обучения модели GPT. Видно, что на самых последних рубежах мы учим модель не делать плохих вещей — не проявлять ненависть, токсичность, неэтичность и так далее.

На последних этапах обучение происходит уже на меньших наборах данных. Мы лишь чуть-чуть корректируем модель и учим её подавать ответ в той форме, в которой ожидаем.

Мультимодальные модели

В 2023 году рынок начали активно штурмовать модели, работающие не только с текстом, но и с картинками, аудио, видео и другими данными. До этого мультимодальность тоже развивалась, но гораздо медленнее. Выходили в основном простые модели, которые умели генерировать подписи к картинкам, но были неспособны вести полноценный диалог.

На графике ниже показан рост числа публикаций по мультимодальным чат-ботам. Можно заметить, что в 2023 году количество публикаций по этой теме практически удвоилось.

Изображение: «Институт AIRI»

В этот период появилась целая россыпь мультимодальных нейросетей: GPT-4 Vision, ImageBind, Fromage, Kosmos, LLaVA. Мало того, репозитории HuggingFace и GitHub наводнили опенсорсные LLM, на базе которых компании и энтузиасты стали собирать свои решения. Количество терминаторов-универсалов стало расти в геометрической прогрессии.

Зачем же понадобилось добавлять в языковые модели новые модальности? На это есть несколько причин.

Первая причина в том, что тексты зарекомендовали себя как отличный источник данных для обучения. А другой — в чатах мы общаемся не только текстом, но и используя картинки, аудио, видео, мемы. И если мы хотим получить AI-ассистентов, способных понимать людей и отвечать им в любых удобных форматах, нужно обучить модель работать не только с текстом, но и со всеми привычными людям типами данных.

Другая причина в том, что мультимодальные данные содержат больше знаний о мире, а потому может выдавать более осмысленные ответы. Данные из одной модальности дополняют и обогащают данные из другой: скажем, понятие «человек» для такой нейросети — это не просто слово, но и голос, одежда, внешность, манера движения.

Обученная на разных типах данных нейросеть сможет отвечать на вопросы, связанные цветами, геометрией, музыкой и даже мемами. А вдогонку ещё и генерировать эти самые картинки и мемы и цвета в качестве ответа. Причём с каждым годом творчество нейросетей становится всё качественнее.

Изображение: Skillbox Media

Например, недавно OpenAI выпустила модель Sora, которая на данный момент считается самой передовой нейросетью для генерации видео. К сожалению, модель закрытая, нельзя скачать её параметры или посмотреть исходный код. Однако качество генерации поражает.

Как создаются мультимодальные нейросети

Изображение: «Институт AIRI»

Существует три основных подхода к мультимодальности. Разберём каждый из них по отдельности.

Tool-augmented LLM

Суть метода в том, чтобы совместить в одном продукте сразу несколько независимых моделей. Например, у вас есть модель GigaChat, которая работает только с текстом, и есть Kandinsky, создающая только картинки. Совмещаем эти модели, и вуаля — получаем мультимодальный ИИ. Так устроены, например, актуальные версии GigaChat и ChatGPT.

Допустим, мы хотим сделать нейросеть, которая будет в чате генерировать картинки. Чтобы этого добиться, можно взять текстовую модель, научить её составлять запрос для генерации изображения (так называемый текстовый промпт) и передавать её на модель text2image, генерирующую картинки.

При этом подходе пользователь общается с языковой моделью и текстом просит её что-то нарисовать. Языковая модель, в свою очередь, сначала генерирует текстовый ответ вроде «сейчас нарисую, подожди», а затем прямо в этом тексте генерирует специальную команду, содержащую промпт (например: сейчас нарисую <img_prompt> сгенерированный_промпт </img_prompt>).

Плюс этого подхода в том, что он не требует серьёзного дообучения. Всё, что вам нужно, — это обучить текстовую модель составлять запросы, а для этого не нужно слишком много данных и ресурсов. Из минусов — так называемый lack of information exchange between modalities.

Это значит, что между моделями будет очень плохая связка. Графической нейросети будет поступать очень мало информации о картинке — только та, что содержится в коротком текстовом запросе. Плюс ко всему, «картиночная» нейросеть не видела огромного массива текстов, на которых обучалась её текстовая визави — поэтому может не «понять» часть важных для генерации деталей.

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

End-to-end multimodal LLM

End-to-end multimodal LLM переводится как «модель сквозного обучения». Это чуть более продвинутый подход — вместо того чтобы использовать отдельные модели для текста и картинок, такая модель обучается сразу на всех необходимых типах данных, в рамках единой структуры.

Самый простой способ обучить такую модель — собрать датасет на базе диалогов, в которых есть и текст, и картинки. Однако «простота» здесь только кажущаяся. Подготовить качественный диалоговый датасет — нетривиальная задача, да и вычислительных ресурсов такой способ требует немало.

Modality bridging with pretrained models

Modality bridging with pretrained models — это устранение разрыва между модальностями, их объединение.

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

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

Затем возьмём вторую, большую языковую модель, которая пока может работать только с текстами. И добавляют к ней так называемый адаптер, который будет внутри сращивать две модели между собой.

Обучают только адаптер — он содержит гораздо меньше параметров и требует меньше обучающих данных, чем большая языковая модель. В датасетах для адаптера содержатся только пары «картинка + подпись». На втором этапе используют семплы в виде «картинка + диалог по картинке» (чередующиеся вопросы и ответы).

Языковую модель или совсем не учат, или учат незначительно, потому что она и так неплохо обучена под свою задачу — писать текст и вести диалоги. Её достаточно лишь немного дообучить, чтобы она научилась извлекать информацию из изображений от адаптера.

В отличие от первых двух способов, связь между моделями происходит не через тексты, а через адаптер. От энкодера изображений к LLM передаётся сигнал в виде набора векторов-признаков — это гораздо более естественный и информативный для нейросетевых моделей способ обмена данными между моделями.

Этот подход используется в таких моделях, как LLaVA, Fromage, Flamingo. На этом подходе сконцентрировались и мы, создавая OmniFusion.

Как мы обучали OmniFusion

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

Вот из каких компонентов состоит OmniFusion:

  • GigaChat — большая языковая модель на 7 млрд параметров.
  • Энкодер — нейросеть, кодирующая изображение. Она генерирует вектор по нашей картинке — набор чисел, который её описывает. Потом этот вектор подаётся на адаптер.
  • Адаптер — это небольшая нейросеть, представляющая собой слой трансформера-энкодера. Адаптер передаёт информацию от картиночной к текстовой нейросети с помощью набора векторов.
Изображение: «Институт AIRI»

Обучение происходило в два этапа. На первом мы учили нашу систему просто генерировать подписи к картинкам. Набор данных состоял из пар «картинка + подпись». Например, если на картинке нарисован Крокодил Гена, то элемент данных будет состоять из портрета персонажа и краткой подписи — «Крокодил Гена» :)

Изображение: «Институт AIRI»

Такие данные легко собрать, потому что их много в интернете. Мы использовали порядка 600 тысяч сэмплов из открытых наборов плюс использовали наши внутренние наборы данных, которые собирали сами.

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

Чтобы проверить качество работы модели, используются другие наборы данных, которые называются бенчмарками. Это наборы тестовых вопросов и ответов по картинке, по которым мы можем понять, как работает модель, измерить качество. Например, в бенчмарке может быть картинка с котиком и вопрос: «Какого цвета кот на изображении?»

Такого рода бенчмарки мы запускали в виде чат-бота в Telegram. Работает просто: отправляете чат-боту картинку и какой-то вопрос по этой картинке, а модель отвечает вам на этот вопрос.

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

Однако лучше всего у модели получается решать задачи, связанные с распознаванием текста. Например, в ходе тестов мы отправили модели картинку с формулой и попросили описать, что это за формула.

Изображение: «Институт AIRI»

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

OmniFusion способна даже распознавать местонахождение отдельных зданий!

Что дальше

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

В похожем направлении сейчас, кстати, развивается GPT-4 от OpenAI. У флагманской нейронки «открытой лаборатории» уже есть возможность задавать вопросы по картинке, генерировать новые изображения и работать с PDF-файлами. Можно загрузить большой PDF-файл и получить ответы на ваши вопросы по нему или краткое описание.

Помимо этого, мы исследуем разные варианты применения нашей модели в робототехнике. Очевидно, что, если обучить модель на нескольких модальностях, у неё будет неплохое представление о мире. Это можно использовать для задач управления роботами и взаимодействия со средой. Например, Google уже представил ИИ RT‑2, предназначенный как раз для управления роботами.

Изучайте IT на практике — бесплатно

Курсы за 2990 0 р.

Я не знаю, с чего начать
Научитесь: Профессия Python-разработчик Узнать больше
Понравилась статья?
Да

Пользуясь нашим сайтом, вы соглашаетесь с тем, что мы используем cookies 🍪

Ссылка скопирована