Если вы зайдете на Reddit или HuggingFace, вы увидите одну и ту же картину: люди соревнуются в том, кто сильнее покалечит модель, чтобы втиснуть её в свои 8 или 12 ГБ видеопамяти.

«Смотрите, я запустил 70 миллиардную модель на RTX 3060! Правда, пришлось использовать 3 битное квантование с размером группы 32, но она работает!»

Да, она работает. Она складывает слова в предложения. Но давайте снимем розовые очки и поговорим о математике. Экстремальное квантование сегодня превратилось в культ слепую веру в то, что магия алгоритмов (AWQ, GPTQ, EXL2) способна бесконечно сжимать информацию без потери интеллекта. Но у физики нейросетей есть предел.

Золотая середина: почему 8 и 6 бит работают идеально

Нужно вспомнить, почему квантование вообще работает. Веса хорошо обученной нейросети имеют нормальное распределение вокруг нуля. Большинство весов близки к нулю, и лишь крошечная доля уходит в хвосты (выбросы).

Когда мы переходим от FP16 к INT8 (8 бит), у нас есть 256 дискретных значений, чтобы описать этот колокол. Для непрерывного пространства нейросети 256 градаций это более чем достаточно. Мы сохраняем и общую массу весов, и, что критически важно, точность в хвостах распределения. Переход на 8 (и даже на 6) бит это почти lossless операция. Мы срезаем математический шум.

Обрыв: переход к 4 и 3 битам

Но дальше начинается жадность.
4 бита это всего 16 значений.
3 бита это 8 значений.

Задумайтесь об этом. Вы берете сложнейшее N-мерное латентное пространство, в котором сеть выучила тончайшие семантические различия между сарказмом и иронией, между квантовой физикой и кулинарией, и заставляете каждый вес в матрице принимать одно из 8 фиксированных значений. Это как попытаться сыграть симфонию на детском пианино с тремя клавишами.

Как это вообще работает? За счет костылей. Алгоритмы вроде GPTQ или AWQ вычисляют, какие веса наиболее важны для активаций, и пытаются сохранить их точность за счет группировки (Group Size = 128 или 64). Мы спасаем каркас, но полностью уничтожаем детали

Иллюзия perplexity: что мы на самом деле теряем

Главный аргумент фанатов экстремального квантования звучит так: "Смотрите на бенчмарки! Perplexity (ошибка предсказания) на 3 битах выросла всего на 0.2 по сравнению с FP16!"

И вот здесь кроется главная ловушка, в которую попала индустрия. Perplexity это метрика в среднем

80% любого текста это вода. Предлоги, союзы, очевидные продолжения фраз. Чтобы предсказать, что после "Девочка пошла домой потому что позвала" идет "мама", модели достаточно 2 бит. Базовая структура языка очень устойчива к шуму, поэтому perplexity почти не страдает.

Но что происходит с оставшимися 20%? Что происходит с редкими знаниями?
Вспомните механику градиентов. Редкие факты (названия специфических библиотек кода, имена ученых, тонкие логические выводы) кодируются микроскопическими сдвигами весов во время обучения.

Когда вы применяете 3 битное квантование, эта тонкая топология просто округляется до нуля (или до ближайшей грубой корзины). Вы получаете лоботомированную модель. Она всё ещё прекрасно болтает о погоде (поэтому вам кажется, что она умная), но когда вы просите её написать сложный python скрипт или решить логическую задачу, она начинает жестоко галлюцинировать. Вы отрезали ей ту часть мозга, которая хранила нюансы.

Жадность: Большой и глупый

Стремление квантовать модели до 4 (а теперь уже и до 3) бит породило абсурдную ситуацию.
Люди берут гигантскую модель на 70 миллиардов параметров (которая весит 140 ГБ в FP16) и сплющивают её до 3 бит, чтобы она влезла в 24 ГБ VRAM.

Но с математической точки зрения, 70B модель в 3 битах это архитектурный инвалид. Её веса настолько искажены ошибкой квантования, что её реальная предсказательная способность падает ниже плинтуса.

