llama.cpp — инференс LLM на чистом C/C++
📂 Исходный код на GitHubИнференс больших языковых моделей на чистом C/C++ без зависимостей. Поддержка Apple Silicon, NVIDIA/AMD GPU, Vulkan и SYCL, целочисленная квантизация от 1.5 до 8 бит, гибридный CPU+GPU инференс и OpenAI-совместимый API-сервер.
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 можно несколькими способами:
- Посетить llama.app и следовать инструкциям
- Запустить через Docker — см. документацию
- Скачать готовые бинарники со страницы релизов
- Собрать из исходников по гайду по сборке
После установки запуск модели выглядит так:
# 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 — стандарт для запуска моделей локально: на ноутбуке, десктопе или любой другой машине под рукой.
Источник: https://github.com/ggml-org/llama.cpp