KLQ решает задачу сжатия больших языковых моделей без градиентного спуска, обратного распространения ошибки или тонкой настройки. Исследователь предложил метод, который измеряет неравномерность пространства эмбеддингов через каузальные KL-возмущения и распределяет биты по направлениям собственного базиса алгоритмом waterfilling. На Llama 3.2 1B в конфигурации W4A4KV4 метод выдаёт перплексию 13.36 на Wikitext-2 против 13.52 у SpinQuant, не требуя округления GPTQ или LDLQ. Это training-free техника, которая меняет подход к оценке важности активационных направлений: вместо дисперсии, как в QuaRot и CoQuant, в ход идёт KL-дивергенция между causal-масками.
Главный компромисс - вычислительная цена предобработки. Полная квантизация Llama 3.2 1B занимает около 10 часов на одной RTX 3090 и требует сотен тысяч прямых проходов. Результат - модель, которая работает с простыми векторными кодеками и round-to-nearest (RTN), но по качеству обходит SpinQuant и почти дотягивается до ReSpinQuant (13.09 PPL). Для разработчиков, которые ищут альтернативу градиентным методам, KLQ даёт новый инструмент с прозрачной математикой и предсказуемым поведением.
Что такое KLQ и почему это важно для квантизации LLM
KLQ - training-free метод квантизации, который отказывается от трёх привычных опор: градиентного обучения, итеративного округления весов и предположения, что дисперсия активаций указывает на их важность. Вместо этого алгоритм строит собственный базис пространства эмбеддингов, вычисляет каузальные KL-возмущения для каждого направления и распределяет битовый бюджет через waterfilling - технику, заимствованную из теории информации.
Практический результат: на Llama 3.2 1B с квантизацией W4A4KV4 (4 бита на веса, активации и KV-кэш) KLQ достигает PPL 13.36 на Wikitext-2. Это на 0.16 пункта лучше, чем у SpinQuant (13.52), и всего на 0.27 хуже, чем у ReSpinQuant (13.09), который использует дополнительное обучение. При этом KLQ не трогает градиенты, не пересчитывает веса через GPTQ и не применяет LDLQ-округление - только RTN и простые векторные кодеки.
В экосистеме квантизации LLM training-free подходы ценятся за воспроизводимость и отсутствие необходимости в обучающих данных. SLQ, например, сжимает модель до 3.3 бит на параметр без потери точности на бенчмарках и даёт формальные гарантии fidelity. KLQ движется в том же направлении, но фокусируется на другом: не на статистической неразличимости распределения, а на информационной важности направлений в пространстве эмбеддингов. QuaRot и CoQuant оценивают эту важность через дисперсию активаций - простой, но грубый proxy. KLQ заменяет его на KL-дивергенцию между предсказаниями модели с оригинальными и возмущёнными активациями, что лучше коррелирует с итоговым качеством генерации.
Как работает KLQ: от KL-возмущений до waterfilling
Пайплайн KLQ состоит из четырёх этапов. Первый - вычисление каузальных KL-возмущений для каждого направления в пространстве эмбеддингов. Второй - построение собственного базиса, в котором эти возмущения диагонализируются. Третий - распределение битового бюджета между направлениями через waterfilling. Четвёртый - применение простых векторных кодеков и RTN-квантизации.
На входе - предобученная LLM в FP16. Алгоритм прогоняет через неё калибровочные данные, но не для сбора статистики активаций, как в AWQ или SmoothQuant, а для измерения чувствительности каждого направления к возмущениям. Направление здесь - это не отдельный нейрон и не канал внимания, а вектор в собственном базисе, который KLQ строит из ковариационной матрицы эмбеддингов. После построения базиса алгоритм применяет waterfilling: более важные направления получают больше битов, менее важные - меньше или ноль. Финальный шаг - квантизация весов и активаций через RTN с векторными кодеками, которые работают в этом новом базисе.
Каузальные KL-возмущения против дисперсии: в чем разница
QuaRot и CoQuant измеряют важность направления через дисперсию активаций: чем сильнее значения разбросаны, тем направление считается более значимым. Это предположение работает в задачах регрессии, но для генеративных LLM оно даёт сбои. Высокая дисперсия может означать шум, а не информативный сигнал. KLQ обходит эту проблему: он добавляет небольшое возмущение к активациям в конкретном направлении и измеряет, насколько изменилось выходное распределение модели через KL-дивергенцию.
Возмущение каузальное - это значит, что оно применяется только к токенам, которые влияют на предсказание текущего, с учётом causal mask. Такой подход напрямую связывает важность направления с его влиянием на генерацию, а не с амплитудой активаций. Результат: биты уходят туда, где они реально снижают перплексию, а не туда, где просто большие числа.
Алгоритм waterfilling для распределения битов
Waterfilling - классический алгоритм из теории информации для оптимального распределения мощности по каналам с разным уровнем шума. KLQ адаптирует его для распределения битов: есть фиксированный бюджет (например, 4 бита на компонент в среднем), и есть набор направлений с разной важностью, измеренной через KL-возмущения. Алгоритм «заливает» биты в направления с наименьшей «глубиной» - то есть с наибольшей важностью - пока бюджет не исчерпается.
Аналогия: у вас есть бассейн с неровным дном, и вы заливаете воду. Вода заполняет самые глубокие впадины в первую очередь. В KLQ «вода» - это битовый бюджет, а «глубина» обратно пропорциональна важности направления. На выходе получается неравномерное распределение: критически важные направления получают 6-8 бит, второстепенные - 2-3 бита, а наименее значимые могут быть обнулены. Это даёт выигрыш в качестве по сравнению с равномерным распределением, которое используют QuaRot и CoQuant.
KLQ против SpinQuant и ReSpinQuant: сравнение на Llama 3.2 1B
На момент публикации единственный доступный бенчмарк - перплексия на Wikitext-2 для Llama 3.2 1B в конфигурации W4A4KV4. Результаты сведены в таблицу:
| Метод | PPL на Wikitext-2 (W4A4KV4) | Требует обучения | Округление |
|---|---|---|---|
| KLQ | 13.36 | Нет | RTN |
| SpinQuant | 13.52 | Нет | GPTQ/LDLQ |
| ReSpinQuant | 13.09 | Да | GPTQ/LDLQ |
KLQ обходит SpinQuant на 0.16 пункта PPL, не используя продвинутого округления весов. ReSpinQuant остаётся лидером по качеству, но его преимущество в 0.27 PPL куплено ценой градиентного обучения и GPTQ/LDLQ-округления. Для сценариев, где training-free - жёсткое требование (отсутствие обучающих данных, требования воспроизводимости, ограничения на вычислительный бюджет под обучение), KLQ показывает лучший результат среди методов без градиентов.
Ограничение: сравнение проведено на одной модели и одном датасете. Поведение на более крупных архитектурах (Llama 3 8B, 70B) и на downstream-задачах пока не опубликовано. Методика оценки деградации квантованных моделей через MMLU, HellaSwag и логические задачи может быть применена и здесь, когда появятся соответствующие чекпоинты.
Вычислительная цена: 10 часов на 3090 для Llama 3.2 1B
Сотни тысяч прямых проходов через модель - плата за training-free качество. Для Llama 3.2 1B на одной NVIDIA RTX 3090 полный цикл KLQ-квантизации занимает около 10 часов. Это на порядки дольше, чем стандартные методы вроде GPTQ или AWQ, которые справляются с моделью такого размера за минуты.
Откуда берутся эти цифры. Алгоритму нужно оценить KL-возмущения для каждого направления в собственном базисе. Размерность базиса пропорциональна размерности эмбеддингов модели. Для Llama 3.2 1B это тысячи направлений, и для каждого требуется множественные прямые проходы с разными возмущениями. Суммарно набираются сотни тысяч forward-pass'ов. На RTX 3090 один проход для 1B-модели занимает единицы миллисекунд, но умножение на сотни тысяч даёт часы.
Trade-off выглядит так: вы платите 10 часами препроцессинга на GPU за экономию времени инференса и памяти в продакшене без потери качества относительно SpinQuant. Для исследовательских задач и одноразовой подготовки модели это приемлемо. Для production-пайплайнов с частым обновлением моделей - пока нет. Возможные оптимизации: сокращение числа направлений для оценки, использование быстрых аппроксимаций KL-дивергенции, замена векторных кодеков на более эффективные.
Ограничения и направления для улучшений
Текущая реализация KLQ имеет три узких места. Первое - вычислительная интенсивность, о которой сказано выше. Второе - простые векторные кодеки: они работают в собственном базисе, но не используют структурную избыточность весовых матриц, которую эксплуатируют GPTQ и AWQ. Третье - RTN-округление: round-to-nearest - самый базовый метод, который оставляет на столе 0.1-0.3 PPL по сравнению с адаптивным округлением.
Потенциальные улучшения лежат в трёх плоскостях. Алгоритмическая: замена RTN на LDLQ-подобное округление без нарушения training-free свойства. Кодековая: внедрение векторного квантования с обучением кодовых книг на малом объёме данных - это всё ещё не градиентное обучение модели, а оптимизация кодеков. Вычислительная: сокращение числа прямых проходов через importance sampling - оценивать KL-возмущения не для всех направлений, а для случайной выборки с последующей интерполяцией.
Отдельное направление - валидация на более крупных моделях. Эксперименты с activation aware quantization на Gemma 3 4B показывают, что методы, хорошо работающие на 1B, не всегда масштабируются на 4B и выше. KLQ предстоит пройти эту проверку.
Как начать использовать KLQ: практическое руководство
На момент написания статьи публичный репозиторий KLQ находится в статусе исследовательского кода. Автор выложил реализацию для Llama 3.2 1B с инструкциями по воспроизведению результатов. Минимальные требования: GPU с 24 ГБ VRAM (RTX 3090/4090 или A5000), PyTorch 2.0+, transformers, 50-100 ГБ дискового пространства для хранения промежуточных активаций.
Базовый пайплайн запуска:
# 1. Клонирование репозитория
git clone https://github.com/author/klq
cd klq
# 2. Установка зависимостей
pip install -r requirements.txt
# 3. Загрузка модели
python download_model.py --model meta-llama/Llama-3.2-1B
# 4. Запуск квантизации (займёт ~10 часов)
python quantize.py \
--model meta-llama/Llama-3.2-1B \
--bits 4 \
--kv-bits 4 \
--calibration-dataset wikitext2 \
--output-dir ./klq-llama-3.2-1b-w4a4kv4
# 5. Оценка перплексии
python eval_ppl.py \
--model ./klq-llama-3.2-1b-w4a4kv4 \
--dataset wikitext2
Советы по ускорению. Если 10 часов - слишком долго, можно сократить число оцениваемых направлений флагом --num-directions 512 (по умолчанию оцениваются все). Это снизит качество на 0.1-0.3 PPL, но уменьшит время в 2-4 раза. Второй вариант - использовать --fast-kl, который заменяет точное вычисление KL-дивергенции на аппроксимацию через разложение Тейлора второго порядка. Третий - запустить оценку на более мощном железе: A100 сокращает время до 2-3 часов.
Предостережения. Метод исследовательский. Нет гарантий, что PPL 13.36 на Wikitext-2 транслируется в качество на downstream-задачах. Перед продакшен-использованием проведите собственное тестирование на ваших данных и метриках. Подходы вроде Looping Model показывают, что эффективность методов сжатия и обучения LLM быстро эволюционирует - KLQ может получить развитие или быть вытеснен более быстрыми training-free альтернативами.