TurboQuant неделю спустя: что показали первые бенчмарки и реализации

Первые независимые тесты подтвердили: INT4-квантование с калибровкой за 3 минуты даёт потерю качества менее 0,5% на MMLU. Реализации уже есть для PyTorch и JAX.

Обложка: TurboQuant неделю спустя: что показали первые бенчмарки и реализации

Прошла неделя с момента публикации TurboQuant — алгоритма Google Research для сжатия KV-кеша LLM до 3–4 бит. Мы уже разбирали, как он работает технически. Теперь — что из этого вышло на практике: первые бенчмарки показали, что Q8 с rotation почти не теряет качество (37,1% vs 37,9% на AIME25), сообщество создало рабочие реализации для llama.cpp, но скорость пока падает в 3–8 раз.

TurboQuant — алгоритм квантизации KV-кеша (Key-Value cache), промежуточного буфера, в котором LLM хранят контекст разговора. Сжимает его с 16 до 3–4 бит на значение без переобучения модели. Статья принята на ICLR 2026 (arXiv:2504.19874).

Ключевые выводы

— Сообщество создало рабочие реализации TurboQuant для llama.cpp, MLX и PyTorch

— Q8 KV-кеш с rotation — почти без потерь (37,1% vs 37,9% F16 на AIME25)

— Q4 пока проблемный для K-тензоров, рекомендуют TQ8 для K + TQ4 для V

— Текущие реализации в 3–8 раз медленнее из-за неоптимизированного поворота вектора

— Главный выигрыш — длинные контексты: 70B-модель может уместить 536K токенов вместо 109K

Первые бенчмарки: что показали числа

Один из первых тестов опубликован на r/LocalLLaMA — результаты на математическом бенчмарке AIME25 (чем выше — тем лучше). Связанный PR в llama.cpp подтверждает данные:

  • F16 KV-кеш (без сжатия): 37,9%
  • Q8_0 без rotation: 31,7% — потеря 6,2 п.п.
  • Q8_0 с rotation (TurboQuant): 37,1% — почти полное восстановление
  • Q4_0 без rotation: 2,0% — катастрофическая деградация
  • Q4_0 с rotation: 21,7% — значительное улучшение, но всё ещё далеко от F16

Вывод: при 8-битной квантизации KV-кеша rotation практически полностью компенсирует потерю качества. При 4-битной — улучшение радикальное (с 2% до 21,7%), но до lossless ещё далеко. Безопасный минимум на сегодня — Q8 с rotation для K-тензоров и Q4 для V-тензоров.

Проблема K-тензоров: не всё сжимается одинаково

Разработчик inference-движка Llaminar провёл детальный анализ cosine similarity между сжатым и эталонным FP32-выходом на нескольких моделях. Главный вывод: K-тензоры (Key) и V-тензоры (Value) ведут себя при квантизации принципиально по-разному.

V-тензоры хорошо переносят 4-битное сжатие. K-тензоры — нет. Причина: K-тензоры имеют значительно более высокие нормы векторов по сравнению с V. Измерения показывают соотношение K/V-норм до 100–180x у современных моделей (Qwen2.5, GPT-2). Ошибка квантизации масштабируется с квадратом нормы, поэтому K-тензорам нужно больше бит для сохранения точности.

Практическая рекомендация: TQ8 для K-тензоров + TQ4 для V-тензоров. Это даёт хорошую экономию памяти при минимальной потере качества — компромисс, который подтверждён и бенчмарками, и cosine similarity анализом.

Где TurboQuant действительно меняет правила

Главный выигрыш — не скорость генерации (она пока даже падает), а объём контекста, который помещается в память. Расчёт из обсуждения llama.cpp для модели 70B Q4_K_M с 34 ГБ свободной VRAM:

  • FP16 KV-кеш: ~109K токенов
  • Q8 KV-кеш: ~218K токенов (2x)
  • TurboQuant TQ3: ~536K токенов (5x)

Это значит: одна видеокарта с 48 ГБ памяти может работать с контекстом, который раньше требовал 3–4 карты. Для владельцев MacBook с Apple Silicon — локальная модель на 16 ГБ RAM теперь «видит» в 3–5 раз больше текста при той же скорости.

Реализации TurboQuant: кто уже попробовал

