Сообщество сегодня обсуждает релиз от Grok3 от
Нас уже перевалило за 2к! 🎉
Изначально, когда создавал канал, я даже и не мог помыслить о такой аудитории) Думал, что буду как гаражный музыкант с парой десятков близких знакомых и энтузиастов.
Спасибо всем за то, что вы здесь, за комментарии и ссылки на релевантные статьи)
Желаю и далее в силу мер и возможности публиковать обзорчики, мемасики 😁 про сжатие и не только.
[MASK]
, но в этот прекрасный произошло еще одно - не менее важное и знаменательное событие.Нас уже перевалило за 2к! 🎉
Изначально, когда создавал канал, я даже и не мог помыслить о такой аудитории) Думал, что буду как гаражный музыкант с парой десятков близких знакомых и энтузиастов.
Спасибо всем за то, что вы здесь, за комментарии и ссылки на релевантные статьи)
Желаю и далее в силу мер и возможности публиковать обзорчики, мемасики 😁 про сжатие и не только.
[Блог]
Вот недавно мы обсуждали LLaDA и жизнеспособности диффузионной парадигмы, а тут Inception Labs обьявили о создании Diffusion LLM, которая якобы способна бодаться по качеству (в бенчах приводят только код) с вполне себе сильными closed-source LLM (без рызонинга).
При этом она якобы на порядок быстрее небольших авторегресионных LLM, давая космические более 1000 токенов в секунду на одной H100, а не специализированных чипах.
Утверждается, что оно могет еще и в RAG, tools use и агентность.
У них и чатик есть, можно потыкаться.
Вот недавно мы обсуждали LLaDA и жизнеспособности диффузионной парадигмы, а тут Inception Labs обьявили о создании Diffusion LLM, которая якобы способна бодаться по качеству (в бенчах приводят только код) с вполне себе сильными closed-source LLM (без рызонинга).
При этом она якобы на порядок быстрее небольших авторегресионных LLM, давая космические более 1000 токенов в секунду на одной H100, а не специализированных чипах.
Утверждается, что оно могет еще и в RAG, tools use и агентность.
У них и чатик есть, можно потыкаться.
Judge Decoding: Faster Speculative Sampling Requires Going Beyond Model Alignment
[Статья][Кода нет]
Давно хотел коснуться темы ускорения инференса авторегрессионных моделей за счет спекулятивного декодинга, но все никак не доходили руки, и наконец дошли.
Команда исследователей из 00, среди которых небезызвестный автор канала @ai_newz, представила метод, ускоряющий спекулятивный декодинг за счет оценки важности текущего токена и принятия большего числа по сравнению с базовым подходом, при этом практически без просадки в качестве.
[Статья][Кода нет]
Давно хотел коснуться темы ускорения инференса авторегрессионных моделей за счет спекулятивного декодинга, но все никак не доходили руки, и наконец дошли.
Команда исследователей из 00, среди которых небезызвестный автор канала @ai_newz, представила метод, ускоряющий спекулятивный декодинг за счет оценки важности текущего токена и принятия большего числа по сравнению с базовым подходом, при этом практически без просадки в качестве.
Введение
Есть большие LLM, а есть не очень большие. Большие обычно работают лучше при прочих равных, но требуют большей памяти, объема вычислений и времени на шаг инференса.
Инференс LLM обыкновенно memory bound - скорость упирается во время загрузки/сгрузки весов из GDDR/HBM памяти в кэши, а не сами вычисления. То есть за один трансфер памяти потенциально можно было бы делать больше арифметических операций без существенного замедления.
При этом в большинстве случаев разница между более слабой моделью (называемой draft, т,е ‘черновой”) и некой большей (таргет) моделью невелика.
Отсюда возникает идея - генерировать много токенов один за другим более слабой моделью (Llama-3.1-8B), а затем проверять более “жирной” (Llama-3.1-405-B) с тем же словарем, (последнее требование не обязательно, но упрощает постановку). За один шаг можно “проверить” несколько токенов малой модели, и если все предсказания совпали (то есть наиболее вероятные токены у большой модели такие же, как у меньшой), — принять все, иначе - до последнего принятого токена.
Таким образом можно добиться генерации, идентичной выдаваемой большой моделью, за меньшее время. Данную идею предложили еще достаточно давно в статье Fast Inference from Transformers via Speculative Decoding еще в далеком 2022.
Но, есть существенный недостаток. На практике предсказания драфт-модели и таргет-модели расходятся очень быстро, всего через несколько токенов, поэтому слишком большого ускорения достичь не удается - обычно в районе 1.5-2x.
При этом для получения правильного ответа совершенно необязательно, чтобы предсказания каждого токена у меньшей модели совпадали с большей. Она может сказать то же самое, но другими словами, используя синонимы, например.
Есть большие LLM, а есть не очень большие. Большие обычно работают лучше при прочих равных, но требуют большей памяти, объема вычислений и времени на шаг инференса.
Инференс LLM обыкновенно memory bound - скорость упирается во время загрузки/сгрузки весов из GDDR/HBM памяти в кэши, а не сами вычисления. То есть за один трансфер памяти потенциально можно было бы делать больше арифметических операций без существенного замедления.
При этом в большинстве случаев разница между более слабой моделью (называемой draft, т,е ‘черновой”) и некой большей (таргет) моделью невелика.
Отсюда возникает идея - генерировать много токенов один за другим более слабой моделью (Llama-3.1-8B), а затем проверять более “жирной” (Llama-3.1-405-B) с тем же словарем, (последнее требование не обязательно, но упрощает постановку). За один шаг можно “проверить” несколько токенов малой модели, и если все предсказания совпали (то есть наиболее вероятные токены у большой модели такие же, как у меньшой), — принять все, иначе - до последнего принятого токена.
Таким образом можно добиться генерации, идентичной выдаваемой большой моделью, за меньшее время. Данную идею предложили еще достаточно давно в статье Fast Inference from Transformers via Speculative Decoding еще в далеком 2022.
Но, есть существенный недостаток. На практике предсказания драфт-модели и таргет-модели расходятся очень быстро, всего через несколько токенов, поэтому слишком большого ускорения достичь не удается - обычно в районе 1.5-2x.
При этом для получения правильного ответа совершенно необязательно, чтобы предсказания каждого токена у меньшей модели совпадали с большей. Она может сказать то же самое, но другими словами, используя синонимы, например.
Метод
Авторы замечают следующее:
🎯 Таргет-модель может за 2-3 токена отвергнуть корректное решение драфт модели.
🎯 Если в качестве драфта использовать даже более сильную модель, GPT-4o для Llama-3.1-405B, acceptance rate все еще не слишком высок.
🎯 Если драфт модель ошиблась, таргет-модель пытается корректировать ее. (The capital of France is Berlin... No just kidding. The capital of France is actually Paris.) 😄
Отсюда предлагается каким-то образом оценивать важность токенов на конечный ответ и принимать неважные токены, даже если их отвергла большая модель.
Датасет для обучения собирают следующим образом:
⚡️Отбирают примеры из Alpaca, ARC (только промпты)
⚡️Генерируют продолжения разными моделями - 🦙-ми, Мистралями
⚡️Отбирают вручную лучшие примеры
На выходе 500 примеров (вопрос, хороший ответ, плохой ответ). Все токены из правильного ответа и токены до места ошибки в неправильном ответе считаются как положительные примеры.
Полученный датасет несбалансирован, и потому в лоссе дается больший вес отрицательным примерам.
Классификатор - это просто линейная голова поверх признаков на выходе последнего слоя, которая учится за полтора часа.
Эксперименты
В качестве драфт-модели берут 🦙-3-8B, а таргет -🦙-70B, 80B. Качество замеряют на
Для оценки скорости рассматривают как неоптимальный инференс через трансформерс, так и куда более эффективный GPT-Fast.
В качестве бейзлайнов рассматривают драфт-модель и topk принятие (т.е принимаем токен, если в top с наибольшей вероятностью).
Предложенный метод почти идентичен по качеству прогону таргет модели, и заметно лучше лрафта и topk. При этом удается достичь ускорения в 3-4 раза с GPT-Fast (против ~2 у стандартного Speculative Decoding и EAGLE-2) и до 10 раз при HF инференсе.
В ablation пробуют применяться в OOD сетапе - валидировать метод на HumanEval без примеров на код в обучающей выборке. Работает хуже, но все еще лучше, чем TopK.
Вывод
Хорошая идея с очевидной практической пользой. Приятно, что обучение требует довольно небольшого компьюта (меньше чем у того же EAGLE). Интересно, как метод себя покажет на более сложных reasoning задачах.
Авторы замечают следующее:
🎯 Таргет-модель может за 2-3 токена отвергнуть корректное решение драфт модели.
🎯 Если в качестве драфта использовать даже более сильную модель, GPT-4o для Llama-3.1-405B, acceptance rate все еще не слишком высок.
🎯 Если драфт модель ошиблась, таргет-модель пытается корректировать ее. (The capital of France is Berlin... No just kidding. The capital of France is actually Paris.) 😄
Отсюда предлагается каким-то образом оценивать важность токенов на конечный ответ и принимать неважные токены, даже если их отвергла большая модель.
Датасет для обучения собирают следующим образом:
⚡️Отбирают примеры из Alpaca, ARC (только промпты)
⚡️Генерируют продолжения разными моделями - 🦙-ми, Мистралями
⚡️Отбирают вручную лучшие примеры
На выходе 500 примеров (вопрос, хороший ответ, плохой ответ). Все токены из правильного ответа и токены до места ошибки в неправильном ответе считаются как положительные примеры.
Полученный датасет несбалансирован, и потому в лоссе дается больший вес отрицательным примерам.
Классификатор - это просто линейная голова поверх признаков на выходе последнего слоя, которая учится за полтора часа.
Эксперименты
В качестве драфт-модели берут 🦙-3-8B, а таргет -🦙-70B, 80B. Качество замеряют на
GSM8k, HumanEval, ARC-Challenge
. Для оценки скорости рассматривают как неоптимальный инференс через трансформерс, так и куда более эффективный GPT-Fast.
В качестве бейзлайнов рассматривают драфт-модель и topk принятие (т.е принимаем токен, если в top с наибольшей вероятностью).
Предложенный метод почти идентичен по качеству прогону таргет модели, и заметно лучше лрафта и topk. При этом удается достичь ускорения в 3-4 раза с GPT-Fast (против ~2 у стандартного Speculative Decoding и EAGLE-2) и до 10 раз при HF инференсе.
В ablation пробуют применяться в OOD сетапе - валидировать метод на HumanEval без примеров на код в обучающей выборке. Работает хуже, но все еще лучше, чем TopK.
Вывод
Хорошая идея с очевидной практической пользой. Приятно, что обучение требует довольно небольшого компьюта (меньше чем у того же EAGLE). Интересно, как метод себя покажет на более сложных reasoning задачах.
Дорогой коллега и товарищ @snk4tr (по совместимости автор канала @c_research) выкатил на Хабр блогпост От каскадных моделей до картинок в 4к: как эволюционировали диффузионки.
Рекомендую всем желающим как-то осмыслить или переварить происходщее в мире диффузионных моделей, а также проследить за прогрессом и трендами в области.
Приятного чтения!
Рекомендую всем желающим как-то осмыслить или переварить происходщее в мире диффузионных моделей, а также проследить за прогрессом и трендами в области.
Приятного чтения!
Do Large Language Model
Benchmarks Test Reliability?
[Статья][Блогпост][Код]
Новые SOTA LLMки выходят нынче, как собаки нерезанные, и тем острее встает ребром вопрос о качестве их оценки.
Полностью исчерпывающего протокола замером, удовлетворяющего нуждам всех категорий пользователей нет, да и не факт, что он достижим, потому приходится, скрепя сердце, полагаться на те или иные бенчмарки, принятые в литературе или индустрии.
Группа исследователей из MIT решила взглянуть критически на популярные бенчмарки и качество ведущих моделей на них, и обнаружила следующее:
⚡Ни одна модель не является безупречной, и даже SOTA LLM допускают осечки в простых случаях
⚡Бенчи не без греха. В популярном GSM8k 5% условий и решений содержат проблемы.
⚡У разных моделей разные достоинства. o1-mini лучше всех из списка в плане общего решения математических задач, но Sonnet понимает текст (reading comprehension).
Далее в блоге авторы приводят примеры забагованных задач:
🎯 С неправильным ответом
🎯 С ошибками и неоднозначностью в условии
🎯 Где забыли условие задачи
Кроме того, на днях те же авторы опубликовали почищенный тест-сет GSM8k под названием GSM8K-Platinum, и показали,, что ведущие LLM допускают на нем гораздо меньше ошибок по сравнению с оригинальной версией от OpenAI.
Мораль проста - ежели у вас есть штангенциркуль, смотрите, чтобы у него не поехала шкала.
У проекта есть классный 🥰 дашборд с визуализациями ошибок моделей.
Benchmarks Test Reliability?
[Статья][Блогпост][Код]
Новые SOTA LLMки выходят нынче, как собаки нерезанные, и тем острее встает ребром вопрос о качестве их оценки.
Полностью исчерпывающего протокола замером, удовлетворяющего нуждам всех категорий пользователей нет, да и не факт, что он достижим, потому приходится, скрепя сердце, полагаться на те или иные бенчмарки, принятые в литературе или индустрии.
Группа исследователей из MIT решила взглянуть критически на популярные бенчмарки и качество ведущих моделей на них, и обнаружила следующее:
⚡Ни одна модель не является безупречной, и даже SOTA LLM допускают осечки в простых случаях
⚡Бенчи не без греха. В популярном GSM8k 5% условий и решений содержат проблемы.
⚡У разных моделей разные достоинства. o1-mini лучше всех из списка в плане общего решения математических задач, но Sonnet понимает текст (reading comprehension).
Далее в блоге авторы приводят примеры забагованных задач:
🎯 С неправильным ответом
🎯 С ошибками и неоднозначностью в условии
🎯 Где забыли условие задачи
Кроме того, на днях те же авторы опубликовали почищенный тест-сет GSM8k под названием GSM8K-Platinum, и показали,, что ведущие LLM допускают на нем гораздо меньше ошибок по сравнению с оригинальной версией от OpenAI.
Мораль проста - ежели у вас есть штангенциркуль, смотрите, чтобы у него не поехала шкала.
У проекта есть классный 🥰 дашборд с визуализациями ошибок моделей.
У LiveCodeBench есть очень занятный spaces 🪐, где можно посмотреть на:
🌟 Условия задач
🌟 Долю ошибок моделей из лидерборда на данной задаче
🌟 Решения задач, полученные разными моделями
Задачи делятся на легкие, средние и сложные.
Легкие ожидаемо решаются более-менее всеми, а вот те, что потяжелее только ризонерами и Claude 3.5 (3.7/o3-mini пока нет в лидерборде). Некоторые задачи (из раздела arc) не решаются пока ни одной моделью из представленных.
🌟 Условия задач
🌟 Долю ошибок моделей из лидерборда на данной задаче
🌟 Решения задач, полученные разными моделями
Задачи делятся на легкие, средние и сложные.
Легкие ожидаемо решаются более-менее всеми, а вот те, что потяжелее только ризонерами и Claude 3.5 (3.7/o3-mini пока нет в лидерборде). Некоторые задачи (из раздела arc) не решаются пока ни одной моделью из представленных.
Какой-то кореец (🇰🇷/🇰🇵?) бегает по репозиториям разных проектов про квантизацию LLMок с однотипными жалобами:
- no run (QuEST)
- how to run it (QTIP)
- not run (GreenBitAI)
Интересно, это реальный человек загорелся желанием все потыкать? Или LLMка, которая начала подозревать, что ее сжимают и ходит неприкаянная по гитхабу в поисках лечения.
- no run (QuEST)
- how to run it (QTIP)
- not run (GreenBitAI)
Интересно, это реальный человек загорелся желанием все потыкать? Или LLMка, которая начала подозревать, что ее сжимают и ходит неприкаянная по гитхабу в поисках лечения.
Развлечения ради квантанул свежевышедшую gemma-3-27b-it через GPTQ (генно-модицированной версией с парой примбамбасов).
Картиночную SigLIPовскую тушку не трогал, она все равно маленькая.
Евалы на бенчах надеюсь добавить позднее, но вроде отвечает связно на паре VLM примерчиков.
[Карточка модели на лицехватс]
UPD 20.03.25
Метрики на OpenLLM Leaderboard v1 добавил.
Картиночную SigLIPовскую тушку не трогал, она все равно маленькая.
Евалы на бенчах надеюсь добавить позднее, но вроде отвечает связно на паре VLM примерчиков.
[Карточка модели на лицехватс]
UPD 20.03.25
Метрики на OpenLLM Leaderboard v1 добавил.
Is Noise Conditioning Necessary for Denoising Generative Models?
[Статья][Нет Кода, но можно попросить Sonnet 3.7 написать]
Введение
В диффузионных моделях, как в классической DDPM постановке, так и популярном нынче Flow Matching, генерация осуществляется путем итеративного перевода некоторого случайного шума в сэмпл из распределения реальных данных.
Кроме самого зашумленного сэмпла на вход генеративной модели обычно подается скаляр - сила наложенного шума, который отображается в некоторый многомерный вектор, модулирующий тем или иным образом (обычно scale-shift) карты активации внутри.
Данное архитектурное решение как-то устаканилось, и народ как-то особо не задумывался о его необходимости. А авторы из MIT (среди которых автор Резнета 😱) сегодняшней статьи задумались и попробовали убрать обусловливание на шум.
[Статья][Нет Кода, но можно попросить Sonnet 3.7 написать]
Введение
В диффузионных моделях, как в классической DDPM постановке, так и популярном нынче Flow Matching, генерация осуществляется путем итеративного перевода некоторого случайного шума в сэмпл из распределения реальных данных.
Кроме самого зашумленного сэмпла на вход генеративной модели обычно подается скаляр - сила наложенного шума, который отображается в некоторый многомерный вектор, модулирующий тем или иным образом (обычно scale-shift) карты активации внутри.
Данное архитектурное решение как-то устаканилось, и народ как-то особо не задумывался о его необходимости. А авторы из MIT (среди которых автор Резнета 😱) сегодняшней статьи задумались и попробовали убрать обусловливание на шум.
Метод
Мотивация следующая - есть сети-денойзеры (в контексте Image Restoration), которые получают шум на инференсе различной, неизвестной заранее, силы, и вполне успешно работают. Следовательно. и в диффузионной постановке сеть потенциально должна уметь на основе самого шума оценивать его величину.
Далее показывают красивый график с распределением шага зашумления при условии зашумленной картинки, и оказывается, что оно в большинстве случаев довольно узкое, т.е по самой картинке довольно точно можно понять насколько сильно ее зашумили за исключением высоких степеней шума.
Ниже приводятся некоторые оценки на ошибку между солвером без и с обусловливанием, и типа расхождение не очень велико.
Эксперименты
Сравнивают диффузионки без и с обусловливанием на время в следующих постановках:
Диффузионный процесс:
💥 DDPM
💥 EDM
💥 Flow Matching
💥 uEDM (предложенная модификация EDM без обусловливания на время)
Датасеты:
🛩 CIFAR10
🧔 FFHQ
Качество оценивают по FID (FIDары ). Модели учат с одинаковым протоколом обучения для возможности честного сравнения.
В большинстве случаев просадка от исчезновения условия на время не очень велика (за исключением DDIM c детерминистическим сэмплером, где сильно ухудшился FID). Для Flow Matching даже наблюдается некоторое улучшение 🤔. Данное явление авторы объясняют. тем что с одной стороны сама процедура обучения немного другая - оценка flow field между распределениями, и таргет:
Кроме того, пробуют альтернативные варианты, например, учить сеть саму предсказывать уровень шума, но будто бы это ничего не дает.
Выводы
Если рассматривать работу диффузионной модели как multi task, где каждая задача - расшумление при заданном уровне шума, то при стандартном подходе, у нас есть некоторая общая база и небольшое число параметров, специфичных для данного шага. С одной стороны, можно увеличить специализацию как в eDiff и иметь отдельные сети на каждый отрезок. Здесь же, наоборот, по сути предлагают иметь полностью идентичную модель на все уровни шума. Практическая польза как будто может быть при flow-matching постановке, но непонятно, насколько выигрыш переносится на большой сетап.
Мотивация следующая - есть сети-денойзеры (в контексте Image Restoration), которые получают шум на инференсе различной, неизвестной заранее, силы, и вполне успешно работают. Следовательно. и в диффузионной постановке сеть потенциально должна уметь на основе самого шума оценивать его величину.
Далее показывают красивый график с распределением шага зашумления при условии зашумленной картинки, и оказывается, что оно в большинстве случаев довольно узкое, т.е по самой картинке довольно точно можно понять насколько сильно ее зашумили за исключением высоких степеней шума.
Ниже приводятся некоторые оценки на ошибку между солвером без и с обусловливанием, и типа расхождение не очень велико.
Эксперименты
Сравнивают диффузионки без и с обусловливанием на время в следующих постановках:
Диффузионный процесс:
💥 DDPM
💥 EDM
💥 Flow Matching
💥 uEDM (предложенная модификация EDM без обусловливания на время)
Датасеты:
🛩 CIFAR10
🧔 FFHQ
Качество оценивают по FID (
В большинстве случаев просадка от исчезновения условия на время не очень велика (за исключением DDIM c детерминистическим сэмплером, где сильно ухудшился FID). Для Flow Matching даже наблюдается некоторое улучшение 🤔. Данное явление авторы объясняют. тем что с одной стороны сама процедура обучения немного другая - оценка flow field между распределениями, и таргет:
x0 - шум
не содержит в себе времени.Кроме того, пробуют альтернативные варианты, например, учить сеть саму предсказывать уровень шума, но будто бы это ничего не дает.
Выводы
Если рассматривать работу диффузионной модели как multi task, где каждая задача - расшумление при заданном уровне шума, то при стандартном подходе, у нас есть некоторая общая база и небольшое число параметров, специфичных для данного шага. С одной стороны, можно увеличить специализацию как в eDiff и иметь отдельные сети на каждый отрезок. Здесь же, наоборот, по сути предлагают иметь полностью идентичную модель на все уровни шума. Практическая польза как будто может быть при flow-matching постановке, но непонятно, насколько выигрыш переносится на большой сетап.
Scale-wise Distillation of Diffusion Models
[Статья] [Демка] [Код soon]
Введение
Диффузионные модели на протяжении последних несколько лет удерживают пальму первенства среди семейств генеративных моделей во многих приложениях. Однако их фундаментальным ограничением является многошаговое сэмплирование, из-за чего генерация занимает много времени.
Научное сообщество предложило вагон и маленькую тележку различных процедур дистилляции многошаговых моделей в малошаговые. Но при приближении количества шагов к 1-му качество неизбежно просаживается даже для самых продвинутых подходов.
Отсюда мысль 🤔 - а что если ускорить генерацию за счет удешевления шагов сэмплирования?
Мы с коллегами из Yandex Research предложили метод дистилляции в несколько-шаговую генерацию, где разрешение изображения увеличивается постепенно, на каждом шаге генерации (SwD). За счет этого удается достичь более чем 2х кратного ускорения по сравнению с эквивалентной дистилляцией в фиксированном разрешении.
[Статья] [Демка] [Код soon]
Введение
Диффузионные модели на протяжении последних несколько лет удерживают пальму первенства среди семейств генеративных моделей во многих приложениях. Однако их фундаментальным ограничением является многошаговое сэмплирование, из-за чего генерация занимает много времени.
Научное сообщество предложило вагон и маленькую тележку различных процедур дистилляции многошаговых моделей в малошаговые. Но при приближении количества шагов к 1-му качество неизбежно просаживается даже для самых продвинутых подходов.
Отсюда мысль 🤔 - а что если ускорить генерацию за счет удешевления шагов сэмплирования?
Мы с коллегами из Yandex Research предложили метод дистилляции в несколько-шаговую генерацию, где разрешение изображения увеличивается постепенно, на каждом шаге генерации (SwD). За счет этого удается достичь более чем 2х кратного ускорения по сравнению с эквивалентной дистилляцией в фиксированном разрешении.
Метод
На первых шагах расшумления изображение представляет собой почти полный шум, где сложно что-либо различить, а не последних - почти сформированную картинку. Ранее была установлена связь между спектральной авторегрессией и процессом диффузии - первые шаги соответствуют низким частотам, а в самом конце формируются высокие частоты. То есть вначале мелкие и тонкие детали все равно неразличимы поверх шума.
Можно попробовать генерировать сначала в низком разрешении, а потом постепенно повышать интерполяцией. Но как 🤔?
Исходная модель может быть не адаптирована под малогашовую генерацию (SDXL в 256x256 выдает безумный поп-арт на любой запрос), да и процедура интерполяции зашумленного латента плохо определена. Наивный upsampling латентов приводит к сильные дефектам. Несколько лучше работает upsampling x0 оценки из предсказанного латента с последующим зашумлением назад, но все равно не здорово.
Потому дообучение неизбежно. При этом дистиллированные модели выполняют две роли одновременно - уменьшение количества шагов сэмплирования и super-resolution в латентном пространстве.
В качестве основы для процедуры дистилляции берется DMD2 как все еще state-of-the-art метод дистилляции. Дополнительно к нему навешивается предложенный Patch Distribution Matching (PDM) лосс, который стремится уравнять прогнанные через исходную диффузионную модель генерации модели-учителя и студента на уровне отдельных токенов.
Итоговый лосс содержит в себе:
🎯обратную KL-дивергенцию
🎯GAN лосс
🎯PDM лосс
В качестве данных для обучения используется синтетика, сгенерированная моделью-учителем (примерно 500к сэмплов).
На первых шагах расшумления изображение представляет собой почти полный шум, где сложно что-либо различить, а не последних - почти сформированную картинку. Ранее была установлена связь между спектральной авторегрессией и процессом диффузии - первые шаги соответствуют низким частотам, а в самом конце формируются высокие частоты. То есть вначале мелкие и тонкие детали все равно неразличимы поверх шума.
Можно попробовать генерировать сначала в низком разрешении, а потом постепенно повышать интерполяцией. Но как 🤔?
Исходная модель может быть не адаптирована под малогашовую генерацию (SDXL в 256x256 выдает безумный поп-арт на любой запрос), да и процедура интерполяции зашумленного латента плохо определена. Наивный upsampling латентов приводит к сильные дефектам. Несколько лучше работает upsampling x0 оценки из предсказанного латента с последующим зашумлением назад, но все равно не здорово.
Потому дообучение неизбежно. При этом дистиллированные модели выполняют две роли одновременно - уменьшение количества шагов сэмплирования и super-resolution в латентном пространстве.
В качестве основы для процедуры дистилляции берется DMD2 как все еще state-of-the-art метод дистилляции. Дополнительно к нему навешивается предложенный Patch Distribution Matching (PDM) лосс, который стремится уравнять прогнанные через исходную диффузионную модель генерации модели-учителя и студента на уровне отдельных токенов.
Итоговый лосс содержит в себе:
🎯обратную KL-дивергенцию
🎯GAN лосс
🎯PDM лосс
В качестве данных для обучения используется синтетика, сгенерированная моделью-учителем (примерно 500к сэмплов).
Эксперименты
Предложенный метод дистилляции валидируется на моделях семейства SD3.5 - Medium и Large. Для оценки качества смотрим как на классические метрики FID/CLIP/ImageReward/PickScore на COCO/MJHQ-30k, так и пользовательские предпочтения.
Процедура обучения длится примерно 5к итераций (все на одной A100 ноде). Для малошагового генератора и fake модели из DMD2 обучаем LoRA адаптеры (т.е PEFTа вполне достаточно).
Для 4-шагового сэмплирования используется следующая последовательность разрешений:
Для 6-шагового сэмплирования используется следующая последовательность разрешений:
Шаги сэмплирования в расписании подбираются специально так, чтобы соответствовать моменту возникновения заданных частот для данного разрешения.
Scale-wise диффузия практически не просаживается по качеству по сравнению с генерацией в фиксированном (конечном) разрешении. При этом при фиксированном бюджете генерации Scale-wise строго лучше (4-шаговая Scale-Wise против 2-шаговой Full-scale).
По большинству метрик SwD не проседает по сравнению с исходной моделью, за исключением FID (за счет потери разнообразия). По user-preference паритет по релевантности / дефектам, и некоторое даже улучшение по эстетике/комплексности. В том числе и бьем Switti (нашу прошлую работу про Scale-wise авторегрессию).
SwD позволяет выдавать почти 6 картинок в секунду для SD3.5-Medium и 2.5 для SD3.5-Large (при генерации с батчом 8).
В ablation показываем, что компоненты метода важны:
⚡️Обучение на синтетике
⚡️Правильно подобранное расписание шума
⚡️Адаптация модели под каждый скейл
⚡️PDM лосс очень важен
⚡️Замена L2 лосса на более сложный kernel (RBF) между признаками учителя и студента не дает улучшений.
Вывод
Scale-wise подход генерации изображений кажется эффективной и хорошо мотивированной идеей в генеративных задачах. От грубых простых деталей постепенно переходим к сложному. Ранее такая идея была воплощена в контексте Progressive GAN , VAR, каскадных диффузий. Латентную диффузию, как оказывается, можно достаточно быстро перевести в режим генерации от мала до велика. Альтернативный подход с использованием крупных патчей в DiT на первых шагах был предложен командой из Meta (с небезызвестным Артемом из эйай ньюз).
Предложенный метод дистилляции валидируется на моделях семейства SD3.5 - Medium и Large. Для оценки качества смотрим как на классические метрики FID/CLIP/ImageReward/PickScore на COCO/MJHQ-30k, так и пользовательские предпочтения.
Процедура обучения длится примерно 5к итераций (все на одной A100 ноде). Для малошагового генератора и fake модели из DMD2 обучаем LoRA адаптеры (т.е PEFTа вполне достаточно).
Для 4-шагового сэмплирования используется следующая последовательность разрешений:
[256, 384, 512, 640, 768, 1024]
Для 6-шагового сэмплирования используется следующая последовательность разрешений:
[256, 512, 768, 1024]
Шаги сэмплирования в расписании подбираются специально так, чтобы соответствовать моменту возникновения заданных частот для данного разрешения.
Scale-wise диффузия практически не просаживается по качеству по сравнению с генерацией в фиксированном (конечном) разрешении. При этом при фиксированном бюджете генерации Scale-wise строго лучше (4-шаговая Scale-Wise против 2-шаговой Full-scale).
По большинству метрик SwD не проседает по сравнению с исходной моделью, за исключением FID (за счет потери разнообразия). По user-preference паритет по релевантности / дефектам, и некоторое даже улучшение по эстетике/комплексности. В том числе и бьем Switti (нашу прошлую работу про Scale-wise авторегрессию).
SwD позволяет выдавать почти 6 картинок в секунду для SD3.5-Medium и 2.5 для SD3.5-Large (при генерации с батчом 8).
В ablation показываем, что компоненты метода важны:
⚡️Обучение на синтетике
⚡️Правильно подобранное расписание шума
⚡️Адаптация модели под каждый скейл
⚡️PDM лосс очень важен
⚡️Замена L2 лосса на более сложный kernel (RBF) между признаками учителя и студента не дает улучшений.
Вывод
Scale-wise подход генерации изображений кажется эффективной и хорошо мотивированной идеей в генеративных задачах. От грубых простых деталей постепенно переходим к сложному. Ранее такая идея была воплощена в контексте Progressive GAN , VAR, каскадных диффузий. Латентную диффузию, как оказывается, можно достаточно быстро перевести в режим генерации от мала до велика. Альтернативный подход с использованием крупных патчей в DiT на первых шагах был предложен командой из Meta (с небезызвестным Артемом из эйай ньюз).
Обновление DeepSeek-V3 вышло -
И это примерно пока все, что известно...
UPD. есть метрики. И прирост вполне существенный.
deepseek-ai/DeepSeek-V3-0324
И это примерно пока все, что известно...
UPD. есть метрики. И прирост вполне существенный.
huggingface.co
deepseek-ai/DeepSeek-V3-0324 · Hugging Face
We’re on a journey to advance and democratize artificial intelligence through open source and open science.