COMRAD404 / HOWTO

Как квантизировать модель (GGUF, GPTQ, AWQ)

Пошагово разбираем три официальных маршрута квантования модели: GGUF через llama.cpp, GPTQ/GGUF через GPTQModel и AWQ через AutoAWQ, плюс обязательную проверку результата.

Понадобится

Зависит от размера модели и выбранного инструмента; точное время в источниках не указано
  • Исходная модель, которую вы уже можете загрузить и проверить до квантования
  • Для GGUF-пути: полноточный GGUF-файл или отдельный шаг конвертации в GGUF по официальному README llama.cpp
  • Доступ к официальным репозиториям llama.cpp, GPTQModel или AutoAWQ
  • Совместимый backend и аппаратная платформа под выбранный workflow
  • Готовность сверять release/tag проекта, если документация и флаги отличаются между версиями

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

Практический вердикт: если вы запускаете модель в экосистеме llama.cpp, ориентируйтесь на GGUF; если вам нужен единый стек для нескольких форматов и backend-ов, смотрите GPTQModel; если нужен специализированный AWQ-маршрут с официальным примером инференса, используйте AutoAWQ. Редакционное ограничение: в источниках нет единого install-сценария для всех ОС, ускорителей и архитектур моделей, поэтому перед выполнением шагов сверяйте свой release/tag проекта и совместимость backend-а.

Сводка

  • ⏱️ Время: зависит от размера модели, скорости диска и ускорителя; точное время в источниках не указано.
  • 🎯 Сложность: средний.
  • 💰 Стоимость: в источниках не указана; проверьте официальные страницы проектов и учитывайте затраты на локальное железо.
  • 🛠️ Что потребуется: исходная модель, которую вы уже можете загрузить; доступ к официальным репозиториям llama.cpp, GPTQModel или AutoAWQ; совместимый backend под выбранный путь; для GGUF-пути — полноточный GGUF-файл или отдельный шаг конвертации в GGUF.
  • 📌 Актуальность: инструкция собрана по официальным источникам на 2026-08-15. Для GPTQModel на странице releases указан релиз v7.3.2. Для llama.cpp и AutoAWQ в source pack не зафиксирован единый номер релиза, поэтому сверяйте используемый tag/release.
Путь Что это Когда выбирать Ключевое ограничение
GGUF + llama.cpp GGUF в документации llama.cpp описан как формат файлов моделей для инференса с ggml/executors. Когда вы хотите стандартный путь под экосистему llama.cpp. Если исходная модель не в GGUF, её нужно сначала конвертировать, а потом отдельно верифицировать logits и perplexity.
GPTQModel Production-ready toolkit для квантования и сжатия с поддержкой GPTQ, AWQ, GGUF, FP8, EXL3 и других режимов. Когда нужен единый стек под GPTQ/GGUF и разные backend-ы. Совместимость backend-ов и моделей зависит от версии и платформы; для GGUF в README указан путь с calibration=None и BACKEND.GGUF_TORCH.
AWQ + AutoAWQ Специализированный AWQ-процесс с официальным примером квантования и повторной загрузки квантованной модели. Когда вам нужен именно AWQ и вы хотите идти по отдельному, узкому workflow. Для части битностей могут отсутствовать kernels; для Falcon нужен group size 64; для Marlin нужны zero_point=False и version=Marlin.

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

