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

Блог про сжатие сетей и не только.
От древнейших времен по настоящее время.
Download Telegram
Самое любопытное во всей этой истории то, что вложив много сил в развитие SSM, Tri Dao убивает их, выпуская новые версии Flash Attention.
😁16💯5
TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate
[Статья] [Пост][Неофициальный код под MLX]

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

И команда из Google Research предложила новый метод квантизации с теоретическими гарантиями и применила к задаче сжатия эмбеддингов в KV-кэшей.
👍13
🔬 Метод

Рассматривают 2-возможные постановки задачи оптимальной квантизации:

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

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

Для MSE-оптимизированного TurboQuant вектора поворачивают на случайную ортогональную матрицу (не Адамар), а затем подбирают оптимальную решетку с помощью Max-Lloyd для целевых битностей.

Для Inner Product алгоритм для MSE не годится из-за сдвига матожидания. Вместо этого делают следующее - сначала квантизуют MSE отпимальным квантизатором в битность - 1, а 1-битный остаток квантизуют через Quantized Johnson-Lindenstrauss (QJL).

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


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

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

Сначала сжимают DBpedia Entities OpenAI3 эмбеддинги. Показывают, что MSE-оптимальный квантизатор имеет смещенную ошибку.

Затем переходят на сжатие KV-кэшей. На Needle-In-A-Haystack при сжатии в 4 бита не просаживаются в качестве, в отличие от бейзлайновых SnapKV, PyramidKV, KIVI (первые 2 подхода про прунинг токенов). На LongBench не просаживаются при 3.5 битной квантизации, и очень умеренно при 2.5 битной.

При 2-х и 4-х битной квантизации по качеству превосходят ProductQuantization и RabitQ, при этом работая гораздо быстрее.

💡 Выводы

Небезынтересная работа с солидной теоретической подоплекой. Однако, к выбору бейзлайнов можно придраться. В плане квантизации KV-кэшей есть более свежие и сильные бейзлайны. В частности, было бы интересно сравнить TurboQuant с квантизацией KV-кэшей
в HIGGS сетку на повернутых Адамаровыми вращениями векторах. И для сжатия эмбеддингов есть, как минимум Аддитивная квантизация и LSQ++.
🔥155👍2
ZOMG TEH DRAMA!

Авторы RabitQ написали гневный пост в x.com (бывшем твиттере) по поводу хайпанувшего TurboQuant.

Суть их претензий в следующем - RabitQ основан на тех же идеях - случайном повороте и теоретической оптимальности, но в TurboQuant об этом никак не упоминает. Кроме того, сравнивается производительность TurboQuant на GPU против single CPU core RabitQ.

Засим они подали публичную претензию в комментарии OpenReview, дабы утрясти возникшее недоразумение.

В комментариях жалуются на, что бигтехи бессовестно пиарят свои наработки, задвигая фундаментальную науку.
👍20🔥7
Gram Newton-Schulz: A Fast, Hardware-Aware Newton-Schulz Algorithm for Muon
[Блог]

Монстрический 👾 Три Дао и его команда нашли очередное место с потенциалом ускорения - оптимизацию оптимизатора Мюона.
🔥1
🔬 Метод

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

polar(X) = U V^T для X = U S V^T

и подставить его вместо момента.

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

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

В выражения, возникающие в процессе подсчета многочленов в Ньютоне-Шульце, несколько раз возникают матричные произведения с матрицей X, которая может быть сильно вытянутой вдоль одной из размерностей. Гораздо дешевле тогда работать с матрицей Грама X^T X.


В качестве альтернативы оригинальному алгоритму предлагают считать полярное разложение в виде: X (X^T X)^{-1/2}. Матричную степень находят тоже через Ньютон-Шульц, но для матрицы X^T X меньшего размера теперь уже.

Для типичных конфигураций больших трансформеров это дает 55% уменьшений FLOPs против оптимизированных реализаций.

Далее замечают, что при перемножении симметричных матриц достаточно считать половину элементов, а остальные отражать по диагонали.

И все - успех, победа 🍾?

Ан нет. Наивная реализация, описанная выше численно нестабильна и приводит к спайкам в лоссе, инфам и нанам.
Анализируют причины произошедшего и, оказывается, что все дело в численной стабильности. Из-за конечной точности матрица X^T X может оказаться не положительно определенной. Да и собственные значения разъезжаются.

