Telegram Web Link
Метод

За основу мы взяли архитектуру модели из STAR и последовательно анализируя и улучшая ее пришли к конечной модели.

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

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

Далее, мы проанализировали карты внимания авторегрессионной модели, и обнаружили, что текущее разрешение почти не смотрит на прошлые, поэтому разрешения можно генерировать независимо друг от друга. Убрав авторегрессию на прошлые разрешения мы нисколько не потеряли в качестве, и при этом ускорили модель примерно на 20-30%.

И последняя ключевая находка оказалась в том, что технику classifier-free-guidance (CFG), улучшающую качество генераций и соответствие текстовому запросу, но требующую два прогона через модель вместо одного, можно отключить на высоких разрешениях без ухудшения конечного результата. За счет этого, можно добиться почти двухкратного ускорения по сравнению со стандартной процедурой генерации с CFG.

Полученную модель мы назвали Switti - Scale-wise transformer for text-to-image synthesis, так как она генерирует изображение по тексту разрешение за разрешением.
🔥2
Эксперименты и результаты

Мы обучили нашу модель на внутреннем большом датасете из множества картинок (~100M).

В качестве бейзлайнов мы берем Stable Diffusion XL, и ее ускоренные версии - SDXL-Turbo, SDXL-DMD2, SD3-Medium, Lumina-Next, а так же современные авторегрессионные модели LlamaGen и упомянутый HART.

Для оценки качества моделей мы использовали принятые и стандартные в литературе метрики (FID, CLIP, Pickscore, Image Reward, все знают, что они 💩, но этикет же надо соблюдать) а также пользовательские предпочтения на корзинке из 128 запросов (Parti Prompts).

Пользователи оценивали следующие аспекты изображения:
📝 Релевантность - соответствие текстовому запросу
👩‍🎨 Эстетичность - общая ‘красивость” изображения
🤖 Комплексность - количество деталей и сложность композиции
💔 Дефектность - отсутствие дефектов и артефактов в изображении

Switti по качеству значительно превосходит существующие авторегрессионные подходы, как по метрикам, так и пользовательским предпочтениям.

С диффузионными моделями мы добились паритета по качеству, но при этом Switti генерирует в 7 раз быстрее оригинальной SDXL-модели, и 2 раза быстрее ускоренных версий - SDXL-Turbo, SDXL-DMD2.

Кроме того, мы обнаружили, что если по ходу генерации подменить текстовый запрос, можно получить нечто среднее. Например, подав в запрос изначально ведьмака, а затем подменив в середине генерации запрос на робота, вы можете получить некоего киборга-ведьмака. Или подав изначально зимний пейзаж, а подменив его на какой-то стадии летним можно получить разную градацию перехода от зимы к лету.

Вывод

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

Тем не менее, есть еще куда расти. На текущий момент Switti генерирует только в 512x512, и до нынешней SOTA (FLUX, Recraft, Ideogram v2, Midjourney 6.1), еще очень далеко. Но диффузионные модели уже давно полируются и улучшаются, а VAR-inspired парадигма зародилась совсем недавно 👼. И есть еще большой потенциал для роста 📈.
🔥191👍1
И картиночки)
8👍1
В процессе серфинга по тытрубе и подготовке к собственной защите наткнулся на защиту кандидатской диссертации Егор Захарова в Сколтехе.

Тема диссертации - синтез человеческих лиц и 3д фигур людей с помощью GANов. И данный рассказ - действительно очень интересный и увлекательный обзор техник по улучшению качества генерации, реализма, общаемости на произвольные аспекты и положения головы и тела.
Картинки просто конфетка и сам рассказ очень увлекательный и познавательный.

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

В общем, рекомендую.
👍12
Хорошо мы успели залететь)

Авторы VAR (без первого, c которым вышла презанятная история) выкатили свою text-2-image модель под названием Infinity.

Обзорчик появится немного позднее)
👍10
Infinity∞: Scaling Bitwise AutoRegressive Modeling for High-Resolution Image Synthesis
[Статья] [Пока только ридми и картинки]

Только-только мы успели выпустить Switti, как создатели VAR, опубликовали собственную text-2-image модель, позиционирующую себя так же как конкурент моделей уровня SDXL/SD3 Medium.

