Все статьи
· 16 мин чтения

Инференс-движки для LLM: Как перестать гонять модели через transformers и начать жить 🫡

Разбираю инференс-движки для LLM по полочкам — vLLM, SGLang, LMDeploy, Ollama, llama.cpp. Бенчмарки, установка, настройка. Без воды, с кодом и шизой.

Инференс-движки для LLM: Как перестать гонять модели через transformers и начать жить 🫡

Инференс-движки для LLM: Как перестать гонять модели через transformers и начать жить 🫡

Ну чё, малютки, думаете что запустить LLM — это model.generate() и готово? Поздравляю, вас обманули туториалы с Hugging Face 🫡 Когда к твоему сервису приходят сотни юзеров одновременно, наивный подход через transformers разваливается как карточный домик: GPU простаивает между запросами, KV-кэш не переиспользуется, память жрётся как будто её бесконечно. Это как пытаться обслужить ресторан на 200 мест одной микроволновкой.

🔥 Суть за 10 секунд

Специализированные инференс-движки — vLLM, SGLang, LMDeploy, Ollama, llama.cpp — решают все эти проблемы. Тут я разберу каждый движок, покажу бенчмарки на актуальных моделях 2025–2026, и дам пошаговые инструкции по установке на Linux, Windows и macOS. Без воды, с кодом.

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


Часть 1: Теория и Сравнение

Нахуя вообще нужны эти движки? 🗑️🔥

Смотри, малютки. Запустить модель через transformers — это как ездить на Ferrari по дворам на первой передаче. Технически работает, но нахуя? Когда нужен production — наивный подход ломается. Специализированные движки решают проблемы через шесть ключевых технологий:

1 Continuous Batching — новые запросы влетают в батч на лету, без ожидания пока предыдущие допишут свои романы
2 PagedAttention / RadixAttention — виртуальная память для KV-кэша. Как swap в ОС, только для внимания нейросети
3 CUDA Graphs — компиляция графа вычислений, чтобы CUDA-ядра не тупили на каждом запуске
4 Квантизация — INT4/INT8/FP8/NVFP4. Сжимаем веса, экономим VRAM, ускоряем вычисления. Подробнее — в моём посте про квантизацию
5 Спекулятивное декодирование — маленькая модель генерит черновик, большая проверяет. Параллелизм на уровне токенов
6 Асинхронное планирование — CPU планирует следующий батч, пока GPU считает текущий. Никто не простаивает
🧠 PagedAttention vs Наивный подход
Слева — наивное выделение памяти (фрагментация, пустые блоки). Справа — PagedAttention (страничная аллокация без потерь). Каждый цвет — отдельный запрос.
❌ Наивный подход
1Запросов
2Потеряно
17%Утилизация
✅ PagedAttention
1Запросов
0Потеряно
17%Утилизация
Шаг 1/6
💡 Почему PagedAttention — это топ

Представь, что ты выделяешь каждому гостю в ресторане отдельный зал «на всякий случай». Половина залов пустует, а новых гостей ты разворачиваешь — мест нет. PagedAttention — это когда ты сажаешь всех за общие столы и двигаешь стулья по мере необходимости. Наивный подход теряет до 30-40% VRAM на фрагментацию. PagedAttention достигает ~100% утилизации. Вот почему vLLM взлетел.


Обзор движков: кто есть кто (март 2026)

ДвижокВерсияДатаGitHub StarsКлючевое улучшение
vLLMv0.16.0Feb 202671.6k+30.8% E2E throughput (async PP)
SGLangv0.5.9Feb 202623.9kLoRA TTFT −78%, NSA 3-5× Blackwell
LMDeployv0.12.1Feb 20267.6kDeepSeek V3.2, Flash Attention 3
Ollamav0.17.4Feb 2026164kQwen 3.5, LFM2, OpenClaw
llama.cppb8183Mar 202696.2kCUDA 13.1, ROCm 7.2, Vulkan, SYCL

Малютки, давайте разберёмся кто тут кто. Пять движков, пять философий, пять разных ответов на вопрос «как гонять LLM».

vLLM Production-стандарт

Самый популярный production-движок. PagedAttention для управления KV-кэшем, 100+ архитектур, gRPC-сервер (v0.14+), Realtime API (v0.16+). 71k звёзд на GitHub — это не хайп, это индустриальный стандарт.

