Мне это вспомнилось потому, что ребята из HuggingFace выпустили препринт: Что важно при создании визуально-языковых моделей?
Продолжая кулинарные аналогии, к сожалению, несмотря на аппетитное название, под крышкой кастрюли всего 6 рецептов. И не все из них интересные. Поэтому в посте я их немного переделал💊
Авторы делят архитектуры VLM моделей на 2 типа: cross-attention и полностью авторегрессионные. В первом варианте изображение кодируется энкодером и прокидывается в разные слои LLM через механизм внимания. Во втором выход энкодера объединяется с текстовыми эмбеддингами напрямую и всё подаётся на вход LLM.
Рецепт: Для фиксированного количества параметров, качество LLM важнее, чем качество визуального энкодера.
Это проверяли на cross-attention архитектуре, остальное на авторегрессионной.
Рецепт: При применении более комплексных визуальных энкодеров качество растёт слабее, чем можно было бы ожидать. При попытке использовать огромную EVA-CLIP-5B, авторы получают точность даже хуже, чем у SigLIP-SO400M. Из чего делается вывод, что EVA-CLIP-5B сильно недотренирована и у коммьюнити до сих пор нет сильной фундаментальной визуальной модели.
Рецепт: Cross-attention архитектура работает лучше, чем авторегрессионная, если тренировать только новые слои (CA или проекционные). Но так сравнивать не совсем честно, т.к. тогда у первой тренируется 25% параметров, а у второй 15%. А разморозить целиком просто в лоб не получилось, потому что авторы не смогли стабилизировать тренировку авторегрессионной модели. В итоге, использовали LoRA (метод уменьшения количества тренируемых параметров модели). В таком варианте сильно лучше авторегресионный подход и он дал наилучшие результаты вообще.
Рецепт: Количество визуальных токенов важно для точности, но при этом когда их слишком
много, это ухудшает производительность и контекст может распухнуть. Если использовать Perceiver Resampler в качестве обучаемого пуллинга (операция уменьшения размерности входных данных, сохраняющая при этом важные характеристики), то 64 визуальных токена будет за глаза и качество вырастет.
Рецепт: Изначально визуальный энкодер SigLIP тренировался на квадратных изображениях 768х768. Адаптация его для работы с изображениями с сохранённым оригинальным соотношением сторон – это хорошая идея. Делают это через интерполяцию позиционных эмбеддингов и LoRA. Качество немного падает, но зато существенно эффективнее тренировка, инференс и расход памяти.
Рецепты полезные, но не хватает более интенсивных экспериментов с визуальными моделями и LLM.
Вторая часть работы посвящена VLM, которая, понятное дело, натренирована с учётом всех найденных вещей – Idefics2. Метрики хорошие, правда на наших задачах она не взлетела вообще 😳