Short answer
Use Ollama when one developer, or a handful of internal users, need a model on a laptop or a single workstation: it installs natively on macOS, Windows and Linux[1], and by default each loaded model handles one request at a time[2]. Use vLLM when a shared endpoint serves many users at once: in Red Hat's August 2025 test on one A100, vLLM reached "a peak of 793 TPS compared to Ollama's 41 TPS", where the 41 is Ollama in its default configuration[7]. Both are open source, Ollama under MIT and vLLM under Apache-2.0[1][4], so the decision is who runs the server and at what load.
Ollama is an MIT-licensed tool that pulls and runs models by name, with install commands for macOS, Windows and Linux, an official ollama/ollama Docker Hub image, and the "llama.cpp project founded by Georgi Gerganov" credited as the inference backend[1]. It binds to 127.0.0.1 on port 11434 by default[2]. Out of the box each loaded model processes one request at a time (OLLAMA_NUM_PARALLEL, default 1), up to 512 requests wait in a queue (OLLAMA_MAX_QUEUE), and beyond that the server answers with a 503 "server is overloaded"[2]. The default context window depends on GPU memory: 4k tokens below 24 GiB, 32k from 24 to 48 GiB, and 256k from 48 GiB[3].
vLLM is an Apache-2.0 inference and serving engine, "Originally developed in the Sky Computing Lab at UC Berkeley", with contributions "from over 2000 contributors"[4]. It has been a PyTorch Foundation-hosted project since May 2025[5]. Its design is about sharing GPUs between many requests: PagedAttention for key-value cache memory, continuous batching, chunked prefill and prefix caching, and "Tensor, pipeline, data, expert, and context parallelism for distributed inference"[4]. Its GPU installation page lists "OS: Linux" and "Python: 3.10 -- 3.13", and states that "vLLM does not support Windows natively"[6].
Every throughput and latency number below comes from a single article: Red Hat Developer, 8 August 2025, by Harshith Umesh. Red Hat has an interest in the result — the same page advertises "Discover how Red Hat AI Inference Server, powered by vLLM, enables fast, cost-effective AI inference", a product built on the winner[7].
The setup was a "Single NVIDIA A100-PCIE-40GB GPU" with vLLM 0.9.1 serving meta-llama/Llama-3.1-8B-instruct and Ollama 0.9.2 serving llama3.1:8b-instruct-fp16, at "concurrency levels tested from 1 up to 256", driven by GuideLLM version 0.2.1. vLLM reached "a peak of 793 TPS compared to Ollama's 41 TPS", with lower P99 latency "(80 ms vs. 673 ms at peak throughput)". That 41 TPS is default Ollama, which the article describes as "configured to handle a maximum of four requests in parallel"; the tuned run with OLLAMA_NUM_PARALLEL=32, "the highest stable value for our NVIDIA A100 GPU", is reported separately and only up to a concurrency of 64[7].
Two reasons to re-run it rather than quote it. Both servers have moved on since those versions, and the default the article assumes, four parallel requests, is not what Ollama's current FAQ documents, which is one[7][2]. Repeat the test on your own versions, models and prompt lengths before you rely on the ratio.
The two self-hosted columns are the subject of this page; the hosted column is there to keep the third option in view. Whether to host anything at all is the earlier question, answered in a hosted API against a self-hosted LLM; the managed side has its own page, alternatives to Azure OpenAI.
| Ollama (self-hosted) | vLLM (self-hosted) | Hosted API (for example Ollama Cloud) | |
|---|---|---|---|
| Code and data ownership | MIT licence[1]; models and prompts stay on your machine | Apache-2.0[4]; PyTorch Foundation-hosted[5]; prompts stay on your servers | The provider processes prompts; Ollama states "We do not use them to train models."[8] |
| Cost model | Free software; you pay for the machine | Free software; you pay for GPUs — for example $6.98 an hour for one Azure Standard_NC40ads_H100_v5, "1 Hour", East US[9], a size "powered by NVIDIA H100 NVL GPU" with one 94 GB accelerator[10] | Ollama Cloud: Free $0; Pro "$20 / mo. or $200/yr" with "$60 of usage credits per month"; Max "$100 / mo." with "$300 of usage credits per month"; Team "$500 / mo." with "$1,000 of usage credits per month, shared across the team"; Enterprise is Custom. "Usage beyond the included credits draws from a shared team balance billed as you go." gpt-oss:120b is listed at $0.15 per million input tokens, $0.014 cached and $0.60 output[11] |
| Time to launch | Install command or the Docker image, then ollama run <model>[1] | A Linux GPU host with Python 3.10–3.13[6], then vLLM's OpenAI-compatible server[16] | An API key[8] |
| Lock-in: API and formats | Own REST API plus "a subset of the OpenAI API"[13]; imports Safetensors weights and GGUF files[14] | "OpenAI-compatible API server, plus Anthropic Messages API and gRPC support" and "200+ model architectures on Hugging Face"[4] | Cloud models have retirement dates: "Switch models before the retirement date. Downloaded local models are not affected."[8] |
| Customisation | Context length per model[3], server settings such as OLLAMA_NUM_PARALLEL and OLLAMA_MAX_LOADED_MODELS[2], and imports from Safetensors or GGUF[14] | "Quantization: FP8, MXFP8/MXFP4, NVFP4, INT8, INT4, GPTQ/AWQ, GGUF, compressed-tensors, ModelOpt, TorchAO, and more", multi-LoRA, structured outputs and speculative decoding[4] | The provider's model list and settings |
| Compliance and access control | Local by default: 127.0.0.1 on port 11434[2]; the OpenAI-compatible endpoint "requires an API key value, but Ollama ignores it", so remote access needs a proxy[13] | --api-key "only authenticates requests to endpoints under the /v1, /v2, and /inference path prefixes", /invocations stays unauthenticated, and the docs recommend a reverse proxy[16] | The provider's terms and regions |
| Latency and scale | One request per model by default; "Required RAM will scale by OLLAMA_NUM_PARALLEL * OLLAMA_CONTEXT_LENGTH"[2] | Throughput rises with concurrency: 793 TPS against default Ollama's 41 in Red Hat's test, though "above 16" concurrent users vLLM's inter-token latency began to rise while Ollama's "remained stable and low"[7] | Shared capacity: 1 concurrent request on Free, 3 on Pro, "10 concurrent requests" on Max and Team[11] |
| Hardware | "supports Nvidia GPUs with compute capability 5.0+", AMD via ROCm, Metal on Apple devices and Vulkan[15] | NVIDIA, AMD and Intel GPUs, x86, ARM and PowerPC CPUs, plus plugins for TPU, Gaudi, Apple Silicon and others[4] | Not your concern, and not your choice |
| Exit cost | Low: open source, OpenAI-style endpoints[13] | Low: open source, OpenAI-compatible endpoints[16] | Re-test on another model when a cloud model retires[8] |
OLLAMA_MAX_QUEUE at 512[2], a personal assistant or a small internal tool works without tuning.OLLAMA_MAX_LOADED_MODELS to "3 * the number of GPUs"[2].OLLAMA_NUM_PARALLEL needs more GPU memory, since "Required RAM will scale by OLLAMA_NUM_PARALLEL * OLLAMA_CONTEXT_LENGTH"[2]. In Red Hat's test, OLLAMA_NUM_PARALLEL=32 was "the highest stable value for our NVIDIA A100 GPU"[7].http://localhost:11434/v1/[13] move to vLLM's /v1 endpoints by changing the base URL[16].| Cost driver | What drives it | Public reference point |
|---|---|---|
| GPU memory | Weights plus key-value cache for every active request | Ollama: "Required RAM will scale by OLLAMA_NUM_PARALLEL * OLLAMA_CONTEXT_LENGTH"[2]; vLLM manages the same cache with PagedAttention[4] |
| GPU hours or hardware | Model size and peak concurrency | Azure Standard_NC40ads_H100_v5: $6.98 an hour, East US, pay as you go[9]; the NCads H100 v5 series is "powered by NVIDIA H100 NVL GPU" with one 94 GB accelerator[10] |
| Model fit | Parameter count and quantisation | OpenAI states gpt-oss-120b "fit into a single 80GB GPU (like NVIDIA H100 or AMD MI300X)" and gpt-oss-20b runs "within 16GB of memory"[12] |
| Access control | Proxy, authentication, network isolation | Neither server's built-in key check is enough on its own: Ollama ignores the key value[13], vLLM's covers only three path prefixes[16] |
| Load testing and evaluation | Your prompts at your concurrency, rerun on every upgrade | GuideLLM is free and Apache-2.0[17]; the labelled test set is your work |
| Operations | Upgrades, monitoring, on-call | No public reference; scoped per project |
On throughput and P99 latency in the published test, yes: "a peak of 793 TPS compared to Ollama's 41 TPS" and "(80 ms vs. 673 ms at peak throughput)", on one A100 with an 8B model[7]. Not on every metric, though. The same article reports that "At very high concurrency (above 16), vLLM's ITL began to rise, while Ollama's remained stable and low" — Ollama keeps inter-token latency flat because it "throttles requests, keeping its active workload small and predictable at the expense of making many users wait (high TTFT)"[7]. The article's one "at any concurrency level" statement is about capacity in the tuned run, reported up to a load test concurrency of 64: "Ollama, despite the tuning, saw its performance plateau and was unable to match vLLM's capacity at any concurrency level"[7].
For low concurrency, yes, with care. Ollama binds to 127.0.0.1 on port 11434 by default[2] and its OpenAI-compatible endpoint "requires an API key value, but Ollama ignores it"[13], so put a proxy with authentication in front of it, and size OLLAMA_NUM_PARALLEL and OLLAMA_MAX_QUEUE for your peak[2].
Pick by who will operate it after launch, since both servers need upgrades, monitoring and a proxy you maintain; AI on your own servers lists the decisions to make first.
About amBrain
Disclosure: this page is published by amBrain. Its quantitative comparison rests on one benchmark whose publisher has an interest in the outcome — the Red Hat Developer article advertises "Discover how Red Hat AI Inference Server, powered by vLLM, enables fast, cost-effective AI inference", a product built on the server that wins the test[7]. Every third-party fact on this page links to its source, and prices were read on 2026-09-23. vLLM, Ollama and the other product and company names are trademarks of their respective owners and are used only to identify their products. No vendor named here reviewed or endorsed this page.
Related