SGLang Скорость

Движок от LMSYS (те самые ребята с Chatbot Arena). RadixAttention — дерево для переиспользования KV-кэша. Если у тебя RAG или агенты с общими префиксами — SGLang рвёт всех. NSA ядра для ДикойПсины V3.2 дают 3-5× на Blackwell.

LMDeploy C++ скорость

Движок TurboMind на чистом C++ от Shanghai AI Lab. Ноль Python в горячем пути — минимальные накладные расходы. Если тебя бесит Python overhead — это твой выбор. Flash Attention 3 с v0.11.1.

Ollama Для ленивых

«Docker для LLM» — одна команда и модель работает. Под капотом llama.cpp + удобный CLI, REST API и менеджер моделей. 164k звёзд — самый популярный AI-проект на GitHub. Для тех, кто не хочет открывать документацию.

llama.cpp Универсал

Легковесный C/C++ движок для всего: CPU, Apple Silicon, Vulkan, SYCL. Формат GGUF — архитектура, веса и метаданные в одном файле. Минимальные зависимости, максимальный контроль. Для тех, кто любит собирать из исходников.

⚙️ Интерактивное сравнение движков
Выберите движок, чтобы увидеть его характеристики. Каждый оптимизирован под свой сценарий.
vLLM71.6k
ТехнологияPagedAttention
GPUNVIDIA, AMD, Intel
CPU✗ Нет
КвантизацияAWQ, GPTQ, FP8, NVFP4
Speculative Decoding✓ Да
LoRA✓ Да
Pipeline Parallelism✓ Да
Модели100+
GitHub Stars71.6k

Бенчмарки: кто кого рвёт на актуальных моделях 🤯

Малютки, слушайте внимательно. Бенчмарки — это минное поле. Результаты дико зависят от модели, GPU, конфигурации и типа нагрузки. Я собрал данные из независимых источников: GPUStack Performance Lab, vLLM Blog, Reddit. Без маркетинговой шелухи.

Qwen3-235B-A22B: vLLM vs SGLang — кто быстрее?

Тут самое интересное, малютки. На флагманской MoE-модели Qwen3-235B результаты неоднозначные — и это важно понимать.

На 8×A100 SGLang показывает +22.2% над vLLM в baseline. Казалось бы, победитель очевиден? Хрен там. На 8×H100 vLLM вырывается вперёд с +9.8%. А если ещё и оптимизировать конфигурацию vLLM (TP4 + FP8 + max-batched-tokens) — можно запустить два инстанса на том же железе, удвоив throughput до 15 574 tok/s. Это +84.9% к baseline. Пиздец какой прирост от одних настроек.

Qwen3-235B: сравнение vLLM и SGLang на A100 vs H100

Эффект оптимизации vLLM: где больше всего профита

Наибольший эффект (+189.2%) — на коротких промптах, где накладные расходы на запуск особенно велики. На смешанной нагрузке (ShareGPT) прирост +84.9%. Короче, если ты гоняешь vLLM с дефолтными настройками — ты теряешь до 2× производительности. Бесплатно.

Прирост производительности vLLM по типам нагрузки

Qwen3-32B: TensorRT-LLM входит в чат

На более компактной Qwen3-32B в борьбу вступает TensorRT-LLM от NVIDIA. И тут он всех уничтожает. С FP8-квантизацией и chunked prefill отрыв колоссальный: +82.1% на ShareGPT и до +129.4% на длинных промптах. Если у тебя dense-модель и NVIDIA GPU — TRT-LLM вне конкуренции по чистому throughput.

Qwen3-32B: сравнение движков на H100

Сводный бенчмарк: кто где рулит

SGLang лидирует на ДикойПсине V3, vLLM — на Qwen3-235B (H100), TRT-LLM — на Qwen3-32B. Нет одного короля. Есть правильный инструмент для конкретной задачи.

Сводный бенчмарк: современные модели и движки

