Игорь Градов
Игорь Градов
7 мин
ai

Форматы LLM моделей GGUF, GPTQ и AWQ: какой сжимает веса без потери качества

Microsoft выпустила две модели Phi-4 с открытыми весами и мультимодальностью, но без лицензии на коммерческое использование в ЕС

Когда вы скачиваете модель с Hugging Face для локального запуска, первое решение, которое определяет скорость, качество и расход памяти, это выбор формата файла и способа сжатия весов, и путаница между этими двумя слоями остаётся главной ловушкой даже для опытных практиков.

Почему это важно

Форматы LLM моделей делятся на два независимых слоя: контейнер (как веса хранятся на диске) и метод квантизации (как веса сжимаются до меньшего числа бит). Смешение этих слоёв приводит к ошибкам при выборе модели и потере качества или памяти впустую.

Тема форматов LLM моделей обросла аббревиатурами, которые выглядят как шифр: GGUF, GPTQ, AWQ, EXL2, Q4_K_M. За каждой стоит конкретная инженерная логика. Ниже разбор по фактам из документации Hugging Face, оригинальных статей на arXiv и спецификаций llama.cpp без домыслов и без «впечатляющих результатов».

Показатель Значение Источник
Формула расчёта памяти под веса параметры × бит на вес ÷ 8 арифметическое правило, не вендорный бенчмарк
GGUF: дата появления 21 августа 2023 года документация Hugging Face
GPTQ: дата публикации arXiv 31 октября 2022 года, опубликована на ICLR 2023 arXiv, ICLR
GPTQ: скорость квантизации 175B модели около 4 часов на GPU arXiv
GPTQ: ускорение над FP16 около 3,25x на A100 и 4,5x на A6000 страница статьи на Hugging Face
AWQ: дата появления arXiv 1 июня 2023 года arXiv
AWQ: награда лучшая статья MLSys 2024 MLSys 2024
Калибровка GPTQ для 8B модели около 20 минут на одном A100 оценка Hugging Face

Что измеряли?

Речь не об одном эксперименте, а о трёх независимых подходах к одной задаче: как уместить большую языковую модель в ограниченную память GPU или даже CPU, потеряв при этом минимум качества.

Контейнер определяет, как тензоры (многомерные массивы чисел, из которых состоит модель) лежат на диске. Примеры контейнеров: safetensors, GGUF, старый формат PyTorch pickle (файлы .bin и .pt).

Метод квантизации (сжатие весов до меньшего числа бит, например с 16 до 4) определяет, сколько памяти займут веса и как сильно просядет точность. Примеры методов: GPTQ, AWQ, bitsandbytes NF4, K-кванты и I-кванты в llama.cpp.

Есть и гибриды: EXL2 и EXL3 совмещают метод сжатия и собственную раскладку хранения, привязанную к одной библиотеке инференса (инференс, это процесс, когда модель генерирует ответ на ваш промпт).

Формула для грубой оценки памяти проста: параметры × бит на вес ÷ 8. Она покрывает только веса. KV-кеш (память, которую модель тратит на запоминание контекста разговора) и накладные расходы среды исполнения идут сверху.

Три формата: что обнаружили?

Safetensors и PyTorch .bin: полная точность, но разная безопасность

Некомпрессированные модели обычно хранят веса в 16 битах. Старый формат .bin / .pt использует механизм Python pickle. Загрузка pickle-файла может выполнить произвольный код, а это риск безопасности при скачивании из ненадёжных источников.

Формат safetensors, созданный в Hugging Face, убирает этот риск. Файл содержит маленький JSON-заголовок и сырые буферы тензоров, ничего исполняемого внутри. Тензоры можно загружать по одному, не читая весь файл целиком. Safetensors включён в проекты PyTorch Foundation.

Важный нюанс: большинство моделей в форматах GPTQ, AWQ, EXL2, EXL3 и MLX тоже хранятся в файлах .safetensors. Квантизация «живёт» внутри содержимого тензоров и конфигурационного файла, а не в отдельном контейнере.

