Перейти к содержанию
modelium.
Начать с задачи
←

vLLM или Ollama: какой сервер выбрать для локальной модели

На странице · 1 разделов

Ollama удобна для первого локального запуска и работы с моделями через собственный и OpenAI-совместимый API. vLLM ориентирован на обслуживание выбранной модели через сервер и контролируемое тестирование нагрузки. Оба могут отвечать на Chat Completions, но одинаковый HTTP-маршрут не гарантирует одинаковые модели, параметры или скорость: решение зависит от платформы, формата весов и ваших запросов.

Сверено 3 октября 2026 года по закреплённым Git-ревизиям Ollama 42e911b и vLLM 4ac0d0e. Это сравнение документированных возможностей, а не независимый benchmark Modelium s1s5. Частотность запроса «vllm vs ollama» для России не измерялась.

vLLM или Ollama: короткий ответ

Для первого запуска модели и проверки локального чата сначала разберитесь с Ollama: у неё собственный /api/chat на localhost:11434 и OpenAI-совместимый /v1/chat/completions; это разные интерфейсы одного локального сервера, а прямой Ollama Cloud — ещё один, отдельный маршрут s1s2. Для обслуживания одной выбранной модели и собственного нагрузочного теста рассмотрите vLLM: quickstart запускает vllm serve с репозиторием модели и открывает Chat Completions на localhost:8000 s5. Это выбор по рабочему сценарию, не универсальное утверждение, что один движок быстрее другого. Без одинаковой модели, железа и нагрузки сравнение скоростей бессмысленно.

  </tr><tr>
    <td>
    <p>Локальный API</p>
  </td>
<td>
    <p>Нативный <code>/api/chat</code> и часть OpenAI API на <code>/v1/chat/completions</code> <a href="#src-s1" rel="noopener noreferrer">s1</a><a href="#src-s2" rel="noopener noreferrer">s2</a></p>
  </td>
<td>
    <p><code>/v1/models</code> и <code>/v1/chat/completions</code> для совместимой модели с chat template <a href="#src-s5" rel="noopener noreferrer">s5</a><a href="#src-s6" rel="noopener noreferrer">s6</a></p>
  </td>

  </tr><tr>
    <td>
    <p>Размещение</p>
  </td>
<td>
    <p>Документация описывает NVIDIA и AMD с конкретными драйверами; работоспособность вашего GPU и версии надо проверить <a href="#src-s4" rel="noopener noreferrer">s4</a></p>
  </td>
<td>
    <p>Базовый путь Linux; CUDA, ROCm, XPU и vLLM-Metal имеют разные условия; Windows — через WSL, а не нативная установка <a href="#src-s5" rel="noopener noreferrer">s5</a><a href="#src-s8" rel="noopener noreferrer">s8</a></p>
  </td>

  </tr><tr>
    <td>
    <p>Несколько запросов</p>
  </td>
<td>
    <p><code>OLLAMA_NUM_PARALLEL</code> и очередь; параллелизм расходует память контекста <a href="#src-s3" rel="noopener noreferrer">s3</a></p>
  </td>
<td>
    <p>Тест нагрузки через <code>vllm bench serve</code> с явными rate и concurrency <a href="#src-s7" rel="noopener noreferrer">s7</a></p>
  </td>

  </tr><tr>
    <td>
    <p>Ключ API</p>
  </td>
<td>
    <p>Локальный Ollama не требует ключа, а значение в OpenAI-клиенте игнорирует; для прямого облака ключ нужен <a href="#src-s1" rel="noopener noreferrer">s1</a><a href="#src-s2" rel="noopener noreferrer">s2</a></p>
  </td>
