EnglishРусский Map

Интерактивный TurboQuant - повернуть, затем квантовать

title
Интерактивный TurboQuant - повернуть, затем квантовать
type
summary
summary
Разбор линейки DRIVE -> EDEN -> TurboQuant от arkaung: поворот сводит выбросы к известному распределению, единая кодовая книга подходит для любых входов
tags
llm, quantization, kv-cache
created
2026-05-13
updated
2026-05-13
lang
ru
source_updated
2026-05-13
translated
2026-09-01
translator
lllm/antigravity/gemini-3.7-flash-medium

Интерактивная страница arkaung подробно разбирает математику TurboQuant - семейства методов сжатия KV-cache'а и embedding'ов, которое достигает 2-4 бит на координату без метаданных на каждый блок, без калибровки и без дообучения. Конструкция устроена просто и элегантно: входной вектор поворачивается случайным ортогональным преобразованием, а затем каждая повёрнутая координата квантуется по единой фиксированной кодовой книге, рассчитанной один раз под распределение после поворота. Материал выстраивает схему от базовых математических понятий (векторы, MSE, несмещённые оценки, Lloyd-Max), обосновывает каждый шаг ссылками на литературу и завершается практическими результатами на KV-cache'е модели Llama-3.1-8B.

Отдельная страница концепции - random-rotation-quantization. В этом конспекте собрано то уникальное, что даёт руководство arkaung: предыстория и преемственность методов, подробный разбор шагов и эмпирические результаты в сравнении с альтернативами.

Восемь базовых понятий

Их можно пропустить любому, кто знаком с линейной алгеброй: вектор, длина, скалярное произведение, MSE, несмещённая оценка, поворот, центральная предельная теорема, концентрация меры в пространствах высокой размерности (стандартное отклонение каждой координаты единичного вектора равно $1/\sqrt{d}$), скалярное квантование (каждый дополнительный бит уменьшает среднеквадратичную ошибку в четыре раза).

Несущий элемент всей конструкции - концентрация меры в пространствах высокой размерности. У точки, равномерно распределённой на единичной сфере в пространстве размерности d, каждая координата имеет распределение с математическим ожиданием 0 и стандартным отклонением $1/\sqrt{d}$. При d = 1000 стандартное отклонение любой отдельной координаты составляет ~0.032. Именно поэтому после поворота работает единая фиксированная сетка: поворот переносит каждый входной вектор на сферу радиуса $|x|_2$, а маргинальное распределение любой координаты равномерной точки на такой сфере представляет собой известную плотность бета-распределения, которая с ростом d сходится к гауссовскому.

Проблемная координата

Реальные обученные embedding'и распределены неравномерно. Несколько координат доминируют ("каналы-выбросы"). Фиксированная сетка на отрезке $[-L, L]$ либо отсекает выбросы (clipping), либо тратит разрешение впустую на основную массу значений. Промышленные квантизаторы (GPTQ, AWQ, KIVI, KVQuant) обходят это тем, что сохраняют масштаб и нулевую точку для каждого блока в полной точности. При b=3 бит и размере блока s=16 накладные расходы составляют b + 32/s = 5 эффективных бит на значение - наценка в 66% к номинальному значению b.

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

Преемственность

Идея Где впервые предложена
Случайный поворот + анализ бета-распределения после поворота DRIVE (Vargaftik et al., NeurIPS 2021)
Рандомизированное преобразование Адамара как дешёвый практичный поворот DRIVE 2021; EDEN 2022
Кодовая книга Lloyd-Max на $\mathcal{N}(0,1)$ для повёрнутых координат EDEN (Vargaftik et al., ICML 2022)
Несмещённая схема "поворот, затем квантование" через масштабирование по векторам DRIVE 2021, §4.2, Theorem 3
b-битный конвейер с фиксированной кодовой книгой EDEN 2022
Цепочка невязок: смещённое (b−1)-битное + несмещённое 1-битное TurboQuant (Zandieh et al., 2025)
Постановка задачи для KV-cache'а и скалярного произведения TurboQuant 2025; QJL (2024) для 1 бита
Кодирование через знак + норму для поиска по скалярному произведению в ANN RaBitQ (Gao & Long, SIGMOD 2024)
Асимптотическая оптимальность относительно границы Алона - Клартэга RaBitQ extended (Gao et al., 2024)