Пошагово: как квантизировать модель

  1. Выберите итоговый формат и runtime. Решите, где модель будет запускаться после квантования. Если целевой runtime — llama.cpp, вам нужен GGUF. Если нужен библиотечный workflow с поддержкой GPTQ, GGUF и нескольких backend-ов, берите GPTQModel. Если нужен отдельный AWQ-путь, используйте AutoAWQ.

    Ожидаемый результат: вы понимаете, какой файл хотите получить на выходе и каким инструментом будете его загружать.

  2. Проверьте исходную модель до квантования. Официальный workflow llama.cpp для новой модели начинается с проверки исходной модели, затем конвертации в GGUF, затем сравнения logits исходной и конвертированной модели, а после квантования — повторной проверки по perplexity. Это важный порядок: сначала убедитесь, что проблема не в исходнике.

    Если ваш путь — GGUF, а модель пока не в этом формате, сначала подготовьте полноточный GGUF. В документации llama.cpp показан путь конвертации из Hugging Face через команду python3 convert_hf_to_gguf.py. Ограничение: source pack не фиксирует полный синтаксис аргументов для всех архитектур, поэтому точные параметры берите из текущего README конвертации для вашего релиза.

    Ожидаемый результат: у вас есть рабочая исходная модель и, для GGUF-пути, полноточный GGUF-файл.

  3. Если нужен GGUF в llama.cpp, запустите официальный квантователь. В README инструмента квантования llama.cpp указан такой синтаксис:

    ./llama-quantize [options] input-model-f32.gguf [output-model-quant.gguf] type [threads]

    Подставьте вместо input-model-f32.gguf ваш полноточный GGUF, задайте путь для выходного файла и выберите type из документации вашего текущего релиза. Не подставляйте вымышленные типы квантования: source pack не перечисляет допустимые значения.

    Ожидаемый результат: вы получаете новый файл квантованной модели в формате GGUF.

  4. Для GGUF-пути выполните официальную проверку качества. В README по model conversion для llama.cpp описан правильный порядок верификации: сравнить logits исходной и конвертированной модели, а после квантования снова проверить результат по perplexity. Это лучше, чем ограничиться одной тестовой репликой в чате.

    Если сравнение показывает неожиданное расхождение или perplexity деградирует сильнее, чем вы готовы принять, вернитесь к предыдущему шагу и пересмотрите тип квантования или исходный артефакт.

    Ожидаемый результат: у вас есть измеримая проверка того, что квантованная GGUF-модель пригодна для вашего сценария.

  5. Если нужен GPTQ через GPTQModel, создайте базовую конфигурацию квантования. В официальном примере GPTQModel показан базовый цикл с конфигом QuantizeConfig(bits=4, group_size=128). Дальше модель загружается, к ней применяется model.quantize(...), затем результат сохраняется.

    Что важно учесть заранее: README GPTQModel указывает поддержку Linux, macOS и Windows 11, а также backend-ов CUDA, NPU, XPU, ROCm, MPS и CPU. Но source pack отдельно предупреждает, что поддержка конкретной модели и backend-а зависит от версии и железа, поэтому не пропускайте сверку release и документации.

    Ожидаемый результат: вы определили базовые параметры GPTQ-квантования и понимаете, что ваша платформа в принципе поддерживается проектом.

  6. В GPTQModel завершите цикл quantize → save → reload → generation test. Официальный пример показывает именно такой маршрут: выполнить model.quantize(...), сохранить квантованный результат, затем повторно загрузить уже квантованную модель и проверить её генерацией текста. Если ваша цель в GPTQModel — GGUF, README указывает отдельный путь с calibration=None и backend-ом BACKEND.GGUF_TORCH.

    Ограничение: сам факт поддержки AWQ в GPTQModel подтверждён README, но source pack не фиксирует отдельный пошаговый AWQ-рецепт внутри GPTQModel для всех backend-ов. Если вам нужен именно AWQ с воспроизводимым примером, практичнее перейти к отдельному маршруту через AutoAWQ ниже.

    Ожидаемый результат: квантованная модель сохраняется, заново загружается и выдаёт текст в тестовой генерации.

  7. Если нужен AWQ, повторите официальный маршрут AutoAWQ. В examples AutoAWQ показан прямой процесс: загрузить модель через AutoAWQForCausalLM.from_pretrained, вызвать model.quantize(tokenizer, quant_config=...), сохранить модель, затем загрузить её через from_quantized(..., fuse_layers=True) и проверить инференсом.

    Это самый чистый официальный AWQ-путь из source pack: у вас есть и квантование, и повторная загрузка, и проверка инференсом в одном workflow. Не игнорируйте ограничения из документации: для некоторых битностей могут отсутствовать kernels; для Falcon нужен group size 64; для Marlin нужны zero_point=False и version=Marlin.

    Ожидаемый результат: вы получаете AWQ-квантованную модель, которая повторно загружается как квантованная и проходит тестовый инференс.

Как проверить, что всё работает

