VLM в Нейро: как мы создавали мультимодальную нейросеть для поиска по картинкам |
||
МЕНЮ Главная страница Поиск Регистрация на сайте Помощь проекту Архив новостей ТЕМЫ Новости ИИ Голосовой помощник Разработка ИИГородские сумасшедшие ИИ в медицине ИИ проекты Искусственные нейросети Искусственный интеллект Слежка за людьми Угроза ИИ ИИ теория Внедрение ИИКомпьютерные науки Машинное обуч. (Ошибки) Машинное обучение Машинный перевод Нейронные сети начинающим Психология ИИ Реализация ИИ Реализация нейросетей Создание беспилотных авто Трезво про ИИ Философия ИИ Big data Работа разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика
Генетические алгоритмы Капсульные нейросети Основы нейронных сетей Распознавание лиц Распознавание образов Распознавание речи Творчество ИИ Техническое зрение Чат-боты Авторизация |
2024-10-04 12:56 Сегодня у Поиска большое обновление. Например, ответы Нейро теперь будут появляться сразу в поисковых результатах — для тех запросов, где это полезно и экономит время. Но в рамках этой статьи нас интересует другая часть обновления: Нейро поможет найти ответы в Поиске по картинкам и в Умной камере — с помощью новой мультимодальной модели Яндекса. Пользователь может не только узнать, что изображено на картинке, но и задать вопрос по каждой её детали. Например, гуляя по музею, можно сфотографировать натюрморт голландского живописца и спросить, что символизирует тот или иной предмет на картине. Меня зовут Роман Исаченко, я работаю в команде компьютерного зрения Яндекса. В этой статье я расскажу, что такое визуально?текстовые мультимодальные модели (Visual Language Models, VLM), как у нас в Яндексе организован процесс их обучения и какая у них архитектура. Вы узнаете, как Нейро работал с картинками и текстами раньше, и что изменилось с появлением VLM. Что такое VLM Сегодня никого уже не удивишь большими языковыми моделями с миллиардами (а то и сотнями миллиардов) параметров. State?of?the?art модели способны решать нетривиальные задачи анализа текстовой информации. Прогресс в развитии области NLP в последние годы поражает воображение. Один из основных фокусов развития LLM сегодня — это попытка сделать их мультимодальными, тем самым прийти к так называемым omni?моделям. Такие модели помимо текстовой модальности анализируют и другие — картинки, видео, звук. Верхнеуровнево про такие модели можно думать как про «чёрные ящики», которые принимают на вход данные разных модальностей и могут отдавать их на выходе. Зачем же нужны такие модели? Во?первых, это супер общий подход к построению модели глубокого обучения. Последние годы мы можем наблюдать тренд на то, что общие подходы побеждают частные. Большие модели способны решать разнородный спектр задач, для которых раньше приходилось делать частные решения. Во?вторых, таким способом мы можем на порядки отмасштабировать данные, которые доступны нам для обучения моделей, это важно, т. к. количество текстовых данных конечно. В?третьих, у нас есть вера в то, что обучение мультимодальной модели может привести к росту качества на каждой отдельной модальности. Сегодня в терминах концепции «чёрного ящика» мы ограничимся частным случаем, где на вход модели приходит картинка и некоторый текст (будем называть его инстрактом), а на выходе модель будет генерировать только текст (или же просто ответ). Таким образом, схема значительно упрощается. Тем самым мы не будем рассматривать генеративные картиночные модели, где в последнее время также наблюдается стремительный рост качества — а именно в диффузионных моделях text?to?image и text?to?video. Мы поговорим про модели, которые по отношению к картинке являются дискриминативными (то есть анализируют контент изображения). Перед тем как мы погрузимся в техническую часть вопроса, давайте подумаем, а какие вообще задачи такие модели могут решать. Вот несколько примеров. В целом спектр задач очень широкий, а сами задачи очень разнородны. Мы считаем, что VLM — это новая стадия развития области компьютерного зрения. Такие модели могут решать множество стандартных задач компьютерного зрения (классификация, детекция, описание и т. д.) в режимах zero?shot и one?shot. И пусть сейчас VLM показывает высокое качество не в каждой стандартной задаче, скорость развития таких моделей достаточно высокая. Архитектура VLM Итак, из чего же состоит VLM. Сейчас большинство таких моделей состоят из трёх блоков:
Собственно, сам пайплайн довольно прост:
Пара слов про адаптерыСамый интересный блок — модель адаптера. Они бывают двух видов:
Prompt?based адаптеры изначально появились в статьях про модели BLIP-2 и LLaVa. Устроены они очень просто: берём выход картиночного энкодера (вектор, последовательность векторов, тензор — всё зависит от типа архитектуры) и преобразуем в последовательность векторов (токенов), которые подаём на вход LLM. В качестве такого адаптера может выступать просто MLP?моделька с парой слоёв — даже такой простой адаптер хорошо показывает себя на практике. Cross?attention?based адаптеры устроены чуть сложнее. Они использовались в недавних статьях про Llama 3.2 и NVLM. Они пытаются преобразовать выход картиночного энкодера таким образом, чтобы можно было его подать в cross?attention?блок LLM в качестве матриц key / value. В качестве таких адаптеров могут выступать, например, трансформерные архитектуры типа perceiver resampler или Q?former. У обоих подходов есть свои плюсы и минусы. На данный момент с помощью prompt?based адаптеров получается достичь большего качества, но при этом они съедают значимую долю входного контекста LLM. Cross?attention?based адаптеры не съедают контекст LLM, но при этом для хорошего качества нужно сделать адаптер с достаточно большим количеством параметров. Процесс обучения VLM Итак, с архитектурой определились. Давайте теперь поймём, а как нам это инженерное чудо обучать. VLM не учатся с нуля (мы думаем, это пока что). За их основу берутся предобученные LLM и картиночный энкодер. Используя эти предобученные модели, мы дообучаем нашу VLM на мультимодальном картиночно?текстовом домене. Это дообучение состоит из нескольких этапов:
Думаю, что многим эти этапы напоминают обучение самой LLM. Собственно, идеологически они очень близки к тому, что делают с LLM. Давайте вкратце рассмотрим эти этапы. VLM pretraining На этом этапе нам нужно добиться двух целей:
Здесь есть три вида претрейна, которые чаще всего используются при обучении VLM:
А какой же объём данных потребуется, чтобы хорошо обучить VLM?модель? Это очень сложный вопрос. На этой стадии объём данных варьируется от нескольких миллионов семплов до нескольких миллиардов (хотя бы не триллионов!). У себя в Яндексе мы используем instruct?based pretrain с несколькими миллионами семплов. Но очень верим в interleaved pretrain и сейчас активно работаем над этим направлением. Здесь можно посмотреть примеры таких данныхVLM alignment После того как мы закончили стадию претрейна, самое время перейти к стадии alignment. Она состоит из SFT?обучения и дополнительной стадии RL. У нас есть только стадия SFT, так что я остановлюсь на ней. Однако в статьях (например, в этой и этой) всё чаще встречается стадия RL поверх VLM?моделей, в которой используются те же методы, что и для LLM?моделей (DPO и различные модификации с подменой первой буквы в названии метода). Итак, поговорим про SFT. Строго говоря, эта стадия очень похожа на instruct?based pretrain. Но здесь мы хотим сфокусироваться на данных очень хорошего качества, с хорошим форматированием и структурой ответа, а также с хорошими reasoning?свойствами (то есть с возможностью не только понимать, что на картинке, но и с возможностью делать какие?то выводы про изображение). А ещё в идеале не просесть в сценариях text?only, где картинки не будет. Поэтому сюда же мы замешиваем и text?only данные высокого качества. В итоге типичное количество данных на этой стадии — от сотен тысяч до нескольких миллионов. В нашем случае это сотни тысяч примеров. Как замеряется качество Теперь поговорим про то, как же замерять качество VLM?моделей. Мы это делаем с помощью двух подходов:
Первый подход позволяет посчитать какие?то суррогатные метрики (например, accuracy в задаче классификации) на узких срезах, но так как такие бенчмарки в основном англоязычные, они не позволяют сравнить между собой модели на русском языке. Конечно, их можно перевести с помощью переводчика, но сами модели переводчика добавляют много ошибок в данные, поэтому доверять таким переведённым бенчмаркам нельзя. Второй подход позволяет сделать более глубокий анализ модели, но требует кропотливой (и дорогой) ручной разметки асессорами. Наша модель — билингвальная, то есть может отвечать как на английском, так и на русском языках. Это позволяет нам замерять англоязычные опенсорсные бенчмарки, а также проводить SbS?сравнения на русском языке. Кстати, об SbS. Мы достаточно доверяем этому методу и много в него инвестируем. Вот что мы просим замерять асессоров:
Мы стараемся проверять достаточно полное и разнообразное подмножество навыков нашей модели. Ниже представлено распределение срезов нашей SbS-корзинки. VLM в Нейро Выше мы поговорили о том, что такое базовая технология VLM, как обучать и замерять модель. А теперь поговорим, зачем это всё нужно. Тут речь пойдёт про Нейро. Архитектура пайплайна Ещё весной мы добавили в Нейро мультимодальность, а именно возможность задавать вопрос не только текстом, но и картинкой. Но до недавних пор технологии, которые использовались под капотом Нейро, не были мультимодальными. Вот так это работало раньше. Понимаю, что схема немного взрывает мозг, но на самом деле всё не так сложно. Давайте декомпозируем её на пункты.
Как мы видим, в этой схеме используется две LLM (унимодальные модели) и наш сервис визуального поиска. Это решение неплохо работало на большом срезе запросов, но у него был ряд ограничений. Ниже представлен пример, который ломал старую схему (пусть и немного утрированный). Тут мы видим, что рефразер, который на вход получает выход визуального поиска, просто не понимает, о чём изначально спросил пользователь. В итоге LLM?модель, которая ничего не знает про картинку, генерирует неверный поисковый запрос, получив теги про мопса и яблоко одновременно. Чтобы вырастить качество нашего мультимодального ответа и расширить класс решаемых запросов пользователя, мы добавили в исходную схему VLM. А именно, мы сделали две модификации:
Тут может возникнуть вопрос: почему бы не сделать сам генератор VLM?based? Идея хорошая, но есть нюанс. Мы наследуемся при обучении генератора от текстовой модели Нейро, которая довольно часто обновляется. И чтобы мы могли чаще и проще обновлять весь пайплайн, нам намного проще добавить в схему отдельный VLM?блок. Ну и работает такая схема ничуть не хуже. Обучение моделей VLM?рефразера и VLM?captioner — это две отдельные задачи. Для этого мы брали нашу модель базовой VLM, о которой мы говорили выше, и дополнительно дообучали её на соответствующие задачи. Дообучение каждой из этих моделей потребовало сбора отдельных обучающих выборок размером в несколько десятков тысяч семплов. Кроме этого, нам пришлось существенно доработать нашу инфраструктуру, чтобы сделать весь этот пайплайн вычислительно эффективным. Замеры качества Ну и тут у читателя должен возникнуть вопрос: стало ли лучше после добавления VLM в достаточно сложный пайплайн Нейро? И наш ответ: да, причём довольно сильно. Для замера качества работы нового пайплайна Нейро мы провели SbS?исследование и сравнили нашу прошлую LLM?систему с новой VLM?системой. Этот замер похож на замер базовой технологии, о котором я писал выше, однако здесь мы используем другой набор картинок и запросов — они больше смещены в поисковый сценарий. Ниже представлено примерное распределение кластеров в данной корзинке. Наш офлайновый SbS?замер показывает, что мы интегрально сильно вырастили качество финального ответа. VLM?пайплайн заметно увеличивает качество ответа, а также покрывает бо?льшее количество сценариев работы. Более того, мы не ограничились офлайн?замером. Нас интересовало, заметят ли пользователи технические изменения, которые, на наш взгляд, меняют восприятие продукта. Поэтому мы запустили онлайн?эксперимент LLM?пайплайна Нейро против VLM?пайплайна. По предварительным результатам мы видим следующие изменения:
Так что теперь у вас самих есть шанс закинуть любую картинку в Нейро и попробовать самостоятельно. На наш взгляд, VLM — это следующая стадия развития моделей компьютерного зрения. Уже сейчас VLM могут решать многие задачи «из коробки», а с помощью небольшого дообучения эти модели могут достигать state?of?the?art?качества. Оценить VLM в работе уже сейчас может каждый пользователь Поиска по картинкам и Умной камеры Яндекса. Мы, конечно же, продолжим совершенствовать технологию и продукты. Поэтому будем рады вашим отзывам и идеям. Кстати, наша команда компьютерного зрения ведёт канал в Telegram, в котором мы комментируем свежие научные публикации и делимся интересными случаями из практики. Заходите в гости, если тоже интересуетесь CV. Источник: habr.com Комментарии: |
|