DRIVE ввёл эту схему для однобитной оценки среднего в федеративном обучении. EDEN обобщил подход на b бит с помощью кодовых книг Lloyd-Max. RaBitQ пришёл к той же идее "повернуть, затем взять знак" из другой исследовательской области (поиск приближённых ближайших соседей, ANN). TurboQuant - это EDEN с фиксированным в константу масштабом вектора, переупакованный для сжатия KV-cache'а и поиска по скалярному произведению. Связь между этими двумя направлениями стала предметом публичной дискуссии в 2026 году (arXiv 2604.18555 и 2604.19528).

Разделение декодеров

Поворот у всех один и тот же. Различаются декодеры. Одни и те же повёрнутые координаты подаются на три разных варианта восстановления:

  • Декодер среднего (DRIVE): сохраняет $\mathrm{sign}(\Pi x)$ и скаляр $S = |x|^2 / |\Pi x|_1$. Возвращает несмещённую оценку самого $x$.
  • Декодер скалярного произведения (RaBitQ / QJL): сохраняет $\mathrm{sign}(\Pi x)$ и $|x|$. Во время запроса оценивает $\langle q, x\rangle$ по $\langle \Pi q, \mathrm{sign}(\Pi x)\rangle$ с нормирующим скаляром.
  • Декодер MSE (EDEN / TurboQuant): проецирует каждую координату $(\Pi x)_i$ на ближайший из $2^b$ центроидов Lloyd-Max из универсальной кодовой книги, затем применяет $\Pi^\top$ для восстановления $\tilde x$.

Страница следует по ветке MSE - именно она используется для сжатия KV-cache'а.

Проблема смещения и TurboQuant-prod

Оптимальные по MSE квантизаторы занижают скалярные произведения вполне измеримым и устранимым образом: кодовая книга Lloyd-Max хранит условное математическое ожидание каждой ячейки, которое по модулю меньше крайних значений ячейки, из-за чего восстановленный вектор оказывается сжатой версией исходного. Скалярные произведения с таким сжатым вектором получаются меньше истинных. Если смещение представляет собой известную константу, на неё можно просто домножить. Именно эта конструкция обеспечивает несмещённость скалярного произведения в TurboQuant-prod.

Цепочка невязок в §7-8 - это тот же трюк, применённый дважды: сначала квантование смещённым (b−1)-битным кодом, затем квантование невязки несмещённым 1-битным кодом (QJL). Две кодовые книги, одна цепочка, суммарно b бит.

Эмпирические результаты

Полнота (recall) в задаче Needle-in-a-Haystack на модели Llama-3.1-8B-Instruct при 4-кратном сжатии памяти (статья TurboQuant, рис. 4):

Метод NiaH
Полный кэш (FP16) 0.997
SnapKV 0.858
PyramidKV 0.895
KIVI 0.981
PolarQuant 0.995
TurboQuant 0.997

TurboQuant не уступает полной точности при 4-кратном сжатии. SnapKV и PyramidKV (два метода без квантования, которые вместо этого отсекают ключи внимания) теряют 10-14 процентных пунктов. KIVI (целочисленное квантование с поблочными масштабами) теряет 1.6 п. п.

На LongBench-V1: TurboQuant при 3.5 bpv сравнивается со средним значением для полной точности (50.06). При 2.5 bpv (сжатие в 6.4 раза) он отстаёт от полной точности менее чем на ~1% (49.44 против 50.06).

Где это встречается на практике

В ветке Reddit Qwen3.6 + MTP на 12 ГБ упоминаются флаги --cache-type-k turbo4 --cache-type-v turbo3 - это форк llama.cpp (llama-cpp-turboquant), в котором кодовая книга TurboQuant реализована как тип KV-cache'а. В комментарии Still-Notice8155 запускает Qwen3.6 на контексте 128K на GTX 1070 8GB во многом благодаря тому, что turbo4 уменьшает KV-cache с ~720 MB до ~590 MB при 131K. Стандартный llama.cpp поставляет типы KV-cache'а q4_0 / q8_0 / f16; TurboQuant обеспечивает заметно более высокое качество при том же бюджете памяти.

Связи

  • random-rotation-quantization - отдельная страница концепции
  • llm-quantization - квантование весов и KV-cache'а в целом; TurboQuant - одно из направлений
  • kv-cache-sizing - выбор между q4_0 и q8_0; TurboQuant укладывается в тот же объём памяти при строго лучшей полноте
  • reddit-qwen3-6-mtp-12gb - практическое применение turbo4 на GTX 1070
  • arkaung-blog - сайт автора