Чтобы это побороть делают алгоритм с рестартами. Это позволяет добиться контролями над собственными значениями. И для подстраховки делят матрицы на 1.02 - 1.05, дабы надежнее попасть в интервал собственных значений [0, 1], чтобы сойтись к оптимуму. Это чуть увеличивает время алгоритма, но стабилизирует его.

Между float16 и bfloat16 большой разницы нет, но авторы рекомендуют первый, как более точный в окрестности нуля.

Под используемые в работе матричные операции с симметричным матрицами пишут и выкладывают свои кернелы в Quack.

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

Учат семейства моделей разной архитектуры - Llama-430M, Qwen-600M, Gemma-1B и кастомный MoE на 2х Шиншилла оптимальном бюджете. Вроде учится стабильно. Кривые лосса сходятся с исходным мюоном.

Ускорение оптимизатора в 1.5-2 раза в сравнении с ванильной торчовой реализацией, и несколько меньше против Мюона со специальными кернелами. Правда, в плане производительности (времени на шаг) все еще далеко до Адама.

💡 Выводы

Солидная инженерная работа с очевидной пользой для сообщества. В текущих воркфлоу шаг оптимизатора обычно не очень дорогой - 5-15% от общей стоимости обучения. Но с переходом на обучение в FP8/NVFP4 - доля времени работы алгоритма повысится. Тем самым ускорение станет более актуальным.
🔥17👍3
Опенсорс исходников claude code это хорошо, но для полного счастья не хватает еще весов.

Глядишь, и конкурентам придется опенсорснуться, чтобы не ударить лицом в грязь.
29🤪5😁1
😁69🥴15🔥8👎1👻1
Announcing 1-bit Bonsai: The First Commercially Viable 1-bit LLMs
[Блог][Гитхаб с демо][Коллекция]

Стартап PrismML анонсировал Bonsai - семейство 1-битных LLM, которые можно запустить на любом чайнике.

Квантизуется все - эмбеддинги, внимание, MLP и lm голова.

По бенчам выдает что-то на уровне Ministral/Olmo 3 7b, при этом будучи заметно меньше по размеру чекпоинта. Дабы продемонстрировать свою мегаэффективность, вводят понятие intelligence density - минус log(ошибка на наборе бенчей) / размер модели в Gb. По этому показателю заметно обходят всех (бейзлайны тоже можно было бы квантизовать).

Это дело можно запустить на iPhone 17, в то время как в half precision 8B модель просто не поместится, и генерить со скоростью 40 токенов в секунду.
Кроме того, оно якобы работает быстрее на RTX 4090 (через llama.cpp) и M4Pro. Энергоэффективность на один токен улучается в 4-5 раз.

Также выпускают 1.7B и 4B версии моделек.

Рецепт обучения, приведший к столь восхитительным результатам, остается за кадром.
8🔥3🥴2👍1
Reasoning Shift: How Context Silently Shortens LLM Reasoning
[Статья]

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

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

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

Рассматриваются следующие постановки:
🔅 Baseline. Просто исходная задача и вопрос.
🔅 Subtask. Одно пользовательское сообщение и две подзадачи.
🔅 Long input. Много иррелевантного контекста и задача,
🔅 Multi-turn. Многошаговый диалог после которого идет сама задача.

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

Проверяют следующие модели:
🚀 Qwen-3.5-27B
🚀 GPT-OSS-120B
🚀 Gemini 3 Flash Preview
🚀 Kimi K2 Thinking

Для всех не Baseline вариантов наблюдается следующее:
🩳 Длина ответа сокращается
⬇️ Качество несколько проседает

Затем подают в Qwen3.5-27B разное количество токенов иррелевантного контекста и наблюдают монотонную просадку длины генераций. 64к токенов укорачивают ответ вдвое (с 8к до 4к).

Кроме того, пробуют модели семейства Olmo-3:
🔅На Instruct чекпоинте почти не наблюдает описанное явление.
🔅Для Thinking чекпоинтов сокращение длины имеет место.
Для Qwen-3-32B укорачивание генераций тоже гораздо более заметно в reasoning режиме.

💡 Выводы

Данный результат показывает, что рассуждающие модели имеет смысл специальным образом дообучать, чтобы адаптировать к большему объему релевантного или постороннего контекста, который может возникать в агентных сценариях.
🔥102
Вдохновленный autoresearch от маэстро Андрея Карпатого, я решил попробовать поискать оптимальный метод квантизации при помощи LLMного агента.