📊 Бенчмарки инференс-движков
Сравнение производительности на актуальных моделях. Полосатые бары — оптимизированная конфигурация.
Qwen3-235B на 8×A100
SGLang опережает vLLM на +22.2% в baseline-конфигурации на A100.
vLLM (baseline)
6 890 tok/s
SGLang
8 420 tok/s
vLLM (optimized)
10 250 tok/s
■ Сплошная заливка — baseline▧ Полосатая заливка — оптимизированная конфигурация
⚡ Калькулятор производительности
Выберите модель, GPU и квантизацию — получите оценку throughput.
Модель
GPU
Кол-во GPU
Квантизация
VRAM: 17 / 80 ГБ21%
LMDeploy~66,825
SGLang~64,969
vLLM~61,875
llama.cpp~43,313
Ollama~40,219
* Оценка на основе TFLOPS, размера модели и overhead движка.

Throughput vs TTFT: вечный компромисс

Малютки, высокий throughput — это не всегда хорошо. Если юзер ждёт первый токен 5 секунд — ему плевать что у тебя 15k tok/s в батче. SGLang часто даёт лучший TTFT (время до первого токена), а оптимизированный vLLM и TRT-LLM лидируют по throughput. Идеальная зона на графике — правый нижний угол. Быстро и много.

Компромисс между TTFT и throughput для разных движков

🔥 Главный инсайт

Нет одного «лучшего» движка. vLLM — универсальный production-стандарт. SGLang — лучший TTFT и RAG. TRT-LLM — максимальный throughput на dense-моделях. Кто говорит иначе — либо врёт, либо тестил только один сценарий.


Когда что использовать: без воды 🔥

Карточки сценариев использования для каждого движка

Матрица совместимости моделей и движков

Ладно, малютки, хватит графиков. Вот вам конкретика — какой движок для какого сценария.

🏭 Production API vLLM

Тачки с H100/H200/Blackwell, модели типа Qwen3/Llama 4. FP8 + оптимизированная конфигурация. Зрелая экосистема, 100+ архитектур. Если не знаешь что выбрать — бери vLLM.

🔍 RAG и агенты SGLang

RAG-системы и агенты с общими префиксами, особенно на ДикойПсине V3. RadixAttention переиспользует KV-кэш — это реально экономит вычисления. Лучший TTFT в индустрии.

⚡ Batch processing TRT-LLM

Максимальный throughput на dense-моделях (Qwen3-32B, Gemma 3). TensorRT-LLM вне конкуренции по чистой пропускной способности. Минус — нужно компилить модель, это геморрой.

🚀 Быстрый старт Ollama

Локальная разработка, прототипирование, «просто потестить». Одна команда — и модель работает. Идеально для тех, кто не хочет разбираться в конфигах.

💻 CPU и Edge llama.cpp

CPU-инференс, edge-устройства, Apple Silicon. Metal, Vulkan, SYCL — работает везде. Формат GGUF, минимальные зависимости. Стандарт де-факто для локального запуска.

🔧 C++ без Python LMDeploy

Когда Python overhead — это боль. TurboMind C++ движок, экстремальная производительность. Простая установка через pip install lmdeploy. Годнота для тех, кто ценит каждую миллисекунду.

🧭 Мастер выбора движка
Ответьте на несколько вопросов — получите рекомендацию с командой для запуска.
Какая у вас платформа?

Часть 2: Практическое руководство — копипасти и гоняй 🔥

Какие платформы поддерживаются?

🖥️ Совместимость платформ
Выберите вашу платформу, чтобы увидеть какие движки доступны. Или смотрите всё сразу.
Ollama
Linux NVIDIA (CUDA, автоопределение GPU) Linux AMD (ROCm) Windows (Нативный установщик) WSL2 (Через WSL2) macOS M-серия (Metal ускорение)⚠️ macOS Intel (Только CPU)
llama.cpp
Linux NVIDIA (CUDA) Linux AMD (ROCm / Vulkan) Windows (CUDA / Vulkan) WSL2 (Через WSL2) macOS M-серия (Metal (по умолчанию))⚠️ macOS Intel (Только CPU)
vLLM
Linux NVIDIA (Production-ready) Linux AMD (ROCm 6.2) Windows (Не поддерживается)🐧 WSL2 (Через WSL2 + CUDA)⚠️ macOS M-серия (Только CPU, экспериментально) macOS Intel (Не поддерживается)
SGLang
Linux NVIDIA (Production-ready) Linux AMD (ROCm (MI300X)) Windows (Не поддерживается)🐧 WSL2 (Через WSL2 + CUDA) macOS M-серия (Не поддерживается) macOS Intel (Не поддерживается)
LMDeploy
Linux NVIDIA (TurboMind C++) Linux AMD (Не поддерживается) Windows (Не поддерживается)🐧 WSL2 (Через WSL2 + CUDA) macOS M-серия (Не поддерживается) macOS Intel (Не поддерживается)
Полная⚠️ Частичная🐧 WSL2 Нет
Короче, что выбрать

