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

Блог про сжатие сетей и не только.
От древнейших времен по настоящее время.
Download Telegram
Оооо дооодоо ДипСик выпустил новую крутую модель дооодоо, короче все уже написали про DSpark в том числе канал «Islam Insights» и «AI Beauty» ну куда мне с такими игроками тягаться, ладно и я напишу, потому что как минимум пишу его реализацию в vllm
Архитектура - спиздили, взяли бекбон Dflash добавили калибровку логитов сверху Марков 🎩(FlexDraft, Domino) и ещё реализовали Конфиденс 🎩 (SpecDec+), чтобы ну давать некую уверенность в токене. Зачем это нужно? Важно? ну вот зачем? Чтобы потом было удобно делать динамический драфт о чем писал выше

Бля просто обидно за дифлеш пиздец про него писали буквально я и боты в тг, ну и вот он только только начал быть виральным (я к нему даже мультимодалку прикрутил) и Опа Дспарк дооо доо, вот реально обидно как за братишку с вуза которого на работу не берут, а потом чел с 0 опыта идёт тимлидить написание промптов в сбере, выступает на датафесте и лутает 1к в тгк, бля вот хотите быть реально нишевыми юзайте дфлэш либо лукахед, а вот это вот хуйня для зумеров сидеть у помойки есть оверхайп бейглы

Вот вам инсайт на подумать: оригинальный дфлеш жмёт 5/7 токенов, дспарк 6/7, но если убрать рекурсию сверху то 1.5/7, и этого мы добивались? Бек ту зе рутс? А может Редрафтер от эппла? Игл? Типа сверху неиронично цикл лупанули и сидят довольные, а может цикл в цикле? Вы собесы Яндекса вообще проходили?
Нет бы реализовать динамический драфтинг нормально в граф моде сидят хуйней страдают - немощь блин
31😁18👎2🤡1
On Efficient Scaling of GNNs via IO-Aware Layers Implementations

📄 Статья
💻 Код

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

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

Однако их оптимизации уделялось сравнительно мало внимания по сравнению с LLM, потому существующие реализации в популярных фреймворках (DGL, PyG) далеки от оптимального потребления памяти и вычислительных ресурсов.

Существенной сложностью при работе с графами являются нерегулярная/разреженная структура данных и нерегулярные паттерны доступа. И в работе наших соотечественников (Spotlight на ICML, между прочим) сделали куда более эффективную реализацию стандартных графовых операций.
5❤‍🔥1
🛠 Метод

Работа фокусируется на ускорении трех ключевых типов операций в GNN:

- 🔹 Разреженные свертки.
- 🔹 Редукции на графах (min/max).
- 🔹 Внимание на графах.

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

Для легких вершин используют параллелизм по признакам (один threadblock на вершину). Тяжелые вершины еще разбиваются на чанки по ребрам с промежуточной агрегацией по чанкам.

Объем подгружаемых данных не меняется, но ускорение достигается за счет того, что один блок обрабатывает несколько узлов, тем самым повышая memory-level параллелизм.

Для слоев внимания реализуют кастомный вариант FlashAttention для CSR-матриц. В наивной реализации материализовали матрицы внимания, а тут оно и не нужно.

CSR-кернелы для произвольной sparsity уже неплохи, но не используют ценный ресурс современных GPU — тензорные ядра. Если запаковать окрестности вершин в тайлы 16×16, то можно воспользоваться ими и, даже выполняя некоторые лишние вычисления, выжать ускорение.

Кроме того, существующие либы почему-то не используют cuSPARSE — рабочий и мощный инструмент. Одно его накатывание + кастомные адаптации уже дает заметный профит.

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

Эффективность реализации проверяют на бенчмарке GraphLand — наборе задач с большим разнообразием структур и свойств графов.

Удается выжать медианное ускорение порядка (вплоть до 8.5×) против DGL на GATv2, медианное ускорение 2.6× (вплоть до 10×) на операциях редукции. Операции разреженных сверток на cuSPARSE дают вплоть до 8× ускорения. Кроме того, пиковое потребление памяти оказывается обычно в разы меньше (а то и в десятки раз) по сравнению с DGL. PyG тоже в среднем ест меньше GPU VRAM, но при этом он куда медленнее.

В ablation показывают, что выигрыш от graph reordering и векторизованных загрузок зависит от графа. Для плотных графов с высокой степенью выигрыш значителен, для разреженных и малостепенных — мал.

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

💡 Выводы

Классная и полезная работа, дающая существенный толчок всей области GraphML. Хоть она и довольно нишевая и на любителя, тем не менее импакт более чем серьезный. Интересно, где еще есть низковисящие фрукты для оптимизации?
👍8🔥85
7x size reduction for Gemma4 Edge models

📝 Блогпост

Команда из thestage.ai выпустила занятный блогпост про сжатие Gemma-4 в 6,4 раза с умеренной просадкой качества.

Работа примечательна тем, что комбинирует многие классические и свежие практики, чтобы выдать наилучший trade-off между размером модели и качеством.
🔥14👍1
🛠 Метод

🎯 Авторы ставят своей целью эффективный инференс на edge-девайсах вроде мобилок. iOS накладывает жёсткие ограничения на размер памяти, используемой приложением, — ~3 гига, поэтому чекпоинт 4B-модели туда никак не влезет без оффлоадинга.

🏗 Архитектура модели включает в себя трансформерные блоки, PLE-эмбеддинги и объединённую LM-голову / эмбеддинги. Каждая из компонент требует своего рецепта.

⚙️ Для сжатия слоёв в трансформерных блоках используют GPTQ. Но не просто GPTQ, а усиленный Quantization Error Propagation (QEP) и тюнинг скейлов, минимизирующий квадратичную ошибку на выходе. Для калибровки подбирают датасет с примерами из разных областей — самокалибровочные генерации (генерации исходной модели по каким-то промптам), многошаговые диалоги, ризонинг / safety-данные.

📊 В ablation показывают, что QEP существенно снижает KL-дивергенцию между квантизованной и исходной моделью.

🗜 PLE — самая тяжеловесная часть модели, потому требует экстремального сжатия. Скалярные квантизаторы не жмут ниже одного бита, да и сильно сажают качество. Потому используют модифицированный вариант AQLM с 8-мерными группами и кодовой книгой размера 128 (7/8 бит на параметр?). Вместо X^T X используется регуляризованная матрица Фишера. В итоге удаётся добиться сильного сжатия с умеренным отклонением от исходной модели.

🧩 Эмбеддинг, он же голова, квантизуется через RTN с тюнингом скейлов.

🔧 Равномерное сжатие не учитывает разную важность и чувствительность слоёв, потому авторы используют RCO из недавней работы , который подбирает оптимальную битность под каждый слой из некоего набора пресетов через Риманову оптимизацию. Причём сначала подбирают оптимальные битности, а затем переквантовывают модель снова (чтобы калибровка учитывала степень сжатия прошлых слоёв). Оптимизированная конфигурация также выдаёт гораздо более близкие выходы к исходной модели.

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

📉 По соотношению KL-дивергенция / размер выпущенные чекпоинты заметно лучше по Парето-фронту, чем публичные GGUF-ы.

📋 Далее качество замеряют на MMLU Pro, IFEval, tau2 bench.

🏆 L- и M-чекпоинты со степенью сжатия в 6–7 раз по качеству даже лучше GGUF-ов с 4x-сжатием.

🚀 По скорости оно даёт увеличение TPS в 2–2,5 раза против bf16-чекпоинта и снижает потребление памяти в 5–6 раз. 4-битная скалярная квантизация при этом даёт ускорение примерно в 1,5 раза (маловато чёт).

💡 Выводы

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

Следующим шагом было бы отскейлить сие на здоровые MoE-шки, чтобы запускать условный GLM-5.2 хотя бы на паре H100 или одной H200.

📦 Чекпоинты моделей выложены на лицехватс, и их можно запускать на яблочных чипах при помощи либы.
🔥15😱2
Годный блогпостик про использование FP4 квантизации в проде от провайдера Spheron.

В частности, оценивается стоимость инференса при аренде конкретной GPU с учетом максимально достижимого throughput при использовании данного типа данных, а также вопросы качества и доступности в инференсных фреймворках.
🔥7
Quantized Reasoning Models Think They Need to Think Longer, but They Do Not

📄 Статья
📝 Блогпост

Известно, что квантизованные модели просаживаются в качестве несколько сильнее, чем модели на остальных классах задач.

Но из-за чего именно это происходит?

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

Авторы исследуют данное явление и предлагают простую стратегию, позволяющую одновременно укоротить ответы и улучшить качество.
1🔥1
🧪 Метод и эксперименты

Авторы рассматривают следующие варианты квантизации:

* 🔹 weight-only AWQ в 3 и 4 бита;
* 🔹 weight-only GPTQ в 3 и 4 бита;
* 🔹 weight + activation + KV-cache-квантизация в 4 и 8 бит при помощи FlatQuant.

Качество оценивают на задачах по математике, общим научным вопросам (GPQA-Diamond) и кодингу (LiveCodeBench). В качестве моделей рассматривают дистиллы дипсика и QwQ (почему не Квен / Квен-3.5?).

Менее агрессивные квантизации не так сильно меняют выход, но 3-битная квантизация весов и 4-битная квантизация весов + активаций заметно просаживают качество и одновременно увеличивают длину ризонинга. Причём длина ризонинга и качество имеют негативную корреляцию: чем длиннее ризонинг, тем хуже качество.

Анализируя ответы, авторы замечают, что сильно повышается доля токенов — overthinking markers — вида “Wait”, “But”, “Alternatively” и т. п. Кроме того, они обычно соответствуют позициям, где KL-дивергенция между выходами исходной и квантизованной моделей велика.

Для того чтобы побороть явление overthinking, предлагают занижать логиты, отвечающие за 50 вручную отобранных overthinking-токенов. В качестве бейзлайнов рассматривают случайные токены и токены с низкой / высокой KL-дивергенцией между сжатой и несжатой моделями.

📈 Занижение логитов отобранных токенов консистентно улучшает качество на 5–15%, при этом длина ризонинга сокращается на 10–20%.

В основном прирост качества достигается как раз за счёт решения проблемы overthinking — доля таких ошибок снижается в два и более раза.

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

💡 Гипотеза авторов о природе явления состоит в том, что токены с высокой энтропией имеют сильно размазанное распределение вероятностей, поэтому даже малый шум может привести к выбору другого токена — чаще всего как раз одного из overthinking-токенов.

📝 Выводы

Интересное наблюдение и простое решение для повышения качества работы, которое легко внедряется.

Было бы хорошо проверить справедливость полученных в работе выводов на квантизации больших и не очень МоЕшек в агентских задачах.
8😁7🔥1
Extreme Low-Bit Inference in Reasoning Models: Failure Modes and Targeted Recovery

📄 Статья
💻 Код

Вдогонку про влияние квантизации на ризонинг.

Ребята из Brain Lab выпустили интересное исследование, показывающее, как ломается ризонинг у квантизованных моделей, а также пару стратегий, помогающих предотвратить зацикливание генерации.
14
🧪 Метод и эксперименты

В данной работе фокусируются на 2-битном weight-only-сжатии ризонящих моделей. В аппендиксе есть эксперименты с FP4, со сжатием активаций и KV-кэшей. Квантизуют модели Qwen3-8B / Qwen3-32B через GPTQ.

Оказывается, что квантизация сильно меняет поведение трейсов ризонинга:

🔄 Число циклов резко возрастает, особенно для меньшей модели.
📏 Многие трейсы не вписываются в заданный лимит токенов.
⚠️ Блок <think> часто оказывается незакрытым.
💡 При этом сам ответ появляется в среднем чуть ли не раньше в трейсе, но модель его не выводит.
📈 Длина ризонинга сильно увеличивается.

Из этого следует, что, кроме просадки качества, мы ещё теряем в эффективности из-за того, что генерируем больше токенов.

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

При этом результат сильно зависит от выбора задачи: на ризонинг-бенчмарках типа AIME / GPQA-Diamond эффект сильно заметен. На простых задачах — ARC-C, ARC-E, PIQA, WinoGrande — просадка и в 2 битах очень умеренная. Вообще, я думал, что эти бенчмарки likelihood-based и гоняются с выключенным <think>.

Вводят четыре режима деградации качества:

🟢 Стабильный. Без заметной просадки.
🟡 Заметная, но умеренная просадка. Трейсы ещё не ломаются, но есть нарушения в плане фактологии и commonsense.
🟠 Значительная деградация. Генерация часто не завершается.
🔴 Полный коллапс.

В первую категорию попадает Qwen3-32B на простых задачах. По мере усложнения задач и уменьшения размера модели растёт степень деградации.

Дабы как-то подлечить просадку, предлагают два решения:

📝 (+P) FP16-модель пишет план, а квантизованная исполняет. Это заметно поднимает качество и правит многие ошибки ризонинга, но точность всё ещё ощутимо ниже базовой модели.

🔁 (+L) Loop Rescue. Если модель зацикливается, но выдаёт ответ, выписываем промежуточный ответ. Если ответа нет, просим FP16-модель сгенерировать его с нуля.

Стратегии комплиментарны и могут дополнять друг друга.

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

На простых задачах end-to-end speedup с учётом длины генерации находится в районе 2×, а на сложных — несколько процентов с просадкой порядка 20% в среднем.

📌 Выводы

Занятная и интересная стратегия по выправлению ризонинга. Для production-grade-системы, понятное дело, просадки качества слишком велики, но и 2-битная квантизация без свистоплясок — это действительно тяжёлый случай.

Интересно было бы дообучить квантизованную модель через какой-нибудь RL с penalty на циклы.
7
Интересная по описанию либа Humming от InclusionAI.

Позиционируется как легковесный, высокопроизводительный фреймворк с JIT-компилированными GEMM-операциями (под NVIDIA GPU).

⚙️ Он предлагает широкий ассортимент кернелов под разные конфигурации квантованных весов и активаций:

🧮 Веса можно квантовать почти в любую целочисленную битность от 1 до 8, а также в разные варианты FP.
Активации можно квантовать в FP16/BF16/FP8/FP4/INT8/INT4. FP8 поддерживается только начиная с Hopper, а FP4 — с Blackwell.

🧩 Ещё он работает с MoE и позволяет прикручивать адамаровы повороты в квантизацию.

🤷‍♂️ Утверждается, что он выдаёт SOTA-скорость и эффективность, но никаких чисел в README, да и вообще нигде, не приводится.

📊 Квантованных чекпоинтов с замерами качества и скорости тоже нигде нет.

🤔 Выглядит потенциально интересно для ресерча, но как будто не хватает нормальной доки и полноценного описания бенефитов. Могли бы Claude Code постараться напрячь, раз он у них и так многое делает.
10
Бывает и такое, что Reviewer #2 ставит тебе Accept.

Но ревью настолько короткое и несодержательное, что Area Chair не примет во внимание...
😁14💯5
Серёжа сьел токены сына
Зачем? Не объяснив причину
Серёжа запускает клод, рой агентов
И сьедает квоту его

Зачем так ждать чего-то?
Так сильно хотеть чего-то?
Так сильно обливать сердце кровью?
И в снег, и в метель, и в грозы
Писать Деду Морозу
Чтоб выслал новые токены
А не какой-нибудь сраный пенал…
😭16👏3👎1🥴1
step: 11 loss: 9.8672 grad_norm: 2.8441 tps: 5,471 time/step: 2.99s tflops: 198,319.19 mfu: 63563.84% memory: 243.85GiB


MFU > 60000%

Такое даже Уроборосу не снилось)
😁17🤣7🔥5
🚀 Лаба Song Han (одного из апостолов EfficientDL) из MIT выпустила репозиторий со скиллом для агентов, предназначенным для оптимизации кернелов под Hopper и Blackwell.

📚 Репозиторий содержит набор скриптов, которые позволяют агенту обращаться к различным базам знаний, блогам, PR'ам и другим артефактам, посвященным тензорным ядрам и архитектурным особенностям Hopper и Blackwell.

🛠️ В частности, в него заложены знания по:

* CUDA
* CuTe DSL
* PTX
* Triton
* TileLang
* cuTile

⚠️ При этом авторы сразу оговаривают в дисклеймере, что скилл не предназначен для задач, связанных с распределенным обучением и мультихостовым параллелизмом.
🔥82👍2