GGUF: один файл для локального запуска

GGUF это бинарный формат для запуска моделей через llama.cpp и совместимые движки. Его создал Георгий Герганов, автор llama.cpp. Формат появился 21 августа 2023 года как замена устаревшему GGML, который ломался при добавлении нового гиперпараметра.

Пять целей GGUF по спецификации:

  • Развёртывание одним файлом
  • Расширяемость без поломки старых файлов
  • Совместимость с mmap (прямое отображение файла в память)
  • Простая загрузка
  • Вся информация внутри файла, включая токенизатор, специальные токены и шаблон чата

Как читать имена квантов GGUF?

Суффикс в названии файла, например Q4_K_M.gguf, описывает схему сжатия. Буква Q означает квантизацию, цифра, число бит, буквы K/I, семейство метода.

  • Q4_K: суперблок из 256 весов. 256 × 4 бита = 1024 бита. Плюс 96 бит на шкалы и минимумы (8 блоков × 12 бит). Плюс 32 бита на супершкалу и суперминимум. Итого: 1152 ÷ 256 = 4,5 бита на вес.
  • _S, _M, _L означают не отдельные типы, а миксы. Например, Q4_K_M использует Q6_K для половины тензоров attention.wv и feed_forward.w2, а Q4_K для остального. Поэтому средний размер бита на вес у Q4_K_M выше 4,5.
  • Q8_0 Hugging Face формально относит к «устаревшим» типам, но на практике Q8_0 остаётся стандартным выбором для почти без потерь GGUF-квантизации.
  • TQ1_0 и TQ2_0 предназначены для тернарных весов, а MXFP4 использует 4-битную микрошкалируемую плавающую точку.

Квантизация может использовать калибровочные данные. Утилита llama-imatrix вычисляет матрицу важности (importance matrix) по текстовому файлу, а llama-quantize использует её для повышения качества. Для 1-битных и 2-битных миксов llama-quantize выдаёт предупреждение, если матрица не указана.

GGUF работает нативно в llama.cpp, LM Studio, GPT4All и Ollama. Поддержка в vLLM существует, но по документации vLLM она «высокоэкспериментальная и недооптимизированная», и GGUF теперь требует внешний плагин vllm-gguf-plugin.

GPTQ: быстрое сжатие с компенсацией ошибки

GPTQ, метод пост-обучающей квантизации весов, использующий приближённую информацию второго порядка (матрицу Гессе, она подсказывает, какие веса «дороже» при округлении). Ошибку округления в одном столбце компенсируют корректировкой ещё не квантизованных весов. Нужен небольшой калибровочный набор данных, дообучение не требуется.

Авторы: Элиас Франтар (IST Austria), Салех Ашкбус и Торстен Хофлер (ETH Zurich), Дэн Алистар (IST Austria и Neural Magic). Статья появилась на arXiv 31 октября 2022 года, опубликована на ICLR 2023.

Основные результаты по статье:

  • Квантизация модели со 175 миллиардами параметров заняла около 4 часов на GPU, сжатие до 3 или 4 бит на вес
  • Авторы сообщают о незначительной потере точности при этих разрядностях
  • Ускорение над FP16: около 3,25x на NVIDIA A100 и 4,5x на A6000

В именах GPTQ-моделей встречаются метки вроде 4bit-128g. Число 128g означает размер группы: одна шкала на 128 весов. Меньшие группы повышают точность, но немного увеличивают размер. Параметр desc_act (act-order) квантизует столбцы в порядке важности.

Оригинальная библиотека AutoGPTQ больше не поддерживается. Её место занял GPTQModel, который заявляет о полной замене AutoGPTQ и AutoAWQ для Transformers, Optimum и PEFT. По оценке Hugging Face, калибровка GPTQ для модели с 8 миллиардами параметров занимает около 20 минут на одном A100.

AWQ: сохраняем важные веса в высокой точности