Метод

Наиболее примечателен токенизатор.

В оригинальной статье по VAR использовался Residual VAE c общей кодовой книгой на все масштабы. Выход энкодера на данном масштабе заменяется на ближайший вектор из кодовой книги. На этом этапе возникает некоторая ошибка аппроксимации, и, по всей видимости, в это кроется причина, по которой VQ-VAE традиционно уступают непрерывным аналогам по качеству реконструкции.

Чем больше кодовая книга - тем потенциально меньше ошибка квантизации, но огромные кодовые книги (скажем, с 2^64 векторами) не влезут в память никакой машины.

Потому авторы предлагают параметризовать кодбуки бинарными векторами (специфичными для каждого масштаба k), и квантизация осуществляется просто взятием знака от непрерывного вектора z_k, соответствующему уровню k в иерархии c домножением на некоторый коэффициент. Рассматривают две опции - LFQ, BSQ, отличающиеся на коэффициент 1 / \sqrt{d} и берут в итоге второй вариант, так для него существует эффективное выражение для вычисления энтропийной регуляризации (используемой для более эффективного использования кодбука).

Благодаря такой бинарной квантизации можно расход памяти, требуемый на кодбук размера 2^d, уменьшается с O(2^d), до O(d), благодаря чему, можно хранить колоссальные кодовые книги.

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

Дабы поддерживать разные aspect ratio и размеры используют факторизованные 2d RoPE позиционные эмбеды.

В качестве текстового энкодера используют Flan-T5. Обусловливание на текст осуществляется как через self-attention, за счет добавления токенов промпта в prefix, так и cross attention между картиночными и текстовыми токенами.
👍6🔥1
Эксперименты и результаты

Данные для обучения собраны из отфильтрованных LAION, COYO, OpenImages датасетов. Сначала учат на 256x256 разрешении, потом на 512x512 и в конце переходят на 1024x1024. Токенизатор, как и в оригинальной статье, осуществляет 16x уменьшение по пространству.

Качество оценивают по FID на некотором внутреннем датасете из 40к изображений вместо стандартного MS COCO. Кроме того, замеряют качество на GenEval и DPG, и предпочтения пользователей на ImageReward/HPSv2.1 по аспектам релевантности (Prompt Following) и эстетичности (Visual Aesthetics).

На бенчмарках Infinity уверенно побеждает все прошлые авторегрессионные модели (Switti в сравнениях нет ввиду очень малого промежутка времени между выходом моделей). Опережают по качеству и диффузионки SDXL/SD3-Medium/PixArt-Sigma.

Модель хорошо умеет в рендеринг текста, если верить черрипикам.

В ablations авторы показывают, что огромные кодбуки важны для качественной реконструкции, и самые большие кодбуки даже лучше continuous VAE.

Обучение с зашумлением заметно улучшает FID и немного другие метрики. 30% зашумление оптимально, согласно заявлениям авторов.

Модель генерирует быстро - одно изображение в разрешении 1024x1024 за 0.8 секунд против 2.1 и 2.7 у SD3 Medium и SDXL, соответственно.

Вывод

Годное подтверждение жизнеспособности scale-wise парадигмы. Ключевой вклад данной работы сильно улучшенный токенизатор (который и является основным ограничителем качества в случае Switti). “Умная” токенизация в картиночных и видео моделях вообще очень горячая тема во второй половине текущего года. Ждем с нетерпением релиза моделей, чтобы поиграться и забрать к себе наработки)
👍8
Собственноручно проверил наличие супервеса (см. оригинальную статью и разбор от gonzo-обзоры ML статей) в Llama-3.2-1B.

Aномальный вес находится в позиции (400 - выходной канал, 1417 - входной канал) в model.layers.1.mlp.down_proj.

Не столь ярко выражен (перплексия на Wikitext-2 (8k context length) выросла с 8.375 до 8.625 при занулении данного веса), но все же очень много для всего одно веса.

[Google Colab для желающих поиграться]
🔥24
На днях наткнулся на канал в Youtube некоего Simon Oz.

Парень доступно, с красивыми визуализациями в стиле 3Blue1Brown рассказывает про всякие темы из теории информации и особенности программирования на CUDA.

