LLM Inference: сравнение llama.cpp и vllm на RTX 3090
В мире больших языковых моделей (LLM) существует несколько популярных инференсов для запуска моделей. Тестирование в лаборатории и развертывание в продакшене – это два разных дела. Ниже приведён мой опыт сравнения llama.cpp и vllm на конкретном железе с моделью Qwen3‑8B‑4bit.
Тестовый стенд
- CPU: Ryzen 3600X
- ОЗУ: 64 ГБ DDR4‑3200
- GPU: NVIDIA RTX 3090 24 ГБ VRAM
Установка обоих инференсов проводилась по официальной инструкции без тонкой настройки. Цель – сравнить чистую производительность.
llama.cpp
llama.cpp – надёжный инференс, особенно если нужно запустить большую MoE‑модель на данном железе. Он не поддерживает сложные схемы параллелизма без ручных настроек.
./build/bin/llama-server -m ./models/Qwen3-8B-Q4_K_M.gguf \ --host 0.0.0.0 --port 8888 -ngl 99 -c 16384 -np 4
Параметр -np 4 задаёт количество потоков, а -ngl 99 – количество слоёв, которые загружаются в память.
Результаты (10 параллельных запросов)
- Один поток: 95.40 ток/сек
- Общее время: 18.20 с
- Всего токенов: 2461
- Средняя скорость на запрос: 25.01 ток/сек
- Совокупная пропускная способность: 135.26 ток/сек
vllm
vllm – более сложный в установке, но обеспечивает высокую скорость и отличную поддержку параллельных запросов. На моём GPU работает только 4‑битная квантованная модель.
vllm serve Qwen/Qwen3-8B-AWQ
Результаты (10 параллельных запросов)
- Один поток: 123.53 ток/сек
- Общее время: 3.09 с
- Всего токенов: 2371
- Средняя скорость на запрос: 91.64 ток/сек
- Совокупная пропускная способность: 768.20 ток/сек
Обновление: изменение количества потоков в llama.cpp
В комментариях было отмечено, что в llama.cpp использовалось -np 4, хотя запрашивалось 10 потоков. После замены на -np 10 результаты улучшились, но всё ещё отстают от vllm.
./build/bin/llama-server -m ./models/Qwen3-8B-Q4_K_M.gguf \ --host 0.0.0.0 --port 8888 -ngl 99 -c 16384 -np 10
Новые результаты (10 параллельных запросов)
- Общее время: 13.03 с
- Всего токенов: 2314
- Средняя скорость на запрос: 21.39 ток/сек
- Совокупная пропускная способность: 177.61 ток/сек
Выводы
Для продакшена, где важна скорость и масштабируемость, vllm выглядит более предпочтительным. llama.cpp остаётся хорошим выбором, если требуется более простая установка и работа с MoE‑моделями без сложных настроек параллелизма. В конечном счёте выбор зависит от конкретных требований к инфраструктуре и задачам.