Почему это важно
Стоимость GPU — главная статья расходов ML-команды в продакшне. Разница в 2x throughput = разница в 2x стоимости инфраструктуры. При 10M запросов/день это сотни тысяч долларов в год.
Тестовая конфигурация
| Параметр | Значение |
|---|---|
| GPU | NVIDIA A100 80GB SXM |
| Модель | Llama 3.1 8B, fp16 |
| Input length | 512 токенов |
| Output length | 128 токенов |
| Concurrent requests | 1, 8, 32, 128 |
Результаты throughput
| Concurrency | vLLM req/s | TGI req/s | Разница |
|---|---|---|---|
| 1 | 12.4 | 11.8 | +5% |
| 8 | 48.2 | 38.1 | +26% |
| 32 | 156.3 | 98.4 | +59% |
| 128 | 312.7 | 136.2 | +130% |
Почему vLLM быстрее
PagedAttention — ключевое отличие vLLM. Вместо статической аллокации KV-кеша под максимальный контекст, vLLM аллоцирует страницами по 16 токенов. Fragmentation падает с 60-80% до менее 4%. Continuous batching добавляет новые запросы в батч без ожидания.
Запуск vLLM
pip install vllm
# Простой запуск OpenAI-совместимого сервера
python -m vllm.entrypoints.openai.api_server \
--model meta-llama/Llama-3.1-8B-Instruct \
--max-model-len 4096 \
--tensor-parallel-size 1 \
--port 8000
Запуск TGI
docker run --gpus all -p 8080:80 \
-v /data:/data \
ghcr.io/huggingface/text-generation-inference:latest \
--model-id meta-llama/Llama-3.1-8B-Instruct \
--max-input-length 4096
FAQ
Работает ли vLLM без GPU?
Да, через --device cpu, но производительность падает на порядок. Для продакшна без GPU используйте llama.cpp или Ollama.
Какой квантизации достаточно для продакшна?
AWQ 4-bit даёт потерю качества менее 1% на большинстве бенчмарков при 2x сокращении памяти. GPTQ чуть хуже по качеству, но быстрее квантизируется.