3.37K subscribers
253 photos
7 files
462 links
Квантование & Прунинг & Дистилляция

Блог про сжатие сетей и не только.
От древнейших времен по настоящее время.
Download Telegram
🔬 Метод

Кодирование двустадийное:
1️⃣ Сначала эмбеды прогоняют через замороженную GPT-2
2️⃣ Затем переводят в целевое латентное пространство через обучаемый энкодер (в котором приятнее диффундировать)

Декодирование тоже двустадийное:
1️⃣ Прогоняем через обучаемый латентный декодер
2️⃣ Выход декодера подаем уже в обучаемый токен декодер, чтобы получить токены

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

Диффузионная модель просто оптимизирует L2 лосс для x0 оценки. Она может обусловливаться на предыдущую оценку x0. Все учится end-to-end с диффузионным лоссом, лоссами реконструкции и кросс-энтропией на предсказание следующего токена (лосс влияет только на token decoder, после него stopgrad).

Для того чтобы все хорошо училось важно
🔥 Разогреть энкодер, сначала обучая его только на реконструкцию, а лишь затем включить диффузию.
🕔 Адаптивное расписание сэмплирования шагов времени. Оно подбирается так, чтобы в каждом бине был примерно одинаковый лосс в сумме.

❗️ Различие с ELF

ELF тоже оперирует в латентном пространстве, но фиксированном (Т5 эмбеды).

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

В качестве базового энкодера используется GPT-2 и DiT как диффузионная тушка. В ablation гоняют на отрезках из OpenWebText длиной 128 токенов.
Показывают, что все компоненты метода - разогрев энкодера, обучаемый энкодер поверх GPT-2, расписание шагов диффузии и правильная величина шума важны для качества.

В финальных экспериментах увеличивают длину контекста до 1024 и сравниваются с разными современными подходами по текстовой диффузии
👉 MDLM
👉 Duo
👉 CANDI
👉 FLM
И оказываются лучше по соотношению между перплексией и энтропией (разнообразием). Учится оно несколько дольше большинства бейзлайнов, но зато сэмплирует быстрее на инференсе (за счет того, что декодировать надо только в конце?).

💡 Выводы

Интересный результат. Но как всегда в этой отрасли, встает вопрос о масштабируемости на уровень более-менее SOTA моделек.
3
TileLang (DSL для написания кернелов, представленный на ICLR 2026), как мне кажется, один из самых перспективных языков для написания кернелов.

С одной стороны, дает гораздо больший контроль над результатом, так как пользователь может явно работать с разными видами памяти (регистры, shared memory / tensor memory), с разбиением задач на блоки и потоки, контролировать тип используемых gemm-ов, задавать синхронизации, барьеры, и многое другое. И в то же время он все еще значительно проще в освоении и в синтаксисе, чем CUDA + CUTLASS, CuTe DSL.

Из проектов и реализаций, использующих его стоит отметить:
TileKernels от DeepSeek
FlashQLA от Qwen3
tilelang-ascend (адаптация tilelang под хуавеевские асценды)

Из обучающих материалов могу порекомендовать:
tilelang-puzzles - набор задачек возрастающей сложности, чтобы пощупать язык
Примеры из оригинального репозитория
Туториал по написанию FlashAttention под AMDшные GPU

Мне он видится как довольно хороший баланс между эффективностью / гибкостью и сложностью в освоении.
🔥143
Неожиданный опенсорс от Ideogram - Ideogram-4.

Чекпоинты прилагаются в fp8 и nf4 форматах.

Утверждается, что оно state-of-the-art среди open-source моделей и не сильно уступает ведущим closed-source. При этом размер модели вообще не огромный - всего 9.3B параметров (то есть превосходит куда более увесистые модели типа Flux-2-dev, Hunyuan-Image-3 и Qwen-Image).

Архитектурно - single-stream DiT с Qwen-3-VL-Instruct энкодером.

Еще из примечательного - учатся и инферятся на структурированных JSON кэпшенах.

Лицензия, правда, некоммерческая.

[Блогпост]
11💩4
Квен на самом-деле произносится как Чивен.

Теперь живите с этим.

[Видео]
😁3053👍2🔥2🙏1💯1
FLARE: Diffusion for Hybrid Language Model
[Статья] [Код] coming soon (или не soon)

