Что такое движок
Движок — это способ раскладки модели в VRAM + API обращения к модели. Шкала оценок (1–5): сложность — порог входа (настройка, зависимости, понимание параметров); возможности — что умеет движок (batching, квантизация, TP, API, hardware-coverage). Чем выше по списку, тем сложнее и тем мощнее.
Сравнение
| Движок | Сложность | Возможности | Когда брать |
|---|---|---|---|
| vLLM | 3/5 | 4/5 | Де-факто стандарт production-сервинга: PagedAttention, continuous batching, OpenAI API, самый широкий hardware-coverage (NVIDIA, AMD ROCm, TPU, Gaudi, CPU) |
| SGLang | 4/5 | 5/5 | Максимальный throughput + structured output: RadixAttention (prefix-cache) до ~29% быстрее vLLM на H100, до 6.4× на prefix-heavy нагрузках; xGrammar для JSON |
| TensorRT-LLM | 5/5 | 5/5 | Максимальная производительность, только NVIDIA: FP8/FP4, peak throughput на H100/H200/B200, но нужна компиляция модели (длинный cold start, пересборка при смене модели). На 3090 нецелесообразно |
| llama.cpp | 2/5 | 3/5 | Edge / CPU / consumer GPU: GGUF (Q4_K_M, Q5_K_M, Q8_0), чистый C/C++ без зависимостей, offload слоёв CPU↔GPU, работает на 8 GB VRAM и даже на чистом CPU |
| Ollama | 1/5 | 2/5 | Одна команда, OpenAI-совместимый API, реестр готовых моделей. Dev, эксперименты, прототипы |
| TGI (Hugging Face) | 3/5 | 3/5 | Maintenance mode (2026): брать только если уже сидите в HF-стеке |
| LMDeploy (TurboMind) | 4/5 | 4/5 | ~1.5–1.8× throughput vs vLLM на A100/H100 |
vLLM — оптимум «сложность/возможности» (3/5 vs 4/5). Поэтому путь до 1 млрд токенов — Ollama → llama.cpp → vLLM.
Путь модели: disk → RAM → VRAM
Модель не грузится «напрямую в GPU» — она идёт через RAM:
- RAM 1.2X — транзитный буфер: модель читается в RAM, потом копируется в VRAM; +10–20% overhead (OS, буферы, CUDA context).
- VRAM 1–2X — веса (1X) + KV-cache (растёт с контекстом и конкурентностью: 0 → 1X+ на длинном) + 10–20% overhead. Короткий контекст ~1.1–1.3X, длинный (128K+) — 2X и выше.
Наш стек (Qwen3.8-27B-AWQ, 16 GB на диске, 2×RTX 3090): RAM ≥ 32 GB (2X, с запасом), VRAM ~20–24 GB на 32K контекст (1.3–1.5X), до ~39 GB на 256K (2.4X).
Форматы моделей
- GGUF → локальный/edge (llama.cpp/Ollama).
- AWQ/FP8 → production-сервер (vLLM/SGLang).
Наш стек (Qwen3.8-27B-AWQ-MTP, 2×RTX 3090, Ampere):
- vLLM — основной production-движок (AWQ, TP=2, MTP);
- SGLang — альтернатива при prefix-heavy нагрузке;
- llama.cpp / Ollama — edge и CPU-фолбэк;
- TensorRT-LLM — не наш сценарий (H100+ и компиляция моделей).
Что мы видели в референс-деплое
Путь нашего кластера: Ollama (Tesla M40) → llama.cpp (3060/4070 Ti под Proxmox) → vLLM (2×3090). Почему на каждом шаге меняли рантайм — в части 1 серии «Наш опыт», конфигурация vLLM — в части 3.
Вывод
Начинайте с Ollama «чтобы просто заработало», растите до llama.cpp за контролем контекста и VRAM, и заканчивайте на vLLM для production. Движок выбирают не по бенчмарку, а по тому, где ограничения текущего движка перестают тянуть вашу нагрузку.
Смежные материалы: Тюнинг vLLM (часть 3), Путь железа (часть 1), Tensor Parallelism, Continuous Batching.