Слабо даже для Llama 3.1-8B.
Может оно еще квантизовано в 1 бит?)
(UPD как внимательно заметили, там 4 бита)
Может оно еще квантизовано в 1 бит?)
(UPD как внимательно заметили, там 4 бита)
👍1
Из новостей 📰
Небезызвестный Георгий Герганов, автор llama.cpp, GGML и GGUF, переходит к лицехватам 🤗. Утверждается, что они совместно продолжат развитие проектов Г.Г.
https://x.com/ggerganov/status/2024839991482777976
Небезызвестный Георгий Герганов, автор llama.cpp, GGML и GGUF, переходит к лицехватам 🤗. Утверждается, что они совместно продолжат развитие проектов Г.Г.
https://x.com/ggerganov/status/2024839991482777976
GitHub
GitHub - ggml-org/llama.cpp: LLM inference in C/C++
LLM inference in C/C++. Contribute to ggml-org/llama.cpp development by creating an account on GitHub.
🔥29😁2
MatGPTQ: Accurate and Efficient Post-Training Matryoshka Quantization
[Статья][Код]
Некоторое время назад были представлены работы MatQuant и AnyPrecisionLLM, которые подготавливают модели, что можно с одного чекпоинта гонять в разных точностях.
Первая из них, увы проприетарная - ни код не модели, ни кернелы инференса не выложили. Кроме того, она требует специального дообучения - либо end-2-end, либо поблочной оптимизации а-ля OmniQuant. Вторая же не допускает многие методы квантизации - GPTQ/AWQ - и подгружает в память конфигурацию с максимальной битностью и отрезает динамически.
Команда из IST Austria предложила модификацию GPTQ, подготавливающую модель, такую что ее можно на инференсе подстраивать под заданную точность без дообучения.
[Статья][Код]
Некоторое время назад были представлены работы 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ам.
Концептуально нового вроде бы ничего не предлагается. Модифицированный алгоритм 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-дивергенцию на распределение исходной модели, для компенсации ошибок балансировки.
[Статья]
Существуют разные методы сжатия MoE. Одни прунят наименее полезных экспертов, другие как-то сжимают самих экспертов, а третьи обьединяют нескольких экспертов в одного. Однако все они дают какую-то просадку при существенном сжатии. При этом обычно роутер, определяющий в каких экспертов залетит токен, обычно не трогают.
В данной работе пара корейцев предлагает дообучать роутеры через KL-дивергенцию на распределение исходной модели, для компенсации ошибок балансировки.
✍2
🔬 Метод
Техники прунинга экспертов обычно на основе величины активаций в роутере, прироста лосса или дифференцируемым образом определяют наименее важных экспертов.
Expert Editing чаще всего подразумевает какое-то сжатие размерностей через SVD-like подход и иные матричные/тензорные разложения (квантизация/неструктурированный прунинг тоже сюда вписывается).
Слияние экспертов опирается на некоторые метрики похожести экспертов.
Однако все три подхода приводят к тому, что не только сами эксперты меняются, но и вероятности роутера в слоях после первого, и текущие техники это никак не учитывают. И эмпирически замечают, что с ростом глубины доля расхождений предсказаний роутера только растет.
Отсюда делают вывод что надо доучивать роутеры и для этого просто дистиллируют выходы сжатой модели на несжатой на калибровочных данных, дообучая только роутеры.
🧪 Эксперименты
Метод валидируют на Mixtral-8x7b-Instruct и Qwen3-30B-A3B-Instruct-2507.
Дообучение роутера дает стабильный прирост на Qwen3 MoE где много finegrained экспертов, но на Mixtral особой пользы нет, по всей видимости, из-за того, что мало экспертов.
💡 Выводы
Довольна простая и почти очевидная техника для дообучения сжатых МоЕ. Минус, правда, что для больших моделей все равно придется делать обратный проход. Но может неплохо завестись в связке с квантизацией МоЕ, скажем, в 4 бита.
Техники прунинга экспертов обычно на основе величины активаций в роутере, прироста лосса или дифференцируемым образом определяют наименее важных экспертов.
Expert Editing чаще всего подразумевает какое-то сжатие размерностей через SVD-like подход и иные матричные/тензорные разложения (квантизация/неструктурированный прунинг тоже сюда вписывается).
Слияние экспертов опирается на некоторые метрики похожести экспертов.
Однако все три подхода приводят к тому, что не только сами эксперты меняются, но и вероятности роутера в слоях после первого, и текущие техники это никак не учитывают. И эмпирически замечают, что с ростом глубины доля расхождений предсказаний роутера только растет.
Отсюда делают вывод что надо доучивать роутеры и для этого просто дистиллируют выходы сжатой модели на несжатой на калибровочных данных, дообучая только роутеры.
🧪 Эксперименты
Метод валидируют на Mixtral-8x7b-Instruct и Qwen3-30B-A3B-Instruct-2507.
Дообучение роутера дает стабильный прирост на Qwen3 MoE где много finegrained экспертов, но на Mixtral особой пользы нет, по всей видимости, из-за того, что мало экспертов.
💡 Выводы
Довольна простая и почти очевидная техника для дообучения сжатых МоЕ. Минус, правда, что для больших моделей все равно придется делать обратный проход. Но может неплохо завестись в связке с квантизацией МоЕ, скажем, в 4 бита.
❤5🔥1
Self-Supervised Flow Matching for Scalable Multi-Modal Synthesis
[Статья][Блог]
Ранее в работе REPA было показано, что выравнивание внутренних представлений сети с неким внешним энкодером, обученном на большом обьеме данных, ускоряет сходимость и улучшает качество.
Однако, возникает вопрос - а какой энкодер брать, и как именно выравнивать признаки? Да и как-то оно не из первых принципов.
Ребята из Black Forest Labs предложили Self-Supervision на основе признаков самой диффузионной модели с более низкого уровня шума.
[Статья][Блог]
Ранее в работе REPA было показано, что выравнивание внутренних представлений сети с неким внешним энкодером, обученном на большом обьеме данных, ускоряет сходимость и улучшает качество.
Однако, возникает вопрос - а какой энкодер брать, и как именно выравнивать признаки? Да и как-то оно не из первых принципов.
Ребята из Black Forest Labs предложили Self-Supervision на основе признаков самой диффузионной модели с более низкого уровня шума.
👍5
🔬 Метод
Первое наблюдение, которое делают авторы, что сила энкодера не всегда соответствует качеству генерации. Например, переход от 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, или додумались уже позднее?
Первое наблюдение, которое делают авторы, что сила энкодера не всегда соответствует качеству генерации. Например, переход от 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, или додумались уже позднее?
👍5
Видать давление со стороны Антропика и Гугла вынудило OpenAI зашевелиться.
Демонструют более эффективный tool use в сравнении с GPT-5.2, за меньшее число вызовов достигают лучшего качества. И якобы качество кодинга при той же latency чуть лучше, чем у специализированной GPT-5.3-Codex.
https://openai.com/index/introducing-gpt-5-4/
Демонструют более эффективный tool use в сравнении с GPT-5.2, за меньшее число вызовов достигают лучшего качества. И якобы качество кодинга при той же latency чуть лучше, чем у специализированной GPT-5.3-Codex.
https://openai.com/index/introducing-gpt-5-4/
OpenAI
Introducing GPT-5.4
Introducing GPT-5.4, OpenAI’s most most capable and efficient frontier model for professional work, with state-of-the-art coding, computer use, tool search, and 1M-token context.
👍7
Краткий обзор, посвященный исследованиям влияния температуры 🤒 на качество генераций БЯМ и разным методикам подбора адаптивной температуры.
В частности, рассмотрены разные варианты - обучаемые и entropy-based, с глобальной температурой на последовательность и потокенной.
Одна из эвристик предлагает поднимать температуру, когда модель не уверена в предсказании, и понижать в противном случае.
Существуют также разные опции RL-я и meta-learning для предсказания оптимальной температуры на инференсе. Выученные RL-политики, правда, оказываются похожими на вышеупомянутую эвристику.
Также приводится список работ, где адаптивная температура подбирается для калибровки вероятностного распределения
В частности, рассмотрены разные варианты - обучаемые и entropy-based, с глобальной температурой на последовательность и потокенной.
Одна из эвристик предлагает поднимать температуру, когда модель не уверена в предсказании, и понижать в противном случае.
Существуют также разные опции RL-я и meta-learning для предсказания оптимальной температуры на инференсе. Выученные RL-политики, правда, оказываются похожими на вышеупомянутую эвристику.
Также приводится список работ, где адаптивная температура подбирается для калибровки вероятностного распределения
👍4🔥2
Вот и настал тот славный день, когда мой скромный канальчик преодолел отметку в 3️⃣000 подписчиков.
Спасибо 🙏 всем за то, что вы здесь, за ваши комментарии, замечания и реакции.
Надеюсь и дальше продолжать делать обзорчики по квантизации, прунингу, дистилляции и иным ипостасям Efficient DL.
Спасибо 🙏 всем за то, что вы здесь, за ваши комментарии, замечания и реакции.
Надеюсь и дальше продолжать делать обзорчики по квантизации, прунингу, дистилляции и иным ипостасям Efficient DL.
🔥39🎉22👍6
Forwarded from black_samorez
Кернелы претрен NVFP4 B200 скачать бесплатно без смс и регистрации
from quartet2.linear import Quartet_II_linear
linear = Quartet_II_linear(
in_dim,
out_dim,
device="cuda",
)
...
❤5🔥4
Mamba-3: Improved Sequence Modeling using State Space Principles
[Статья] [Блог] [Код анонсирован, но не добавлен]
Фантастический Три Дао, Альберт Гу и их падаваны из CMU и Принстона тихо, без шума выпустили 3-ую часть саги про Мамбу 🐍.
[Статья] [Блог] [Код анонсирован, но не добавлен]
Фантастический Три Дао, Альберт Гу и их падаваны из CMU и Принстона тихо, без шума выпустили 3-ую часть саги про Мамбу 🐍.
🔥6
🔬 Метод
Основной целью модификаций в Mamba-2 было повышение эффективности обучения, и для этого, в частности, упростили матрицу перехода состояний.
Однако, ограничение выразительности может ограничивать и достижимое качество.
С другой стороны, на практике не менее важно иметь и эффективный инференс, утилизирующий вычислительные возможности GPU. Как известно, инференс SSM сильно memory-bound - вычисления занимают гораздо меньше времени, чем трансфер памяти. Отсюда возникает мысль увеличить объем вычислений на один шаг, не меняя при этом количество передаваемой памяти.
В Мамбе-3 3 ключевых нововведения:
1️⃣ Более общий и выразительной вид рекурсии (экспоненциально-трапециоидальная схема)
2️⃣ Переход к комплекснозначной SSM при этом без осуществления вычислений в комплексных числах при помощи RoPE-трюка.
3️⃣ Multi-input, multi-output SSM вместо single-input, single-output. Суть в общих чертах, в том, чтобы обрабатывать состояние в несколько параллельных потоков.
Кроме того, модифицировали и сам слой Мамбы - добавили QK-norm, убрали короткую свертку (которая более не помогает, ввиду того, что схема рекурсии эффективно является сверткой). Также для MIMO-варианта добавляются MIMO-проекции.
Для реализацим используется Trtion, TileLang и CuTe DSL.
🧪 Эксперименты
Архитектуру валидируют, обучая модели размера от 180M до 1.5B токенов на Fineweb-Edu.
Mamba 3 стабильно опережает Mamba-2 и Gated Delta Net того же размера. MIMO вариант еще немного подымает качество.
На retrieval задачах (Needle in a Haystack) Mamba-2 сильно страдала с увеличением длины контекста. Mamba-3 страдает меньше и показывает себя лучше чем GDN в среднем.
Prefill/Decode у SISO варианта Mamba-3 такой же по скорости, как у Mamba-2. У MIMO префилл чуть медленее, но декодирование почти не замедляется.
💡 Выводы
Выглядит как нетривиальное развитие направления с SSM, но полезность можно будет оценить только в более боевых и прикладных сетапах. Почти наверняка 3-ую Мамбу мы увидим в гибридных transformer/ssm моделях.
Основной целью модификаций в Mamba-2 было повышение эффективности обучения, и для этого, в частности, упростили матрицу перехода состояний.
Однако, ограничение выразительности может ограничивать и достижимое качество.
С другой стороны, на практике не менее важно иметь и эффективный инференс, утилизирующий вычислительные возможности GPU. Как известно, инференс SSM сильно memory-bound - вычисления занимают гораздо меньше времени, чем трансфер памяти. Отсюда возникает мысль увеличить объем вычислений на один шаг, не меняя при этом количество передаваемой памяти.
В Мамбе-3 3 ключевых нововведения:
1️⃣ Более общий и выразительной вид рекурсии (экспоненциально-трапециоидальная схема)
2️⃣ Переход к комплекснозначной SSM при этом без осуществления вычислений в комплексных числах при помощи RoPE-трюка.
3️⃣ Multi-input, multi-output SSM вместо single-input, single-output. Суть в общих чертах, в том, чтобы обрабатывать состояние в несколько параллельных потоков.
Кроме того, модифицировали и сам слой Мамбы - добавили QK-norm, убрали короткую свертку (которая более не помогает, ввиду того, что схема рекурсии эффективно является сверткой). Также для MIMO-варианта добавляются MIMO-проекции.
Для реализацим используется Trtion, TileLang и CuTe DSL.
🧪 Эксперименты
Архитектуру валидируют, обучая модели размера от 180M до 1.5B токенов на Fineweb-Edu.
Mamba 3 стабильно опережает Mamba-2 и Gated Delta Net того же размера. MIMO вариант еще немного подымает качество.
На retrieval задачах (Needle in a Haystack) Mamba-2 сильно страдала с увеличением длины контекста. Mamba-3 страдает меньше и показывает себя лучше чем GDN в среднем.
Prefill/Decode у SISO варианта Mamba-3 такой же по скорости, как у Mamba-2. У MIMO префилл чуть медленее, но декодирование почти не замедляется.
💡 Выводы
Выглядит как нетривиальное развитие направления с SSM, но полезность можно будет оценить только в более боевых и прикладных сетапах. Почти наверняка 3-ую Мамбу мы увидим в гибридных transformer/ssm моделях.
🔥1
Самое любопытное во всей этой истории то, что вложив много сил в развитие SSM, Tri Dao убивает их, выпуская новые версии Flash Attention.
😁16💯5
TurboQuant: Online Vector Quantization with Near-optimal Distortion Rate
[Статья] [Пост][Неофициальный код под MLX]
Квантизовать что-либо, будь то эмбеддинги, активации или KV-кэши хочется не абы как, а по возможности максимально точно.
И команда из Google Research предложила новый метод квантизации с теоретическими гарантиями и применила к задаче сжатия эмбеддингов в KV-кэшей.
[Статья] [Пост][Неофициальный код под 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++.
Рассматривают 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++.
🔥15❤5👍2
ZOMG TEH DRAMA!
Авторы RabitQ написали гневный пост в x.com (бывшем твиттере) по поводу хайпанувшего TurboQuant.
Суть их претензий в следующем - RabitQ основан на тех же идеях - случайном повороте и теоретической оптимальности, но в TurboQuant об этом никак не упоминает. Кроме того, сравнивается производительность TurboQuant на GPU против single CPU core RabitQ.
Засим они подали публичную претензию в комментарии OpenReview, дабы утрясти возникшее недоразумение.
В комментариях жалуются на, что бигтехи бессовестно пиарят свои наработки, задвигая фундаментальную науку.
Авторы RabitQ написали гневный пост в x.com (бывшем твиттере) по поводу хайпанувшего TurboQuant.
Суть их претензий в следующем - RabitQ основан на тех же идеях - случайном повороте и теоретической оптимальности, но в TurboQuant об этом никак не упоминает. Кроме того, сравнивается производительность TurboQuant на GPU против single CPU core RabitQ.
Засим они подали публичную претензию в комментарии OpenReview, дабы утрясти возникшее недоразумение.
В комментариях жалуются на, что бигтехи бессовестно пиарят свои наработки, задвигая фундаментальную науку.
👍20🔥7