В частности, особого внимания заслуживает видос про то, как написать эффективный kernel для softmax, который быстрее реализаций в торче и на тритоне. Он пошагово анализирует узкие места, нюансы железа и алгоритма, и постепенно добивается улучшения производительности:

1️⃣ Эффективный алгоритм редукции для нахождения максимума
2️⃣ Оптимизации доступов к памяти (coalescing)
3️⃣ Перенос части операций из shared memory в регистры GPU (которые еще быстрее)
4️⃣ Векторизация операций через float4
5️⃣ Однократная подгрузка данных для подсчета максимума и экспоненты вместо двухкратной

Красивое...
🔥297👍3❤‍🔥1💩1🤡1
Отныне, присно и во веки веков ведущий данного канала не просто балабол, а заслуженный балабол!

Спасибо Сколтеху, всем товарищам, коллегам и соавторам за эти замечательные и продуктивные 3 года, путь полный трудностей, открытий и приключений)

Это была славная охота.

Сам текст диссертации интересующиеся могут найти здесь.
👍50🔥424🎉1🍾1
О, это подарок в честь присуждения степени?)
😁14
Это математика с подвохом!

А вы тоже думали, что прибавление нуля к числу никогда ничего не меняет?
🤔8
PrefixQuant: Static Quantization Beats Dynamic through Prefixed Outliers in LLMs
[Статья] [Код]

Введение

Для получения максимального ускорения, особенно при инференсе большими глотками батчами, нужно квантизовать не только веса, но и активации. Однако, богомерзкие выбросы сильно затрудняют квантизацию, и в прошлых работах (QuaRot, SpinQuant, DuQuant) было предложено применять Адамаровы матрицы (или некоторые обучаемые), которые размазывают 🧈 выбросы по каналам.

Однако, выбросы встречают не только в отдельных каналах, но есть и токены, например <BOS> и иные разделители, отличающиеся большими значениями активаций, и их квантизация большими группами (per-tensor) с максимальным ускорением приводит к большим ошибкам. Поэтому в упонятых выше методах использовали per-token квантизацию с некоторым замедлением инференса.

В этой статье авторы предлагают вынести аутлаерные токены в префикс последовательности дабы упростить квантизацию.

Метод

Сам подход мотивирован идеями про attention sinks и Quantizable Transformers: Removing Outliers by Helping Attention Heads Do Nothing. Иногда трансформерному блоку не нужно ничего делать, и дабы реализовать почти тождественную операцию, приходится выбрасывать весь attention в токены с низкой семантикой.

Потому авторы предлагают просто найти все эти токены и положить в префикс последовательности.

Токены находят на основе некоторой калибровочной выборки смотря на выход down_proj в MLP. Отбирают токены, чья L_{\infty} норма сильно больше медианной по последовательности.

Сам процесс достаточно быстрый - занимает всего несколько минут. Таких токенов оказывается от 1 до 4 в рассмотренных моделях (Llama-2,3, Qwen, Mistral). Обычно это <BOS>, и еще символы переноса строки \n, артикли и знаки препинания.

Данная модификация позволяет существенно уменьшить норму последующих токенов и упростить процесс квантизации.
Для максимизации качества в конце еще предлагается делать поблочный QAT, следуя EfficientQAT.

Эксперименты

Метод валидидируют на 🦙-2,3 в режимах W8A8KV8, W4A8KV4, and W4A4KV4 квантизации (W - точность весов, A - активаций, KV - KV-кэшей).

Веса квантизуются поканально, кэши поголовно, активации потензорно.

Предложенный подход оказывается примерно на одном уровне с per-token квантизациями, чуть уступая лишь SpinQuant с дообучением матриц вращения каналов. При этом скорость инференса на 20-30% быстрее.

Поблочный файнтьюн немного накидывает.

Вывод

Простой и полезный трюк для квантизации. Тем не менее, кажется, что возможность делать ничего в блоке модели стоит закладывать изначально, и скорее всего, ввиду потребности в низко-битных моделях, сообщество до этого дойдет (через softmax+1 или иным образом).
🔥8👍4
ClosedAI назвали новую модельку o3, дабы обойти коллизию имен с o2 - британским оператором, но не учли, что o3 - это озон)
😁30🍌2
“GIVE ME BF16 OR GIVE ME DEATH”? ACCURACY-PERFORMANCE TRADE-OFFS IN LLM QUANTIZATION
[Статья] [Нет кода]