Хочешь гонять на любой платформе без боли? → Ollama или llama.cpp. Нужен production на Linux с NVIDIA? → vLLM, SGLang или LMDeploy. Не усложняй.


Ollama — для тех, кто не хочет думать 🫡

Ollama — это «Docker для LLM». Одна команда — модель скачивается, запускается, работает. REST API из коробки, GPU-ускорение автоматически. Нативные установщики для всех ОС. Если ты джун и хочешь потрогать LLM руками — начни отсюда.

Linux

curl -fsSL https://ollama.com/install.sh | sh

Скрипт сам определяет NVIDIA или AMD GPU и настраивает бэкенд. После установки Ollama запускается как системный сервис. Проверяем:

ollama --version
# ollama version 0.17.4

Гоняем модели:

ollama run qwen3:8b
ollama run deepseek-r1:7b
ollama run llama4:scout

Поднимаем API-сервер:

ollama serve &

curl http://localhost:11434/api/generate -d '{
  "model": "qwen3:8b",
  "prompt": "Объясни разницу между TCP и UDP",
  "stream": false
}'

# OpenAI-совместимый API — подключай любой клиент
curl http://localhost:11434/v1/chat/completions \
  -H "Content-Type: application/json" \
  -d '{
    "model": "qwen3:8b",
    "messages": [{"role": "user", "content": "Привет!"}]
  }'

Управление моделями:

ollama list
ollama pull gemma3:9b
ollama rm gemma3:9b
ollama show qwen3:8b

Тонкая настройка через переменные окружения:

export OLLAMA_MODELS=/mnt/data/ollama
export OLLAMA_HOST=0.0.0.0:11434
export CUDA_VISIBLE_DEVICES=0,1
export OLLAMA_NUM_PARALLEL=4
ollama serve

Windows

Нативный установщик с поддержкой NVIDIA и AMD GPU. Скачал, поставил, работает.

  1. Идёшь на ollama.com/download
  2. Качаешь OllamaSetup.exe
  3. Ставишь. Всё.
ollama run qwen3:8b
ollama serve

Настройка переменных:

$env:OLLAMA_MODELS = "D:\ollama_models"
$env:OLLAMA_HOST = "0.0.0.0:11434"

# Постоянно (для всех сессий)
[System.Environment]::SetEnvironmentVariable("OLLAMA_MODELS", "D:\ollama_models", "User")

macOS

На маках Ollama использует Metal Performance Shaders для ускорения на Apple Silicon (M1/M2/M3/M4). Качаешь с ollama.com/download, перетаскиваешь в /Applications, запускаешь. Metal включается автоматически.

ollama run llama3.2:3b
ollama run gemma3:4b
ollama ps

llama.cpp — для тех, кто любит контроль 🔧

llama.cpp — это C/C++ движок с поддержкой GGUF. Минимальные зависимости, работа на CPU и Apple Silicon, тонкая настройка сборки под конкретное железо. Если Ollama — это автомат, то llama.cpp — это механика с ручным управлением всем.

Linux

Быстрая установка:

brew install llama.cpp

Сборка из исходников (для тех, кто хочет выжать максимум):

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp

# CPU-сборка
cmake -B build
cmake --build build --config Release -j$(nproc)

# NVIDIA CUDA — для тех, у кого зелёная видюха
cmake -B build -DGGML_CUDA=ON
cmake --build build --config Release -j$(nproc)

# AMD ROCm — для красной команды
cmake -B build -DGGML_HIP=ON -DGPU_TARGETS=gfx1100
cmake --build build --config Release -j$(nproc)

# Vulkan — универсальный вариант для AMD/Intel без ROCm
cmake -B build -DGGML_VULKAN=ON
cmake --build build --config Release -j$(nproc)