Если у вас есть 24 ГБ VRAM, гораздо умнее взять модель на 14B или 32B параметров, но оставить её в 6 или 8 битах. Плотная, математически чистая маленькая модель всегда порвет огромного квантованного франкенштейна в задачах, требующих логики, а не просто генерации связного текста

Налог (Dequantization overhead)

Не будем забывать и про архитектуру GPU. Видеокарта не умеет перемножать 3 битные числа. Современные тензорные ядра работают с FP16/BF16 (или INT8 на новых архитектурах).
Это значит, что при генерации текста ядру CUDA нужно сначала на лету распаковать (де-квантовать) эти 3 битные значения обратно в FP16, и только потом сделать умножение. Мы разгрузили шину памяти (VRAM), но перегрузили ALU (вычислительные блоки) бесполезной работой по распаковке.

Заключение

Инженерия это искусство компромисса, а не фанатизм. Переход с FP16 на 8 битное или 6 битное квантование это здравый смысл, который демократизировал ИИ.

Но то, что происходит сейчас с 4 bit, 3 bit и ниже это чистый фанатизм. Это зависимость от оптимизации ради оптимизации. Мы так увлеклись попытками засунуть слона в багажник легковушки, что не заметили, как в процессе переломали слону все кости. Он влез, да. Но ходить он больше не может.

