GGUF

gguf — единый файл квантизованной модели для запуска на CPU/GPU

Раздел
Инструменты
Сокращ.
GPT-Generated Unified Format
Обновлено
11.08.26

GGUF — переносимый формат тензоров и метаданных, тесно связанный с llama.cpp и совместимыми приложениями. Файл может содержать квантизированные веса, сведения об архитектуре, токенизатор и шаблон чата. Запуск возможен на CPU, GPU или в смешанном режиме, если точная модель поддерживается выбранным runtime.

Коротко

Коротко. GGUF — «коробка» с тензорами и метаданными модели. Квантизация может заметно уменьшить файл и требования к памяти, а runtime распределяет вычисления между CPU и GPU. Степень сжатия, качество и возможность запуска определяются конкретными весами и программой, а не одним расширением.

Что это такое

Человек хочет запустить языковую модель на обычном ноутбуке, но исходные веса не помещаются в доступную память. Он выбирает совместимый GGUF-вариант с более сильной квантизацией и запускает его через локальный runtime.

Модель стала компактнее не из-за расширения файла, а из-за выбранного представления весов. Скорость ответа при этом зависит от архитектуры, размера контекста, квантизации и оборудования.

GGUF появился как преемник форматов семейства GGML в экосистеме llama.cpp. Он хранит тензоры вместе с метаданными об архитектуре и токенизаторе, а некоторые файлы включают шаблон чата. Это упрощает перенос, но runtime всё равно должен поддерживать конкретную архитектуру, тип квантования и нужные внешние ресурсы.

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

Как это работает

Файл GGUF состоит из двух частей: заголовка с метаданными и блока тензоров — самих весов.

  1. Заголовок описывает модель: какая архитектура, какой тип квантизации, длина контекста, словарь токенизатора, шаблон промпта. Программе не нужно гадать — всё записано рядом с весами.
  2. Тензорывеса модели, которые могут быть представлены в полной или пониженной точности. В блочных схемах группы значений хранятся вместе с параметрами масштаба. Чем сильнее сжатие, тем меньше файл и тем выше риск потери качества.

Названия вроде Q4_K_M или Q8_0 обозначают конкретные схемы квантизации. Цифра помогает ориентироваться в классе точности, но фактическое среднее число бит на вес включает служебные данные и зависит от формата блоков. Суффиксы различают варианты обработки тензоров.

GGUF умеет грузиться и на процессор, и на видеокарту, и на оба сразу. Параметр n_gpu_layers говорит, сколько слоёв отдать на GPU, а остальное считать на CPU. Это и делает формат таким удобным для слабого железа: не помещается всё в видеопамять — часть уходит в обычную RAM.

Пример на практике

Видеомонтажёру нужна локальная модель, чтобы писать описания к роликам и черновики субтитров — без оплаты API и без отправки текстов в облако.

Он выбирает instruct-модель в GGUF и несколько вариантов квантизации из одного источника. Сначала проверяет, помещаются ли веса вместе с KV-кэшем, затем сравнивает качество на одинаковых описаниях. Часть слоёв можно передать видеокарте, а остальные оставить в оперативной памяти; скорость зависит от модели, контекста и конкретного оборудования.

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

С чем часто путают

  • GGUF и Safetensors — оба формата хранят тензоры и метаданные, но ориентированы на разные экосистемы. Safetensors может содержать веса разной точности, а GGUF тесно связан с переносимым инференсом и его схемами квантизации.
  • GGUF и GGML — GGML это предшественник, который GGUF полностью заменил с 2023 года. Если встретили .ggml или .bin старого образца — это устаревший формат.
  • GGUF и квантизация — квантизация это сам приём сжатия чисел; GGUF — формат файла, который этот приём применяет и упаковывает результат. Можно квантизовать и в других форматах (AWQ, EXL2).
  • GGUF и AWQ/EXL2 — это разные форматы и экосистемы квантизированного инференса. GGUF часто выбирают для CPU и смешанного размещения, а другие варианты могут быть удобнее в специализированных GPU-серверах. Итог зависит от поддерживаемого backend.

Частые ошибки и заблуждения

  • «GGUF работает только на процессоре». Не так. Формат вырос из CPU-инференса, но прекрасно использует видеокарту через n_gpu_layers, в том числе частично.
  • «Больше битов всегда заметно лучше». Потеря зависит от модели и задачи. Иногда соседние варианты почти неразличимы, а иногда сильное сжатие портит код, редкие языки или следование формату.
  • «Любой GGUF сильно режет качество». Квантизация создаёт компромисс, но его размер нельзя выразить одной универсальной цифрой. Сравнение проводят на одинаковом наборе запросов.
  • «Расширение файла определяет весь процесс обучения». Дообучение обычно идёт в форматах, которые поддерживает выбранный фреймворк, после чего результат конвертируют. Возможности конкретного инструмента стоит проверять отдельно.
  • «GGUF — это только про текст». Формат применяется и для некоторых мультимодальных и генеративных архитектур, если их поддерживает конкретный runtime.

Связанные термины

  • Safetensors — формат для хранения и обучения, из которого модель конвертируют в GGUF.
  • Quantization — приём сжатия весов, лежащий в основе GGUF.
  • FP16/BF16/FP8 — форматы полной и пониженной точности, с которых начинается путь к квантизации.
  • VRAMвидеопамять, дефицит которой GGUF и помогает обойти.
  • LLM — главный тип моделей, которые раздают в GGUF.
  • ComfyUI — здесь GGUF-ноды запускают FLUX на слабом железе.

Частые вопросы

Чем открыть файл GGUF? Программами на базе llama.cpp: Ollama, LM Studio, Jan, KoboldCpp, text-generation-webui. Для картиночных GGUF (FLUX) — ComfyUI с GGUF-нодами.

Нужна ли видеокарта? Нет. GGUF задумывался ради запуска без GPU. С видеокартой просто быстрее, а часть слоёв можно держать на ней, часть — в обычной памяти.

Какой квант скачивать? Сначала считают память под веса и нужный контекст, затем сравнивают несколько уровней квантизации на реальных запросах. Более крупный файл обычно сохраняет больше точности, но величина разницы зависит от модели и сценария.

Где брать готовые GGUF? На Hugging Face: репозитории bartowski, TheBloke (исторический), официальные карточки моделей. Многие модели выкладывают GGUF в день релиза.

Можно ли сделать GGUF самому? Да, скриптом convert_hf_to_gguf.py из llama.cpp: берёт модель в safetensors и конвертирует с выбранным уровнем квантизации.

Главное

GGUF — формат для хранения модели и метаданных, особенно распространённый в экосистеме llama.cpp. Он удобен для локального запуска и смешанного размещения вычислений между CPU и GPU, если runtime поддерживает архитектуру. Вариант квантизации выбирают по доступной памяти и проверяют на своих запросах: универсальной точки, одинаково удачной для всех моделей и задач, нет.