GGML — это низкоуровневый формат и библиотека для инференса больших моделей на CPU за счёт квантования, оптимизированных матричных операций и минимальных внешних зависимостей.
Определение
GGML (General-purpose GPU-less ML) — это бинарный формат весов и сопровождающая его C-библиотека для инференса моделей без обязательного использования GPU. Он оптимизирован под выполнение на процессорах с инструкциями AVX/AVX2/AVX512 и SIMD-операциями, а также способен работать на мобильных ARM-устройствах. GGML стал основой для ранних CPU-версий LLaMA, Falcon, Mistral и других LLM, а также дал начало семейству производных проектов (например, llama.cpp).
Как работает
GGML использует собственный исполняемый граф операций и хранит веса в квантованных форматах (Q4, Q5, Q8 и гибриды), снижая размер модели и потребление памяти. Основной механизм ускорения — предвычисленные таблицы и плотные матричные умножения, оптимизированные под конкретный набор SIMD-инструкций CPU. В библиотеке отсутствует зависимость от внешних фреймворков: граф инференса реализован вручную, включая attention, нормализации, активации и операции матричного умножения.
GGML не компилирует граф динамически — операции выполняются в фиксированном порядке, что уменьшает накладные расходы. Квантование реализовано постфактум: модель обучается в FP16/FP32, затем конвертируется в Q-форматы через вспомогательные инструменты вроде convert.py для llama.cpp.
Где применяется
- Локальный инференс LLM на ноутбуках и серверах без GPU.
- Мобильные приложения с ограниченной памятью (Android, iOS).
- Edge-устройства и встраиваемые системы.
- Ускоренные CPU-сервера для дешёвого инференса небольших моделей.
- Тонкие веб-сервисы, которым требуется автономный офлайн-инференс.
Практические примеры использования
Llama.cpp, один из самых популярных проектов локального инференса, полностью построен на GGML и его производных. Коммерческие и open-source ассистенты используют GGML-модели для офлайн-режима: чат-приложения, локальные генераторы текста, приватные RAG-агенты. На базе GGML создавались ранние порты LLaMA и Alpaca для смартфонов. Некоторые облачные компании применяют GGML-квантованные модели для дешевых CPU-нод, уменьшая нагрузку на GPU-кластеры.
Ключевые свойства
- Квантование до Q2–Q8 с минимальной потерей качества на малых моделях.
- Оптимизация под AVX/AVX2/AVX512 и NEON.
- Отсутствие тяжелых зависимостей и компиляторов графа.
- Плотная реализация attention и MLP.
- Поддержка больших контекстов через rope-скейлинг.
- Формат пригоден для быстрых конверсий из PyTorch/TF весов.
Проблемы и ограничения
- Ограниченная скорость на больших моделях (13B+), даже при AVX512.
- Качество инференса деградирует при агрессивном квантовании.
- Нет нативной поддержки сложных операторов, встречающихся в новых LLM.
- Ограничения CPU-кэша влияют на стабильность скорости.
- Отсутствие гибкого планировщика графа.
Преимущества и ограничения
- Плюс: минимальные требования к оборудованию, высокая портируемость.
- Минус: значительное падение производительности по сравнению с GPU-фреймворками.
Связанные термины
- llama.cpp
- Квантование модели
- Инференс на CPU
- GGUF
- Q4/Q5/Q8 форматы