Если конкретно, то агенту 🤖 дается следующая установка
📌 Получить как можно более низкую перплексию на wikitext2 при фиксированной битности / размере группы.
📌 Можно менять алгоритм квантизации, но нельзя трогать вид квантизованного представления (битность, векторную квантизацию вместо скалярной, скажем).
📌 Скрипт замера перплексии фиксирован.

В качестве стартовой точки дается ванильный GPTQ с параметрами по умолчанию.

Агент (Claude Sonnet 4.6) сделал следующее
🧪 На первой же итерации изменил порядок квантизации на actorder (каналы с большими активациями вначале). По всей видимости, это у него уже было в обучающей выборке.
🧪 Еще он пробовал тюнить параметры регуляризации и размер калибровочной выборки.
🧪 Наиболее интересным изменением был подбор скейлов квантизации. Он пришел к какому-то поиску, взвешенному на послойный Гессиан, и в самом топовом решении даже накрутил какой-то Ledoit-Wolf оценщик для матрицы ковариации (применительно к скейлам).

Если резюмировать - Америку оно не открыло, но нашло (или знало) мелкие эмпирические трюки для прокачки квантизации. Для более интересных результатов, наверное, надо отправить его лазить в интернет откапывать давно забытые труды советских математиков и кибернетиков.

🐈‍⬛ проекта выложен 👉 здесь
🔥213
🔥10
WaterSIC: information-theoretically (near) optimal linear layer quantization
[Статья] [Кода нет, как и кернелей]

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

И группа исследователей разработала метод WaterSIC, который квантизует адаптивно в разную битность скалярной квантизацией и отстает от IT предела всего на 0.255 бит.
3👍3🔥3
🔬 Метод

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

Алгоритм WaterSIC состоит из следующих компонент:
🔅 Сначала находят ближайшее значение к вектору W L (вес на фактор Холески) на решетке, образованной столбцами матрицы L. По существу, переформулировка GPTQ. Для большей точности делают еще сжатие на некий фактор, оптимизирующий MSE.
🔅 Затем учитывают тот факт, что активации в прошлых слоях несколько разъехались по сравнению с исходной моделью и добавляют компенсацию ошибки.
🔅 Потом применяют диагональное перемасштабирование для минимизации MSE.
🔅 Энтропийное кодирование (Хаффман).
🔅 В матрицах слоев внимания перевзвешивают матрицы ковариации активаций на внимание токенов (приоритезируя оптимизацию ошибки на важных токенах).
🔅 Убирают размерности с околонулевым разбросом около среднего.

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

Метод валидируют на weight-only сжатии Llama-3.2-1B и Qwen3-8B в битностях от 1 до 4 бит. При всех степенях сжатия на Llama-3.2-1B метод выдает качество лучше бейзлайнов, среди которых QTIP и предложенный Huffman-GPTQ (из статьи, правда, непонятно, какая базовая битность). На Qwen3-8B предложенный подход также выдает хорошую перплексию.

💡 Выводы

Ну что, мощные серверы больше не нужны?

А если серьезно, то результат интересный. Однако можно придраться к замерам одной лишь перплексии без каких-либо бенчей. Кроме того, хаффманово кодирование на GPU вроде бы эффективно не реализуешь, и достижимо ли хоть какое-то ускорение или хотя бы замедление в разумных пределах в такой постановке?
6
😁44
Страсти вокруг TurboQuant продолжаются.

Попытки воспроизвести TurboQuant у сообщества приводят к тому, что люди переизобретают HIGGS...

Пост Тима Деттмерса в X
PR в vLLM
👀13🤔4😁2
😁10😢3💯2
Слив архитектуры Claude Mythos?

Некто выложил на гитхаб проект под названием OpenMythos - типа гипотетическая реконструкция Claude Mythos.

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

Ответ: Ну раз он такой умный, значит это Recurrent-Depth Transformer. Ну и потому что несколько авторитетных чуваков из твиттера так считают.

Осталось только взять реализацию модельки, заскейлить до триллиона параметров, обучить на сотнях триллионов токенов и миллионах роллаутов - и, вуаля, AGI готов.
😁29🤩3🤔21
YSDA - Efficient models (Обзор библиотек).pdf
3.5 MB
Моя лекция с курса в ШАДе "Эффективные модели ML и архитектуры нейросетей" про разные движки для инференса и DSL для кернелов.
20🔥11👍1