Ollama vs vLLM vs LM Studio vs llama.cpp — сравнение локальных LLM серверов
opensourceaillmollamavllmit
Введение
Запуск LLM локально стал массовым трендом. Но инструментов много — какой выбрать?
Сравниваем 4 основных решения для локального запуска LLM:
| Инструмент | Язык | API | Web UI | GPU | Сложность |
|---|---|---|---|---|---|
| Ollama | Go | OpenAI | Нет | CUDA/MPS | ⭐ |
| vLLM | Python | OpenAI | Нет | CUDA | ⭐⭐⭐ |
| LM Studio | Rust/TS | OpenAI | Да | CUDA/MPS | ⭐⭐ |
| llama.cpp | C | OpenAI | Нет | CPU/GPU | ⭐⭐⭐ |
Ollama
Что это?
Ollama — самый простой способ запустить LLM локально. Один command — и модель работает.
Установка
# macOS
brew install ollama
# Linux
curl -fsSL https://ollama.com/install.sh | sh
# Windows — installer с сайта
Запуск модели
# Скачать и запустить
ollama run llama3.2
# Через API
ollama serve
# Список моделей
ollama list
# Удалить модель
ollama rm llama3.2
API совместимость
# Ollama совместим с OpenAI API
curl http://localhost:11434/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "llama3.2",
"messages": [
{"role": "user", "content": "Привет!"}
]
}'
Преимущества
✅ Простейшая установка (brew install)
✅ Автоматическое скачивание моделей
✅ Поддержка GGUF (Q4_K_M по умолчанию)
✅ CPU + GPU (CUDA, Metal)
✅ Low-level API (embeddings, generate)
✅ Модели оптимизированы (Mistral, Llama, Phi)
✅ Модули (Modelfile)
Modelfile — настройка модели
# Modelfile для кастомной модели
FROM llama3.2
PARAMETER temperature 0.7
PARAMETER num_ctx 4096
PARAMETER num_gpu 35
SYSTEM You are a helpful assistant that speaks Russian.
# Build
ollama create my-llama -f Modelfile
ollama run my-llama
Недостатки
❌ Нет встроенного Web UI
❌ Меньше контроля над inferencing
❌ Не поддерживает pipeline parallelism
❌ Медленнее vLLM на GPU
❌ Нет PagedAttention
Когда использовать Ollama?
- Быстрый старт (dev, тесты)
- macOS (Metal оптимизация)
- Простые проекты
- Embedding + generation в одном
- Локальные агенты
vLLM
Что это?
vLLM — высокопроизводительный LLM inference engine от UC Berkeley. Создан для production нагрузки.
Ключевые технологии
1. PagedAttention:
- Memory management как в OS (pages)
- Убирает fragmentation
- 2-4x больше throughput чем HuggingFace
2. Continuous batching:
- Новые requests не ждут entire sequence
- Batching на уровне tokens
- Lower latency
3. Tensor parallelism:
- Split модели на несколько GPU
- 8x speedup с 8 GPU
4. Speculative decoding:
- Small model proposes, large model verifies
- 2x speedup
Установка
pip install vllm
# С конкретным CUDA
pip install vllm --index-url https://download.pytorch.org/whl/cu121
Запуск
# Запуск OpenAI-compatible API
python -m vllm.entrypoints.api_server \
--model meta-Llama/Meta-Llama-3-70B \
--tensor-parallel-size 4 \
--port 8000
# Python API
from vllm import LLM, SamplingParams
llm = LLM(model="meta-Llama/Meta-Llama-3-70B")
prompts = ["Hello, my name is", "The capital of France is"]
sampling_params = SamplingParams(
temperature=0.7,
top_p=0.95,
max_tokens=128
)
outputs = llm.generate(prompts, sampling_params)
for output in outputs:
prompt = output.prompt
generated_text = output.outputs[0].text
print(f"Prompt: {prompt!r}")
print(f"Generated: {generated_text!r}")
OpenAI-compatible API
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "meta-Llama/Meta-Llama-3-70B",
"messages": [
{"role": "user", "content": "What is the capital of France?"}
]
}'
Преимущества
✅ Максимальный throughput (2-4x vs другие)
✅ PagedAttention — эффективная память
✅ Continuous batching — низкая latency
✅ Tensor parallelism — multi-GPU
✅ Speculative decoding — 2x speedup
✅ Production-ready
✅ OpenAI-compatible API
✅ Support для 70B+ моделей
Недостатки
❌ Только Linux + CUDA (нет macOS)
❌ Сложная настройка
❌ Нет Web UI
❌ Только Python
❌ Требует много RAM для больших моделей
❌ Нет CPU inference
Конфигурация
from vllm import LLM, SamplingParams
llm = LLM(
model="meta-Llama/Meta-Llama-3-70B",
tensor_parallel_size=4, # 4 GPU
gpu_memory_utilization=0.9, # 90% GPU memory
max_model_len=4096, # max context
swap_space=16, # CPU swap (GB)
cache_dtype="fp8", # KV cache quantization
enforce_eager=False, # 0 for speed, True for debug
)
Когда использовать vLLM?
- Production serving (high throughput)
- Multi-GPU setup
- Linux + NVIDIA GPU
- API для нескольких клиентов
- 70B+ модели
- High-concurrency scenarios
LM Studio
Что это?
LM Studio — GUI-приложение для запуска LLM локально. Не требует командной строки.
Установка
Скачать с https://lmstudio.ai/
macOS / Windows / Linux
Использование
1. Открыть LM Studio
2. Search: "Llama 3.2 3B Q4_K_M"
3. Download
4. Chat — готово!
Преимущества
✅ Полностью GUI — никаких команд
✅ Встроенный chat interface
✅ 1000+ моделей в каталоге
✅ Auto GPU offload
✅ OpenAI-compatible API (localhost:1234)
✅ Hot-swap моделей
✅ Preview — посмотреть до 100 токенов
✅ Поддержка GGUF
API от LM Studio
# LM Studio запускает сервер на localhost:1234
curl http://localhost:1234/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "local-model",
"messages": [
{"role": "user", "content": "Hello!"}
]
}'
Недостатки
❌ Нет multi-GPU
❌ Нет continuous batching
❌ Один клиент за раз (без API)
❌ Меньше контроля
❌ Не для production
❌ Больше потребление памяти
Когда использовать LM Studio?
- Новички (без CLI)
- Тестирование моделей
- Быстрый chat
- Разработка с GUI
- Single-user scenarios
llama.cpp
Что это?
llama.cpp — C-реализация LLM inference. Основа для всех GGUF инструментов.
Установка
git clone https://github.com/ggerganov/llama.cpp
cd llama.cpp
make
# С CUDA
make LLAMA_CUDA=1
# С Metal (macOS)
make LLAMA_METAL=1
Запуск
# Сервер
./server -m model.gguf \
--host 0.0.0.0 \
--port 8080 \
-c 4096 \
--ngl 35
# CLI
./main -m model.gguf \
-p "Hello, my name is" \
-n 128 \
-t 8
# Interactive
./main -m model.gguf -i
API
curl http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "model",
"messages": [
{"role": "user", "content": "Hello!"}
]
}'
Преимущества
✅ Работает на CPU (без GPU!)
✅ Минимальные требования
✅ GGUF native
✅ llama.cpp сервер — OpenAI API
✅ Embeddings через embeddings endpoint
✅ Основа для Ollama, LM Studio, Continue
✅ WebAssembly — работает в браузере!
✅ Tiny: 7B модель на 4GB RAM
Недостатки
❌ Нет multi-GPU parallelism
❌ Нет continuous batching
❌ Сложная настройка (CLI)
❌ Меньше оптимизаций
❌ Требуется компиляция для кастомных фич
GPU Offload настройки
# Сколько слоев на GPU
--ngl 35 # 35 слоев на GPU (остальные на CPU)
# Полностью на GPU
--ngl 99
# Только CPU
--ngl 0
# Автоматический выбор
# llama.cpp сам определяет сколько влезает
Когда использовать llama.cpp?
- CPU-only machines
- Embedded devices (Raspberry Pi!)
- Browser inference (WebLLM)
- Когда нужен контроль
- Когда другие не работают
- Как база для кастомных решений
Сравнение производительности
Throughput (tok/s на A100 80GB)
Модель | vLLM | Ollama | llama.cpp
Llama 3 8B | 340 | 180 | 120
Llama 3 70B | 180 | N/A | N/A
Mixtral 8x7B | 220 | N/A | N/A
vLLM в 2-3x быстрее Ollama на GPU
Latency (ttft, ms)
Модель | vLLM | Ollama | LM Studio
Llama 3 8B | 30 | 80 | 150
vLLM быстрее всех за счёт continuous batching
Memory usage
Модель | RAM | VRAM
Llama 3 8B Q4 | 5GB | 5GB
Llama 3 8B Q8 | 9GB | 9GB
Llama 3 70B Q4 | 40GB | 40GB
GGUF Q4: ~6GB для 8B, ~40GB для 70B
Сравнительная таблица
Фича | Ollama | vLLM | LM Studio | llama.cpp
Установка | ⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐
Скорость | ⭐⭐ | ⭐⭐⭐ | ⭐⭐ | ⭐⭐
GPU support | ✅ | ✅ | ✅ | ✅
CPU support | ✅ | ❌ | ✅ | ✅
macOS | ✅ | ❌ | ✅ | ✅
Multi-GPU | ❌ | ✅ | ❌ | ❌
Web UI | ❌ | ❌ | ✅ | ❌
API | ✅ | ✅ | ✅ | ✅
Continuous batch | ❌ | ✅ | ❌ | ❌
PagedAttention | ❌ | ✅ | ❌ | ❌
Speculative dec. | ❌ | ✅ | ❌ | ❌
Embeddings | ✅ | ❌ | ❌ | ✅
Modelfile | ✅ | ❌ | ❌ | ❌
Production | ⭐⭐ | ⭐⭐⭐ | ⭐ | ⭐⭐
Dev/Testing | ⭐⭐⭐ | ⭐⭐ | ⭐⭐⭐ | ⭐⭐
Что выбрать?
Быстрый старт (5 минут)
macOS → Ollama (brew install)
Linux → Ollama (install.sh)
Windows → LM Studio
Максимальная производительность
Linux + NVIDIA → vLLM
Multi-GPU → vLLM с tensor parallelism
Без GPU
CPU only → llama.cpp
CPU + удобство → Ollama (CPU mode)
Production API
High throughput → vLLM
Simple → Ollama + reverse proxy
Разработка
GUI → LM Studio
CLI → Ollama
Code → vLLM Python API
Комбинированный подход
Dev:
LM Studio — тестирование моделей
Ollama — быстрая разработка
Staging:
vLLM — нагрузочное тестирование
Production:
vLLM — high throughput serving
Ollama — fallback / edge cases
Итоги
| Сценарий | Рекомендация |
|---|---|
| "Хочу запустить прямо сейчас" | Ollama |
| "Мне нужен максимум скорости" | vLLM |
| "Я не люблю терминал" | LM Studio |
| "У меня только CPU" | llama.cpp |
| "Мне нужно multi-GPU" | vLLM |
| "Я на macOS" | Ollama или LM Studio |