Путь Что проверить Признак успеха
GGUF + llama.cpp Наличие выходного GGUF-файла, затем сравнение logits исходной и конвертированной модели, затем проверка по perplexity после квантования. Файл создан, модель загружается, а верификация не показывает неожиданного развала качества.
GPTQModel После model.quantize(...) сохраните модель, повторно загрузите квантованный артефакт и выполните генерацию текста. Квантованная модель заново открывается и выдаёт осмысленный ответ на тестовый prompt.
AutoAWQ Сохраните результат квантования, затем загрузите его через from_quantized(..., fuse_layers=True) и запустите инференс. Модель загружается как квантованная и проходит тестовую генерацию без падения на этапе загрузки kernels.

Если вы проверили только то, что модель «что-то отвечает», это минимальная, но не достаточная проверка. Для GGUF официальный workflow прямо требует измерения через logits и perplexity; именно этот путь лучше считать эталонным.

Частые ошибки и исправления

  • Ошибка: вы пытаетесь квантизировать модель в GGUF, но у вас нет полноточного GGUF-файла.
    ✅ Решение: сначала конвертируйте исходный формат в GGUF. В llama.cpp для этого показан путь через python3 convert_hf_to_gguf.py. Полный набор аргументов сверяйте по README вашего релиза.
  • Ошибка: после GGUF-квантования вы проверили только один чат-запрос.
    ✅ Решение: повторите официальный путь из llama.cpp: сравните logits исходной и конвертированной модели и проверьте quantized-версию по perplexity.
  • Ошибка: вы используете GPTQModel для GGUF, но оставляете неподходящую схему калибровки.
    ✅ Решение: для GGUF в README GPTQModel указан путь с calibration=None и BACKEND.GGUF_TORCH.
  • Ошибка: в AutoAWQ вы выбрали конфигурацию, для которой нет kernels, или применили общие настройки к Falcon/Marlin.
    ✅ Решение: проверьте ограничения из examples: для некоторых битностей kernels могут отсутствовать; Falcon требует group size 64; Marlin требует zero_point=False и version=Marlin.
  • Ошибка: вы предполагаете, что любая модель и любой backend будут работать на любой версии проекта.
    ✅ Решение: сверяйте release/tag и актуальную документацию. Source pack отдельно предупреждает, что поддержка архитектур, kernels и backend-ов зависит от версии и аппаратной платформы.

Безопасность и ограничения

  • Не удаляйте исходную полноточную модель до верификации. Иначе вы потеряете базу для сравнения logits, perplexity и генерации.
  • Не переносите инструкции между релизами без проверки. В source pack отмечено, что флаги и названия backend-ов в llama.cpp и GPTQModel могут меняться между релизами.
  • Считайте совместимость аппаратно-зависимой. Для GPTQModel и AutoAWQ поддержка конкретной модели, kernels и backend-ов зависит от версии и вашей платформы.
  • Для AutoAWQ проверяйте текущую степень сопровождения. В uncertainties прямо сказано, что для проекта не проверялась отдельно текущая степень сопровождения по всем архитектурам, поэтому перед продакшен-выбором смотрите страницу репозитория и issues.
  • Практический предел этой инструкции: она воспроизводит официальные шаги квантования и проверки, но не заменяет release-specific документацию по установке зависимостей и model-specific флагам.

Практический вывод: если вам нужен самый предсказуемый путь под локальный запуск в экосистеме llama.cpp, идите через GGUF и обязательно делайте измеримую верификацию. Если нужен единый API-подход к нескольким режимам квантования, сначала проверьте, закрывает ли GPTQModel именно вашу платформу и backend. Если задача узкая и AWQ-ориентированная, проще начинать с официального примера AutoAWQ.

Что делать дальше

Источники

Вопросы и ответы

Что выбрать, если я запускаю модель через llama.cpp?

Выбирайте GGUF. В документации llama.cpp GGUF описан как формат файлов моделей для инференса с ggml/executors. Если исходник в другом формате, сначала конвертируйте его в GGUF.

Нужно ли обязательно проверять модель после квантования?

Да. Для GGUF официальный workflow llama.cpp рекомендует не ограничиваться запуском, а сравнить logits исходной и конвертированной модели и затем проверить квантованную модель по perplexity. Для GPTQModel и AutoAWQ минимальная проверка — повторная загрузка квантованной модели и генерация текста.

Какие ОС и backend-ы поддерживает GPTQModel?