<td>
    <p><code>--api-key</code> защищает не все endpoints; сетевую границу настраивайте отдельно <a href="#src-s6" rel="noopener noreferrer">s6</a></p>
  </td>

  </tr></tbody>
    </table>
  <h2>Подходит ли ваша модель и оборудование?</h2><p>Не выбирайте runtime по одному названию модели. У Ollama клиент запрашивает установленный <strong>тег</strong>, а у vLLM quickstart сервер принимает конкретный идентификатор репозитория Hugging Face и обслуживает одну модель на сервер <a href="#src-s1" rel="noopener noreferrer">s1</a><a href="#src-s5" rel="noopener noreferrer">s5</a>. Даже если семейство называется одинаково, это не гарантия одинаковых весов, квантизации, токенизатора и параметров генерации. До сравнения запишите точный тег и ревизию исходных весов, формат, модельный шаблон чата, длину контекста и режим генерации; если нельзя сделать их сопоставимыми, тестируйте пригодность <strong>двух стеков</strong>, а не скорость двух движков при «одинаковых» условиях <a href="#src-s1" rel="noopener noreferrer">s1</a><a href="#src-s5" rel="noopener noreferrer">s5</a><a href="#src-s6" rel="noopener noreferrer">s6</a>. Отдельный <a href="/zhurnal/videokarta-dlya-llm/" rel="noopener noreferrer">гайд по видеокарте</a> поможет оценить запас, но размер файла весов не равен минимальной RAM или VRAM.</p><p>Ollama документирует NVIDIA и AMD, однако для каждой карты указывает собственные требования к драйверу/ROCm; не превращайте широкий список GPU в обещание поддержки конкретного ноутбука <a href="#src-s4" rel="noopener noreferrer">s4</a>. У vLLM стартовый quickstart ориентирован на Linux и Python 3.10–3.13. Для AMD ROCm, Intel XPU и Apple Silicon есть отдельные пути; vLLM-Metal на Mac — <strong>отдельный проект</strong> с собственными MLX-моделями, не обычный Linux CUDA-пакет <a href="#src-s5" rel="noopener noreferrer">s5</a>. Нативная Windows не поддерживается, WSL требует проверяемой Linux/GPU-конфигурации <a href="#src-s8" rel="noopener noreferrer">s8</a>. Если важнее достичь первого ответа на имеющемся компьютере, сначала проверьте совместимость доступного вам варианта, а не ориентируйтесь на опубликованные скорости чужих GPU.</p><h2>Совпадает ли интерфейс приложения?</h2><p>Если клиент использует OpenAI Chat Completions, Ollama документирует <code>http://localhost:11434/v1/chat/completions</code>, а vLLM — <code>http://localhost:8000/v1/chat/completions</code> <a href="#src-s1" rel="noopener noreferrer">s1</a><a href="#src-s5" rel="noopener noreferrer">s5</a>. Сверьте <em>конкретные</em> параметры запроса: Ollama прямо называет поддержку подмножеством OpenAI API; vLLM требует chat template для чатовой модели, допускает дополнительные параметры и может брать параметры генерации из <code>generation_config.json</code> модели <a href="#src-s1" rel="noopener noreferrer">s1</a><a href="#src-s6" rel="noopener noreferrer">s6</a>. Поменять только base URL и объявить приложение совместимым нельзя: проведите тест того же сообщения, структуры ответа, ограничений контекста и нужных вам tool/JSON-возможностей.</p><p>Не смешивайте локальную и облачную Ollama: локальный нативный <code>/api/chat</code> не требует ключа, а прямой <code>https://ollama.com/api</code> — требует. Документация по OpenAI-клиенту специально говорит, что локальный фиктивный ключ игнорируется; это <strong>не</strong> механизм защиты сети <a href="#src-s1" rel="noopener noreferrer">s1</a><a href="#src-s2" rel="noopener noreferrer">s2</a>. У vLLM <code>--api-key</code> не охватывает, в частности, <code>/invocations</code>, поэтому не выставляйте сервер наружу только потому, что один маршрут отвечает 401 без токена; используйте закрытый интерфейс и отдельные сетевые ограничения <a href="#src-s6" rel="noopener noreferrer">s6</a>.</p><h2>Как честно сравнить скорость и качество на своём сценарии?</h2><p><strong>Сначала получите два успешных ответа.</strong> По <a href="/zapusk/ollama/" rel="noopener noreferrer">гайду Ollama</a> проверьте установленный тег и ответ локального API; по <a href="/zhurnal/vllm/" rel="noopener noreferrer">гайду vLLM</a> — совпадение ID в <code>/v1/models</code> и ответ <code>/v1/chat/completions</code> <a href="#src-s1" rel="noopener noreferrer">s1</a><a href="#src-s5" rel="noopener noreferrer">s5</a>. Если vLLM сообщает об отсутствии chat template или один из серверов меняет формат ответа, это проблема совместимости, а не результат benchmark <a href="#src-s6" rel="noopener noreferrer">s6</a>. Сохраните OS, устройство, драйвер, точные версии runtime, веса/квант, состояние сети и ошибки. При двух серверах на одном GPU запускайте их последовательно, чтобы не сравнивать разные остатки памяти.</p><p><strong>Затем прогоните один набор задач:</strong> короткие вопросы, длинные документы и, если нужно вашему продукту, параллельные запросы с повторяющимся префиксом. Укажите одинаковые ограничения длины ответа, temperature, streaming и ожидания по точности; отдельно фиксируйте случаи, где веса или формат невозможно сделать равными. Контролируйте прогрев модели и порядок прогонов: у Ollama модель по умолчанию остаётся загруженной после обращения, параметр <code>keep_alive</code> меняет это поведение <a href="#src-s3" rel="noopener noreferrer">s3</a>. В vLLM инструмент <code>vllm bench serve</code> позволяет задать входной поток через <code>--request-rate</code> и число незавершённых запросов через <code>--max-concurrency</code>; не путайте нагрузку «всё сразу» (<code>inf</code> по умолчанию) с обычным потоком клиентов <a href="#src-s7" rel="noopener noreferrer">s7</a>. Для Ollama увеличенный <code>OLLAMA_NUM_PARALLEL</code> расширяет потребность в памяти контекста, а ожидание в очереди и ответ 503 при перегрузке меняют пользовательскую задержку <a href="#src-s3" rel="noopener noreferrer">s3</a>.</p><p>Записывайте долю успешных ответов, точность по заранее проверяемым вопросам, время до первого токена при streaming, полную задержку, пропускную способность, очередь и фактическое использование памяти. Сравнивайте одинаково определённые метрики; benchmark из документации vLLM не является замером Ollama или Modelium <a href="#src-s7" rel="noopener noreferrer">s7</a>. Если один runtime не поддерживает необходимый формат/железо, это решение по совместимости — не повод выдумывать разницу в токенах в секунду.</p><h2>Где выбор остаётся открытым?</h2><p>Если нужен удобный старт на конкретном устройстве, Ollama может сократить путь к первому ответу, но её локальный API сам по себе не доказывает изоляцию приватных данных: отдельно проверьте сетевой выход и режим cloud-модели <a href="#src-s2" rel="noopener noreferrer">s2</a>. Если задача — сервис под однородной нагрузкой, vLLM предлагает серверный API и инструменты измерения, однако требует проверки GPU/backend, весов и шаблона чата для вашего случая <a href="#src-s5" rel="noopener noreferrer">s5</a><a href="#src-s6" rel="noopener noreferrer">s6</a><a href="#src-s7" rel="noopener noreferrer">s7</a>. Никакой из двух вариантов нельзя назвать победителем для всех моделей и платформ без воспроизводимого прогона.</p><p><strong>Следующий шаг:</strong> <a href="/zhurnal/vllm/" rel="noopener noreferrer">откройте гайд по vLLM</a>, проверьте ответ вашего сценария и сохраните его рядом с ответом Ollama; только после этого перенесите тот же набор входов в <a href="/zhurnal/vllm-bench-serve/" rel="noopener noreferrer">протокол нагрузки vLLM</a>. Modelium не запускал оба сервера в сопоставимых условиях и не измерял их производительность.</p>