AWQ (Activation-aware Weight Quantization, квантизация весов с учётом активаций) разработан группой Сон Хана в MIT. Статья появилась на arXiv 1 июня 2023 года и получила награду за лучшую статью на MLSys 2024.

Ключевая идея: не все веса одинаково важны. AWQ определяет, какие из них критичны для качества, через анализ активаций (промежуточных значений при проходе данных через модель), и сохраняет эти веса с более высокой точностью.

Как это читать

Все цифры ускорения GPTQ (3,25x и 4,5x) получены авторами на конкретном оборудовании (A100 и A6000) и могут отличаться на других GPU. Формула «параметры × бит ÷ 8» это арифметика для весов, реальное потребление памяти будет выше из-за KV-кеша и накладных расходов. Значения качества из таблиц Hugging Face приведены для модели класса Llama-2-7B образца 2023 года, более новые модели могут реагировать на квантизацию иначе.

Что делать с этим прямо сейчас?

Авторам Дзена и копирайтерам. Если вы запускаете модель локально через LM Studio или Ollama, ваш формат это GGUF. Для машины с 8 ГБ видеопамяти берите Q4_K_M, для 16 ГБ можно Q8_0. Посчитайте заранее: 7 миллиардов параметров × 4,5 бита ÷ 8 = примерно 3,9 ГБ только на веса, плюс KV-кеш сверху.

Разработчикам и техническим предпринимателям. Если вы строите сервис на vLLM или SGLang, GPTQ и AWQ через GPTQModel дадут ускорение без потери качества. Но GGUF в vLLM пока экспериментальный, не стройте на нём продакшен.

Всем, кто скачивает модели с Hugging Face. Файлы .bin и .pt (pickle) могут выполнить произвольный код при загрузке. Если источник не доверенный, ищите версию в safetensors.

Мнение редакции dzen.guru

Я регулярно тестирую модели локально и вижу, как путаница форматов LLM моделей отпугивает людей, которым локальный запуск дал бы реальную экономию. На практике для большинства задач автора, генерация текста, переписывание, ответы на вопросы, Q4_K_M в GGUF через Ollama это рабочий минимум с адекватным качеством. Переход от Q4_K_M к Q8_0 заметен, но стоит вдвое больше памяти. AWQ и GPTQ имеют смысл, когда вы обслуживаете запросы на сервере и каждая миллисекунда латенси на счету. Для домашнего использования GGUF проще, документированнее и не привязан к конкретной библиотеке.

Три формата, три задачи: GGUF для локального запуска на своём железе, GPTQ для серверного инференса с ускорением, AWQ для случаев, когда важно сохранить качество критичных весов при агрессивном сжатии. Выбор определяется не «лучшестью» формата, а тем, где и на чём вы запускаете модель.

По данным документации Hugging Face по GGUF, статьи GPTQ на arXiv и статьи AWQ на arXiv

Поделиться:TelegramVK
Игорь Градов
Игорь Градов

Основатель dzen.guru. Эксперт по монетизации и продвижению на Дзен. Автор курса «Старт на Дзен 2026».

Комментарии

Читайте также

ai

Новые модели ИИ без галлюцинаций: Jev выдаёт вероятности в 18 раз быстрее ChatGPT

Почему это важно Впервые на рынке появилась модель-трансформер, которая не генерирует текст, а выдаёт калиброванные вероятности, и разработчики уже заменяют ею…

6 мин
ai

Grok Voice Transcribe 2.0: речь в текст API вдвое точнее при $0,10 за час аудио

SpaceXAI выпустила Grok Voice Transcribe 2.0, обновлённую модель распознавания речи в текст, которая, по заявлению разработчиков, вдвое точнее первой версии…

5 мин
Что такое ИИ-агент для семьи: Google CC сам читает школьные письма и ведёт календарь
ai

Что такое ИИ-агент для семьи: Google CC сам читает школьные письма и ведёт календарь

Google тестирует CC, ИИ-агента для семей, который сам разбирает школьные письма, заполняет бланки и ведёт общий календарь, но пока работает только в США и…

5 мин