Квантизация — это набор техник, которые уменьшают разрядность чисел внутри большой языковой модели, чтобы сократить расход памяти и, при удачной реализации, ускорить запуск. В этом разборе мы берем исторический срез по первоисточникам 2021–2024 годов, но фокусируемся на трех практических названиях, которые чаще всего встречаются в обсуждениях локальных LLM: GPTQ, AWQ и QLoRA. Это важно, потому что их регулярно ставят в один ряд, хотя они решают разные задачи: GPTQ и AWQ в первую очередь про инференс готовой модели, а QLoRA — про ее дообучение.
Коротко
- GPTQ — это пост-тренировочная квантизация весов: модель уже обучена, а вы затем сжимаете ее веса, обычно до 3–4 бит, стараясь минимизировать потерю качества.
- AWQ тоже относится к пост-тренировочной квантизации весов, но использует статистику активаций, чтобы защитить наиболее важные каналы от грубых ошибок округления.
- QLoRA — не прямая альтернатива GPTQ или AWQ для инференса: это способ дообучать модель, загруженную в 4-битном виде, через небольшие LoRA-адаптеры.
- Меньшая разрядность почти всегда уменьшает объем весов, но ускорение зависит от kernel-ов, формата хранения и того, умеет ли ваш backend эффективно исполнять такой тип квантизации.
- Исторически связка выглядела так: GPTQ вышел как arXiv-препринт 31 октября 2022 года и затем был представлен на ICLR 2023; QLoRA появился 23 мая 2023 года и затем вышел на NeurIPS 2023; AWQ появился 1 июня 2023 года и затем вышел в Proceedings of Machine Learning and Systems 6, то есть MLSys 2024.
Контекст: зачем вообще нужна квантизация LLM
Большая языковая модель — это прежде всего огромный набор весов. Если хранить их в формате FP16 или BF16, модель быстро упирается в память GPU, а пропускная способность памяти становится узким местом для инференса. Квантизация пытается уменьшить стоимость хранения и переноса этих весов, переводя их из более точного представления в более компактное.
Но у LLM есть неприятная особенность: не все числа одинаково безопасно округлять. Еще работа LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale показала, что у трансформеров есть выбросы в активациях, а SmoothQuant развила эту линию и отдельно подчеркнула: веса квантуются проще, а активации — сложнее. Из этого выросла важная практическая развилка: либо вы квантуете только веса и оставляете активации в более высокой точности, либо пытаетесь аккуратно работать и с теми и с другими.
Для практики это значит, что слово «квантизация» скрывает несколько разных режимов. Первый режим — пост-тренировочный: вы берете уже готовый checkpoint и сжимаете его без нового обучения всех весов. Второй — обучение или дообучение поверх квантизованной базы, где сама квантизация становится частью training setup. GPTQ и AWQ — это в первую очередь первый сценарий; QLoRA — второй.
Метод: как работают GPTQ, AWQ и QLoRA
Что такое квантизация простыми словами
Если совсем грубо, квантизация похожа на замену длинного числового словаря на короткий алфавит плюс правило, как из этого алфавита восстановить приблизительное исходное значение. Вместо хранения каждого веса как 16-битного числа вы храните короткий код и параметры масштабирования. При исполнении модель либо работает прямо с таким форматом, либо быстро восстанавливает приближенные значения в удобный для kernel-а вид.
Для LLM особенно важны три различия.
- Weight-only vs weight-and-activation. В первом случае сжимаются только веса, а активации остаются, например, в 16 битах. Во втором сжимаются и веса, и активации, что потенциально лучше для throughput, но заметно сложнее для сохранения качества.
- Post-training quantization (PTQ) vs quantization-aware training. PTQ не требует заново обучать модель; обычно нужен лишь небольшой калибровочный набор, чтобы понять распределение значений. Quantization-aware training или близкие к нему режимы включают квантизацию в обучение.
- Инференс vs fine-tuning. Одни методы делают модель дешевле в запуске, другие — дешевле в адаптации под конкретную задачу.
GPTQ: сжать готовую модель после обучения
GPTQ расшифровывается как Accurate Post-Training Quantization for Generative Pre-trained Transformers. Это one-shot пост-тренировочная квантизация весов: авторы не переучивают модель полностью, а проходят по слоям и квантуют их так, чтобы ошибка от округления как можно меньше портила выход модели.
Ключевая идея GPTQ — использовать приближенную информацию второго порядка, то есть оценивать не просто величину ошибки в весе, а то, насколько эта ошибка важна для поведения слоя. Практически это реализуется как последовательная квантизация столбцов матрицы весов с компенсацией ошибки в еще не обработанных параметрах. Поэтому GPTQ обычно объясняют как «умное округление с учетом чувствительности слоя», а не как простую замену FP16 на INT4.
С точки зрения эксплуатации GPTQ — это прежде всего способ сделать уже существующий checkpoint компактнее для инференса. В paper и в официальном репозитории авторы показывают 3- и 4-битные варианты для семейств OPT, BLOOM и позже LLaMA. Важно, что это в основном weight-only схема: активации и часть вычислений все равно остаются в более высокой точности.
AWQ: смотреть не только на веса, но и на активации
AWQ расшифровывается как Activation-aware Weight Quantization. Это тоже пост-тренировочная и в основном weight-only квантизация, но с другим вопросом: какие именно каналы в весах надо защитить от грубого округления, если мы смотрим на реальное поведение модели на данных?
Авторы AWQ исходят из того, что важность веса лучше определять не по самому весу, а по тому, как он взаимодействует с активациями. В аннотации paper authors explicitly write, что защита лишь 1% salient weights может сильно уменьшить ошибку квантизации. Вместо аппаратно неудобного смешанного хранения небольшой части весов в высокой точности AWQ использует эквивалентное масштабирование каналов: важные каналы масштабируются так, чтобы лучше пережить квантизацию, а затем это преобразование учитывается при вычислении.
Из-за этого AWQ часто описывают как компромисс между точностью и аппаратной простотой. Важно и другое: по формулировке авторов, AWQ не опирается на backpropagation или reconstruction, а значит меньше рискует переобучиться на калибровочный набор и лучше переносится между доменами. В paper и официальном репозитории авторы отдельно подчеркивают применение к instruction-tuned и multimodal моделям.
QLoRA: экономить память на дообучении, а не только на запуске
QLoRA начинается не с квантизации как таковой, а с LoRA — Low-Rank Adaptation of Large Language Models. Идея LoRA проста: вместо обновления всех весов огромной модели вы замораживаете базу и обучаете небольшие низкоранговые матрицы-адаптеры. Это резко уменьшает число обучаемых параметров и память под optimizer state.
QLoRA делает следующий шаг: базовая модель хранится в 4-битном виде, но градиенты идут через нее в обучаемые LoRA-адаптеры. То есть вы не «обучаете всю модель в 4 бита» в прямом смысле, а используете квантизованную замороженную базу как фундамент для дешевого fine-tuning. В статье QLoRA: Efficient Finetuning of Quantized LLMs авторы называют три ключевых компонента: формат NF4, double quantization и paged optimizers.
NF4 — это специальный 4-битный тип для весов, который авторы описывают как информационно оптимальный для нормально распределенных значений. Double quantization дополнительно квантует сами константы квантизации и, по расчетам paper, экономит в среднем около 0.373 бита на параметр; это оценка из одного первоисточника, поэтому ее лучше читать именно как авторский расчет для данного setup. Paged optimizers нужны не столько для качества, сколько для того, чтобы избежать пиков памяти при gradient checkpointing и длинных последовательностях.
Практический смысл QLoRA очень важен: это метод про fine-tuning, а не про готовый production-формат для инференса. После обучения вы можете использовать полученные адаптеры отдельно или сливать их с базой и затем уже выбирать формат развертывания, но сама QLoRA не отвечает автоматически на вопрос, какой runtime-формат у вас будет в serving.
Результаты: что показывают первоисточники
Ниже — не «таблица победителя», а попытка честно разложить, какие результаты вообще сравнимы. GPTQ и AWQ измеряют прежде всего качество и скорость инференса после сжатия готовой модели. QLoRA измеряет, насколько дешево можно дообучить модель без потери качества относительно более тяжелых режимов fine-tuning.
| Метод | Что квантуется | Основной сценарий | Что заявляют авторы | Что важно помнить |
|---|---|---|---|---|
| GPTQ | Обычно только веса, часто 3–4 бит | Пост-тренировочный инференс | В arXiv paper и официальном репозитории авторы показывают 3- и 4-битное сжатие весов; в аннотации paper также сообщается о запуске 175B-модели на одной GPU и о примерно 3.25x ускорении относительно FP16 на A100 для их optimized setup. | Headline-числа привязаны к конкретным kernel-ам и моделям; активации не становятся автоматически «дешевыми». |
| AWQ | Обычно только веса, чаще всего 4-битный runtime | Пост-тренировочный инференс | В abstract MLSys 2024 и официальном репозитории авторы пишут, что activation-aware масштабирование помогает сохранить качество, а связка AWQ + TinyChat дает более чем 3x ускорение относительно Hugging Face FP16 на desktop и mobile GPU. | Это одновременно алгоритм и system stack; скорость нельзя переносить на любой backend без собственной проверки. |
| QLoRA | Замороженная база в 4-битном виде плюс обучаемые LoRA-адаптеры | Fine-tuning | В arXiv, NeurIPS 2023 и официальном репозитории авторы показывают, что 65B-модель можно дообучать на одной 48GB GPU; для Guanaco 65B paper сообщает 99.3% от ChatGPT на Vicuna benchmark. | Это не прямой benchmark для runtime-инференса; сам paper отдельно предупреждает, что текущие chatbot benchmarks ненадежны. |
Главный вывод из таблицы простой: GPTQ и AWQ отвечают на вопрос «как ужать уже обученную модель для запуска», а QLoRA — на вопрос «как дешево адаптировать большую модель под новую задачу». Поэтому спор «что лучше, GPTQ или QLoRA» в чистом виде некорректен: это инструменты из разных слоев стека.
Интерпретация: что это значит для практики
Наш комментарий
- Если у вас уже есть checkpoint и вам нужен локальный инференс, начинать стоит с GPTQ или AWQ. Это семейство weight-only PTQ, где вы не трогаете обучение всей модели заново.
- Если вы хотите дообучить модель на своих данных, QLoRA обычно ближе к задаче, чем GPTQ или AWQ. Она экономит память именно в fine-tuning setup за счет квантизованной базы и небольших адаптеров.
- AWQ особенно интересен там, где важна устойчивость к activation outliers и есть готовый W4A16 stack. Но это скорее инженерное наблюдение из характера метода и system-обвязки вокруг него, а не универсальный закон.
- GPTQ остается важным базовым методом, когда нужен предсказуемый post-training pipeline. Его сильная сторона — ясная постановка задачи: приблизить FP-модель низкобитной версией без полного retraining.
- Меньше бит — не синоним «быстрее». Официальный репозиторий QLoRA прямо перечисляет медленный 4-bit inference как known issue, а работы вроде SmoothQuant отдельно показывают, что аппаратная эффективность зависит от того, насколько формат квантизации совпадает с доступными GEMM kernel-ами.
Иными словами, практический выбор часто определяется не только paper-метриками, но и тем, какая у вас цель: запуск, дообучение, edge deployment, instruction tuning, multimodal use case, а также какие форматы реально поддерживает ваша библиотека или inference engine.
Ограничения и критика
- Сравнение не полностью симметрично. GPTQ, AWQ и QLoRA тестировались на разных моделях, в разное время и на разных benchmark-ах. Числа из их papers нельзя интерпретировать как честную лобовую гонку.
- Headline-результаты завязаны на system stack. Ускорение в GPTQ или AWQ зависит не только от идеи квантизации, но и от конкретных CUDA kernel-ов, packing scheme и backend-а. Если ваш runtime другой, повторить цифры один в один может не получиться.
- Weight-only квантизация не решает все проблемы памяти. KV-cache, активации, некоторые служебные тензоры и части runtime могут остаться в более высокой точности, поэтому фактическая экономия на end-to-end serving обычно меньше, чем наивная оценка «во столько-то раз по битности весов».
- QLoRA не равна «полноценному 4-битному обучению всех весов». Это важное ограничение: метод сохраняет обучаемость за счет LoRA-адаптеров, а не за счет обновления всей квантизованной базы.
- Бенчмарки для чат-ассистентов сами по себе спорны. Авторы QLoRA прямо пишут, что текущие chatbot benchmarks ненадежны для точной оценки уровня систем. Поэтому цифру 99.3% на Vicuna стоит читать как исторически важный сигнал о доступности метода, а не как окончательный вердикт о качестве модели в реальных задачах.
- Этот материал сознательно ограничен историческим окном 2021–2024 годов. Мы не подменяем тему более новыми методами вроде QQQ, AQLM, HQQ или 1-битных архитектур, потому что задача статьи — объяснить именно GPTQ, AWQ и QLoRA, а не весь рынок low-bit LLM.
Вывод
Если убрать шум вокруг терминов, картина становится довольно простой. GPTQ и AWQ — это способы упаковать уже обученную модель для более дешевого инференса; QLoRA — способ дешево ее адаптировать под новую задачу, не платя цену полного fine-tuning.
Для практиков полезнее не спрашивать «какой метод лучший вообще», а сначала определить режим работы: запуск или дообучение, desktop/server или edge, доступные kernel-ы и допустимую потерю качества. Именно от этого выбора зависит, почему в одном проекте разумно брать AWQ, в другом GPTQ, а в третьем — QLoRA.
Источники
- LoRA: Low-Rank Adaptation of Large Language Models — базовая работа о low-rank adapters, без которой QLoRA трудно понять корректно.
- LLM.int8(): 8-bit Matrix Multiplication for Transformers at Scale — важный контекст про outlier-активации и ограничения простого INT8 для LLM.
- SmoothQuant: Accurate and Efficient Post-Training Quantization for Large Language Models — контекст про то, почему активации тяжелее квантуются и как это связано с аппаратной эффективностью.
- GPTQ: Accurate Post-Training Quantization for Generative Pre-trained Transformers — первоисточник по GPTQ.
- IST-DASLab/gptq — официальный репозиторий GPTQ с implementation notes и обновленными результатами kernel-ов.
- QLoRA: Efficient Finetuning of Quantized LLMs — arXiv-версия с датой, общей идеей и headline-результатами.
- QLORA: Efficient Finetuning of Quantized LLMs — финальная версия NeurIPS 2023 с деталями NF4, double quantization и paged optimizers.
- artidoro/qlora — официальный репозиторий QLoRA, полезен для практических ограничений и конфигурации.
- AWQ: Activation-aware Weight Quantization for On-Device LLM Compression and Acceleration — первоисточник по AWQ в MLSys 2024.
- mit-han-lab/llm-awq — официальный репозиторий AWQ и TinyChat с system-oriented деталями.
FAQ
Чем GPTQ отличается от AWQ в одном предложении?
Оба метода обычно квантуют веса после обучения, но GPTQ минимизирует ошибку через последовательную компенсацию на основе приближенной чувствительности слоя, а AWQ использует статистику активаций, чтобы защитить самые важные каналы перед квантизацией.
Почему QLoRA нельзя сравнивать с GPTQ один к одному?
Потому что QLoRA решает задачу дообучения, а GPTQ — задачу сжатия готовой модели для инференса. Они могут встретиться в одном пайплайне, но не являются одной и той же категорией методов.
Даст ли 4-битная модель автоматическое ускорение?
Не обязательно. Экономия памяти обычно приходит первой, а ускорение зависит от того, есть ли у вас подходящие kernel-ы и насколько конкретный формат квантизации хорошо поддержан вашим runtime.
Когда QLoRA полезнее обычной LoRA?
Когда базовая модель уже настолько велика, что память под ее хранение становится главным ограничением fine-tuning. В этом случае 4-битная замороженная база позволяет уместить setup, который в 16 битах был бы слишком дорогим.