README GPTQModel указывает поддержку Linux, macOS и Windows 11, а также backend-ов CUDA, NPU, XPU, ROCm, MPS и CPU. Но конкретная работоспособность зависит от версии, модели и аппаратной платформы.

Можно ли сделать AWQ через GPTQModel вместо AutoAWQ?

README GPTQModel подтверждает поддержку AWQ, но source pack не фиксирует отдельный воспроизводимый AWQ-рецепт внутри GPTQModel для всех backend-ов. Если вам нужен именно пошаговый официальный AWQ-flow, проще идти по examples AutoAWQ.

Есть ли в источниках точное время квантования и готовые настройки для всех моделей?

Нет. Source pack не даёт универсального времени выполнения, полного набора model-specific аргументов или гарантии совместимости для всех архитектур. Эти части нужно уточнять по конкретному release/tag и документации выбранного проекта.

Шаги

HOW-TO
  1. Выберите итоговый формат и инструмент

    | Определите, где модель будет запускаться после квантования. Для llama.cpp нужен GGUF; для unified-подхода с несколькими backend-ами — GPTQModel; для отдельного AWQ-маршрута — AutoAWQ.

  2. Проверьте исходную модель до квантования

    | Официальный workflow llama.cpp начинается с проверки исходной модели. Если для GGUF у вас ещё нет полноточного GGUF-файла, используйте путь конвертации через convert_hf_to_gguf.py и сверяйте точные аргументы по README вашего релиза.

  3. Квантизируйте GGUF через llama.cpp

    | Используйте официальный синтаксис: ./llama-quantize [options] input-model-f32.gguf [output-model-quant.gguf] type [threads]. Не подставляйте неподтверждённые типы квантования; берите их из документации текущего релиза.

  4. Проверьте GGUF после квантования

    | Сравните logits исходной и конвертированной модели, а затем проверьте квантованную модель по perplexity. Это официальный путь верификации из README llama.cpp.

  5. Создайте конфиг GPTQ в GPTQModel

    | В официальном примере показан базовый конфиг QuantizeConfig(bits=4, group_size=128). Перед запуском сверяйте поддержку вашей ОС, backend-а и архитектуры модели.

  6. Завершите цикл quantize-save-reload в GPTQModel

    | Выполните model.quantize(...), сохраните результат, повторно загрузите квантованную модель и проверьте её генерацией текста. Для GGUF в GPTQModel README указывает calibration=None и BACKEND.GGUF_TORCH.

  7. Если нужен AWQ, повторите официальный workflow AutoAWQ

    | Загрузите модель через AutoAWQForCausalLM.from_pretrained, вызовите model.quantize(tokenizer, quant_config=...), сохраните результат, затем загрузите его через from_quantized(..., fuse_layers=True) и проверьте инференсом.

Источники

SOURCES

Вопросы и ответы

FAQ
Что выбрать, если я запускаю модель через llama.cpp?

Выбирайте GGUF. В документации llama.cpp GGUF описан как формат файлов моделей для инференса с ggml/executors. Если исходник в другом формате, сначала конвертируйте его в GGUF.

Нужно ли обязательно проверять модель после квантования?

Да. Для GGUF официальный workflow llama.cpp рекомендует сравнить logits исходной и конвертированной модели и затем проверить квантованную модель по perplexity. Для GPTQModel и AutoAWQ минимальная проверка — повторная загрузка квантованной модели и генерация текста.

Какие ОС и backend-ы поддерживает GPTQModel?

README GPTQModel указывает поддержку Linux, macOS и Windows 11, а также backend-ов CUDA, NPU, XPU, ROCm, MPS и CPU. Но конкретная работоспособность зависит от версии, модели и аппаратной платформы.

Можно ли сделать AWQ через GPTQModel вместо AutoAWQ?

README GPTQModel подтверждает поддержку AWQ, но source pack не фиксирует отдельный воспроизводимый AWQ-рецепт внутри GPTQModel для всех backend-ов. Если нужен именно пошаговый официальный AWQ-flow, проще идти по examples AutoAWQ.

Есть ли в источниках точное время квантования и готовые настройки для всех моделей?

Нет. Source pack не даёт универсального времени выполнения, полного набора model-specific аргументов или гарантии совместимости для всех архитектур. Эти части нужно уточнять по конкретному release/tag и документации выбранного проекта.

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

LINKS