Качаем модель и гоняем:

wget https://huggingface.co/Qwen/Qwen3-8B-GGUF/resolve/main/qwen3-8b-q4_k_m.gguf

./build/bin/llama-cli \
    -m qwen3-8b-q4_k_m.gguf \
    -c 8192 -n 512 --temp 0.7 -ngl 99 \
    -p "Объясни разницу между TCP и UDP"

# OpenAI-совместимый сервер
./build/bin/llama-server \
    -m qwen3-8b-q4_k_m.gguf \
    -c 8192 -ngl 99 \
    --host 0.0.0.0 --port 8080

Windows

Самый простой способ:

winget install ggml-org.llama.cpp

Сборка из исходников (нужен Visual Studio 2022):

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
mkdir build && cd build

# CPU
cmake ..
cmake --build . --config Release

# NVIDIA CUDA (нужен CUDA Toolkit)
cmake .. -DGGML_CUDA=ON
cmake --build . --config Release

# Vulkan (для AMD/Intel)
cmake .. -DGGML_VULKAN=ON
cmake --build . --config Release
.\build\bin\Release\llama-server.exe `
    -m C:\models\qwen3-8b-q4_k_m.gguf `
    -c 8192 -ngl 99 `
    --host 0.0.0.0 --port 8080

macOS (Apple Silicon)

Metal-ускорение включено по умолчанию. На M1/M2/M3/M4 работает отлично.

brew install llama.cpp

Или из исходников:

git clone https://github.com/ggml-org/llama.cpp.git
cd llama.cpp
cmake -B build
cmake --build build --config Release -j$(sysctl -n hw.logicalcpu)
curl -L -o llama3.2-3b-q4_k_m.gguf \
    "https://huggingface.co/bartowski/Llama-3.2-3B-Instruct-GGUF/resolve/main/Llama-3.2-3B-Instruct-Q4_K_M.gguf"

./build/bin/llama-cli \
    -m llama3.2-3b-q4_k_m.gguf \
    -c 4096 -ngl 99 --temp 0.7 \
    -p "Привет! Расскажи о себе."

# Мониторинг GPU на маке
sudo powermetrics --samplers gpu_power -i 1000

vLLM — production-стандарт, малютки 🏭

vLLM — это то, что крутится в production у большинства компаний. Если ты деплоишь LLM на Linux с NVIDIA GPU — скорее всего, ты используешь vLLM. Официально не поддерживает Windows (кроме WSL2) и macOS (только CPU, экспериментально). И это нормально — production-движку не нужно работать на маке.

Linux (NVIDIA GPU)

Требования: Linux (Ubuntu 20.04+), Python 3.10–3.13, NVIDIA GPU (Compute Capability 7.0+), CUDA 12.1+, RAM 16 GB+.

Установка через uv (рекомендую — быстрее pip в разы):

pip install uv
uv venv vllm-env --python 3.12
source vllm-env/bin/activate
uv pip install vllm --torch-backend=auto

Или по старинке:

pip install vllm

Гоняем сервер:

# Базовый запуск — одна строка
vllm serve meta-llama/Llama-3.1-8B-Instruct

# FP8 квантизация на H100/H200 — бесплатный прирост
vllm serve Qwen/Qwen3-8B \
    --quantization fp8 \
    --gpu-memory-utilization 0.90

# Tensor parallelism — раскидываем модель на 4 GPU
vllm serve Qwen/Qwen3-72B \
    --tensor-parallel-size 4 \
    --gpu-memory-utilization 0.90 \
    --enable-prefix-caching

# ДикаяПсина V3 — 8 GPU, trust-remote-code обязателен
vllm serve deepseek-ai/DeepSeek-V3 \
    --tensor-parallel-size 8 \
    --trust-remote-code \
    --max-model-len 32768

Docker (для тех, кто не хочет засирать систему):

docker run --runtime nvidia --gpus all \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    -p 8000:8000 --ipc=host \
    vllm/vllm-openai:v0.16.0 \
    --model Qwen/Qwen3-8B \
    --gpu-memory-utilization 0.90 \
    --enable-prefix-caching

Linux (AMD ROCm)

pip install vllm --extra-index-url https://download.pytorch.org/whl/rocm6.2
vllm serve meta-llama/Llama-3.1-8B-Instruct

macOS (экспериментально, только CPU — ну такое)

brew install ninja libomp
export CMAKE_ARGS="-DCMAKE_OSX_ARCHITECTURES=arm64"
export LDFLAGS="-L$(brew --prefix libomp)/lib"
export CPPFLAGS="-I$(brew --prefix libomp)/include"

git clone https://github.com/vllm-project/vllm.git
cd vllm
pip install -e . --no-build-isolation

vllm serve meta-llama/Llama-3.2-1B-Instruct \
    --device cpu --dtype float32

SGLang — когда нужна скорость, а не популярность ⚡

SGLang — высокопроизводительный фреймворк с RadixAttention от LMSYS. Официально только Linux. Windows — через WSL2, macOS — хрен. Если ты строишь RAG-систему или агентов — присмотрись. RadixAttention реально экономит вычисления на общих префиксах.

Linux (NVIDIA GPU)

Требования: Linux (x86_64/aarch64), Python 3.9+, CUDA 12.1+, NVIDIA (H100, A100, RTX 3090+) или AMD (MI300X).

pip install sglang[all]

Из исходников (для максимальной производительности):

git clone https://github.com/sgl-project/sglang.git
cd sglang
pip install -e "python[all]"

Гоняем:

python -m sglang.launch_server \
    --model-path meta-llama/Llama-3.1-8B-Instruct \
    --host 0.0.0.0 --port 30000

# Qwen3-235B с tensor parallelism и FP8
python -m sglang.launch_server \
    --model-path Qwen/Qwen3-235B-A22B \
    --tp 8 --quantization fp8 \
    --host 0.0.0.0 --port 30000

# ДикаяПсина V3 с NSA ядрами (для Blackwell — огонь)
python -m sglang.launch_server \
    --model-path deepseek-ai/DeepSeek-V3 \
    --tp 8 --trust-remote-code \
    --host 0.0.0.0 --port 30000

Docker:

docker run --gpus all \
    -p 30000:30000 \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    lmsysorg/sglang:latest \
    python -m sglang.launch_server \
        --model-path meta-llama/Llama-3.1-8B-Instruct \
        --host 0.0.0.0 --port 30000

LMDeploy — C++ движок для перфекционистов 🔧

LMDeploy использует TurboMind — C++ движок без Python в горячем пути. Минимальные накладные расходы. Только Linux с NVIDIA GPU. Если тебя бесит, что Python жрёт миллисекунды на каждом запросе — это твой вариант.

Требования: Linux, Python 3.8+, CUDA 11.8+, NVIDIA GPU (Ampere+ рекомендуется).

pip install lmdeploy

Интерактивный чат:

lmdeploy chat meta-llama/Llama-3.1-8B-Instruct
lmdeploy chat Qwen/Qwen3-8B --quant-policy 4

OpenAI-совместимый сервер:

lmdeploy serve api_server meta-llama/Llama-3.1-8B-Instruct \
    --server-port 23333

# С квантизацией и TP
lmdeploy serve api_server Qwen/Qwen3-72B \
    --tp 4 --quant-policy 4 \
    --server-port 23333

# Кастомная конфигурация для максимума
lmdeploy serve api_server meta-llama/Llama-3.1-8B-Instruct \
    --server-port 23333 \
    --max-batch-size 128 \
    --cache-max-entry-count 0.8 \
    --session-len 32768

Docker:

docker run --runtime nvidia --gpus all \
    -v ~/.cache/huggingface:/root/.cache/huggingface \
    -p 23333:23333 \
    openmmlab/lmdeploy:latest \
    lmdeploy serve api_server meta-llama/Llama-3.1-8B-Instruct \
        --server-port 23333

WSL2 для Windows: как гонять production-движки на винде 🪟

Малютки, если вы на Windows и хотите vLLM, SGLang или LMDeploy — WSL2 ваш единственный вариант. Но не бойтесь, настраивается за 10 минут.

1 Включить WSL2: wsl --install в PowerShell от имени администратора. Перезагрузить комп.
2 Поставить драйверы NVIDIA: Качаешь с nvidia.com для Windows (не Linux!). Драйвер сам включает CUDA в WSL2.
3 Проверить GPU: nvidia-smi внутри WSL2. Видишь GPU — всё ок. Не видишь — обновляй WSL.
4 Поставить CUDA Toolkit: sudo apt-get install -y cuda-toolkit-12-4 внутри WSL2.
5 Поставить движок: Дальше — по инструкциям для Linux. Всё то же самое.

Полезные команды:

wsl --list --verbose
wsl -d Ubuntu-22.04
wsl --shutdown
wsl --update

.wslconfig для нормальной производительности (создать в домашней директории Windows):

[wsl2]
memory=32GB
processors=8
swap=8GB
gpuSupport=true

Оптимизация vLLM: как выжать максимум 🔥

Пошаговая оптимизация vLLM: от baseline до максимальной производительности

Рецепт оптимизации — копипасти и радуйся

Baseline → включаешь FP8 квантизацию → настраиваешь max-batched-tokens → уменьшаешь TP (TP4 вместо TP8) → запускаешь несколько инстансов на одном кластере. Каждый шаг даёт ощутимый прирост, а в сумме — до +189% на коротких промптах. Бесплатная производительность, малютки. Просто настрой конфиг.


Типичные проблемы: когда всё сломалось 🗑️🔥

Малютки, вот топ проблем, с которыми вы столкнётесь. Я уже наступил на все эти грабли — сэкономлю вам время.

vLLM: CUDA out of memory Классика

Уменьшаешь --gpu-memory-utilization 0.80, ограничиваешь --max-model-len 4096, включаешь квантизацию --quantization awq. Если не помогает — модель тупо не влезает, бери GPU побольше или квантизуй агрессивнее.

llama.cpp: не влезает в VRAM Решаемо

Частичная выгрузка на GPU: -ngl 20 (20 слоёв из 32 на GPU, остальное на CPU). Полностью на CPU: -ngl 0. Медленнее, но работает.

Ollama: тормозит на macOS Частое

Проверяешь ollama ps — в колонке Processor должно быть «100% GPU». Если CPU — перезапускаешь: pkill ollama && ollama serve. Metal иногда не подхватывается с первого раза.

WSL2: GPU не видна Бесит

Обновляешь WSL: wsl --update && wsl --shutdown. Проверяешь версию: wsl --status. Если не помогает — обновляй драйверы NVIDIA на Windows.

SGLang: FlashInfer not found Частое

Ставишь вручную: pip install flashinfer -i https://flashinfer.ai/whl/cu124/torch2.4/. SGLang без FlashInfer — как машина без колёс.


Итого, малютки 🫡

🔥 Главный вывод

Нет одного «лучшего» движка — есть правильный инструмент для конкретной задачи. vLLM — production-стандарт. SGLang — RAG и низкая задержка. TRT-LLM — максимальный throughput. Ollama — быстрый старт. llama.cpp — CPU и edge. Кто говорит «просто бери X» — не понимает о чём говорит.

Моя субъективная оценка «годноты» каждого движка для своего сценария:

vLLM — Production API (H100/H200) 90 %
SGLang — RAG и агенты 85 %
TRT-LLM — Batch throughput 95 %
Ollama — Быстрый старт 98 %
llama.cpp — CPU и Edge 92 %

Если честно, инференс-движки — одна из самых недооценённых тем в ML. Все гоняются за новыми моделями и лярдами параметров, а реальный прорыв в доступности LLM — вот он, в умном управлении памятью и вычислениями. Разобрались в движках, поняли когда что использовать, знаете как настроить — теперь можете гонять модели по-взрослому. Вперёд, малютки.


Источники

  1. GPUStack Performance Lab: Qwen3-235B-A22B on 8x A100
  2. GPUStack Performance Lab: Qwen3-235B-A22B on 8x H100
  3. GPUStack Performance Lab: Qwen3-32B on 1x H100
  4. vLLM Blog: Blazing Fast Llama 4 Inference
  5. A collection of benchmarks for LLM inference — Reddit r/LocalLLaMA
  6. vLLM Installation Documentation
  7. llama.cpp Build Documentation
  8. Ollama Download Page
  9. SGLang GitHub Repository
  10. LMDeploy Documentation
  11. NVIDIA WSL2 Documentation