Источники

  1. Ollama — OpenAI compatibility, закреплённый срез — revision 42e911bc3d05798cad729cb474bf62f378cb2e26; s1-ollama-openai.mdx; частичная OpenAI-совместимость, локальный ключ игнорируется.. Получено 03.10.2026.
  2. Ollama — API introduction, закреплённый срез — revision 42e911bc3d05798cad729cb474bf62f378cb2e26; s2-ollama-native.mdx; облачный и локальный адреса и авторизация.. Получено 03.10.2026.
  3. Ollama — FAQ: очередь и параллелизм, закреплённый срез — revision 42e911bc3d05798cad729cb474bf62f378cb2e26; s3-ollama-faq.mdx; контекст, очередь, keep_alive и OLLAMA_NUM_PARALLEL.. Получено 03.10.2026.
  4. Ollama — Hardware support, закреплённый срез — revision 42e911bc3d05798cad729cb474bf62f378cb2e26; s4-ollama-gpu.mdx; NVIDIA/AMD и драйверы; не минимум памяти.. Получено 03.10.2026.
  5. vLLM — Quickstart, закреплённый срез — revision 4ac0d0eac25eecc98ff519887f2aa3d659dc75f3; s5-vllm-quickstart.md; Linux, отдельные платформы, serve, модель и порт.. Получено 03.10.2026.
  6. vLLM — OpenAI-Compatible Server, закреплённый срез — revision 4ac0d0eac25eecc98ff519887f2aa3d659dc75f3; s6-vllm-openai.md; chat template, поколения параметров и неполная защита токеном.. Получено 03.10.2026.
  7. vLLM — Benchmark CLI, закреплённый срез — revision 4ac0d0eac25eecc98ff519887f2aa3d659dc75f3; s7-vllm-bench.md; request-rate, concurrency, client queue и latency.. Получено 03.10.2026.
  8. vLLM — GPU installation, закреплённый срез — revision 4ac0d0eac25eecc98ff519887f2aa3d659dc75f3; s8-vllm-gpu.md; Windows/WSL и отдельные GPU backend.. Получено 03.10.2026.

Что проверить

Ollama

vLLM