Официального кода от Google нет (ожидается во 2-м квартале 2026). Но сообщество уже создало рабочие реализации, а в vLLM открыт активный PR на нативную интеграцию:

  • llama.cpp — минимум 3 независимых форка. Обсуждение интеграции в основную ветку. Флаги зависят от форка: --cache-type-k turbo3 (TheTom) или tq3_0 (другие форки)
  • MLX — адаптация для Apple Silicon (M1–M5)
  • PyTorch + Triton — reference-реализации для CUDA. Один разработчик получил побитово идентичный выход на Gemma 3 4B при 2-битной точности на RTX 4090
  • vLLM — активный PR на нативную интеграцию TurboQuant как опции KV-кеша

Главная проблема текущих реализаций — скорость. Операция поворота вектора (rotation) пока не оптимизирована: сложность O(d²) вместо O(d log d). Замедление составляет 3–8x по сравнению с обычным Q8 KV-кешем. Разработчики работают над оптимизацией через преобразование Уолша–Адамара (Walsh-Hadamard transform), которое снизит сложность до O(d log d).

Реализации TurboQuant очень зависят от качества кода. Я видел vibecoded-реализации со скрытыми багами, которые убивали производительность.
DistanceSolar1449разработчик, r/LocalLLaMA

Реакция рынка

В день публикации TurboQuant 25 марта 2026 года акции производителей памяти снизились: SK Hynix потеряла 6,2%, Samsung — 4,8%, Micron — 3,4%. Логика рынка: если inference требует в 6 раз меньше памяти — спрос на HBM снижается. Но это упрощение: TurboQuant сжимает только KV-кеш, а не веса модели, и дешёвый inference увеличивает спрос на LLM в целом.

Что это значит для вас

Если вы запускаете LLM локально через llama.cpp, Ollama или LM Studio — в ближайшие месяцы ожидайте нативную поддержку TurboQuant. Практический эффект:

  • Длинные контексты без нового железа — ваша текущая видеокарта или MacBook сможет работать с 3–5x большим контекстом
  • Оптимальная конфигурация — TQ8 для K + TQ4 для V. Чистый TQ4 для обоих пока даёт заметную деградацию на K-тензорах
  • Скорость пока не выигрыш — текущие реализации замедляют генерацию в 3–8 раз. Ждите оптимизированных ядер с Walsh-Hadamard transform
  • Комбинируйте с квантизацией весов — TurboQuant сжимает KV-кеш, а не веса. Q4-модель + TQ4-кеш = максимальная экономия памяти
Частые вопросы
1
Чем TurboQuant отличается от обычной GGUF-квантизации?

GGUF-квантизация (Q4, Q5, Q8) сжимает веса модели — параметры, которые не меняются после загрузки. TurboQuant сжимает KV-кеш — промежуточные вычисления, которые создаются на лету во время разговора. Эти подходы дополняют друг друга: можно использовать Q4-модель и TurboQuant-кеш одновременно для максимальной экономии памяти.

2
TurboQuant — это lossless?

При 8-битной квантизации с rotation — практически да: 37,1% vs 37,9% на AIME25. При 4-битной — нет: K-тензоры теряют точность из-за высоких норм векторов, особенно на моделях с 128-мерными head dimensions. Рекомендуемый компромисс: TQ8 для K-тензоров, TQ4 для V-тензоров — это даёт сжатие ~3x при минимальных потерях.

3
Когда TurboQuant появится в llama.cpp и Ollama?

Рабочие форки llama.cpp уже существуют, обсуждение интеграции в основную ветку идёт активно. Официальный код от Google ожидается во 2-м квартале 2026. Нативная поддержка в llama.cpp и downstream-проектах (Ollama, LM Studio) — вероятно, в течение 2–3 месяцев. В vLLM уже подан PR на интеграцию.

4
Стоит ли ждать TurboQuant или покупать больше VRAM?

Если вам нужны длинные контексты (100K+ токенов) — ждать. TurboQuant даст 3–5x больше контекста на том же железе бесплатно. Если вам нужна скорость генерации — больше VRAM и более быстрая память всё ещё важнее. TurboQuant в текущих реализациях замедляет генерацию в 3–8 раз, хотя это будет оптимизировано.

Выводы

TurboQuant — не серебряная пуля, но значимый шаг для локального inference. Rotation при Q8 KV-кеше работает почти без потерь. Q4 пока проблемный для K-тензоров, но V-тензоры сжимаются хорошо. Главный практический выигрыш — длинные контексты на существующем железе без покупки новых карт.

Скорость текущих реализаций — слабое место, но алгоритм публичен всего неделю, и оптимизации уже в работе. Через пару месяцев TurboQuant, скорее всего, станет стандартной опцией в llama.cpp и его производных.

Ссылки: Блог Google Research | Обсуждение в llama.cpp | Наш разбор алгоритма

Рекомендуем