GGML формат для локального инференса моделей

Термин глоссария

GGML


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 форматы

Категория термина

Инференс и производительность