llama.cpp — инференс LLM на чистом C/C++

· 2 мин чтения
llm inference cpp local-ai quantization
📂 Исходный код на GitHub

Инференс больших языковых моделей на чистом C/C++ без зависимостей. Поддержка Apple Silicon, NVIDIA/AMD GPU, Vulkan и SYCL, целочисленная квантизация от 1.5 до 8 бит, гибридный CPU+GPU инференс и OpenAI-совместимый API-сервер.

llama.cpp — инференс LLM на чистом C/C++

llama.cpp — легендарный open-source проект для инференса больших языковых моделей (LLM) и визуально-языковых моделей (VLM) на чистом C/C++. Главная цель проекта — запуск моделей с минимальной настройкой и производительностью уровня state-of-the-art на максимально широком спектре железа: от MacBook до серверных NVIDIA GPU. Проект создан Георги Гергановым и построен поверх тензорной библиотеки ggml. На GitHub у проекта более 124 тысяч звёзд — это один из самых популярных AI-проектов в мире.

Философия проекта

llama.cpp начался в 2023 году как эксперимент с запуском моделей LLaMA на ноутбуке и вырос в стандарт де-факто для локального инференса. Ключевые принципы:

  • Чистый C/C++ без единой зависимости — весь код компилируется сам по себе, никаких тяжёлых фреймворков вроде PyTorch
  • Минимальная настройка — скачать бинарник и запустить модель можно за пару минут
  • Работа везде — от слабых CPU до мощных GPU, локально и в облаке
  • Экономия памяти — за счёт квантизации огромные модели помещаются на обычный ноутбук

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

Быстрый старт

Установить llama.cpp можно несколькими способами:

После установки запуск модели выглядит так:

# Download and run a model directly from Hugging Face
llama cli -hf ggml-org/Qwen3.5-0.8B-GGUF

# Launch OpenAI-compatible API server
llama serve -hf ggml-org/Qwen3.5-0.8B-GGUF

Первая команда скачивает модель в формате GGUF прямо из Hugging Face и запускает интерактивную сессию в терминале — включая работу с изображениями для мультимодальных моделей (VLM). Вторая поднимает API-сервер, совместимый с OpenAI, со встроенным веб-интерфейсом.

Ключевые возможности

Из официального описания проекта:

  • Чистая реализация на C/C++ без зависимостей
  • Apple Silicon — «гражданин первого класса»: оптимизации через ARM NEON, Accelerate и Metal
  • Поддержка AVX, AVX2, AVX512 и AMX для архитектур x86
  • Поддержка RVV, ZVFH, ZFH, ZICBOP и ZIHINTPAUSE для архитектур RISC-V
  • Целочисленная квантизация на 1.5, 2, 3, 4, 5, 6 и 8 бит для ускорения инференса и снижения потребления памяти
  • Собственные CUDA-ядра для запуска LLM на NVIDIA GPU (AMD GPU через HIP, GPU Moore Threads через MUSA)
  • Бэкенды Vulkan и SYCL
  • Гибридный инференс CPU+GPU для частичного ускорения моделей, которые больше суммарного объёма VRAM

Квантизация — главная суперсила

Именно llama.cpp популяризировал агрессивную квантизацию языковых моделей. Идея проста: вместо 16-битных весов использовать целочисленные представления меньшей разрядности. Модель в 4-битной квантизации занимает примерно вчетверо меньше памяти и работает заметно быстрее, при умеренной потере качества.

Диапазон вариантов впечатляет: от консервативных Q8_0 до экстремальных 1.5-битных форматов. Это позволяет запускать крупные модели на скромном железе — например, квантизированные версии моделей на десятки миллиардов параметров умещаются в память обычного ноутбука и даже смартфона.

Поддерживаемые бэкенды

llama.cpp работает практически на любом железе:

Бэкенд Целевые устройства
BLAS, BLIS Любые
CUDA NVIDIA GPU
HIP AMD GPU
Metal Apple Silicon
Vulkan GPU (кроссплатформенно)
SYCL Intel GPU
CANN Ascend NPU
MUSA GPU Moore Threads
OpenCL Adreno GPU
OpenVINO (in progress) Intel CPU, GPU, NPU
WebGPU Любые (в браузере)
RPC Распределённый инференс по сети
zDNN IBM Z и LinuxONE
Hexagon (in progress) Snapdragon
ZenDNN AMD CPU

Особого внимания заслуживают три механизма. Гибридный CPU+GPU инференс позволяет запускать модели, превышающие объём видеопамяти: часть слоёв живёт на GPU, часть — в оперативной памяти. RPC-бэкенд даёт возможность распределить вычисления по нескольким машинам. А WebGPU открывает путь к запуску моделей прямо в браузере.

Инструменты

В репозитории есть набор готовых утилит:

  • cli — интерактивная сессия с моделью в терминале, включая мультимодальные запросы
  • server — HTTP-сервер с OpenAI-совместимым API и встроенным веб-интерфейсом
  • completion — автодополнение кода и текста
  • GBNF-грамматики — формат для ограничения вывода модели строгими грамматиками (JSON, языковые конструкции и т.д.)

GBNF — недооценённая возможность: вместо надежды, что модель выдаст валидный JSON, можно задать грамматику, и модель физически не сможет сгенерировать ничего кроме валидного вывода.

Формат GGUF и экосистема

llama.cpp использует формат моделей GGUF, который стал стандартом для локального инференса. В репозитории есть скрипты конвертации — например, convert_hf_to_gguf.py превращает модели из Hugging Face в GGUF, а convert_lora_to_gguf.py — LoRA-адаптеры. Тысячи готовых GGUF-файлов с разной квантизацией доступны на Hugging Face от сообщества и команд моделей.

Движок llama.cpp лежит в основе огромного числа инструментов локального ИИ — от Ollama и LM Studio до встроенных ассистентов в приложениях. Если вы когда-нибудь запускали LLM локально, почти наверняка под капотом работал llama.cpp.

Сборка и документация

Проект собирается через CMake и Makefile, есть готовые пресеты под основные конфигурации. В документации покрываются: сборка под разные платформы (включая Android), мульти-GPU конфигурации, советы по производительности генерации токенов и работа с моделями.

Проект активно развивается: более 10 400 коммитов, регулярные релизы, открытые PR и обсуждения. Контрибуции приветствуются — от PR до помощи с триажем issues.

Резюме

llama.cpp — фундамент экосистемы локального ИИ. 124k звёзд на GitHub, 21.8k форков, лицензия MIT, язык — C/C++. Если vLLM — стандарт для production-сервинга на серверных GPU, то llama.cpp — стандарт для запуска моделей локально: на ноутбуке, десктопе или любой другой машине под рукой.

🧠 github.com/ggml-org/llama.cpp

Источник: https://github.com/ggml-org/llama.cpp