Benchmarks & Comparisons7 min read
Two RTX 5090s on a 27B Model: 150 tok/s Alone, 1,300 at 32, Next to Four Other Cards
- 149–156 tok/s
- one request, two cards
- 1,318 tok/s
- in total at 32 concurrent requests
Tag
11 articles tagged with “Vllm”
Benchmarks & Comparisons7 min read
Benchmarks & Comparisons8 min read
Engineering9 min read
A new RTX PRO 6000 joined our network and got a quarter of the traffic of a pair of RTX 4090s it outperforms 3x under load. The GPU-name table had no entry for it, and our measured correction could not see the difference, because per-request speed is nearly equal on the two. What we replaced both with, the cold-start mistake we made on the way, and two routing bugs the new weights exposed.
Read
Guides & Tutorials7 min read
Qwen3.8-27B is trained on 262,144 tokens of context, and a full-length request costs only about 9.3 GiB of KV cache in vLLM, because three layers in four keep no per-token cache at all. Here is the arithmetic, what we measured on a 96 GB card and a pair of 24 GB cards, a table from 24 to 96 GB, and why we would not stretch it to 1M with YaRN.
Read
Benchmarks & Comparisons8 min read
Engineering5 min read
Serving OpenJev (Qwen3_5ForSequenceClassification) on vLLM fails at weight loading because the checkpoint carries the vision tower and vLLM's fallback picks the text-only class. The fix is a text-only copy of the checkpoint. Also: 'UVA is not available' on WSL2, and why vllm serve cannot take a Hugging Face subfolder.
Read
Guides & Tutorials11 min read
A measured cost model for running a 27B model on a card you own versus paying per token: what a 4090 actually produces at one and at sixteen concurrent requests, what it draws at the wall loaded and idle, and the utilization at which owning becomes cheaper. Sixteen requests deep, the card breaks even at about 20% utilization in Germany and 15% in the US. One request at a time, it never does. A calculator script takes your own numbers.
Read
Engineering15 min read
A follow-up question costs 0.54 seconds on the worker that answered the first one and 2.56 seconds on any other — the whole prompt prefilled again. We measured that across a live fleet, built cache-aware routing for two router replicas that must agree, and then found why our hybrid 27B showed a 0% hit rate: vLLM leaves prefix caching off on Mamba-style models unless you pass two arguments. With them, a repeated 13,000-token prompt goes from 7.2 s to 1.6 s — and a third flag brings the same win down to the 1,200-token chats where most traffic lives.
Read10 min read
The same model ID is now served by vLLM on Linux GPUs, vLLM on Windows/WSL, and llama.cpp on Apple Silicon Macs, and the caller cannot tell which one answered. Here is what had to be made equal for that to be true, the tokens-per-second we measured on an M1 Ultra and an M4 Max next to the GPUs, the 27B experiment that failed first and the rules it left behind, and a self-update bug that only exists when your inference server is a child process.
Read
Benchmarks & Comparisons8 min read
We had a rule that a model which fits on one GPU should run as one replica per GPU. On a two-RTX-4090 machine with a 27B model, that rule was wrong by a factor of two to four, and the reason was not the parallelism at all. Here are the measurements, the rule that replaced it, and how the router now sends a 40k-token prompt to the worker that can hold it.
Read
Engineering6 min read
What we learned running a 27B coding model across a heterogeneous fleet of consumer GPUs — why the obvious sizing formula silently OOMs, why pipeline parallelism behaves nothing like the benchmarks suggest, and the gotchas nobody writes down.
Read