Vision language models are blind
[Статья][Код]
Наряду с чисто языковыми моделями в последнее время интенсивно развиваются и мультимодальные модели, умеющие работать с текстовой 📝 и визуальной 👀 информацией одновременно. Флагманские проприетарные модели (
Однако данные задачи еще более менее имеют формулировку с точки зрения естественного языка. Кроме того, имеет место утечка 💧 в процессе обучения. И авторы задаются вопросом - как хорошо современные модели справляются с задачи, требующие умение опираться сугубо на визуальную информацию, причем те, что под силу даже детсадовцу 👶?
И оказывается, что несмотря на простоту рассматриваемых задач, нынешняя SOTA не то чтобы блестяще справляется с ними. И GPT-4o не всегда лучшая)
Метод
Предложенный бенчмарк состоит из 7 задач:
1️⃣ Подсчет числа пересечений двух графиков из 3 точек (от 0 до 3)
2️⃣ Определение того, пересекаются ли 2 круга или нет
3️⃣ Определение буквы, на которую наложили круг 🔴
4️⃣ Подсчет числа пересекающихся геометрических примитивов
5️⃣ Подсчет количества вложенных квадратов
6️⃣ Определение числа строк и столбцов в таблице
7️⃣ Умение следовать за разноцветными ломаными (сколько путей следует из одной вершины в другую). Путей от 0 до 3.
Рассматривают 4 прориетарные VLM (Vision Language Model) модели:
1️⃣ GPT-4o
2️⃣ Gemini-1.5 Pro
3️⃣ Claude Sonnet 3
4️⃣ Claude Sonnet 3,5
Эксперименты
Несмотря на простоту перечисленных выше задач, модели справляются с ними далеко не идеально.
В частности, в задаче определения числа пересечений GPT-4o достигает качества 48%, а лучшая из моделей - Claude-3.5 Sonnet – 77%, что далеко от 100%. Чем ближе графики и чем толще линии - тем больше ошибка.
Модели хорошо понимают, что такое круг, и умеют читать текст без ошибок, но, тем не менее определение того, какую же все-таки букву закрыл кружочек, оказывается не такой уж простой задачей. И здесь лидирует Gemini-1.5 Pro (со средней точностью около 93%).
VLM-ки умеют хорошо считать разнесенные в пространстве объекты. Но как только они пересекаются, или оказываются вложенными - качество заметно проседает. И здесь снова побеждает в Claude-3.5 Sonnet.
Такая элементарная задача, как подсчет числа столбцов и строк, тоже дается нелегко, при том, что перечисленные сетки умеют решать куда, казалось бы, более сложные задачи про обработку табличных данных. Умница Claude-3.5 Sonnet выдает точность в среднем 74.26%, в то время как остальные модели между 35% и 40%. Если в ячейках есть текст, точность немного выше.
Определение числа путей по картинке, тоже дается нелегко. Claude-3.5 Sonnet (не подкупили Antropic авторов?) снова побеждает с точностью в среднем 50%. Если путь один, то Claude-3.5 с большим отрывом точнее всех, на большом числе путей - 3, GPT-4o лидирует.
Вывод
Любопытное исследование, хоть результаты и во многом ожидаемы. Текущие модели основаны преимущественно на достижениях в NLP, способности LLM улавливать сложные закономерности в последовательностях. Но задачи, опирающиеся сугубо на зрительную информацию, по всей видимости, требуют от модели обучения с упором на геометрию, выявления пространственных закономерностей. Вопрос 🤔 в том, насколько это важно в прикладных задачах. Тем не менее разработка такой процедуры обучения может стать следующим шагом в развитии VLM.
[Статья][Код]
Наряду с чисто языковыми моделями в последнее время интенсивно развиваются и мультимодальные модели, умеющие работать с текстовой 📝 и визуальной 👀 информацией одновременно. Флагманские проприетарные модели (
GPT-4(V/O), Claude, Gemini 1.5-Pro
) неплохо умеют решать нетривиальные задачи, связанные с обработкой визуальных данных - понимание содержимого сцены, нахождение нужного объекта, извлечение информации из графиков и табличек, и самое главное - понимание мемов 😄.Однако данные задачи еще более менее имеют формулировку с точки зрения естественного языка. Кроме того, имеет место утечка 💧 в процессе обучения. И авторы задаются вопросом - как хорошо современные модели справляются с задачи, требующие умение опираться сугубо на визуальную информацию, причем те, что под силу даже детсадовцу 👶?
И оказывается, что несмотря на простоту рассматриваемых задач, нынешняя SOTA не то чтобы блестяще справляется с ними. И GPT-4o не всегда лучшая)
Метод
Предложенный бенчмарк состоит из 7 задач:
1️⃣ Подсчет числа пересечений двух графиков из 3 точек (от 0 до 3)
2️⃣ Определение того, пересекаются ли 2 круга или нет
3️⃣ Определение буквы, на которую наложили круг 🔴
4️⃣ Подсчет числа пересекающихся геометрических примитивов
5️⃣ Подсчет количества вложенных квадратов
6️⃣ Определение числа строк и столбцов в таблице
7️⃣ Умение следовать за разноцветными ломаными (сколько путей следует из одной вершины в другую). Путей от 0 до 3.
Рассматривают 4 прориетарные VLM (Vision Language Model) модели:
1️⃣ GPT-4o
2️⃣ Gemini-1.5 Pro
3️⃣ Claude Sonnet 3
4️⃣ Claude Sonnet 3,5
Эксперименты
Несмотря на простоту перечисленных выше задач, модели справляются с ними далеко не идеально.
В частности, в задаче определения числа пересечений GPT-4o достигает качества 48%, а лучшая из моделей - Claude-3.5 Sonnet – 77%, что далеко от 100%. Чем ближе графики и чем толще линии - тем больше ошибка.
Модели хорошо понимают, что такое круг, и умеют читать текст без ошибок, но, тем не менее определение того, какую же все-таки букву закрыл кружочек, оказывается не такой уж простой задачей. И здесь лидирует Gemini-1.5 Pro (со средней точностью около 93%).
VLM-ки умеют хорошо считать разнесенные в пространстве объекты. Но как только они пересекаются, или оказываются вложенными - качество заметно проседает. И здесь снова побеждает в Claude-3.5 Sonnet.
Такая элементарная задача, как подсчет числа столбцов и строк, тоже дается нелегко, при том, что перечисленные сетки умеют решать куда, казалось бы, более сложные задачи про обработку табличных данных. Умница Claude-3.5 Sonnet выдает точность в среднем 74.26%, в то время как остальные модели между 35% и 40%. Если в ячейках есть текст, точность немного выше.
Определение числа путей по картинке, тоже дается нелегко. Claude-3.5 Sonnet (не подкупили Antropic авторов?) снова побеждает с точностью в среднем 50%. Если путь один, то Claude-3.5 с большим отрывом точнее всех, на большом числе путей - 3, GPT-4o лидирует.
Вывод
Любопытное исследование, хоть результаты и во многом ожидаемы. Текущие модели основаны преимущественно на достижениях в NLP, способности LLM улавливать сложные закономерности в последовательностях. Но задачи, опирающиеся сугубо на зрительную информацию, по всей видимости, требуют от модели обучения с упором на геометрию, выявления пространственных закономерностей. Вопрос 🤔 в том, насколько это важно в прикладных задачах. Тем не менее разработка такой процедуры обучения может стать следующим шагом в развитии VLM.
Hydra: Bidirectional State Space Models Through Generalized Matrix Mixers
[Статья][Код]
Современные нейронные сети, обрабатывающие пространственно-временные данные различной природы будь то текст 📝, изображения 📷, аудио 🎵 и видео 📹 так или иначе обладают механизмом перемешивания каналов (channel mixing), обрабатывающим независимо признаки для каждого элемента последовательности, и механизмом обработки последовательности (sequence mixing), использования взаимосвязей между элементами.
В сегодняшнем рассказе речь пойдет про sequence mixing.
Существуют разнообразные опции sequence mixing. Операция смешивания может не зависеть от входа, как например свертка или обучаемая матрица L x L (L - длина последовательности) в MLP-Mixer, S4 и H3 state-space модели, или зависеть - attention механизм в трансформерах или Mamba (Selective State Spaces).
Кроме того, разные механизмы обладают разной сложностью от длины последовательности. Sequence mixing в Attention или MLP-Mixer требует квадратичного по длине последовательности числа элементарных операций с плавающей точкой (FLOPs), так как используют матричную операцию довольно общего вида. Sequence mixers, обладающие некоторой структурой (низкоранговые, Toeplitz матрицы, DFT, бабочки) позволяют добиваться субквадратичной сложности (обычно с некоторой просадкой в качестве).
И sequence mixing может быть как причинным (causal attention, большинство SSM, в частности, модная нынче Mamba 🐍), где текущий элемент последовательности может смотреть только в прошлое, и двунаправленным (как в masked language modelling, и большинстве задач с ViTами), где элементы последовательности могут изменять свое состояние, как глядя как на прошлые, так и на будущие токены.
И задача, которую, перед собой ставят авторы в данной работе - получение эффективного механизма двунаправленного sequence mixing, такого, чтобы он был с одной стороны субквадратичным (в идеале линейным по длине последовательности) и в то же время выразительным.
[Статья][Код]
Современные нейронные сети, обрабатывающие пространственно-временные данные различной природы будь то текст 📝, изображения 📷, аудио 🎵 и видео 📹 так или иначе обладают механизмом перемешивания каналов (channel mixing), обрабатывающим независимо признаки для каждого элемента последовательности, и механизмом обработки последовательности (sequence mixing), использования взаимосвязей между элементами.
В сегодняшнем рассказе речь пойдет про sequence mixing.
Существуют разнообразные опции sequence mixing. Операция смешивания может не зависеть от входа, как например свертка или обучаемая матрица L x L (L - длина последовательности) в MLP-Mixer, S4 и H3 state-space модели, или зависеть - attention механизм в трансформерах или Mamba (Selective State Spaces).
Кроме того, разные механизмы обладают разной сложностью от длины последовательности. Sequence mixing в Attention или MLP-Mixer требует квадратичного по длине последовательности числа элементарных операций с плавающей точкой (FLOPs), так как используют матричную операцию довольно общего вида. Sequence mixers, обладающие некоторой структурой (низкоранговые, Toeplitz матрицы, DFT, бабочки) позволяют добиваться субквадратичной сложности (обычно с некоторой просадкой в качестве).
И sequence mixing может быть как причинным (causal attention, большинство SSM, в частности, модная нынче Mamba 🐍), где текущий элемент последовательности может смотреть только в прошлое, и двунаправленным (как в masked language modelling, и большинстве задач с ViTами), где элементы последовательности могут изменять свое состояние, как глядя как на прошлые, так и на будущие токены.
И задача, которую, перед собой ставят авторы в данной работе - получение эффективного механизма двунаправленного sequence mixing, такого, чтобы он был с одной стороны субквадратичным (в идеале линейным по длине последовательности) и в то же время выразительным.
Метод
Общий фреймворк выглядит следующим образом:
▶️ Функция преобразования данных
▶️ Функция конструкции смешивающей матрицы
▶️ Результат sequence mixing имеет вид
Далее авторы вводят термин Sequence Aligned Matrices (SAM, еще один… 🥱) означающий, что матрица смешивания зависит от входных данных. Такие sequece миксеры хороши с одной стороны тем, что более адаптивно подстраиваются под входы, и, кроме того, работают с последовательностями разной длины.
Авторы рассматривают разные механизмы из литературы:
⭐️ MLP-Mixer, S4, H3, Monarch, Vandermonde и Cauchy миксеры - не SAM
⭐️ Attention, Linear Attention, S6, SSD - SAM
Потому хороший двунаправленный sequence mixer должен быть SAM, и представлять собой некоторую структурированную матрицу. В частности, предлагаются способы сделать Vandermonde и Cauchy миксеры зависящими от входов, но основной упор делается на прокачку SSD (не твердотельного жесткого диска, а механизма в Mamba-2!) под двунаправленность.
Напомним, что SSD во второй мамбе является полуразложимыми (semi-separable) матрицей - каждый блок является низкоранговой матрицей. Для двунаправленности можно было бы чередовать слои SSD (один бегущий слева направо, другой справа налево), но здесь предлагают использование одной матрицы смешивания, такой что любой ее блок в верхне-треугольной и нижне-треугольной части является низкоранговой матрицей. Иначе говоря, получается нечто типа суммы исходной SSD из Mamba-2 (нижнетреугольной матрицы) и транспонированной по длине последовательности (верхнетреугольной матрицы) и диагональной части. Такие матрицы называют квазиразложимыми (QS). Данная модификация требует всего пары дополнительных строчек в реализации по сравнению с исходным SSD слоем (
Называют гидрой, потому что много голов, как в SSD, и звучит красиво 😹.
Эксперименты
Метод валидируют на задаче Masked Language Modelling, где в качестве бейзлайнов берется BERT, обученный по рецепту от MosaicML, и иные варианты sequence mixerов из литературы. Для оценки качества моделей смотрят на валидационную кросс-энтропию на C4 (на train set которого обучают) и точность на бенчах из GLUE. Все модели имеют размер порядка 70M параметров (несколько меньше, чем BERT-Base), так что хрен вам SOTA на LMSYS. Hydra модели глубже трансформеров примерно в 2️⃣ раза при примерно том же числе параметров.
SAM модели стабильно опережают свои не SAM версии (Toeplitz, Cauchy, Vandermonde с параметрами, зависящими от входа, заметно точнее версии с обучаемыми, не зависящими). Hydra (естесна), лучше всех, и на втором месте любимый нами трансформер. Однако, памятуя о недавнем результате MobileLLM, где более глубокие и тонкие трансформеры, оказываются лучше по качеству более коротких и жирных при том же числе параметров, задаешься вопросом - можно ли устранить разрыв в качестве за счет изменения конфигурации трансформера 🤔?
Исходная Mamba-2 не очень сильна в MLM, так как умеет обрабатывать информацию только в одном направлении, и предложенный способ (Hydra) лучше вариантов с суммой, конкатенацией, и перемножением результатов двух мамб-2.
Далее метод проверяют на задаче классификации ImageNet-1k, где обучают модели размера порядка ViT-Base (87-91M параметров) и Hydra опережает ViT-B, Hyena и S4. Однако, ViT бейзлайн вызывает вопросы, ибо согласно их результатам ViT-B имеет top-1 точность 78.8%, а его EMA 80.6%, в то время, как c рецептом обучения из Swin, на который они ссылаются (унаследованный в свою очередь из DeiT) выдает 81.8% (их лучший результат 81.6%)
Общий фреймворк выглядит следующим образом:
▶️ Функция преобразования данных
f_X
(X
- входные данные)▶️ Функция конструкции смешивающей матрицы
f_M L x L
, которая может быть постоянной или зависеть от входов▶️ Результат sequence mixing имеет вид
f_M(f_X (X))
Далее авторы вводят термин Sequence Aligned Matrices (SAM, еще один… 🥱) означающий, что матрица смешивания зависит от входных данных. Такие sequece миксеры хороши с одной стороны тем, что более адаптивно подстраиваются под входы, и, кроме того, работают с последовательностями разной длины.
Авторы рассматривают разные механизмы из литературы:
⭐️ MLP-Mixer, S4, H3, Monarch, Vandermonde и Cauchy миксеры - не SAM
⭐️ Attention, Linear Attention, S6, SSD - SAM
Потому хороший двунаправленный sequence mixer должен быть SAM, и представлять собой некоторую структурированную матрицу. В частности, предлагаются способы сделать Vandermonde и Cauchy миксеры зависящими от входов, но основной упор делается на прокачку SSD (не твердотельного жесткого диска, а механизма в Mamba-2!) под двунаправленность.
Напомним, что SSD во второй мамбе является полуразложимыми (semi-separable) матрицей - каждый блок является низкоранговой матрицей. Для двунаправленности можно было бы чередовать слои SSD (один бегущий слева направо, другой справа налево), но здесь предлагают использование одной матрицы смешивания, такой что любой ее блок в верхне-треугольной и нижне-треугольной части является низкоранговой матрицей. Иначе говоря, получается нечто типа суммы исходной SSD из Mamba-2 (нижнетреугольной матрицы) и транспонированной по длине последовательности (верхнетреугольной матрицы) и диагональной части. Такие матрицы называют квазиразложимыми (QS). Данная модификация требует всего пары дополнительных строчек в реализации по сравнению с исходным SSD слоем (
shift
- сдвиг на один элемент, flip
- разворот последовательности задом наперед, DX - диагональная добавка). QS(X) = shift(SS(X)) + flip(shift(SS(flip(X)))) + DX
Называют гидрой, потому что много голов, как в SSD, и звучит красиво 😹.
Эксперименты
Метод валидируют на задаче Masked Language Modelling, где в качестве бейзлайнов берется BERT, обученный по рецепту от MosaicML, и иные варианты sequence mixerов из литературы. Для оценки качества моделей смотрят на валидационную кросс-энтропию на C4 (на train set которого обучают) и точность на бенчах из GLUE. Все модели имеют размер порядка 70M параметров (несколько меньше, чем BERT-Base), так что хрен вам SOTA на LMSYS. Hydra модели глубже трансформеров примерно в 2️⃣ раза при примерно том же числе параметров.
SAM модели стабильно опережают свои не SAM версии (Toeplitz, Cauchy, Vandermonde с параметрами, зависящими от входа, заметно точнее версии с обучаемыми, не зависящими). Hydra (естесна), лучше всех, и на втором месте любимый нами трансформер. Однако, памятуя о недавнем результате MobileLLM, где более глубокие и тонкие трансформеры, оказываются лучше по качеству более коротких и жирных при том же числе параметров, задаешься вопросом - можно ли устранить разрыв в качестве за счет изменения конфигурации трансформера 🤔?
Исходная Mamba-2 не очень сильна в MLM, так как умеет обрабатывать информацию только в одном направлении, и предложенный способ (Hydra) лучше вариантов с суммой, конкатенацией, и перемножением результатов двух мамб-2.
Далее метод проверяют на задаче классификации ImageNet-1k, где обучают модели размера порядка ViT-Base (87-91M параметров) и Hydra опережает ViT-B, Hyena и S4. Однако, ViT бейзлайн вызывает вопросы, ибо согласно их результатам ViT-B имеет top-1 точность 78.8%, а его EMA 80.6%, в то время, как c рецептом обучения из Swin, на который они ссылаются (унаследованный в свою очередь из DeiT) выдает 81.8% (их лучший результат 81.6%)
Выводы
Данная статья полезна с формальной точки зрения, ибо дает некоторый обобщенный взгляд на современные варианты нейросетевых архитектур обрабатывающие последовательности, и немножечко вкусненькой 😋 математики. Результаты экспериментов вызывают некоторые вопросы, да и валидация на небольшом, ограниченном сетапе. Как мне кажется, пока преждевременно говорить об “убийце 🔫 трансформеров”. Тем не менее, интересно и занимательно.
Данная статья полезна с формальной точки зрения, ибо дает некоторый обобщенный взгляд на современные варианты нейросетевых архитектур обрабатывающие последовательности, и немножечко вкусненькой 😋 математики. Результаты экспериментов вызывают некоторые вопросы, да и валидация на небольшом, ограниченном сетапе. Как мне кажется, пока преждевременно говорить об “убийце 🔫 трансформеров”. Тем не менее, интересно и занимательно.
Вот мой скромный канал преодолел рубеж в 1️⃣0️⃣0️⃣0️⃣ подписчиков) 🍾
Когда я создавал его, я и не мечтал о таком количестве. Думал, что это будет глубоко андерграундная гаражная телеграм-канава на пару десятков заинтересованных, в силу специфики тематики и моей лени в отношении заморочек с PR. Но несколько упоминаний на знаменитых и влиятельных отечественных телегах про DL и связанные темы, за что огромное спасибо @che_shr_cat, @alexwortega, @nadlsk, @milana_shhanukova, открыли мои безделицы широкой аудитории.
Всем спасибо за то, что вы здесь) Мне очень приятно видеть ваши реакции, комментарии к постам. Желание опубликовать разбор очередной статьи, наверное, лучший стимул поглубже в ней разобраться.
Будем дальше стараться. Быть добру!
Когда я создавал его, я и не мечтал о таком количестве. Думал, что это будет глубоко андерграундная гаражная телеграм-канава на пару десятков заинтересованных, в силу специфики тематики и моей лени в отношении заморочек с PR. Но несколько упоминаний на знаменитых и влиятельных отечественных телегах про DL и связанные темы, за что огромное спасибо @che_shr_cat, @alexwortega, @nadlsk, @milana_shhanukova, открыли мои безделицы широкой аудитории.
Всем спасибо за то, что вы здесь) Мне очень приятно видеть ваши реакции, комментарии к постам. Желание опубликовать разбор очередной статьи, наверное, лучший стимул поглубже в ней разобраться.
Будем дальше стараться. Быть добру!
🦙-3.1 стала доступна широкой публике!
[Пост на meta]
[Model card на GitHub]
[Коллекция на 🤗]
[Пост на gonzo-ml]
[Пост на эйай ньюз]
[Пост на Love.Death.Transformers]
К версиям 8 и 70B добавилась жырная 405B.
Из основных фичей:
1️⃣ Мультиязычность (English, German, French, Italian, Portuguese, Hindi, Spanish, and Thai)
2️⃣ 128k окно контекста
3️⃣ Обрезка знаний по декабрь 2023.
4️⃣ Умеет с тулами работать
Обучалось на 15T+ (неизвестно насколько+) токенов из публичных как-то собранных данных.
Базовые меньшие модели иногда, кста , просаживаются по сравнению с v3 по метрикам, но instruct стабильно лучше.
Большая модель вполне себе бодается с GPT-4-Omni и Claude-3.5-Sonnet.
Посмотрим, что выдаст lmsys арена)
На хабе есть и FP8 версии)
[Пост на meta]
[Model card на GitHub]
[Коллекция на 🤗]
[Пост на gonzo-ml]
[Пост на эйай ньюз]
[Пост на Love.Death.Transformers]
К версиям 8 и 70B добавилась жырная 405B.
Из основных фичей:
1️⃣ Мультиязычность (English, German, French, Italian, Portuguese, Hindi, Spanish, and Thai)
2️⃣ 128k окно контекста
3️⃣ Обрезка знаний по декабрь 2023.
4️⃣ Умеет с тулами работать
Обучалось на 15T+ (неизвестно насколько+) токенов из публичных как-то собранных данных.
Базовые меньшие модели иногда, кста , просаживаются по сравнению с v3 по метрикам, но instruct стабильно лучше.
Большая модель вполне себе бодается с GPT-4-Omni и Claude-3.5-Sonnet.
Посмотрим, что выдаст lmsys арена)
На хабе есть и FP8 версии)
Кванты Llama-3.1 уже появились на хабе.
На текущий момент выложены:
1️⃣ AWQ-INT4, GPTQ-INT4 квантизации Llama-3.1-405B-Instruct
2️⃣ BNB-NF4 квантизация Llama-3.1-405B
2️⃣ AWQ-INT4 квантизация Llama-3.1-70B
4️⃣ AWQ-INT4, BNB-NF4 квантизации Llama-3.1-8B-Instruct
Судя по скорости выкладывания, для калибровки моделей использовалось довольно мало данных, поэтому я бы ожидал значительной просадки в качестве по сравнению с исходной моделью.
INT4 требует 203 Gb VRAM для 405B модели, а BNB-NF4 220 Gb.
На текущий момент выложены:
1️⃣ AWQ-INT4, GPTQ-INT4 квантизации Llama-3.1-405B-Instruct
2️⃣ BNB-NF4 квантизация Llama-3.1-405B
2️⃣ AWQ-INT4 квантизация Llama-3.1-70B
4️⃣ AWQ-INT4, BNB-NF4 квантизации Llama-3.1-8B-Instruct
Судя по скорости выкладывания, для калибровки моделей использовалось довольно мало данных, поэтому я бы ожидал значительной просадки в качестве по сравнению с исходной моделью.
INT4 требует 203 Gb VRAM для 405B модели, а BNB-NF4 220 Gb.
vLLM совместно с NeuralMagic регулярно проводят так называемые Office Hours, где рассказывают о новых фичах в релизах vLLM и проводят туториалы по пользованию своими либами, сжатию и ускорению моделек.
В частности, заслуживают внимания:
1️⃣ Туториал по квантизации с vLLM (выступает мой соавтор Eldar Kurtic).
2️⃣ FP8 и с чем его едят.
В общем, рекомендую)
В частности, заслуживают внимания:
1️⃣ Туториал по квантизации с vLLM (выступает мой соавтор Eldar Kurtic).
2️⃣ FP8 и с чем его едят.
В общем, рекомендую)
На свет появился еще один стартап про генеративное ИИ - Black Forest Labs (помните Черный Лес из Облы 😄?).
Чуваки привлекли 31M$ инвестиций, и в дело включились такие серьезные люди как Timo Aila и Vladlen Koltun.
Команда выпустила семейство моделей FLUX.1 из трех моделей:
1️⃣ Проприетарной [pro], доступной через их API и на replicate.ai
2️⃣ Открытой [dev] с 12B параметрами
3️⃣ Открытой [schell] тоже с 12B параметрами, но нацеленную на генерацию в малое число шагов (1-4), по всей видимости дистиллированную из [dev] c помощью adversarial diffusion distillation.
Утверждают, что по ELO score бьют open-source и closed-source модели типа MJv6, SD3-Ultra, Ideogram.
Сами модели по себе представляют DiTы, обученные на flow matching.
Модель умеет генерировать изображения разного разрешения с разными aspect ratio.
Техрепорт обещают выложить в будущем.
Веса моделей на 🤗:
1️⃣ FLUX.1-dev
2️⃣ FLUX.1-schnell
Гитхаб проекта
Чуваки привлекли 31M$ инвестиций, и в дело включились такие серьезные люди как Timo Aila и Vladlen Koltun.
Команда выпустила семейство моделей FLUX.1 из трех моделей:
1️⃣ Проприетарной [pro], доступной через их API и на replicate.ai
2️⃣ Открытой [dev] с 12B параметрами
3️⃣ Открытой [schell] тоже с 12B параметрами, но нацеленную на генерацию в малое число шагов (1-4), по всей видимости дистиллированную из [dev] c помощью adversarial diffusion distillation.
Утверждают, что по ELO score бьют open-source и closed-source модели типа MJv6, SD3-Ultra, Ideogram.
Сами модели по себе представляют DiTы, обученные на flow matching.
Модель умеет генерировать изображения разного разрешения с разными aspect ratio.
Техрепорт обещают выложить в будущем.
Веса моделей на 🤗:
1️⃣ FLUX.1-dev
2️⃣ FLUX.1-schnell
Гитхаб проекта
После долгой борьбы с инфраструктурой, богами Хаоса и Разрушения, удалось-таки квантизовать AQLM-ом и дообучить PV-алгоритмом меньшие версии 🦙-3.1.
1️⃣ ISTA-DASLab/Llama-3.1-8B-AQLM-PV-1Bit-1x16-hf
2️⃣ ISTA-DASLab/Llama-3.1-8B-AQLM-PV-2Bit-1x16-hf
3️⃣ ISTA-DASLab/Llama-3.1-8B-Instruct-AQLM-PV-1Bit-1x16-hf
4️⃣ ISTA-DASLab/Llama-3.1-8B-Instruct-AQLM-PV-2Bit-1x16-hf
70B в процессе. Самая интересная из 🦙, безусловно , 405B, но пока развлекаемся с тем, как поместить сие жирное чудище на машину)
1️⃣ ISTA-DASLab/Llama-3.1-8B-AQLM-PV-1Bit-1x16-hf
2️⃣ ISTA-DASLab/Llama-3.1-8B-AQLM-PV-2Bit-1x16-hf
3️⃣ ISTA-DASLab/Llama-3.1-8B-Instruct-AQLM-PV-1Bit-1x16-hf
4️⃣ ISTA-DASLab/Llama-3.1-8B-Instruct-AQLM-PV-2Bit-1x16-hf
70B в процессе. Самая интересная из 🦙, безусловно , 405B, но пока развлекаемся с тем, как поместить сие жирное чудище на машину)
Мы настолько тормозили, что Instruct 2-битную модель люди из community выложили раньше нас. Любопытно. откуда такое разночтение в метриках для исходной модели.
Если конкретно:
По нашим замерам неквантизованная Llama-3.1-Instruct выдает 68.17% точности в среднем на MMLU.
А квантизованная AQLM в 2 бита и зафайнтьюенная нами PV модель - 59.17%. То есть просадка у нашей модели меньше, но и бейзлайн выше)
Если конкретно:
По нашим замерам неквантизованная Llama-3.1-Instruct выдает 68.17% точности в среднем на MMLU.
А квантизованная AQLM в 2 бита и зафайнтьюенная нами PV модель - 59.17%. То есть просадка у нашей модели меньше, но и бейзлайн выше)
[ишшуя на гитхабе]
В webui накатили квантизованные версии недавно нашумевшей FLUX.1[dev].
1️⃣bnb nf4 (4 c небольшим бит на параметро)
2️⃣fp8 (если считать fp8 квантизацией)
В зависимости от железа (рассматривается случай GPU от Ampere и новее) и версий pytorch/cuda bnb nf4 быстрее от 1.3 до 4 раз. Так как модель довольно здоровая, 12B параметров, то трансфер памяти, по всей видимости играет существенную роль. Кроме того, после недавних обновлений bitsnandbytes (0.42-0.43) скорость матричных операций (
Кроме того, утверждается, что ошибка квантизации nf4 даже меньше (благодаря более адаптивной квантильной квантизации) чем у fp8 (e4m3fn/e5m2).
Далее пост содержит обсуждение хаков, как эффективно запускать FLUX на винде и примеры генераций.
В webui накатили квантизованные версии недавно нашумевшей FLUX.1[dev].
1️⃣bnb nf4 (4 c небольшим бит на параметро)
2️⃣fp8 (если считать fp8 квантизацией)
В зависимости от железа (рассматривается случай GPU от Ampere и новее) и версий pytorch/cuda bnb nf4 быстрее от 1.3 до 4 раз. Так как модель довольно здоровая, 12B параметров, то трансфер памяти, по всей видимости играет существенную роль. Кроме того, после недавних обновлений bitsnandbytes (0.42-0.43) скорость матричных операций (
bnb.matmul_4bit
) сильно выросла. Кроме того, утверждается, что ошибка квантизации nf4 даже меньше (благодаря более адаптивной квантильной квантизации) чем у fp8 (e4m3fn/e5m2).
Далее пост содержит обсуждение хаков, как эффективно запускать FLUX на винде и примеры генераций.
Кроме того, в свежем pr (отличная работа @galqiwi !) в bitsandbytes добавили классы
В современных LLMках идет тренд на рост размера токенизатора, и недавняя работа (пост на эйай ньюз), показывает, что это даже положительно влияет на качество вдобавок к уменьшию длин последовательностей. Для экстремально сжатых моделей (в 1 и 2 бита) эмбеды и
В недавней issue показано, что эмбеды можно сжимать в 4 бита простой bnb квантизацией без просадки, а l
Данное обновление весьма полезно для дальнейшего движения в сторону экстремального сжатия и посадки LLMок на мобилки.
Embedding4bit
, Embedding8bit
.В современных LLMках идет тренд на рост размера токенизатора, и недавняя работа (пост на эйай ньюз), показывает, что это даже положительно влияет на качество вдобавок к уменьшию длин последовательностей. Для экстремально сжатых моделей (в 1 и 2 бита) эмбеды и
lm_head
занимают значительную долю в суммарном обьеме памяти на хранение модели.В недавней issue показано, что эмбеды можно сжимать в 4 бита простой bnb квантизацией без просадки, а l
m_head
в 8 бит (в 4 с небольшой просадкой).Данное обновление весьма полезно для дальнейшего движения в сторону экстремального сжатия и посадки LLMок на мобилки.
How Fireworks evaluates quantization precisely and interpretably
[Блог]
Недавно ребята из fireworks.ai, провайдера инференса LLMок, выпустили занятный блог про то, как следует оценивать качество сжатых 🗜 моделей.
Главные выводы и предписания следующие:
1️⃣ Trade-off между степенью сжатия и качеством определяется конечным приложением. Не существует универсального предписания для всех задач, что, мол, во столько раз можно сжать с умеренной просадкой в качестве, а дальше нельзя.
2️⃣ Использование KL-дивергенции для оценки степени расхождения квантизованной модели от исходной.
3️⃣ Не полагаться на точность на стандартных бенчмарках, а диверсифицировать протокол замеров
По первому пункту, вывод довольно логичен. Некоторые задачи
Ссылаясь на свежую работу от Microsoft Accuracy is not is all you need, авторы заявляют, что точность на бенчах - довольно шумная метрика оценки качества. Может быть так, что исходная модель где-то ошибалась, а квантизованная случайно стала предсказывать нужный токен. И прирост качества (скорее всего мизерный) обусловлен случайностью, а не тем, что модель “стала лучше”.
KL-дивергенция между сжатой и несжатой моделью предлагается в качестве альтернативы точности на наборе задач, как устойчивая к шумам. Если конкретно, предлагается генерировать несжатой моделью (forced generation), и смотреть, насколько различаются вероятности следующего токена предсказанные fp моделью и квантизованной. Кроме того, еще можно смотреть на token rejection rate - насколько отличается выбор top N токенов (
Ниже под квантизацией подразумевается переход от fp16 к fp8 (братве явно завезли баржу с H100). Рассматривают 4 уровня квантизации (по возрастанию степени сжатия):
1️⃣ Квантизуем только MLP без первого и последнего блока трансформера
2️⃣ Квантизуем все веса
3️⃣ Квантизуем вдобавок еще KV-cache
4️⃣ Квантизуем attention (K, V?) на prefill
Точность на MMLU просаживается немонотонно, уровень 2 даже оказывается “лучше” fp16 на тютельку. KL-дивергенция же монотонно растет со сжатием.
Далее авторы смотрят еще на ряд задачек из HELM-Lite - GSM8k, NaturalQuestions, WMT-2014 и другие, сравниваясь с другим известным провайдером - together.ai . Что fireworks, что together выдают качество близкое к fp16 при инференсе в fp8 (а то и лучше некоторых задачах), но fireworks якобы чуть лучше.
Однако, радоваться рано, говорят авторы из fireworks.ai. Нужен замер на чем-то как можно более похожем на людские предпочтения на том-же lmsys. Alpaca-Eval слишком маленький и не использует современные методы промптинга, потому предлагают смотреть на Arena-Hard-Auto от создателей lmsys. fp8 модели от fireworks и together будто бы чуть хуже fp16 на 🦙-3.1-405B, но не статзначимо.
Выводы
Вопрос оценки качества LLMок довольно нетривиален, ввиду того, что современные модели умеют решать широкий круг задач, и сложно объять всю полноту возможных задач и областей знания. Академические бенчмарки из нескольких задач и замеров перплексии на паре датасетов хороши для статей (здесь и ваш покорный слуга согрешил), но не всегда удовлетворительны для реальных приложений и запросов пользователя. Потому следует полагаться не на чужие обещания, а самому всю тщательно прощупывать 🧐.
[Блог]
Недавно ребята из fireworks.ai, провайдера инференса LLMок, выпустили занятный блог про то, как следует оценивать качество сжатых 🗜 моделей.
Главные выводы и предписания следующие:
1️⃣ Trade-off между степенью сжатия и качеством определяется конечным приложением. Не существует универсального предписания для всех задач, что, мол, во столько раз можно сжать с умеренной просадкой в качестве, а дальше нельзя.
2️⃣ Использование KL-дивергенции для оценки степени расхождения квантизованной модели от исходной.
3️⃣ Не полагаться на точность на стандартных бенчмарках, а диверсифицировать протокол замеров
По первому пункту, вывод довольно логичен. Некоторые задачи
(function calling)
менее чувствительны к ошибкам, чем другие (code generation)
, где один косячок, и весь дальнейший вывод сыпется как домино. Перплексия тоже плоха, так как ниже у моделей с низкой энтропией, но не всегда более точных. Ссылаясь на свежую работу от Microsoft Accuracy is not is all you need, авторы заявляют, что точность на бенчах - довольно шумная метрика оценки качества. Может быть так, что исходная модель где-то ошибалась, а квантизованная случайно стала предсказывать нужный токен. И прирост качества (скорее всего мизерный) обусловлен случайностью, а не тем, что модель “стала лучше”.
KL-дивергенция между сжатой и несжатой моделью предлагается в качестве альтернативы точности на наборе задач, как устойчивая к шумам. Если конкретно, предлагается генерировать несжатой моделью (forced generation), и смотреть, насколько различаются вероятности следующего токена предсказанные fp моделью и квантизованной. Кроме того, еще можно смотреть на token rejection rate - насколько отличается выбор top N токенов (
N=16
в дальнейшем) между двумя моделями.Ниже под квантизацией подразумевается переход от fp16 к fp8 (братве явно завезли баржу с H100). Рассматривают 4 уровня квантизации (по возрастанию степени сжатия):
1️⃣ Квантизуем только MLP без первого и последнего блока трансформера
2️⃣ Квантизуем все веса
3️⃣ Квантизуем вдобавок еще KV-cache
4️⃣ Квантизуем attention (K, V?) на prefill
Точность на MMLU просаживается немонотонно, уровень 2 даже оказывается “лучше” fp16 на тютельку. KL-дивергенция же монотонно растет со сжатием.
Далее авторы смотрят еще на ряд задачек из HELM-Lite - GSM8k, NaturalQuestions, WMT-2014 и другие, сравниваясь с другим известным провайдером - together.ai . Что fireworks, что together выдают качество близкое к fp16 при инференсе в fp8 (а то и лучше некоторых задачах), но fireworks якобы чуть лучше.
Однако, радоваться рано, говорят авторы из fireworks.ai. Нужен замер на чем-то как можно более похожем на людские предпочтения на том-же lmsys. Alpaca-Eval слишком маленький и не использует современные методы промптинга, потому предлагают смотреть на Arena-Hard-Auto от создателей lmsys. fp8 модели от fireworks и together будто бы чуть хуже fp16 на 🦙-3.1-405B, но не статзначимо.
Выводы
Вопрос оценки качества LLMок довольно нетривиален, ввиду того, что современные модели умеют решать широкий круг задач, и сложно объять всю полноту возможных задач и областей знания. Академические бенчмарки из нескольких задач и замеров перплексии на паре датасетов хороши для статей (здесь и ваш покорный слуга согрешил), но не всегда удовлетворительны для реальных приложений и запросов пользователя. Потому следует полагаться не на чужие обещания, а самому всю тщательно прощупывать 🧐.
Как сделать text2image модель, которая по SbS бьет Midjourney?
1️⃣ Учишь модель, которая хоть иногда лучше Midjourney
2️⃣ Собираешь большой набор промптов
3️⃣ Прогоняешь Side-by-Side comparison
4️⃣ Отбираешь промпты, где ваша модель бьет Midjourney
5️⃣ Утверждаешь, что на внутреннем бенче добился победы над MJ
6️⃣ Stonks!
1️⃣ Учишь модель, которая хоть иногда лучше Midjourney
2️⃣ Собираешь большой набор промптов
3️⃣ Прогоняешь Side-by-Side comparison
4️⃣ Отбираешь промпты, где ваша модель бьет Midjourney
5️⃣ Утверждаешь, что на внутреннем бенче добился победы над MJ
6️⃣ Stonks!
On the Impact of Calibration Data in Post-training Quantization and Pruning
[Статья][Лаконичный ридми]
Введение
Многие современные методы сжатия моделей (что квантизация, что прунинг) оптимизируют некоторую меру ошибки на репрезентативной выборке данных (калибровочном датасете). Интуитивно понятно, что эта выборка есть приближение целевого распределения данных, поэтому желательно, чтобы этой самый калибровочный датасет как можно точнее и полнее приближал его.
На текущий момент, в сообществе не сложилось четких правил и предписаний по сбору калибровочных данных. Преимущественно, исследователи и практики полагаются на то, что было предложено ранее в работах, или тому что предлагает GGUF.
И в этой работе, авторы исследуют вопрос влияния калибровочных данных на качество data-aware методов сжатия LLMок.
Метод
Берутся 2 метода квантизации
1️⃣ GPTQ
2️⃣ SpQR (я польщен 😇)
И 2 метода прунинга
1️⃣ SparseGPT
2️⃣ Wanda
Модели квантизуют в 4 бита (SpQR в ~4.5 по факту), и прунят в 2:4 sparsity.
В качестве калибровочных данных рассматривают следующие источники:
1️⃣ C4 (бессмертная классика)
2️⃣ CNN-DM (новости, длинный текст хорошего качества, именно текст, не сами новости)
3️⃣ RedPajama
4️⃣ RefinedWeb
5️⃣ Wikipedia (английская)
Отовсюду берут 128 сэмплов длины 2048, как в статье GPTQ.
Качество замеряют на десяти 0-shot бенчах.
Берут 9 моделей:
1️⃣ Llama-1 (7B, 13B, 33B)
2️⃣ Vicuna, полученные из 🦙 выше
3️⃣ OPT (6.7B, 13B, 33B)
[Статья][Лаконичный ридми]
Введение
Многие современные методы сжатия моделей (что квантизация, что прунинг) оптимизируют некоторую меру ошибки на репрезентативной выборке данных (калибровочном датасете). Интуитивно понятно, что эта выборка есть приближение целевого распределения данных, поэтому желательно, чтобы этой самый калибровочный датасет как можно точнее и полнее приближал его.
На текущий момент, в сообществе не сложилось четких правил и предписаний по сбору калибровочных данных. Преимущественно, исследователи и практики полагаются на то, что было предложено ранее в работах, или тому что предлагает GGUF.
И в этой работе, авторы исследуют вопрос влияния калибровочных данных на качество data-aware методов сжатия LLMок.
Метод
Берутся 2 метода квантизации
1️⃣ GPTQ
2️⃣ SpQR (я польщен 😇)
И 2 метода прунинга
1️⃣ SparseGPT
2️⃣ Wanda
Модели квантизуют в 4 бита (SpQR в ~4.5 по факту), и прунят в 2:4 sparsity.
В качестве калибровочных данных рассматривают следующие источники:
1️⃣ C4 (бессмертная классика)
2️⃣ CNN-DM (новости, длинный текст хорошего качества, именно текст, не сами новости)
3️⃣ RedPajama
4️⃣ RefinedWeb
5️⃣ Wikipedia (английская)
Отовсюду берут 128 сэмплов длины 2048, как в статье GPTQ.
Качество замеряют на десяти 0-shot бенчах.
Берут 9 моделей:
1️⃣ Llama-1 (7B, 13B, 33B)
2️⃣ Vicuna, полученные из 🦙 выше
3️⃣ OPT (6.7B, 13B, 33B)
Результаты и наблюдения
1️⃣ Точность может сильно различаться между разными подвыборками из одного датасета.
2️⃣ Есть более и менее шумные задачи. BoolQ и RTE показывают наибольшую дисперсию.
3️⃣ Одни датасеты лучше других. В среднем RefinedWeb показывает лучшее качество, а Wikipedia худшее, но разброс значителен - между моделями и методами и нет четкого ранжирования.
4️⃣ Прунинг сажает качество моделей сильнее, потому и влияние данных более заметно, по всей видимости. Разброс для SparseGPT больше (ожидаемо, так как SparseGPT не только прунит, но и обновляет оставшиеся веса).
5️⃣OPTы более чувствительны к выбору данных, чем парнокопытные модели
6️⃣ Качество быстро насыщается с количеством калибровочных примеров для всех методов, кроме SparseGPT. (по нашим наблюдениям, чтобы выжать максимум из качества пара тысяч последовательностей все же нужна).
7️⃣ SparseGPT лучше Wanda (хотя исходная статья утверждала обратное). Логично, ибо Wanda есть де-факто кастрированный SparseGPT.
Выводы
Мораль сей басни такова - подбирайте калибровочные данные осмысленно. Полезное исследование, но чувствуется, что для полноты картины нехватает более сложных задач и других областей (математика, код), как и более свежих моделей.
1️⃣ Точность может сильно различаться между разными подвыборками из одного датасета.
2️⃣ Есть более и менее шумные задачи. BoolQ и RTE показывают наибольшую дисперсию.
3️⃣ Одни датасеты лучше других. В среднем RefinedWeb показывает лучшее качество, а Wikipedia худшее, но разброс значителен - между моделями и методами и нет четкого ранжирования.
4️⃣ Прунинг сажает качество моделей сильнее, потому и влияние данных более заметно, по всей видимости. Разброс для SparseGPT больше (ожидаемо, так как SparseGPT не только прунит, но и обновляет оставшиеся веса).
5️⃣OPTы более чувствительны к выбору данных, чем парнокопытные модели
6️⃣ Качество быстро насыщается с количеством калибровочных примеров для всех методов, кроме SparseGPT. (по нашим наблюдениям, чтобы выжать максимум из качества пара тысяч последовательностей все же нужна).
7️⃣ SparseGPT лучше Wanda (хотя исходная статья утверждала обратное). Логично, ибо Wanda есть де-факто кастрированный SparseGPT.
Выводы
Мораль сей басни такова - подбирайте калибровочные данные осмысленно. Полезное исследование, но чувствуется, что для полноты картины нехватает более сложных задач и других областей (математика, код), как и более свежих моделей.
Compact Language Models via Pruning and Knowledge Distillation
[Статья][Код есть, хоть это поначалу и не очевидно]
Введение
С этими всеми квантизациями мы стали забывать про прунинг. В отличие от довольно бюджетных техник квантизаций, дающих значительное сжатие за дешево, прунинг, тем более структурированный, требует серьезного дообучения.
Но если вы не гаражный стартап, а компания с триллионной капитализацией - вам он под силу.
Подданые кожаной куртки выпустили запруненные версии Nemotron-15B под названием Minitron-4B и Minitron-8B, которые по качеству якобы конкуретноспособны текущей SOTA в легком весе.
Метод
У трансформеров можно прунить:
☠️ Целые блоки (про что был обзор некоторое времчя назад)
☠️ Размерность признаков (был у вас d_model - 768, стал 512)
☠️ Головы в Attention
☠️ Внутреннюю размерность MLP
Первый метод про прунинг в глубину, а остальные про ширину.
Для оценки важности используются критерии, основанные на активациях:
⭐️ Средний attention по голове (при прунинге головы)
⭐️ Средняя активация по каналу (для MLP)
⭐️ Средняя активация LayerNorm (для оценки важности признаков)
Для прунинга в глубину смотрят на среднее косинусное расстояние между входом и выходом блока и изменение перплексии при выкидывании блока.
Рассматривают оценку важности one-shot, когда выкидываем все за раз, или итеративно, по чуть-чуть.
Далее выбирают некоторое (около 20) число конфигураций сжатых моделей с целевой степенью сжатия, сжимают модели и дообучают на 1.8B токенов. Берется самый перспективный кандидат и дообучается уже на ~100B токенов. Немало, но все же на 2 порядка меньше, чем у современных LLM.
На дообучении рассматривают сумму следующих лоссов:
1️⃣ Кросс-энтропию (исходный лосс)
2️⃣ KL-дивергенцию на логитах с несжатой моделью
3️⃣ L2 лосс между промежуточными признаками (так как сжатая модель может быть уже, есть матрица переводящая в размерность учителя)
[Статья][Код есть, хоть это поначалу и не очевидно]
Введение
С этими всеми квантизациями мы стали забывать про прунинг. В отличие от довольно бюджетных техник квантизаций, дающих значительное сжатие за дешево, прунинг, тем более структурированный, требует серьезного дообучения.
Но если вы не гаражный стартап, а компания с триллионной капитализацией - вам он под силу.
Подданые кожаной куртки выпустили запруненные версии Nemotron-15B под названием Minitron-4B и Minitron-8B, которые по качеству якобы конкуретноспособны текущей SOTA в легком весе.
Метод
У трансформеров можно прунить:
☠️ Целые блоки (про что был обзор некоторое времчя назад)
☠️ Размерность признаков (был у вас d_model - 768, стал 512)
☠️ Головы в Attention
☠️ Внутреннюю размерность MLP
Первый метод про прунинг в глубину, а остальные про ширину.
Для оценки важности используются критерии, основанные на активациях:
⭐️ Средний attention по голове (при прунинге головы)
⭐️ Средняя активация по каналу (для MLP)
⭐️ Средняя активация LayerNorm (для оценки важности признаков)
Для прунинга в глубину смотрят на среднее косинусное расстояние между входом и выходом блока и изменение перплексии при выкидывании блока.
Рассматривают оценку важности one-shot, когда выкидываем все за раз, или итеративно, по чуть-чуть.
Далее выбирают некоторое (около 20) число конфигураций сжатых моделей с целевой степенью сжатия, сжимают модели и дообучают на 1.8B токенов. Берется самый перспективный кандидат и дообучается уже на ~100B токенов. Немало, но все же на 2 порядка меньше, чем у современных LLM.
На дообучении рассматривают сумму следующих лоссов:
1️⃣ Кросс-энтропию (исходный лосс)
2️⃣ KL-дивергенцию на логитах с несжатой моделью
3️⃣ L2 лосс между промежуточными признаками (так как сжатая модель может быть уже, есть матрица переводящая в размерность учителя)