llama.cpp, Ollama и LM Studio: чем движок отличается от обёртки
Почему llama.cpp — это движок, а Ollama и LM Studio — надстройки над ним, чем Llama отличается от llama.cpp, и что из этого выбрать под свою задачу на домашнем ПК.
Спор «llama.cpp или Ollama» построен на неверной посылке. Это не два конкурирующих продукта, а два уровня одной стопки: llama.cpp считает модель, Ollama делает это удобным. Выбирать между ними примерно так же осмысленно, как выбирать между двигателем и автомобилем.
Заодно станет понятно, почему на одинаковом железе разницы в скорости ты, скорее всего, не заметишь, что бы ни обещали заголовки сравнений.
Сначала о путанице: Llama и llama.cpp — разные вещи
Это самый частый вопрос по теме, и он справедливый: названия почти совпадают.
Llama — семейство моделей от Meta. Это то, что думает: файл с весами, обученный на текстах.
llama.cpp — программа на C и C++, которая эти веса запускает. Это то, что считает. Название историческое: проект начинался как способ гонять первую Llama на обычном ноутбуке. С тех пор он давно перерос исходную задачу и запускает почти всё, что выходит в формате GGUF, — Qwen, DeepSeek, Gemma, GigaChat и десятки других семейств.
Поэтому фраза «я запускаю llama.cpp» ничего не говорит о модели, а «я скачал Llama» ничего не говорит о том, чем ты её запустил.
Что такое llama.cpp
Движок вывода: берёт .gguf-файл, раскладывает его по памяти, считает на процессоре,
видеокарте или на обоих сразу. Внутри — тензорная библиотека ggml, тот самый низкий уровень,
где происходит арифметика.
Наружу llama.cpp торчит несколькими программами. Основные две: llama-cli для запуска в
терминале и llama-server, который поднимает HTTP-сервер с OpenAI-совместимыми эндпоинтами и
простым веб-интерфейсом в браузере.
Что такое GGUF и что означают метки вроде Q4_K_M, разобрано в
отдельной статье.
Кто на нём стоит
Ollama — демон, который висит в фоне и управляется командами. В списке поддерживаемых
бэкендов у него значится llama.cpp. Сверху добавлены реестр моделей (ollama pull qwen3),
автоматическая выгрузка неиспользуемых моделей из памяти и свой REST API.
LM Studio — настольное приложение с окном, чатом и кнопками. Запускает llama.cpp напрямую, а на Apple Silicon умеет ещё и MLX. Сверху — поиск моделей на Hugging Face прямо в интерфейсе, панель настроек загрузки и переключатель локального сервера.
Отсюда простой вывод: скорость генерации у всех трёх сопоставима, потому что считает одно и то же. Если кто-то обещает «в два раза быстрее, чем Ollama», речь почти всегда о разных настройках или разной квантизации, а не о самом движке.
Проверяется это за минуту. Возьми один и тот же .gguf-файл, один и тот же промпт и сравни
токены в секунду. Расхождение в пределах пары процентов — это шум, а не преимущество
инструмента.
Где разница действительно есть
Она в контроле и в цене этого контроля.
В llama.cpp ты сам задаёшь размер контекста, число слоёв на видеокарте, параметры сэмплирования и вид KV-кэша. Обёртки часть этих ручек прячут ради простоты, а часть выставляют за тебя. Там же, в движке, первыми появляются новые архитектуры моделей: в день, когда их принимают в проект. Обёртки подтягивают их, когда обновят свою версию llama.cpp, и разрыв обычно составляет от нескольких дней до пары недель.
Платишь за это временем на старте. Ollama ставится одной командой, LM Studio открывается как обычное приложение, а llama.cpp требует выбрать сборку под своё железо, положить рядом модель и разобраться с ключами запуска. Ничего страшного, но вечер уйдёт.
Есть и менее очевидная плата. В llama.cpp легко случайно запустить модель целиком на процессоре, посмотреть на два токена в секунду и сделать вывод, что локальные модели вообще не работают. Обёртки такие вещи разруливают за тебя, и в этом их основная ценность.
Что выбрать
| Ситуация | Разумный выбор |
|---|---|
| Нужен локальный API для своего кода, минимум лишнего | Ollama |
| Хочется посмотреть на модели, сравнить их в чате | LM Studio |
| Нужна новая архитектура, которую обёртки ещё не подтянули | llama.cpp |
| Нужны редкие ключи запуска и точная настройка памяти | llama.cpp |
| Нужен результат работы, а не модель | ни то, ни другое — см. ниже |
Про выбор между двумя обёртками есть подробный разбор с адресами эндпоинтов и лицензиями: Ollama или LM Studio. Запуск llama.cpp на Windows без сборки из исходников — здесь, а вызов модели из своего кода — в статье про llama-cpp-python.
Отдельно стоит четвёртый движок, vLLM. Его регулярно советуют как самый быстрый, но он рассчитан на Linux и серверную видеокарту: почему дома он не нужен, разобрано в отдельной статье.
Чего не делает ни один из трёх
Все три инструмента решают одну задачу: заставить модель отвечать. Дальше начинается то, ради чего локальную модель обычно и ставят, — и вот тут стопка заканчивается.
Ни llama.cpp, ни Ollama, ни LM Studio не откроют твою папку с договорами, не соберут из них таблицу, не запустят тесты в проекте и не сделают это в семь утра по расписанию. Они отдают текст в ответ на текст. Всё остальное ты пишешь сам: клиент, логику шагов, обработку файлов, проверку результата.
Дока занимает как раз этот уровень выше. Это агент: он работает с файлами и терминалом, подключает MCP-серверы, умеет расписания и ведёт задачу до результата, а не до ответа в чате. Модель при этом остаётся локальной — GGUF-файл скачивается прямо в приложении, отдельно поднимать движок не нужно.
Так что честная формулировка выбора выглядит не как «llama.cpp против Ollama», а так: если тебе интересно само устройство инференса — бери движок и собирай стопку руками. Если нужен выполненный результат — ставь Доку и не собирай ничего.