Что это
llama.cpp — порт оригинальной Llama от Meta на C++, сделанный Георгием Гергановым в марте 2023. Начинался как 500 строк для запуска 7B-модели на MacBook, сейчас это серьёзный проект с поддержкой практически всех современных open-source LLM.
Почему это важно
Когда Герганов опубликовал первую версию, open-source LLM существовали только как PyTorch-чекпойнты весом в десятки гигабайт. Запустить их можно было только с GPU и большой подготовкой. llama.cpp показал, что можно запускать LLM на ноутбуке, на телефоне, на Raspberry Pi — причём с приличной скоростью.
Ключевые идеи
1. Квантизация
Главная фишка проекта — поддержка квантизации весов: 4-bit, 5-bit, 6-bit, 8-bit. Модель 7B в 16-bit занимает ~14 GB, после Q4_0 — около 4 GB. Потеря качества минимальна (обычно <1% на бенчмарках).
2. Минимальные зависимости
Изначально проект был pure C++ без внешних библиотек. Сейчас появились опциональные зависимости для Metal, CUDA, ROCm, Vulkan, но базовый CPU-режим работает везде.
3. GGUF-формат
Команда llama.cpp разработала формат GGUF, который стал стандартом для дистрибуции open-source LLM. Ollama, LM Studio, text-generation-webui — все читают GGUF.
Архитектура
llama.cpp/
├── ggml/ # Библиотека тензорных операций (основа)
├── ggml-cuda/ # CUDA-бэкенд
├── ggml-metal/ # Apple Metal-бэкенд
├── ggml-vulkan/ # Vulkan-бэкенд
├── ggml-opencl/ # OpenCL-бэкенд
├── llama.cpp # Основной файл inference-логики
├── examples/ # chat, server, perplexity, embedding
├── convert_*.py # Скрипты конвертации HF → GGUF
└── quantize # Утилита квантизации
Как использовать
# Клонировать
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
# Собрать с Metal (для Mac)
make
# Скачать модель в GGUF
huggingface-cli download TheBloke/Llama-2-7B-Chat-GGUF \
llama-2-7b-chat.Q4_K_M.gguf
# Запустить
./main -m llama-2-7b-chat.Q4_K_M.gguf \
-p "Расскажи стихотворение про осень" \
-n 256
Производительность
На M2 Max (MacBook Pro 14") с llama-2-7b Q4_K_M:
- Prompt processing: ~80 tokens/s
- Token generation: ~25 tokens/s
Это вполне комфортно для чата и экспериментов.
Кто использует
- Ollama — обёртка над llama.cpp
- LM Studio — GUI для Mac/Windows
- GPT4All — кросс-платформенный клиент
- LocalAI — OpenAI-совместимый сервер
Когда стоит смотреть
- Хотите запустить LLM на специфичном железе (старый ноутбук, edge-устройство)
- Нужен inference с минимальной латентностью без облака
- Изучаете, как устроен LLM-inference изнутри — код llama.cpp читаемый и хорошо документированный
- Хотите форкнуть и сделать что-то своё: fine-tuning UI, кастомный формат, эксперименты с квантизацией
Что изменилось за два года
С 2023 года проект вырос с ~1000 строк до ~80 000. Появились:
- Поддержка всех современных архитектур (Mistral, Qwen, DeepSeek, Gemma, Phi)
- Speculative decoding (ускорение генерации)
- Continuous batching (для серверов)
- LoRA-адаптеры
- Экспериментальная поддержка Mamba и RWKV
Итог
Если вы хотите понять, как устроен современный LLM-inference, начните с llama.cpp. Это тот редкий проект, где код читается как хорошая техническая книга.