1. Learn
  2. Run and serve it

vLLM vs Ollama: when to move to vLLM for a team

Ollama is right for one person. vLLM is built for many users at once. When the switch is worth it, what hardware vLLM needs, and how to start it.

Updated Oct 26, 2026 · RunItLocal.io

Stay on Ollama until several people are waiting on it at the same time. Ollama and llama.cpp are best for one user or a household. vLLM is a server engine built for many simultaneous requests: it batches them together on the GPU, so total throughput grows a lot as users are added, while each person's speed drops only a little. The catch is that it wants newer NVIDIA cards, more memory headroom and more setup.

The difference in one table

Ollama / llama.cppvLLM
Built forOne user, a few at mostMany users at once
Model filesGGUFMostly Hugging Face safetensors (AWQ, GPTQ, FP8 and full precision)
HardwareAlmost anything, including CPUs, Macs and old cardsRecent NVIDIA cards, Ampere or newer works best; some AMD with ROCm
Memory useOnly what the model and context needReserves most of the card up front
Swapping modelsLoads and unloads on demandOne model per server process
SetupMinutesAn evening
APIOpenAI-compatibleOpenAI-compatible

Both speak the OpenAI API, so apps don't care which one is behind them. You can switch later without changing your tools.

Signs you've outgrown Ollama

  • People wait in line. Ollama handles a few requests in parallel, set with OLLAMA_NUM_PARALLEL, but it isn't designed for a crowd. If replies stall while a colleague's long job runs, that's the sign.
  • You're running batch jobs. Thousands of documents to summarize or classify finish far faster with vLLM's batching. See batch jobs with a local model.
  • You have a dedicated server. A box that runs one model all day for a team is exactly vLLM's job.

If you're one person with one card, vLLM gives you little. Single-user speed is set by memory bandwidth either way; see why bandwidth sets speed.

Hardware it needs

  • A recent NVIDIA card. Ampere (RTX 30-series and the RTX A-series) or newer is the safe choice; check vLLM's docs for older generations. Pascal cards like the Tesla P100 and P40 are not supported, which is a real limit for budget racks: on P100s, llama.cpp-based tools are the option. The RTX 3090 and RTX A4500 work well.
  • Headroom. vLLM claims about 90% of each card's memory by default and uses what's left after the model for a large KV cache. That cache is what lets it serve many users, so a model that barely fits is a poor choice.
  • Matched cards for multi-GPU. vLLM splits a model across cards with tensor parallelism, which runs the cards together rather than taking turns. Use identical cards, in counts of 2, 4 or 8.

Starting vLLM

On Linux with an NVIDIA card and Python installed:

pip install vllm

Then serve a model by its Hugging Face name:

vllm serve Qwen/Qwen3-8B --max-model-len 16384 --api-key YOUR_LONG_RANDOM_KEY

That downloads the model and serves an OpenAI-compatible API on port 8000, at http://localhost:8000/v1. Useful options:

  • --max-model-len caps the context. Lower it if the model won't start for lack of memory.
  • --tensor-parallel-size 2 splits the model across two GPUs.
  • --gpu-memory-utilization 0.8 reserves less of the card, if something else needs it.
  • --api-key requires a key on every request. Set one; see securing your local AI server.

There's also an official Docker image, vllm/vllm-openai, which takes the same options and needs the same NVIDIA Container Toolkit setup as Ollama in Docker.

Which model for a team

The model sets single-user speed; the card's spare memory sets how many users fit. A mixture-of-experts model like Qwen3 30B-A3B is a strong team choice: it reads only 3B parameters per token, so it stays fast under load. A dense Qwen3 32B is smarter on hard problems but slower for everyone. Here's our calculator's single-user estimate for two RTX 3090s, 48 GB, the "Serious" build on the builds page that we pitch for small teams:

RTX 3090, 48 GB · estimated with our calculator · full page

  • Qwen3 4BQuick everyday chat and summaries
    ~210 tok/s
    Runs greatqwen3:4b
  • Qwen3 8BA solid all-rounder for chat and writing
    ~99 tok/s
    Runs greatqwen3:8b
  • Gemma 3 12BReads images as well as text
    ~64 tok/s
    Runs greatgemma3:12b
  • Qwen3 14BNoticeably smarter at reasoning and code
    ~55 tok/s
    Runs greatqwen3:14b
  • gpt-oss 20BOpenAI's open model. Fast, strong reasoning
    ~160 tok/s
    Runs greatgpt-oss:20b
  • Gemma 3 27BGoogle's best open model for its size
    ~30 tok/s
    Runs greatgemma3:27b
  • Qwen3 30B-A3B30B smarts at small-model speed
    ~160 tok/s
    Runs greatqwen3:30b
  • Qwen3 32BStrong coding and long answers
    ~26 tok/s
    Usableqwen3:32b
  • Llama 3.3 70BClose to the big cloud models
    ~12 tok/s
    Usablellama3.3:70b
  • gpt-oss 120BOpenAI's largest open model
    needs 67 GB
    Too biggpt-oss:120b
  • Qwen3 235B-A22BAlibaba's flagship open model, for multi-GPU rigs
    needs 144 GB
    Too bigqwen3:235b
  • DeepSeek R1 671BThe full DeepSeek R1, for the biggest rigs
    needs 406 GB
    Too bigdeepseek-r1:671b

With vLLM's tensor parallelism, two matched cards can beat that single-user number, and the total across many users is far higher.

A middle path

Before vLLM, try the llama.cpp server with parallel slots (-np 4). It also batches requests, runs GGUF files, and works on older cards. It also runs on old cards like the P100s in our rack of 90 used GPUs; see serving a team on used GPUs for what that looks like.