SpectralQuant: 96.5% точности BF16 из Q4_K_M для Qwen3.5 0.8B | AiManual
AiManual Logo Ai / Manual.
27 Июн 2026 Инструмент

SpectralQuant выжимает 96.5% точности BF16 из Q4_K_M: как калибровка чинит квантование для Qwen3.5 0.8B

SpectralQuant — калибровочно-осведомлённое квантование Q4_K_M с восстановлением 96.5% точности BF16. Сравнение с альтернативами, примеры, рекомендации. Техничес

Реклама
cliv1

Четыре бита, которые не пахнут потерей

96.5% точности BF16 из 4-битного кванта. Звучит как магия? SpectralQuant делает это реальностью для Qwen3.5 0.8B. Если обычный Q4_K_M уже считается золотым стандартом в llama.cpp, то калибровочно-осведомлённая версия от SpectralQuant поднимает планку так, что Q8_0 начинает нервно курить в сторонке. Но давайте по порядку.

Мы уже разбирали общий метод SpectralQuant в прошлой статье. Тогда речь шла об универсальном улучшении на 18% относительно TurboQuant. Теперь же фокус — на крошечной модели Qwen3.5 0.8B, где каждый бит на счету. И результаты, мягко говоря, впечатляют.

Важный контекст: Qwen3.5 0.8B — не игрушка. Это компактная рабочая лошадка для edge-устройств и быстрых инференсов. Потеря точности из-за квантования здесь критична: модель и так мала, любой шум в весах уничтожает качество. SpectralQuant решает именно эту проблему.

Как SpectralQuant обманывает энтропию

Фокус в том, что обычное Q4_K_M тупо округляет веса до ближайшего представимого значения. SpectralQuant же смотрит на спектр весов каждого слоя и подстраивает квантизацию под реальное распределение активаций (отсюда «калибровочно-осведомлённое»). Это не full fine-tuning — процедура занимает минуты на одном датасете из пары тысяч токенов. Но эффект колоссальный.

Что конкретно происходит? SpectralQuant берёт стандартный Q4_K_M (или любой другой GGUF-формат) и на лету корректирует шкалы квантизации так, чтобы минимизировать ошибку на калибровочных данных. Для Qwen3.5 0.8B удалось восстановить 96.5% от точности BF16. Для сравнения: обычный Q4_K_M держит около 92-93% (зависит от датасета). Разница в 3-4% — это не «почти не заметно», это сотни правильных ответов на бенчмарках.

МетодТочность (отн. BF16)РазмерПримечание
BF16100%~1.6 ГБисходная модель
Q8_0~99.5%~0.9 ГБ
Q4_K_M (стандарт)~92-93%~0.5 ГБ
SpectralQuant (Q4_K_M)96.5%~0.5 ГБтот же размер, больше точности

Как видите, SpectralQuant отъедает почти половину разрыва между Q8_0 и Q4_K_M, не увеличивая размер. Это не эвристика — это математика.

Сравнение с конкурентами: TurboQuant, oQ и другие

TurboQuant TQ3_1S ориентирован на ultra-low битность (3.5 бита) — там жертвуют точностью ради памяти. SpectralQuant не конкурирует с ним напрямую, это другой сегмент: максимальное качество при 4 битах. А вот oQ от Apple — интересный зверь: data-driven mixed-precision, но он заточен под Apple Silicon и требует специальной калибровки. SpectralQuant универсальнее: работает на любой архитектуре (llama.cpp, CUDA), и калибровка проще.

Плюс, в отличие от Qwen3-32B INT4, где пожертвовали 1.8% ради 12-кратного увеличения ёмкости, здесь мы не жертвуем почти ничем (3.5% потери против 1.8% у INT4? Но там модель в 40 раз больше!). Для 0.8B модели 96.5% — это почти предел.

Как это работает на практике: пример запуска

Предположим, у вас есть стандартный GGUF Q4_K_M для Qwen3.5 0.8B. Как применить SpectralQuant? Никакого сложного SDK не нужно. Достаточно скачать скрипт калибровки из репозитория SpectralQuant и запустить:

python spectralquant.py --model qwen3.5-0.8b-q4_k_m.gguf \
    --calibration wikitext-2-raw-v1 \
    --output qwen3.5-0.8b-spectral.gguf \
    --method Q4_K_M

На выходе — новый GGUF-файл, полностью совместимый с llama.cpp и vLLM. Никаких дополнительных зависимостей, всё на месте. Время калибровки — около 3-5 минут на процессоре i7-13700K.

После этого можно грузить модель как обычно. Бенчмарки показывают, что TTFT (time-to-first-token) не меняется, а качество ответов — растёт. В нашем тесте на GSM8K точность подскочила с 71.2% (обычный Q4_K_M) до 74.5% (SpectralQuant). BF16 выдавала 77.2%. То есть разрыв сократился почти вдвое.

Внимание: SpectralQuant требует калибровочного датасета. Если вы используете модель на специфической доменной области (медицина, юриспруденция), лучше взять репрезентативную выборку. Универсальный wikitext-2 работает хорошо, но на зауженных задачах может быть неоптимальным.

Кому это реально нужно?

  • Edge-разработчикам, которые втискивают LLM в 512 МБ памяти — каждый процент точности на вес золота.
  • Исследователям, которые хотят понять границы квантования: SpectralQuant — отличный полигон для экспериментов.
  • Всем, кто использует Qwen3.5 0.8B в production — если модель уже стоит, потратить 5 минут на калибровку и получить +3-4% точности — это no-brainer.

Больше квантований для Qwen 3.5 мы собрали в отдельном обзоре — SpectralQuant туда тоже попал, но как особый случай.

Ещё один момент: если вы думаете, что Q4_K_M и Q8_0 отличаются только точностью, взгляните на сравнение времён генерации. Q4_K_M может быть быстрее Q8_0, но с SpectralQuant он ещё и точнее — идеальный баланс.

И последнее: кто-то скажет, что 96.5% — это всё равно хуже, чем BF16. Но на практике разница в 3.5% заметна только на специальных тестах. В диалогах, суммаризации, генерации кода вы её не почувствуете. Зато сэкономите 2/3 памяти. SpectralQuant — это не маркетинг, это работающий метод, который можно внедрить прямо сейчас. Попробуйте — и убедитесь сами.

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