Введение

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

Академические бенчмарки часто дают чрезмерно оптимистичную оценку, не всегда согласующуюся с пользовательским опытом на практике.

В данной работе, авторы исследуют несколько конфигураций квантизации в режиме малой просадки качества и выводят набор практический предписаний в зависимости от задачи и приложения.

Метод/Эксперименты/Результаты

Авторы рассматривают 3 варианта квантизации:
1️⃣ W8A8-FP (поддерживаемый только на Hopper/Ada Lovelace+)
2️⃣ W8A8-INT
3️⃣ W4A16
В первом случае веса сжимают просто через RTN квантизацию, в остальных применяют оптимизированный GPTQ (с поиском оптимальных скейлов) с калибровкой на OpenPlatypus. В случае 4-битной квантизации весов сравнивают еще и с AWQ.

Замеряют качество по трем сериям задач (на Llama-3.1 {8B, 70B, 405B}):
1️⃣ Open LLM Leaderboard V1
2️⃣ Open LLM Leaderboard V2
3️⃣ И так называемые Real-World задачи - Arena-Hard, HumanEval, HumanEval+

На Open LLM Leaderboard V1 все методы в пределах 99% качества исходной модели, за исключением задачи TrurthfulQA, где наблюдается просадка до 3%.

На Open LLM Leaderboard V2 имеет тоже место почти полное восстановление с наиболее заметной просадкой на BigBenchHard.

На ArenaHard, HumanEval, HumanEval+ тоже все хорошо.

AWQ бывает немного лучше на Open LLM Leaderboard, но заметно уступает на Real-World задачах.

Далее смотрят на похожесть генераций на Arena-Hard у исходной модели через ROUGE-1, ROUGE-L и BertScore. ROUGE порядка 0.6-0.7, но по всей видимости, это означает большую похожесть 😅 .

Для оценки скорости рассматривают разные сценарии:
1️⃣ Длинный промпт / короткий выход
2️⃣ Промпт и выход примерно одной длины
3️⃣ Короткий промпт / длинный выход

Инференс гоняют на vLLM, как проверенном и быстром движке. Замеры гоняют на A6000, A100, H100.

Рассматривают сценарий сихронной и асинхронной (подается батч запросов) генерации.

В синхронном случае почти всегда быстрее всего работает W4A16 квантизация, кроме длинного промпта (compute-bound режим) и инференса H100, где предпочтительнее FP8, INT8 W8A8 квантизация.

В асинхронном сценарии INT4 предпочтительнее на более low-end девайсах, а FP8 при инференсе на H100.

Вывод

Квантовать модели полезно? 😝
😁31
Наткнулся на репозиторий, красиво и наглядно иллюстрирующий mode collapse для различных формулировок GANов на 2-мерных игрушечных задачах.
👍16
Diffusion Meets Flow Matching: Two Sides of the Same Coin

В начале декабря группа чуваков из Глубокого Разума, среди коих признанные аксакалы, как Hoogeboom, De Bortoli и Salimans опубликовала презанятнейший пост Diffusion Meets Flow Matching: Two Sides of the Same Coin.

Нынче стало модно учить диффузионки в Flow Matching постановке. Тренд, по всей видимости, был задан SD3. И большинство нынешней SOTA в картиночной и видео генерации (из того, что известно) FLUX, MovieGen, HunyuanVideo.

И что это значит? Классическая парадигма - пережиток истории 🤔?

Ан нет.

В данном блогпосте авторы в деталях анализируют процесс сэмплирования и обучения в стандартной noise-prediction Variance Preserving (VE) диффузионной постановке и Flow matching, и показывают, что по сути обе сущности про одно и то же. Основная разница в коэффициентах при шуме/сигнале и использовании скорости в качестве выхода нейронной сети вместо шума/x0. И по ходу повествования эквивалентность двух парадигм авторы иллюстрируют с разных сторон.

Сам блогпост содержит красивые 🥰 иллюстративные визуализации с ползунками 😮.

