2.98K subscribers
201 photos
6 files
400 links
Квантование & Прунинг & Дистилляция

Блог про сжатие сетей и не только.
От древнейших времен по настоящее время.
Download Telegram
[Отчет] [Документация] [Код]

Ребята из одной китайской компании с почти нецензурным в переводе на русский язык названием выкатили технический отчет про фреймворк оптимизации инференса БЯМов через квантизацию, спекулятивный декодинг, прунинг токенов и дистилляцию.
👍5
🔬🧪 Метод и эксперименты

Рассказ начинается с рецепта успешной квантизации в 2 бита модельки HY-1.8B-Instruct. Первым делом они меняют сетку квантизации с (-2, -1, 0, 1) на симметричную (-1.5, -0.5, 0.5, 1.5). Затем все это дело они тюнят примерно на 10% бюджета BitNet, предварительно настраивая параметры на меньшей подвыборке данных. Кроме того, отмечают важность отбора хороших данных. В итоге удается добиться довольно умеренной просадки по сравнению с базовой моделью и качества на уровне 4-битной PTQ. Полученная крохотулька выдает до 800 токенов в секунду на М4 и до 300 на Mediateковском проце.

Затем идет описание тернарной квантизации через Tequilla/Sherry.

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

В Sherry предлается 3:4 (3 ненулевых веса из 4) разреженный паттерн для хранения весов, и 4 подряд идущих веса пакуются в 5 бит, давая 1.25 бит на параметр в среднем. И им удается сделать такое отображение hardware-friendly.

Затем команда дообучает Llama-3.2 1B и 3B в этих форматах и получает качество лучше, чем при использовании BitNet рецепта.

Для PTQ предлагают LeptoQuant, оптимизирующий масштаб квантизации с учетом выбросов, что дает некоторое улучшение для FP8 квантизации.

Спекулятивный декодинг суть EAGLE-3.

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

Для прунинга токенов предлагают разные методы под разные модальности. Для изображений предлагается IDPruner, для аудио - Samp. Оно как-то отбирает токены стремясь максимизировать разнообразие и убирает наиболее похожие токены.

💡 Выводы

Выглядит сама по себе либа довольно интересно. Вполне годится для приготовления небольших моделек под edge inference.
3
Forwarded from Осцилляции WaveCut (WaveCut)
Это было неизбежно: рано или поздно должны были появиться специализированные решения для инференса.
И вот, Taalas (бывшая команда из Tenstorrent) выкатили то, чего я так ждал — настоящий Direct-to-Silicon.

Ребята не стали мелочиться и буквально «запекли» модель в кремний. Никакой внешней памяти, никакого HBM, никакой сложной упаковки. Веса модели и архитектура — это и есть сам чип.

Цифры выглядят дико: 17,000 токенов в секунду на Llama 3.1 8B.
Это на порядок быстрее текущей SOTA GPU, при этом чип стоит в 20 раз дешевле в производстве и потребляет в 10 раз меньше энергии.
Самое крутое, что это не просто красивые слайды для инвесторов. Железо уже существует, и его можно «потрогать» (ссылка на демо внизу).

Конечно, это ASIC, и тут есть нюанс: чип заточен под одну конкретную модель. Но Taalas продумали этот момент — они оставили поддержку LoRA-адаптеров и изменяемого контекстного окна. То есть это не совсем уж «кирпич», гибкость для файн-тюнинга остается.

Сейчас у них готов чип с Llama 8B (HC1). Весной обещают выкатить что-то среднеразмерное с ризонингом, а к зиме грозятся показать фронтир-модель на втором поколении кремния.

У меня голова идет кругом от мыслей к чему это может привести.


Ссылки:
Анонс
Демо (скорость реально впечатляет)
🔥239👍3
Тупая, как пробка, но невероятно быстрая
😁8🗿4
Слабо даже для Llama 3.1-8B.

Может оно еще квантизовано в 1 бит?)

(UPD как внимательно заметили, там 4 бита)
👍1
Ну лан, 2-битный AQLM.rs тоже не очень справляется
😁8👍2
Из новостей 📰

Небезызвестный Георгий Герганов, автор llama.cpp, GGML и GGUF, переходит к лицехватам 🤗. Утверждается, что они совместно продолжат развитие проектов Г.Г.

https://x.com/ggerganov/status/2024839991482777976
🔥29😁2
MatGPTQ: Accurate and Efficient Post-Training Matryoshka Quantization
[Статья][Код]

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

Первая из них, увы проприетарная - ни код не модели, ни кернелы инференса не выложили. Кроме того, она требует специального дообучения - либо end-2-end, либо поблочной оптимизации а-ля OmniQuant. Вторая же не допускает многие методы квантизации - GPTQ/AWQ - и подгружает в память конфигурацию с максимальной битностью и отрезает динамически.

Команда из IST Austria предложила модификацию GPTQ, подготавливающую модель, такую что ее можно на инференсе подстраивать под заданную точность без дообучения.
2
🔬 Метод

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

Кроме того, для поиска оптимальной конфигурации под заданную битность опционально применяют EvoPress.

Под это дело пишут быстрые кернелы по типу Marlin под Ampere архитектуру. У реализации две особенности - транспонированный порядок вычислений для использования mma.m16n8k16 операции тензорных ядер, и батчовый кернел деквантизации для хитро запакованных весов.

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