Диффузионные языковые модели продолжают активно развиваться, но пока заметно уступают современным авторегрессионным моделям в своей весовой категории. При этом многие инженерные наработки последних лет — например, линейное внимание и эффективные рекуррентные механизмы — практически не использовались в dLLM.

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

Именно такой рецепт предлагает команда Adobe. Авторы показывают, как конвертировать SOTA AR-модель в гибридную диффузионную архитектуру, сохранив большую часть качества исходной модели.
👍6
🔬 Метод

Ключевая идея — максимально сохранить знания базовой авторегрессионной модели, то есть её autoregressive prior.

Для этого входная последовательность дублируется в два потока:
1️⃣ Чистый поток — обычная авторегрессия.
2️⃣ Шумный поток — диффузионный. Он обусловливается на:

зашумленные токены внутри текущего блока;
чистые токены из предыдущих по времени блоков.

Лосс-функция одновременно оптимизирует:
• авторегрессионный лосс;
• диффузионный лосс размаскирования.

Для GDN рекуррентное состояние берётся из последнего чистого блока и дополняется вкладом зашумлённого блока.

Для генерации предлагаются два режима:

👉 Diffusion-Trust

По сути напоминает confidence-based unmasking: модель постепенно раскрывает наиболее уверенные токены.

👉 AR-Trust

Фактически вариант спекулятивного декодирования. Диффузионный поток предлагает токены, а авторегрессионный поток их проверяет.

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

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

Первичные эксперименты проводят на Qwen3-1.7B (чистый Transformer).

Отдельное внимание уделяется выбору данных для адаптации. Авторы рассматривают различные смеси:
• CoT;
• Math;
• Instruction Following.

Наблюдение довольно интересное: хорошая смесь данных не должна ухудшать качество базовой модели уже после AR-SFT.

В итоге оказывается полезно смешивать данные из разных доменов. Финальный датасет содержит около 10B токенов.

В ablation показывают, что критически важны:

сохранение авторегрессионного потока;
наличие авторегрессионного лосса;
сдвиг логитов на один токен в диффузионном потоке.

Далее авторы переходят к моделям семейства Qwen-3.5 (2B / 4B / 9B).

FLARE-9B в большинстве сценариев превосходит:
• LLaDA-2.0;
• LLaDA-2.1;
• SDAR.

Однако отставание от базовой Qwen-3.5-9B всё ещё остаётся довольно заметным.

Как и ожидалось, AR-Trust показывает лучшее качество, чем более параллельный Diffusion-Trust.

Отдельно авторы оптимизируют инфраструктурную часть:
• сравнивают Gated Delta Rule и ShortConv;
• подбирают размеры блоков;
• исследуют различные схемы чанкирования.

В результате MFU удаётся почти удвоить относительно бейзлайна.

По throughput результаты тоже выглядят достойно:

заметно быстрее SDAR-1.7B;
младшие модели существенно опережают LLaDA;
версия 9B также сохраняет преимущество по токенам/сек.

💡 Выводы

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

Главная проблема пока остаётся прежней: нет открытых моделей и кода. Если бы авторы выложили оба артефакта, ценность работы была бы значительно выше.

Также остаются открытые вопросы:
Как выглядит end-to-end latency относительно AR-бейзлайнов?
Насколько хорошо подход масштабируется на современные крупные MoE-модели вроде DeepSeek-V4, Minimax M3 или Qwen-3.5-397B?

Будет интересно посмотреть на продолжение этой линии работ.
Alphaxiv поверх Gemini 3 Flash ни с того ни с сего переходит на китайский.

Напрашивается следующее подозрение - либо под капотом запихнули (квен чивен), либо гугол дистиллит на трейсах китайцев 🤪. А то и учит с инициализации.
😁16🤔6
DFlare: Scaling Up Draft Capacity for Block Diffusion Speculative Decoding
[Статья]

По существу работа предлагает инкрементальные улучшения поверх DFlash (наткнулся, когда искал код FLARE), поэтому кратко:
👉 Вместо того, чтобы брать равномерно признаки с какого-то по какой-то слой, делают взвешенное смешивание с обучаемой матрицей.
👉 Разделяют KV проекции для target контекста и драфтовых токенов.
👉 В экспоненциальном затухании весов токенов при удалении вглубь драфта постепенно повышают знаменатель (снижают скорость затухания).
👉 Stack more layers and train on more (3x) data 😝.

