Что это

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. Это тот редкий проект, где код читается как хорошая техническая книга.

#llm#cpp#inference#quantisation
Опубликовано 12 января 2026 г.