LLM Inference: сравнение llama.cpp и vllm на RTX 3090 с Qwen3‑8B

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‑моделями без сложных настроек параллелизма. В конечном счёте выбор зависит от конкретных требований к инфраструктуре и задачам.