# llama.cpp, vLLM или Ollama: чем запускать локальную LLM на своём сервере

> Гуляющие по сети советы списаны с бенчмарков датацентровых GPU и редко переживают встречу с одной коробкой. Для чего каждый движок на самом деле, какой и где гоняем мы сами и почему, и вопрос о дефолтах, который весит больше самого выбора.

- Published: 2026-08-21
- Evidence level: lab_single_run
- Funding: Собственное финансирование, внутреннее исследование
- Canonical: https://agmind.ai/ru/reports/which-inference-engine-local-llm/

Коротко: на одной коробке, обслуживающей несколько человек, движок редко
оказывается узким местом, а честная причина его сменить — смена формы
ворклоада, а не таблица бенчмарков. Мы гоняем llama.cpp на машинах Strix Halo, а vLLM — на паре DGX Spark, и решающим в обоих случаях было то,
что нужно ворклоаду, а не какой движок «быстрее» в вакууме.

Сначала предупреждение о жанре. Большинство сравнений движков, которые вы
найдёте, прогнаны на датацентровых GPU, цитируют множители пропускной способности, снятые на размерах батча, которых домашний сервер не видит никогда, и
опускают модель, квант и конкурентность, которые их произвели.
Кросс-движковых цифр на одинаковом железе нет и у нас — и вместо того,
чтобы одолжить чужие, эта страница говорит то, что мы знаем из
эксплуатации обоих.

## Для чего каждый из них

**llama.cpp** запускает квантованные веса GGUF почти на чём угодно,
включая встроенные GPU через Vulkan, — ровно поэтому он наш обслуживающий
рантайм на коробках с unified-памятью. Это сервер плюс набор бэкендов, он
стартует за секунды и честно рассказывает, что делает, если спросить:
эндпоинт `/props` вернёт конфигурацию, которая сложилась на деле, — а она важнее, чем принято думать.

**vLLM** построен для обслуживания в масштабе: непрерывный батчинг,
управление памятью через paged attention, тензорный параллелизм между
устройствами. На нашей паре Spark тензорный параллелизм — не приятное
дополнение: это единственная причина, по которой модель на 284B
параметров вообще запускается, и
[серверный рецепт](https://agmind.ai/ru/reports/deepseek-v4-flash-0731-dgx-spark-recipe/)
существует потому, что дорога туда потребовала настоящей эксплуатационной
работы. В обмен на эту возможность вы получаете стек потяжелее: долгий
старт, ограничения по формату модели и поведение выбора ядер, которое
[может молча взять путь помедленнее](https://agmind.ai/ru/reports/dsv4-flash-moe-backend-dgx-spark/).

**Ollama** — слой дистрибуции и управления моделями, под которым работает
llama.cpp. «Ollama против llama.cpp» поэтому обычно вообще не вопрос про
движок — это вопрос о том, чьи дефолты вы наследуете и видите ли вы их.

## Вопрос, который весит больше движка

Что бы вы ни запускали, выясните, какая конфигурация сложилась на деле. Самая дорогая ошибка измерения в нашем собственном журнале родом из рантаймового дефолта
параллельных слотов, который сменился между версиями и молча поделил
пропускную способность на поток — дни теорий о тюнинге умерли от одного
запроса к работающему серверу.
[Полная история — в эссе](https://agmind.ai/ru/essays/luddites-were-right/), а общая форма
урока — [здесь](https://agmind.ai/ru/essays/benchmark-number-config-in-disguise/): флаг,
который вы не выставили, всё равно часть вашей конфигурации.

Вот где обёртки обходятся дорого. Слой, который управляет моделями за
вас, заодно выбирает за вас длину контекста, число слотов, поведение
выгрузки и дефолты сэмплинга, и если посмотреть на эти решения вы не
можете, то не можете ни объяснить собственные цифры, ни починить их.

## Когда llama.cpp достаточно

Всё, что мы меряем на одной коробке со 128 ГБ, работает на нём: одиночные
ассистенты,
[конкурентность небольшой команды](https://agmind.ai/ru/reports/concurrency-capacity-strix-halo/),
[документные сессии](https://agmind.ai/ru/reports/llamacpp-prompt-cache-strix-halo/),
[автоматизация со строгим JSON](https://agmind.ai/ru/reports/local-llm-json-reliability/) и
[три часа непрерывной нагрузки](https://agmind.ai/ru/reports/strix-halo-sustained-load-3-hours/).
На этом классе железа практический потолок — пропускная способность
памяти, и с физикой не спорит ни один движок: сильнее всего наши цифры
сдвинули [квантование](https://agmind.ai/ru/reports/q8-0-vs-q4-k-m-strix-halo/) и
[бэкенд](https://agmind.ai/ru/compare/llamacpp-vulkan-vs-rocm-strix-halo/), оба внутри
llama.cpp.

## Когда ворклоад просит vLLM

Три сигнала — из собственного опыта эксплуатации, а не из бенчмарка:

**Модель не помещается в одно устройство.** Тензорный параллелизм между
узлами — та самая возможность, и для фронтирного открытого класса она не
опциональна.

**Вы обслуживаете настоящую очередь, а не несколько чатов.** Непрерывный
батчинг отрабатывает свою сложность, когда запросы действительно
перекрываются весь день.

**Вам нужен вендорский быстрый путь для конкретной модели.** Некоторые
ядра поставляются только в этой экосистеме — и, как мы выяснили, иногда
только если попросить о них явно.

Если ничто из этого не описывает вашу коробку, тяжёлый стек даёт вам не скорость, а лишнюю эксплуатационную поверхность.

## Чего мы не измеряли

Сравнения этих движков на одном железе, одной модели и одном ворклоаде в
нашем архиве нет, поэтому на этой странице нет кросс-движковых цифр. Наши
два движка работают на двух разных классах железа по двум разным
причинам, и поставить их цифры в соседние колонки значило бы изготовить
ровно тот фольклор, на демонтаж которого мы тратим время. Если сравнение
случится позже, оно придёт с сырыми прогонами.

А пока протокол, которым это решается на вашей собственной коробке,
[описан здесь](https://agmind.ai/ru/reports/how-to-benchmark-local-llm/): заморозьте
ворклоад, запините оба стека, спросите каждый сервер, с какой конфигурацией он на самом деле работает, и держите отказы в знаменателе. Это измерение стоит для
вас больше любого общего ответа, включая этот.

---

Machine-readable claim registry: https://agmind.ai/claims.json · llms.txt: https://agmind.ai/llms.txt
