квантизация модели
Квантизация модели — техника сжатия нейронных сетей, при которой числовые представления весов и/или активаций переводятся из высокоточного формата (float32, float16) в более компактный (int8, int4, даже int2). Это снижает потребление памяти, ускоряет инференс и открывает возможность запускать крупные модели на устройствах с ограниченными ресурсами.
Зачем нужна квантизация
Модель LLaMA 3 70B в формате float16 занимает около 140 GB — это требует минимум двух GPU A100 80GB. INT4-квантизация снижает размер до ~35 GB, позволяя запустить её на одном GPU. Квантизация также ускоряет умножение матриц: INT8-операции быстрее fp16 на большинстве современных ускорителей (NVIDIA Turing, Ampere, Ada Lovelace имеют специализированные INT8/INT4 тензорные ядра).
Типы квантизации
Post-Training Quantization (PTQ)
Применяется к уже обученной модели без дополнительного обучения. Самый быстрый путь к сжатию. INT8 PTQ (через bitsandbytes, GPTQ) даёт минимальную деградацию качества. INT4 PTQ требует более аккуратной калибровки.
Quantization-Aware Training (QAT)
Квантизация имитируется в процессе обучения (fake quantization): модель учитывает ошибки округления при обновлении весов. Даёт лучшее качество, чем PTQ, но требует полного или частичного переобучения. Используется производителями железа (Qualcomm, ARM) для edge-развёртывания.
Ключевые форматы и методы
GPTQ
Метод PTQ, специально разработанный для генеративных трансформеров. Квантизирует матрицы весов до INT4 (или INT8) с использованием second-order информации (гессиана) для минимизации ошибки. Требует калибровочного датасета (~128 сэмплов). Реализован в AutoGPTQ и интегрирован в Hugging Face Transformers.
AWQ (Activation-aware Weight Quantization)
Защищает «важные» веса от агрессивного квантования, опираясь на анализ активаций. Показывает лучшее качество, чем GPTQ на INT4, особенно для малых моделей. Реализован в autoawq.
GGUF / llama.cpp
Формат и движок для CPU-инференса (и GPU-offloading). Поддерживает квантизацию Q2_K, Q4_K_M, Q5_K_M, Q8_0 и другие. Q4_K_M — популярный баланс между размером и качеством. Позволяет запускать 7B-модели на ноутбуке без GPU.
bitsandbytes
Библиотека NVIDIA для INT8 и NF4 (4-bit NormalFloat) квантизации. Интегрирована в Hugging Face Transformers через параметр load_in_8bit/load_in_4bit. Лежит в основе QLoRA.
Компромисс: качество vs производительность
INT8: деградация качества менее 1% на большинстве задач, ускорение 1.5–2x, сжатие 2x. INT4: деградация 1–5% (зависит от модели и задачи), ускорение 2–4x, сжатие 4x. INT2: значительная деградация, редко используется в практике. Крупные модели (70B+) переносят INT4 лучше, чем малые (7B): у них больше «избыточности».
Mixed Precision Quantization
Не все слои одинаково важны. Первый и последний слои модели, а также «чувствительные» слои, остаются в более высокой точности (fp16), остальные квантизируются агрессивнее. Это даёт лучший баланс качества и сжатия.
Квантизация активаций
Помимо весов, можно квантизировать и активации (значения между слоями) — это SmoothQuant и аналоги. Активации сложнее квантизировать из-за динамически меняющегося диапазона значений. SmoothQuant переносит «трудность» квантизации с активаций на веса через масштабирующие коэффициенты.
Инфраструктура квантизированного инференса
vLLM поддерживает GPTQ и AWQ нативно с оптимизированными CUDA-ядрами. TGI (Text Generation Inference) — GPTQ и bitsandbytes. llama.cpp — полный спектр GGUF-форматов. TensorRT-LLM от NVIDIA — FP8 квантизация для максимальной производительности на H100.
Частые вопросы
Насколько квантизация ухудшает качество модели?
INT8: практически незаметно для большинства задач (< 1% падения на типичных бенчмарках). INT4 с GPTQ/AWQ: 1–3% на общих задачах, возможно до 5–10% на математических и рассуждательных задачах. Для моделей 70B+ деградация меньше, чем для 7B. Конкретный метод (AWQ обычно лучше GPTQ для INT4) существенно влияет на результат.
Что такое NF4 и чем он лучше INT4?
NF4 (Normal Float 4) — 4-битный формат, оптимизированный для нормально распределённых весов нейронных сетей. Квантовые уровни расставлены неравномерно: чаще там, где данные концентрированы. В отличие от равномерного INT4, NF4 теоретически информационно оптимален для нормального распределения и показывает лучшее качество при том же сжатии.
Можно ли запустить LLaMA 3 70B на ноутбуке?
С квантизацией Q4_K_M через llama.cpp — да, если ноутбук имеет 48+ GB RAM. При меньшей RAM модель частично выгружается на CPU, скорость генерации падает до 1–3 токенов/сек. Для комфортной работы рекомендуется GPU с 48 GB VRAM или использование меньшей модели (8B, 13B).
Другие термины в теме «ИИ и машинное обучение»
Не хватает деталей?
Напишите, что уточнить по теме «квантизация модели» — это помогает улучшать материал и подсказывает, какие термины добавить дальше. Email необязателен: укажите, если хотите ответ только для вас (мы не шлём рассылки).