На больших битностях (4-8) работает хуже, чем GPTQ, но дает заметный профит в 3-х битах. EvoPress дает некоторый прирост в сравнении с базовым алгоритмом.

Авторы репродуцируют MatQuant (OmniQuant вариант) и MatGPTQ показывает себя немного лучше на разных битностях.

Написанный кернел дает ускорение порядка 3‑х раз против bf16 для 3 бит, и 3.25 для 2 бит.

💡 Выводы

Кернелы хорошие, но пока в плане качества моделей метод кажется не слишком вкусным. Но при удобном интерфейсе мог бы стать неплохой альтернативной GGUFам.
Is Retraining-Free Enough? The Necessity of Router Calibration for Efficient MoE Compression
[Статья]

Существуют разные методы сжатия MoE. Одни прунят наименее полезных экспертов, другие как-то сжимают самих экспертов, а третьи обьединяют нескольких экспертов в одного. Однако все они дают какую-то просадку при существенном сжатии. При этом обычно роутер, определяющий в каких экспертов залетит токен, обычно не трогают.

В данной работе пара корейцев предлагает дообучать роутеры через KL-дивергенцию на распределение исходной модели, для компенсации ошибок балансировки.
1
🔬 Метод

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

Expert Editing чаще всего подразумевает какое-то сжатие размерностей через SVD-like подход и иные матричные/тензорные разложения (квантизация/неструктурированный прунинг тоже сюда вписывается).

Слияние экспертов опирается на некоторые метрики похожести экспертов.

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

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

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

Метод валидируют на Mixtral-8x7b-Instruct и Qwen3-30B-A3B-Instruct-2507.

Дообучение роутера дает стабильный прирост на Qwen3 MoE где много finegrained экспертов, но на Mixtral особой пользы нет, по всей видимости, из-за того, что мало экспертов.

💡 Выводы

Довольна простая и почти очевидная техника для дообучения сжатых МоЕ. Минус, правда, что для больших моделей все равно придется делать обратный проход. Но может неплохо завестись в связке с квантизацией МоЕ, скажем, в 4 бита.
5
Self-Supervised Flow Matching for Scalable Multi-Modal Synthesis
[Статья][Блог]

Ранее в работе REPA было показано, что выравнивание внутренних представлений сети с неким внешним энкодером, обученном на большом обьеме данных.

Однако, возникает вопрос - а какой энкодер брать, и как именно выравнивать признаки? Да и как-то оно не из первых принципов.

Ребята из Black Forest Labs предложили Self-Supervision на основе признаков самой диффузионной модели с более низкого уровня шума.
👍4
🔬 Метод

Первое наблюдение, которое делают авторы, что сила энкодера не всегда соответствует качеству генерации. Например, переход от DINOv2 к DINOv3, DINOv2-B к DINOv2-L ухудшает качество, хотя, казалось бы, внешняя модель должна была выучить лучшие репрезентации.

Потому предлагают выравнивать представления от самой модели на разных уровнях шума. Но как это правильно сделать 🤔?

Пробовали некоторые токены полностью зашумлять или зашумлять все независимо. Но это приводит к несовпадению между обучением и инференсом и только просаживает качество.

Вместо этого решили сэмплировать два времени - t и s - независимо, и часть токенов зашумлять на меньший шум, а часть - на больший.

Уже это как-то работает. Но еще лучше, если добавить лосс выравнивания (косинусную близость) между признаками ученика с входом зашумленным с разным силой и учителем (ЕМА ученика), зашумленным на меньший из шумов. Причем выравнивают более ранние (ближе к входу) признаки ученика с признаками учителя.

Итоговый лосс есть сумма flow-matching лосса и лосса выравнивания.

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

Подход валидируют для 3 модальностей - text-2-image, text-2-video, text-2-audio и для мультимодальной генерации.

Для экспериментов на ImageNet берут SiT с SD автоэнкодером в базовой постановке. Self-Flow работает немного лучше, чем REPA и заметно лучше, чем бейзлайн SRA. Self-Flow помогает даже поверх RAE.

На text-2-image генерации Self-Flow тоже лучше SRA. REPA и SigLIP2 не помогают text-2-image генерации.

На видео 📹 генерации Self-Flow снова заметно улучшает метрики. Внешние автоэнкодеры (V-JEPA, DepthAnything) только просаживают качество.

И аналогичная картина наблюдается для аудио 🔉.

Кроме того, учат модель которая одновременно умеет в 3 модальности и video-action модель.

С увеличением размера моделей разница с REPA только растет (судя по CLIP Score).

В ablation показывают, что self-supervised лосс важен для качества. Также важно маскирование, и сэмплирование шагов на широком интервале значений, чтобы модель с высоких шумов могла видеть признаки с низких. Равномерное зашумление лучше логит-нормального.

💡 Выводы

Выглядит как универсальный и при этом достаточно простой рецепт ускорения претрейна для диффузионных моделей. Интересно, использовались ли данные наработки при обучении семейства Flux2, или додумались уже позднее?
👍4
Видать давление со стороны Антропика и Гугла вынудило OpenAI зашевелиться.

Демонструют более эффективный tool use в сравнении с GPT-5.2, за меньшее число вызовов достигают лучшего качества. И якобы качество кодинга при той же latency чуть лучше, чем у специализированной GPT-5.3-Codex.

https://openai.com/index/introducing-gpt-5-4/
👍6