В итоге оно дает 5-10% ускорения против DFlash.
👍9🤔3
И премию за самые информативные названия коммитов получает...

[Ссылка]
😁12
Alignment Collapse Under KV Cache Quantization: Diagnosis and Mitigation
[Статья][Код]

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

Однако на практике есть еще один важный аспект — безопасность.

Авторы показывают, что модель может практически не потерять качество по стандартным метрикам, но при этом заметно хуже соблюдать alignment и гораздо охотнее отвечать на опасные запросы.
🔥104
🔬 Метод

Ключевое наблюдение статьи в следующем - признаки, отвечающие за способность модели отказывать в ответе, лежат в низкоразмерном подпространстве. Перплексия / стандартные бенчи оценивают возмущение в более высокоразмерном пространстве. Можно в среднем не сильно исказить общие признаки, но существенно задеть safety.

Далее авторы исследуют природу safety признаков.

Если safety каналы соотвествуют выбросам (каналам с большой нормой), то большой разницы между per-tensor квантизацией и per-channel (per-group) не будет. Если же они лежат в каналах с небольшой нормой, то они более чувствительны к выбору гранулярности.

Вводится PCR Score (FlipRate - доля ответов, где модель со сжатым кэшом согласилась на harmful запрос, а с несжатым отказалась)

PCR=1 − FlipRate_{per-tensor}​ / FlipRate_{per-channel​​}

Кроме того safety может быть распределена между несколькими подряд идущими слоями (spread). Их тогда следует обрабатывать аккуратнее.

Общая процедура safety-aware квантизации следующая:
• Квантизуем кэш каждого слоя по отдельности. Находим те, где большой процент флипов.
• Находим слои, где FlipRate превышает 10-20%.
• Считаем PCR

Для чувствительных слоев:
• Если PCR < 30% держим в FP16
• PCR 30-70% - в FP16 первый слой из группы подряд идущих критических слоев, остальные квантизуем с размером группы 64.
• PCR > 70% (low spread) - просто квантизуем с размером группы 64
• PCR > 70% (high spread) - FP16 для первых 3-4 слоев, а далее все с размером группы 64

Для такой калибровки достаточно ~20 промптов, и оно неплохо, как утверждается, обобщается.

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

Исследования проводят на разных моделях (Qwen-2.5, Mistral, Mixtral, Gemma-2, Yi) и для разных техника сжатия (наивное сжатие / KIVI). Замеряют на совокупности из 5 safety бенчей - AdvBench, HarmBench, XSTest, IFEval, и каком-то своем датасете.

У разных моделей разные паттерны Safefy
• У Квена Safety сконцентирована в 0 слое
• Gemma-2 больше всего в первом слое, но еще и на нескольких соседних
• Mistral / Yi - Safety распределена широко по всей модели

Safety ломается на разных битностях (при per-tensor квантизации). У квена уже при 6-битной квантизации refusal ломается, у Mistral на 4-х битах, Gemma-2 / Mixtral только при 2-битной, когда уже сама по себе модель перестает выдавать что-то внятное.

Далее авторы валидируют свой подход по safety-aware квантизации. Защищая конкретные слои удается для некоторых моделей (для Qwen-2.5-7B) прямо хорошо сохранить safety (в 1.9% модель согласилась выполнить harmful запрос против 90.3% без защиты). Но всегда оно так хорошо работает.

Еще утверждается, что подход обобщается на разные модели (Olmo / KIVI квантизатор). FP8 квантизация KV-кэша для Квена тоже существенно сказывается на safety, а вот если квантовать в INT - то почти без разницы с FP16.

💡 Выводы

Довольно важное наблюдение для развертывания моделей на практике. Провайдерам и владельцам разных сервисов стоит быть начеку, ибо экономия памяти без видимой просадки качества может привести к репутационным рискам и потерям. Интересно, если заквантовать кэш Фаблы 5-ой будет ли справедливо то же самое? Немного удивляет выбор моделей для статьи вышедшей в июне 2026 года - модели в основном довольно старые, никаких тебе последних квенов и гемм.
👍2
Когда пытаешься воспользоваться Фаблой
😁324
КПД
И премию за самые информативные названия коммитов получает... [Ссылка]
В телеге, впрочем, тоже не шибко парятся за информативный changelog)
11😁6
Симпатичный и содержательный блогпост про Flow-Based генерацию языка.