Кроме того, авторы опровергают распространенное мнение, что Flow Matching дает непременно более прямые траектории, чем диффузия. Для узких распределений Flow Matching действительно дает более прямые траектории, чем типичный диффузионный процесс, но для широких распределений все может поменяться с точностью до наоборот. Впрочем, для наиболее типичного сценария text-2-image генерации или редактирования изображения, целевое распределение, по всей видимости, достаточно узкое.
👍11🔥63
SLTrain: a sparse plus low-rank approach for parameter and memory efficient pretraining
[Статья] [Код]

Введение

Низкоранговые приближения хорошо себя зарекомендовали при дообучении моделей, но их выразительности не хватает при обучении модели с нуля. Ранее было предложено по ходу обучения вливать LoRA в веса модели (статья ReLoRA) и инициализировать низкоранговую добавку, или накладывать низкоранговость на градиенты и состояния оптимизатора (GaLoRE). Но в первом случае, для получения качества, близкому к бейзлайну был необходим этап обучения всей модели целиком.

Возникает вопрос:
возможно ли добиться хорошего качества, имея всегда малое подмножество обучаемых параметров?


И авторы предлагают обучать Low-Rank + Sparse компоненту.

Метод

Идея, естесна, далеко не нова. По существу, это своего рода RobustPCA. Для дообучения LLM ранее подобное реализовали в RoSA.

Авторы мотивируют использование Sparse компоненты в дополнение к Low-Rank, тем что она обладает несколько иными свойствами (при не слишком малой sparsity матрица почти всегда полноранговая) и вместе они могут более гибко фитировать исходные матрицы весов.

Сэмплируется рандомная sparse маска и фиксируется по ходу обучения. Sparse матрица прибавляется к Low-Rank компоненте, потому sparse matrix операции не требуются при такой постановке, а для получения градиента достаточно проиндексировать градиент по всему весу.

Эксперименты

Авторы обучают семейство моделей с архитектурой Llama от 60M до 7B параметров на С4 корпусе на бюджете в несколько миллиардов токенов.

В качестве бейзлайнов выступают:
1️⃣ Full-Rank обучение
2️⃣ Low-Rank training
3️⃣ ReLoRA
4️⃣GaLoRE

Качество оценивают по валидационной перплексии.

SLTrain по качеству чуть лучше ReLoRA и GaLoRE, несколько экономичнее по памяти GaLoRE, и примерно такой же по скорости.

Рассматривают разные конфигуации Sparsity/Low-Rank. 1-3% ненулевых весов в Sparse компоненте более менее оптимально.

Анализируя спектр выученных весов, они показывают, что первые собственные значения Full-Rank обученных матриц соотвествуют Low-Rank компоненте, а последующие - Sparse компоненте. То есть, сумма Low-Rank + Sparse более точно описывает спектр при полном обучении.

Вывод

Идея разумная и логичная, но непонятно, насколько идея масштабируется на более практически интересные сценарии. Отсутствуют даже замеры 0-шотов на lm-eval (по всей видимости, при таких бюджетах обучения они мало будут отличаться от random guess).
👍61
Прошедший год был насыщенным на события и прогресс в области ИИ, глубокого обучения, машинки и разнообразных приложений.

Ключевые моменты и достижения области за 2️⃣0️⃣2️⃣4️⃣ превосходно отметил у себя на канале Григорий Сапунов (https://www.tg-me.com/gonzo_ML/3175).

Со своей стороны могу лишь добавить, что уходяший год, был интересным и примечательным в том числе и точки зрения техник сжатия и ускорения моделей:
🌟 Появились 2️⃣-битные квантизации, которые не приводят LLM в полную негодность. (AQLM, QuiP#, PV-Tuning, QTIP)
🌟 Спекулятивный декодинг подарил ряд интересных работ (до коих у вашего покорного слуги не дошли руки на разбор, но в следующем году планирую наверстать упущенное).
🌟 Ряд интересных решений по сжатию активаций и KV-кэшей.

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

Спасибо всем присутствующим здесь (кроме NFT-ботов 🤖) за то, что вы здесь, за вашу поддержку и комментарии.
Будем стараться и дальше делать полезный (и, надеюсь, интересный ) контент.

Быть добру!
🙏15👍43
2025/07/09 00:54:59
Back to Top
HTML Embed Code: