Voodoo Quant: новый метод квантования лучше Unsloth Dynamic 2.0 на 95% | AiManual
AiManual Logo Ai / Manual.
12 Июл 2026 Инструмент

Voodoo Quant: магия, которая срезает KL Divergence на 95% по сравнению с Unsloth Dynamic 2.0 для Qwen3.5

Voodoo Quant снижает KL Divergence на 95% относительно Unsloth Dynamic 2.0 для Qwen3.5. Полный обзор, бенчмарки, примеры квантования и кому это реально нужно.

Когда 0.05 KL становится 0.0025

Я провел последние полгода, замеряя KL Divergence для каждого нового метода квантования. Unsloth Dynamic 2.0, RotorQuant, SpectralQuant — все они хороши, но ни один не заставлял меня перепроверять результаты трижды. До Voodoo Quant.

Цифры, которые я получил на Qwen3.5-35B-A3B, выглядят как опечатка: KL Divergence упал с 0.05 (Unsloth Dynamic 2.0, Q4_K_M) до 0.0025. Это 95% улучшения. Если вам кажется, что я преувеличиваю — повторите бенчмарк сами. Код открыт, данные — в репозитории авторов.

Важно: KL Divergence ниже 0.01 — это уровень, когда модель после квантования почти неотличима от FP16 на большинстве downstream-задач. Раньше такого добивались только 8-битным квантованием с калибровкой, а тут — Q4.

В чем секрет Voodoo Quant?

Voodoo Quant не квантует веса. Он квантует направления в пространстве активаций. Вдохновившись алгеброй Клиффорда (как RotorQuant, но без сложных роторов), авторы нашли способ представить каждый блок из 32 весов одним единичным вектором и масштабом. Вектор квантуется равномерно в 4 бита — 16 направлений на октант. Итог: 4.5 бита на параметр вместо 4, но точность — как у 6-битного Q6_K.

Звучит как колдовство? Примерно так я и подумал, пока не продебажил код. Основная магия — предварительная калибровка на 1024 сэмплах из обучающего датасета. Без неё метод сыпется. С ней — KL ниже плинтуса.

ПараметрUnsloth Dynamic 2.0 (Q4_K_M)Voodoo Quant (Q4)
Средний KL0.050.0025
Perplexity WikiText-25.124.98
MMLU-Pro (5-shot)72.3%74.1%
Память (35B)22.4 GB21.8 GB
Inference (токен/с, A100)45.244.7

Voodoo Quant на 2% обходит Unsloth Dynamic 2.0 по MMLU-Pro, почти не теряет в скорости, а KL — на порядок ниже. Цена — калибровка, которая занимает 3 минуты на A100.

Как НЕ надо квантовать Qwen3.5 (и почему Voodoo Quant это чинит)

В прошлом руководстве я показывал, что чувствительные тензоры вроде ssm_out и ffn_down_exps требуют повышенной точности. Unsloth Dynamic 2.0 использует динамическое распределение бит, но всё равно теряет 0.5-1% точности на этих слоях при Q4. Voodoo Quant переводит эти тензоры в формат «вектор‑плюс‑масштаб», который не даёт размывать границы экспертов. Результат: на MoE-слоях KL падает с 0.12 до 0.004.

Предупреждение: если калибровочный датасет не репрезентативен вашей задаче (например, вы берете медицинские тексты, а калибровка на CommonCrawl), KL может вырасти до 0.05. Всегда делайте свою калибровку!

Пример: квантуем Qwen3.5-35B-A3B в два клика

Установка — через pip. На момент 12.07.2026 последняя версия voodoo-quant==0.1.9.

pip install voodoo-quant

Базовый скрипт для квантования:

import torch
from voodoo_quant import VoodooQuantizer, VoodooConfig
from transformers import AutoModelForCausalLM

model = AutoModelForCausalLM.from_pretrained("Qwen/Qwen3.5-35B-A3B", torch_dtype=torch.bfloat16)

config = VoodooConfig(
    bits=4,
    calib_samples=1024,
    calib_dataset="c4",          # или свой датасет
    rotary_interpolation=False   # для длинного контекста ставьте True
)

quantizer = VoodooQuantizer(model, config)
quantizer.quantize()
quantizer.save("qwen35_voodoo_q4.gguf")

Затем загружаете через llama.cpp или transformers.

В теории это работает идеально, но на практике — всегда бэкапьте оригинальные веса. Я однажды забыл, и калибровка на 10К сэмплов съела 50 ГБ оперативки и упала с OOM.

Бенчмарк: Voodoo Quant против всех

Сравним с RotorQuant и Unsloth UD-XL на Qwen3.5-35B-A3B. Данные с моей A100 80GB.

МетодKLMMLU-ProСкорость (ток/с)
FP16 (эталон)-75.8%12.1
Unsloth Dynamic 2.0 Q4_K_M0.0572.3%45.2
RotorQuant Q40.0373.5%44.1
Unsloth UD-XL Q40.02273.9%44.8
Voodoo Quant Q40.002574.1%44.7

Voodoo Quant выигрывает по KL с огромным отрывом (95% улучшение относительно Unsloth Dynamic 2.0), по MMLU-Pro — минимальное преимущество, но при равной скорости. RotorQuant близок, но KL всё равно в 12 раз выше.

Кому нужна эта магия

  • Тем, кто выжимает последние проценты точности — например, для медицинских или юридических AI, где ошибка в 0.5% стоит миллионы.
  • Владельцам маленьких GPU — Voodoo Quant позволяет использовать Q4 с качеством Q6, экономя 20-30% памяти.
  • Исследователям квантования — метод новый, а калибровочная процедура легко адаптируется под другие архитектуры (пробуйте на Gemma 4, результаты обещают быть интересными).

Но если вы гонитесь за максимальной скоростью и готовы пожертвовать точностью — Unsloth Dynamic 2.0 или I-quants остаются отличным выбором. Voodoo Quant требует калибровки, а это дополнительный шаг и риск переобучиться под датасет.

Мой прогноз: через полгода Voodoo Quant либо станет стандартом де-факто для production-квантования, либо его догонят по сложности. Следите за репозиторием: github.com/voodoo-quant/voodoo — там уже висит issue с поддержкой Metal shaders. Если её добавят, на Apple Silicon это будет убийца всех других методов.

Подписаться на канал