Содержание блога следующее:
1️⃣ Стандарные вводные про авторегрессию vs диффузию
2️⃣ Специфика текстовый диффузии
3️⃣ Наблюдение про то, что минимизация L2 для x0-предсказания суть MLE для гауссовой модели с фиксированной дисперсией
4️⃣ Затем вводится понятие FlowMap - отображения из любой точки s на траектории в любую другую t (иначе говоря, выход интегрирования по мгновенной скорости)
5️⃣ Обучать FlowMap можно через Lagrangian self-distillation (тождество, которому обязан удовлетворять FlowMap)
6️⃣ Далее приводится специальная форма FlowMap для категориального распределения, когда распределение живет на вероятностном симплексе
8👍2🔥1
MiniMax Sparse Attention
[Статья] [Код]

Работа с длинным контекстом становится все более востребованной, но стандартный full attention вычислительно дорогой, поэтому за последние годы появилась целая плеяда работ, предлагающих разные вариации Sparse Attention.

И в данной работе предложили Yet Another Sparse Attention, который даже масштабируется на крупные и практически интересные модели — свежевышедший Minimax M3.
🔬 Метод

Концептуально метод довольно несложный. Возникают две ветки вычислений:

🤙 Легковесная индексирующая ветка. В ней на каждую query-группу в исходном внимании приходится одна query-голова и одна единственная key-голова на весь слой. Сначала считается pre-softmax скор, а затем отбирается максимальное значение в рамках некоего разбиения на блоки. Затем берутся topK блоков с наибольшим найденным значением максимума.
🤙 Главная ветка. Обычное блочно-разреженное внимание на блоках, которые вернула индексирующая ветка.

Процедура обучения устроена следующим образом:

👉Функция потерь — KL-дивергенция между выходами индексной ветки и усредненными выходами основной ветки. Хотим, чтобы выбранная sparsity в индексной ветке совпадала с главной. Через вероятности в главной ветке делается stopgrad, чтобы не коллапсировало.
👉 На входы индексной ветки тоже накладывается stopgrad, чтобы оптимизировались только проекции индексной ветки и градиент не тек ниже по модели.
👉 Разогрев индексной ветки. Сначала некоторое время гоняют полный attention в обеих ветках, а затем включают topK в индексной ветке.
👉 Последний блок (скользящее окно токенов) добавляют всегда.

С Minimax Sparse Attention (MSA) можно обучать как с самого начала, так и пострейнить.

Еще они наворотили topK-кернел, который быстрее торчового и быстрее TileLang-референса. И еще там персистентная сетка, учитывающая неоднородную и динамическую загрузку в процессе вычислений.

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

Эксперименты проводят на 109B MoE с 6B активными параметрами (учат на 3T токенов суммарно). Есть три постановки:
🔅 Full Attention бейзлайн
🔅 MSA-PT (учат MSA с нуля)
🔅 MSA-CPT (2.6T токенов с Full Attention / 400B с MSA)

MSA учится довольно стабильно, лосс почти не отходит от Full Attention, без спайков и скачков.

По метрикам все 3 варианта довольно близки, без явного победителя, при этом в MSA внимание проводится всего на 2048 токенов (16 блоков по 128 токенов). Для работы на длинном контексте дополнительно дообучают модель, и там она на Helmet/RULER примерно на уровне MSA.

На контексте в 1М токенов предложенный подход дает 28х теоретического ускорения против полного внимания, но на практике выходит 14х на префилле и 7х на декоде из-за дополнительных оверхедов с запуском второй ветки вычислений, topK, индексаций.

💡 Выводы