Комментарии (19)


  1. punzik
    19.05.2026 12:25

    На словах красиво, а есть цифры? Хочется осязаемых метрик, а не размышлений на тему. И результатов тестов тоже хочется. Какие ваши доказательства? (С)


    1. DooKoo2
      19.05.2026 12:25

      Ну например Qwen3.5-9B, тотже показатель PPL лично намеряный мной на корпусе wikitext2 (всего 128 чанков по 512 токенов каждый).

      PPL FP16: 8.0276

      PPL Q4_K_M: 8.0346

      PPL delta: 0,007

      О чем это говорит? Да ни о чем! Полное отсутствие деградации между FP16 и квантовании до 4 бит. НО! Это для корпуса из wikitext2, и вообще ни о чем не говорит для кода, картинок, сложных научных текстов. Но понимание дает.

      Ну и к слову сказать Q3 кванты да, дают деградацию до единицы PPL, что уже заметно скажется на качестве ответа.


      1. punzik
        19.05.2026 12:25

        Ну вот я видел результаты тестов разного квантования, например, у Unsloth. По ним можно сделать вывод, что Q4 совсем незначительно уступает Q8. Но автор говорит, что это всё лоботомия, и кодить скрипты на питоне на Q4 категорически нельзя. Вот хотелось бы доказательств.


        1. DooKoo2
          19.05.2026 12:25

          Кодить на Q4 квантах можно и нужно, разницы в качестве ответов никакой не будет 100%. Потери на Q4 квантах настолько мизерны, что никак не аффектят на workflow. Ну или на крайняк агент сделает на 1 итерацию больше, если вдруг скобку где забудет:)


          1. ontop
            19.05.2026 12:25

            Вот у меня тоже такое впечатление сложилось, читая мануалы тех кто профессионально занимается квантованием моделей. Там смысл не в том, что на 4 битах модель становится тупой с лоботомией. Смысл в 1-2% точности ответа. То есть вероятность ошибки выше. Но! Если это код, модели никогда не пишут код без ошибок.

            Но самое главное, что если вы пишите код, вы никогда не делаете это в один заход. Это всегда 10-15 проходов, и ещё проходы с покрытием тестами, баг треками и так далее. Можно сказать на Qwen3.6 27B писать код можно, точно так же как и на ChatGPT.

            В моем случае последняя выдает 20t/s. Когда Qwen 35B тоже с 4bit (если хуже то только на 5%-10%) выдает 100t/s. Больше скорость больше работы.


  1. DooKoo2
    19.05.2026 12:25

    Да потому что O(n^2) и это даже не сам вес, а также пропускная способность памяти. Меньше вес на бит -> меньше трафика из VRAM до tensor, лучше утилизация самой GPU (любая llm для одного пользователя это memory bound, не compute), больше prefill и decode, счастливее пользователь.

    Да и сейчас никто не квантует в лоб до наилучшего ближайшего значения для группы весов, GPTQ/AWQ, SPINquant, тотже GGUF всем известный - вариантов беречь "интеллект" модели масса, везде свои плюсы и минусы, влоть до банального "огораживания" outliers и наиболее значимых токенов при условно стандартном calibration corpus (типа wikitext2) и проверке на evaluation corpus.

    Показатель PPL не самый лучший, как ты правильно написал, есть ведь еще NLL, KL-divergence.

    Короче квантование тоже отрасль и там есть свои интересные вещи. Конкретно мне понравилось пытаться перенести tradeoff из memory в лишний compute для своего проекта SVSK (уже кидал ссылку, но не сочтите за рекламу https://github.com/Dookoo2/SVSK).

    И дополню еще - рассказы про Q4 квантование - ложь! Нормальный Q4_K_M это чуть ли не 4.5-4.7 бита на вес (можно посмотреть в llama.cpp при загрузке модели - там показывается BPW параметр (bits per weight).


    1. YH7H22 Автор
      19.05.2026 12:25

      Вы пишете: "Рассказы про Q4 квантование - ложь! Нормальный Q4_K_M это чуть ли не 4.5-4.7 бита". А задумывались ли вы, почему разработчики llama.cpp сделали Q4_K_M равным 4.7 бита, а не ровно 4.0?Потому что они, выяснили ровно то, о чем я пишу: чистые 4 бита убивают модель. Чтобы «четверка» хоть как-то сохраняла способность к логике, Илье (автору llama.cpp) и комьюнити пришлось изобрести смешанную точность. Они принудительно оставляют критически важные матрицы (например, v_proj, lm_head или эмбеддинги) в 8 или 16 битах, а в 4 бита жмут только самые большие слои (FFN).

      Вы упоминаете AWQ/GPTQ и калибровку активаций с защитой аутлайеров. Механика там такая: алгоритм прогоняет через модель калибровочный датасет (тот самый WikiText) и смотрит, какие веса генерируют самые большие активации. Их мы оставляем в FP16/INT8, остальное безжалостно рубим в 3-4 бита. Но в этом кроется ошибка! WikiText-2 это википедия. Это усредненный, предсказуемый, грамматически выверенный текст. Калибруя квантование на википедии, мы защищаем аутлайеры, которые важны для написания статей на википедии. А веса, которые отвечали за редкие навыки (написание кода на rust, решение математических уравнений, сарказм), на фоне википедии кажутся алгоритму незначимым шумом, и он спрессовывает их в 3 бита. В итоге мы получаем модель с прекрасным PPL на текстах, которая превратилась в идиота в задачах reasoning'а.


      1. DooKoo2
        19.05.2026 12:25

        Не, просто веса не вся модель, еще эмбеддинги есть, например:) А их не квантуют, активации есть, тоже не квантуют, а все это имеет вес, потому и не все ровно под 4 бит получается. Еще outliers есть, которые квантовать бездумно не стоит


      1. DrrRos
        19.05.2026 12:25

        Илье (автору llama.cpp)

        Который Георгий Герганов (Georgi Gerganov)?


      1. palyaros02
        19.05.2026 12:25

        Прекращайте форматировать текст через LLM хотя бы для собственных коментов. В противном случае можно совсем разлучиться формулировать мысли. А также хорошо бы вывод модели проверять и фактчекать. Кто такой Илья и какое отношение к llama.cpp он имеет? И таки разработчики ли llama.cpp придумали q4 квант?


  1. proxy3d
    19.05.2026 12:25

    Хотя квантование имеет проблемы, есть подходы к уменьшению значений до (-1, 0, 1) в Bonsai языковой модели, которая обучается с нуля. Но сейчас пока не ясно, насколько хорошо они масштабируются. Если окажется, что хорошо, то это сильно сместит акцент в языковых моделях. Насколько я знаю, исследования пока ведутся, у той же Microsoft как раз BitNet (тоже присутствует в видео).


    1. YH7H22 Автор
      19.05.2026 12:25

      Тоже экспериментировал с подобным, только у меня были значения 1, -1


  1. alphyE
    19.05.2026 12:25

    слова красивые, доказательств 0, потери от q4_k_m(~4.5 bpw, один из самых эффективных вариантов на гигабайт памяти) представляются как смерть


  1. slabnoff
    19.05.2026 12:25

    Я проводил эксперименты для себя. Чисто субъективно оценивая результат. Действительно, в обычных диалогах зачастую экстремально квантованная модель не отличается. Но в практическом применении, например opencode анализирующий проект из нескольких десятков файлов начинаются чудеса, вплоть до зацикливания модели. Однако уже квантование iq4 вполне себе работает и в большинстве примененийявляется разумным кокомпромиссом.

    Есть другая похожая/сопутствующая проблема. При попытках ужаться во vram приходится включать квантование kv кэша. И если q8 ещё нормально проходит, то q4 сводит модель на длинных диалогах и задачах с ума. Особенно это касается v кэша, так как ошибка там итерационно накапливается.


  1. Chuvi
    19.05.2026 12:25

    Почему у меня возникло ощущение, что текст писал ИИ? По стилистике, по оборотам, он прям "пахнет" ии-шностью.


  1. Kreatifchk
    19.05.2026 12:25

    Статья не учитывает, что квантование до таких значений выполняется не в лоб, а с применением scale и zero point, слои квантуются не все. А последний аргумент, что мы перегружаем вычислительный блок это вообще что-то. Уже только ленивый за последнее время не сказал, что основной упор сейчас в скорость памяти, а вычислительной мощи нам с избытком хватает.


  1. mazdai19
    19.05.2026 12:25

    В статье как то много эмоций. Но мало цифр.

    Возьмём для примера гемму от Гугла. gguf файл для модели gemma4 e4b с 8 битным квантом весит 8 гигабайт.

    Следующая модель gemma4-26b-a4b с таким же квантом будет весить 27 гигабайт.

    Между этими двумя моделями нету какой то середины, между ними пропасть.

    Но

    Я могу для модели 26b-a4b выбрать 3 битный квант, модель будет весить 13 гигабайт и выдавать комфортные 30 токенов в секунду. Будет ли она тупее чем эта же модель но с 8 битным квантом? Наверняка. Но моя альтернатива это не эта же модель с 8 битным квантом, она у меня две не запустится. А е4b. Будет ли она тупее чем e4b? По моим ощущениям нет. Но мне бы хотелось увидеть тут какие то конкретные пруфы а не эмоции,если я не прав.

    Ну да, квантование это трейдофф, ты получаешь меньшее потребление ресурсов/большую скорость за счёт деградации модели. И? Что в этом ужасного? Что плохого в наличии выбора и возможности гибко настроить что то под свою систему?

    Upd: для меня это примерно как подпилить ручку у молотка, если он в ящик с инструментами не помещается. Ну да это будет уже не тот молоток как он продавался в магазине. Ну да может быть пользоваться им будет не та удобно. Но это мой молоток и мой ящик)


  1. SabMakc
    19.05.2026 12:25

    Взять бенчмарк и прогнать на разных квантах - будет численное подтверждение тезисов статьи. Но тот тест, что мне удалось найти, показывает незначительное падение результатов для ходового Q4_K_M.

    LLM Quantization Comparison


  1. Anton1906
    19.05.2026 12:25

    Большие модели (больше 100B параметров) очень устойчивы к квантованию и в 4-битном кванте способны сохранять качество ответов близкое к исходной модели. А вот малые модели на 4B параметров начинают терять точность уже при 8 битах.