← Resources
By Ren Sugaya
— Performance Engineer, GPU & Inference
·
· INSIGHT
Квантизация LLM: GGUF, Q4 vs Q8 и качество — простыми словами
Квантизация уменьшает размер LLM, сохраняя веса с меньшей точностью, что сокращает потребление VRAM примерно вчетверо при 4-битной квантизации. Это руководство объясняет расчёт VRAM, расшифровывает названия квантизаций GGUF вроде Q4_K_M, сравнивает GGUF с GPTQ и AWQ и показывает, где качество действительно ухудшается.
Что такое квантизация и почему она важна
Квантизация снижает числовую точность, с которой хранятся веса модели — как правило, с FP16 (16 бит, 2 байта на вес) до 8 или 4 бит. Поскольку объём памяти растёт линейно с числом бит на вес, 4-битный формат использует примерно вчетверо меньше VRAM, чем FP16. Это также ускоряет инференс, так как генерация токенов ограничена пропускной способностью памяти, а не только вычислительной мощностью.
Расчёт размера прост: байты ≈ (параметры × бит-на-вес) ÷ 8. Модель 8B в FP16 занимает около 16 ГБ; при 4-битной квантизации — примерно 4,5 ГБ. Именно эта разница превращает модель, которой нужна GPU дата-центра, в модель, работающую на ноутбуке.
GGUF — это формат файла, а не метод
GGUF — это однофайловый формат, хранящий квантизованные веса вместе с метаданными модели (токенизатор, архитектура, гиперпараметры). Это преемник GGML из проекта llama.cpp, оптимизированный для CPU, Apple Silicon (Metal) и смешанного офлоада CPU/GPU — именно поэтому он доминирует в локальном и ноутбучном инференсе через llama.cpp, Ollama и LM Studio.
Уровень квантизации указан в имени файла. Число — это среднее количество бит на вес; `_K` означает k-квантизации (современный метод суперблоков с дважды квантизованными масштабирующими коэффициентами и распределением бит с учётом важности слоёв); `_S`, `_M`, `_L` — малый, средний и большой варианты. `_M` избирательно сохраняет чувствительные слои — attention и output — с более высокой точностью, поэтому Q4_K_M превосходит равномерную 4-битную квантизацию.
Q4 vs Q5 vs Q8: размер и качество в цифрах
Рецензируемая оценка на Llama-3.1-8B делает компромиссы наглядными (размеры приведены для этой модели; соотношения обобщаются). По сравнению с базовым значением перплексии FP16 около 7,32 (чем ниже, тем лучше):
- Q8_0 — 8,5 бит/вес, ~7,95 ГиБ, перплексия 7,33: практически без потерь.
- Q6_K — 6,56 бпв, ~6,14 ГиБ, перплексия 7,35.
- Q5_K_M — 5,70 бпв, ~5,33 ГиБ, перплексия 7,40.
- Q4_K_M — 4,89 бпв, ~4,58 ГиБ, перплексия 7,56: практический оптимум, менее полупроцента от базовой линии.
- Q3 и ниже — резкое, стабильное ухудшение, особенно на задачах рассуждения.
Диапазон 4–5 бит — это безопасная зона. Ниже 3 бит нужны квантизации с матрицей важности (IQ), которые используют калибровочные данные, чтобы направлять точность туда, где она важнее всего — применимо, но лишь как крайняя мера при жёстких ограничениях памяти.
GGUF vs GPTQ vs AWQ
GGUF — не единственный вариант; правильный выбор зависит от среды выполнения.
- GGUF: создан для CPU, Mac и смешанного офлоада. Выбирайте его для локального и настольного инференса.
- GPTQ: посттренировочная, основанная на калибровке; использует информацию второго порядка для минимизации ошибки по слоям. Наиболее точная вес-за-вес при заданной разрядности, но медленная в подготовке и ориентированная на обслуживание на GPU (vLLM, TGI, TensorRT-LLM).
- AWQ: защищает примерно 1% наиболее значимых весов по величинам активаций; быстрее в подготовке, чем GPTQ, и оптимизирована под GPU при 4 битах.
- bitsandbytes: квантизует на лету при загрузке, без предварительно квантизованного чекпоинта и калибровки — самый простой путь, широко используемый для дообучения QLoRA.
Практическое разграничение: GGUF для локального и ноутбучного использования, AWQ или GPTQ для пропускной способности на GPU-сервере.
Сколько качества теряется на самом деле?
Меньше, чем большинство опасается при 4 битах, и больше, чем ожидают ниже 3 бит. В оценке Llama-3.1-8B Q8 укладывался в пределы погрешности полной точности, Q4_K_M потерял менее полупроцента на средних бенчмарках, а резкое падение наступило при 3 битах, причём наиболее заметным ухудшение было в задачах интенсивного рассуждения — например, в школьной математике. Помните, что абсолютные значения перплексии и размеров зависят от конкретной модели — процентные соотношения обобщаются, но всегда проверяйте цифры для своей базовой модели. И резервируйте VRAM сверх размера файла: KV-кэш и примерно 10–15% накладных расходов фреймворка тоже требуют запаса.
Квантизация в osFoundry
Выбор квантизации обычно предполагает понимание бит на вес, выделение места под KV-кэш и поиск среди стены загадочных суффиксов GGUF того единственного файла, который поместится без сбоев. Локальный инференс osFoundry избавляет от этого шага: он определяет доступную память и автоматически выбирает подходящую квантизацию — Q4_K_M при ограниченной VRAM, Q5_K_M или Q8_0 при наличии запаса — чтобы модель работала с максимальным качеством, которое поддерживает ваше оборудование. Каталог показывает только совместимые сборки, а не все варианты, и плавно переключается на более лёгкую квантизацию, если более тяжёлая не вмещается. Вы получаете оптимальный баланс размера и качества, как при ручном выборе GGUF, без необходимости понимать, что означает Q4_K_M.
Frequently asked questions
- Что такое квантизация LLM простыми словами?
- Это хранение весов модели с меньшей числовой точностью — например, 4 бита вместо 16 — чтобы уменьшить её размер. Поскольку объём памяти растёт с числом бит на вес, 4-битная квантизация использует примерно вчетверо меньше VRAM, чем FP16, и работает быстрее, при небольшой и, как правило, приемлемой потере качества.
- Что означает аббревиатура GGUF и что это такое?
- GGUF — это однофайловый формат модели из проекта llama.cpp (преемник GGML), объединяющий квантизованные веса с метаданными модели. Он оптимизирован для CPU, Apple Silicon и смешанного CPU/GPU-инференса, поэтому является стандартом для локальных инструментов вроде llama.cpp, Ollama и LM Studio. Это формат файла, а не алгоритм квантизации.
- В чём разница между Q4, Q5 и Q8?
- Число — это среднее количество бит на вес: Q8 крупнее и точнее Q5, который крупнее Q4. Для типичной модели на 8B параметров Q8 практически без потерь занимает около 8 ГБ, Q5_K_M немного уступает — около 5,3 ГБ, а Q4_K_M — оптимальный баланс размера и качества: около 4,6 ГБ при потере менее полупроцента.
- Какую квантизацию GGUF мне использовать?
- Q4_K_M в большинстве случаев — это лучший баланс размера и качества и стандартная отправная точка. Переходите на Q5_K_M или Q8_0, если есть запас VRAM и нужна большая точность, и опускайтесь ниже Q4 (используя IQ-квантизации с матрицей важности) только при действительно жёстких ограничениях памяти, поскольку качество резко падает при 3 битах и ниже.
- Сколько качества теряется при 4-битной квантизации?
- Удивительно мало. По данным рецензируемой оценки Llama-3.1-8B, Q4_K_M показал результат менее чем на полпроцента ниже базового значения полной точности на средних бенчмарках. Заметная деградация начинается при 3 битах, особенно в задачах рассуждения и математики. Точные цифры зависят от модели, но диапазон 4–5 бит повсеместно считается безопасной зоной.
- GGUF vs GPTQ vs AWQ — что выбрать?
- GGUF для локального инференса, на ноутбуке и Apple Silicon через llama.cpp или Ollama. GPTQ и AWQ хранят GPU-оптимизированную компоновку и являются лучшим выбором для пропускной способности на GPU-сервере с vLLM или TGI — AWQ быстрее готовится, GPTQ часто точнее вес-за-вес. bitsandbytes проще всего, поскольку квантизует при загрузке без калибровки.
- Как рассчитать необходимый объём VRAM для квантизованной модели?
- Используйте формулу: байты ≈ (параметры × бит-на-вес) ÷ 8. При 4-битной квантизации это около 0,5–0,6 ГБ на миллиард параметров, то есть модель 8B займёт около 4,5 ГБ. Добавьте запас под KV-кэш и примерно 10–15% накладных расходов фреймворка — потребление памяти при работе всегда превышает размер файла на диске.
Sources