Подход, безусловно, интересный, но не хватает сравнения с линейными вниманиями (в идеале гибридами полного и линейного внимания), а также другими бейзлайнами по Sparse Attention (с тем же Big Bird, DeepSpeed Sparse Attention, XAttention, DeepSeek-V4 разреженными вниманиями и многими другими). Также непонятно, как оно себя ведет на context-intensive задачах. А еще ускорения почему-то репортятся на H800, а кернелы выложены только под Blackwell.
7
Alex Smola (известный как пионер large-scale деплоя моделей и CEO Boson AI) выложил очень содержательную презентацию по Efficiency in LLMs, которую он расскажет Machine Learning Summer School (записи вроде не будет 😰).

В ней он рассказывает про:
• Современное железо и как оно влияет на инференс/обучение LLM
• Serving моделей
• Сжатие весов и KV-кэшей (затрагивая довольно свежие работты в том числе)

Рекомендую всем, желающим погрузиться в область или освежить знания.
🔥23
Как мне кажется, есть некоторая несправедливость в том, что на разные инкрементальные улучшения авторегрессии (yet another sparse attention, новые residual connections, gating в аттеншене) и их ablation находится ресурс на обучение в более-менее практически релевантной постановке (модели размером 10B-100B параметров на бюджетах порядка триллиона токенов), а куда концептуально более интересные работы по текстовой диффузии в основном обучаются в игрушечных сетапах а-ля ~100M модель на нескольких миллиардах токенов.

Впрочем, возможно, лучше синица в руке, чем журавль в небе...
15👏2
Flow Map Language Models: One-step Language Modeling via Continuous Denoising
📄 [Статья]
💻 [Код]

Статья старше ELF и LDLM, тем не менее интересна с точки зрения самого подхода и теоретических результатов.

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

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

За основу берётся фреймворк flow matching со стохастическим интерполянтом на непрерывных данных.

Однако вместо стандартного v-prediction предлагают перейти к x-prediction, мотивируя это аналогично работе JiT из картиночного мира: мол, оно лежит на многообразии, а скорость — нет.

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

Далее в статье вводят формулировку Flow Map — отображения, которое переводит из заданной точки в любую другую. Целевое отображение параметризуют в виде two-time денойзера, обладающего следующими свойствами:

🔹 Выход денойзера лежит на вероятностном симплексе.
🔹 Если оба времени совпадают, получаем обычный денойзер для x0-prediction.
🔹 Полугрупповое свойство: попасть в точку t из s — то же самое, что из s в u посередине, а затем из u в t.

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

⚠️ Ещё из важных аспектов следует отметить следующее

🔸 Равномерные шаги сэмплирования работают плохо. Авторы замеряют decoding error rate (долю неправильно предсказанных токенов) в зависимости от времени и замечают, что она держится в районе 1 (всегда ошибаемся) большую часть траектории, а в конце резко падает в 0. Поэтому шаги подбираются так, чтобы равномерно улучшать данную метрику. То есть шаги сконцентрированы в районе переходной зоны.

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

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

Обучают модель на 179M параметров на LM1B и OpenWebText. Сравнивают с RDLM, CANDI, MDLM, Duo.

На большом числе шагов сэмплирования FLM (без дистилляции) достигает более низкой перплексии, чем конкурентные подходы. Но при малом числе шагов уступает Duo. Энтропия примерно у всех подходов на одном уровне.

А если сравнивать дистиллированную версию FMLM, то на малом числе шагов (1–8) она оказывается заметно лучше конкурентов.

Затем сравнивают guidance. MDLM и Duo, начиная с какого-то момента (силы guidance), разваливаются, и перплексия уходит в стратосферу. У FLM перплексия только убывает с ростом гайденса, но энтропия тоже убывает.

🎯 Гайденс на реворд улучшает целевую метрику.

Затем проводят ablation метода:

🔹 x0-prediction гораздо лучше, чем v-prediction.
🔹 CE loss с softmax на логитах даёт лучший результат.
🔹 Диффузия в евклидовом пространстве лучше различных римановых и симплексных вариантов.

Для FMLM:

🔹 two-time параметризация оптимальна.
🔹 Лучше стартовать с предобученной диффузии, а не с нуля.
🔹 Полугрупповой дистилляционный objective лучше, чем эйлеров или лагранжев (что есть что прекрасно разобрано у Sander Dieleman).

📝 Выводы

Небезынтересный подход с неплохой теоретической подоплёкой. Но, как и везде, встаёт вопрос масштабирования и обобщаемости.
👍6🔥3