Глава 5 — Демистификация квантизации
Пятый пост поглавного разбора LLM Primer VI: Scaling AI Systems. Глава, объясняющая, почему 70B-модель выживает 4-битную квантизацию, а 1B-модель — нет, и как выбрать рецепт.
Зачем эта глава существует
Декодинг ограничен пропускной способностью памяти; валюта пропускной — байты на вес. 70B-модель в BF16 читает 140 ГБ на прямой проход. Та же модель в INT4 читает 35 ГБ. Арифметика идентична. Узкое место сдвигается в четыре раза. Одного этого наблюдения достаточно, чтобы квантизация превратилась из исследовательской любопытной вещи в путь развёртывания по умолчанию для продакшен-инференса. Глава 5 обходит механику — что именно означает точность, почему агрессивная квантизация не разрушает большую модель так, как она разрушает маленькую, что на самом деле делают AWQ, GPTQ, SmoothQuant и GGUF под капотом, и где квантизация перестаёт быть безопасной и начинает молча ухудшать качество.
5.1 Почему большие модели выживают 4 бита, а маленькие — нет
Три наблюдения лежат в основе квантизации крупных моделей. Первое: информационное содержание отдельного веса в большом трансформере мало — предиктивное поведение возникает из коллективного взаимодействия миллиардов весов, чьё распределение резко пиково около нуля. Округление веса с 0,0031 до 0,003 не меняет ничего, что следующий слой сможет обнаружить. Второе: обученные трансформеры сидят внутри плоской области параметрического пространства, где много близких конфигураций дают почти идентичные выходы, и для моделей выше примерно 30B область достаточно широка, чтобы поглотить 4-битное возмущение с деградацией MMLU меньше одного пункта. Третье: смешанная точность оставляет чувствительные слои — attention-скоры, layer norms, финальные logits — в BF16, пока основные линейные проекции падают в INT4. 70B-модель в INT4 эмпирически почти неотличима от своей же BF16; 1B-модель в INT4 заметно хуже, потому что плоская область меньше и возмущение выталкивает модель из неё. Наивная интуиция — «маленькие модели должны квантизоваться легче» — ровно наоборот.
5.2 AWQ, GPTQ, SmoothQuant и GGUF делают разные вещи
GPTQ обходит матрицу весов колонка за колонкой, выбирает уровни квантизации так, чтобы минимизировать выходную ошибку против небольшого калибровочного набора, и обновляет ещё не квантизованные колонки, чтобы поглотить остаток, — гессиан-аппроксимированная компенсация, удерживающая выход слоя близко к оригиналу. AWQ идёт от другого наблюдения: аутлайеры активаций так же важны, как и аутлайеры весов, поэтому увеличьте масштабы значимых каналов весов перед квантизацией (и уменьшите активации, чтобы компенсировать), — это распределяет уровни квантизации по диапазону, который эти веса действительно занимают. SmoothQuant атакует сторону активаций: у LLM есть горстка каналов с гигантскими магнитудами, которые ломают наивную квантизацию активаций, и он мигрирует эту магнитуду из активаций в веса по каналам, позволяя W8A8 приземлиться с ничтожной потерей. GGUF — это скорее файловый формат, чем один алгоритм: вложенное super-block масштабирование в стиле Q4_K_M, используемое llama.cpp для CPU и edge-инференса, экологически важное, но редко применяемое на дата-центровых GPU.
5.3 Лестница безопасности и дисциплина калибровки
Эмпирическая лестница безопасности чиста. BF16 → FP8 почти всегда без потерь и — дефолт для продакшена. BF16 → INT8 без потерь выше ~7B с компетентным алгоритмом. BF16 → INT4 без потерь выше ~30B с AWQ или GPTQ; ниже 13B стоит одного-трёх пунктов MMLU; ниже 7B стоит пяти и более без quantization-aware training. INT3 и ниже — экспериментально. Две дисциплины определяют, держится ли лестница в продакшене. Первая — калибровка на правильном распределении: 128–512 репрезентативных примеров из того же распределения, из которого пойдёт продакшен-трафик, повторяемая каждые шесть-двенадцать месяцев по мере дрейфа нагрузки. Вторая — task-side оценка: стандартные бенчмарки могут пропустить сдвиги качества на длинном хвосте возможностей модели — редкие факты, многошаговое рассуждение, миноритарный языковой код, — и агрессивная квантизация должна валидироваться на срезе реального продакшен-трафика, оценённого по измерениям, важным для приложения.
Что подготавливает глава 5
Квантизация ужимает байты на вес. Следующая глава ужимает количество весов напрямую. Глава 6 обходит обрезку — включая структурную разрежённость 2:4, которую Hopper ускоряет нативно, — и дистилляцию знаний, где поведение большого учителя переносится в меньшего ученика, который работает дешевле от начала до конца. Вместе три компрессии (квантизация, обрезка, дистилляция) образуют инструментарий на стороне модели для снижения бремени пропускной способности, названного в главе 1. Глава 7 затем переходит к рычагу времени исполнения — батчингу, — превращающему новообретённый запас в пропускную способность для параллельных пользователей.
Дальше — Глава 6: Обрезка и дистилляция знаний. Две модельные компрессии, атакующие количество весов напрямую, а не их ширину.
llm-compressor, рецепт NVIDIA ModelOpt для FP8 и NVFP4, исполняемый код W4A16 GPTQ и врезки In Plain English о голосовании комитета для квантизации и о FP8-против-INT4 в продакшене. LLM Primer VI на Amazon →