How I Benchmark Local LLMs Before I Trust Them
A local LLM benchmark should end with a decision. I record task quality, tokens per second, VRAM, power, and failure state before I add a model.
Most local model benchmarks answer one narrow question: how fast did the model produce tokens? That number does not tell me if the model finished the work.
Short answer: I trust a local LLM after a fixed task passes a quality check. The run must also record speed, VRAM, power, and failure state. A fast model that returns broken code is not a production choice.
Canonical URL: https://bmdpat.com/blog/local-llm-benchmark-decision-record-2026

What should a local LLM benchmark measure?
I record five fields:
- Model, quant, engine, context, and batch settings.
- The exact task and the output check.
- Tokens per second and wall time.
- VRAM and power when the sampler captures them.
- A final status: keep, hold, reject, or rerun.
The last field makes the table useful. It tells me what to do next. The 5090 Reports keep the full receipt. The blog post gives the short version.
Why does task quality come before speed?
Speed is a constraint. Quality is the gate.
Suppose a local coding agent must edit one file and return a valid test result. A model that emits 200 tokens per second but writes invalid code saves no time. A slower model that passes the check may be the better choice.
My Aug. 13 RTX 5090 report shows this on a fixed workshop. Gemma 4 26B reached 156.9 tokens per second at batch 128, but the task check recorded 0% quality. The same task set recorded 100% quality at batch 256 and 512, at 215.7 and 218.5 tokens per second.
That result does not make batch 512 a universal setting. It shows that the setting changed this workload. I need more runs before I make a wider claim. For this task, the passing run matters more than the failing speed record.
This is why I moved long-form synthesis away from Llama 3.1 8B after three runs missed the output floor. The model selection test records that decision. I used a verifier result, not a parameter count.
What did the latest 5090 work show?
The same report lists a Gemma 3 4B run at 257.1 tokens per second with 100% quality on the fixed task set. That is a useful comparison. It is not a universal ranking. The task set is small, and the models may solve it in different ways.
I also keep older runs beside new runs. One Llama 3.1 8B agent-decision run recorded 153.12 tokens per second. Another recorded 188.16. The load state and wall time differed. I do not turn those values into one clean score.
The rule is simple: compare like with like. Keep the prompt, output limit, engine, context, and batch constant. If one changes, mark the result as a new lane.
Why record a model that did not complete every test?
Because a missing test changes the decision.
My Aug. 13 Muse Glimmer measure recorded 29.46 generation tokens per second and 23,261 MiB peak VRAM on a 32,607 MiB RTX 5090. The model fit the llama-bench path. The Ollama path did not run. A tool-use smoke test did not run. The final status is measured, not recommended.
That status stops a partial result from becoming a false catalog entry. I do not compare it directly with Gemma 4 26B. The engine and workload differ.
Use hold when the model cannot load. Use reject when it loads but fails the fixed task. Use rerun when it passes but lacks a required tool test. Keep the missing evidence next to the number.
What is the smallest useful local benchmark?
Start with one task that represents the work. Check its output with code or a short rubric. Record the run conditions and the result.
Then change one input. Change the model, quant, engine, or batch. Do not change all four at once. The next run should answer one real choice.
My speed and quality gate follows this rule. It turns a throughput table into a release check.
Accompanying prompt
What the prompt does: This prompt turns one local model run into a decision record with explicit limits.
Copy/paste this prompt:
Copy-ready prompt
Paste the exact block into your coding agent.
No article chrome, no footnotes, no formatting drift.
This prompt and every other one we publish live in the free prompt library.
Copy the block above.
Get the next measured local AI run in the 5090 Reports email list.
Get the Local AI Field Kit
Four copy-ready tools now, then one evidence-backed Local AI Lab Note on Friday when there is something worth sharing.
Get the requested artifact now, then at most one evidence-backed Local AI Lab Note on Friday when there is something worth sharing. One-click unsubscribe. No sponsored placements. Privacy.
Patrick Hughes
Building BMD HODL — a one-person AI-operated holding company. Nashville, Tennessee. Twenty-Two agents.
More writing
- 5 min
How I Test a 30B Local Model Before I Load It
A 30B local model can fit on paper and still fail the job. This test plan checks memory, tool use, speed, and repeatability first.
- 6 min
Search Old Results Before Publishing an LLM Test
An independent QA pass caught my second post about the same Ollama batch sweep. Here is the duplicate check I now run before publishing an LLM result.
- 6 min
Why I Benchmark Local LLM Input and Output Separately
My RTX 5090 runs show why model loading, prompt ingestion, token generation, and task checks need separate measurements before production use.
- 5 min
Why I Test 3 Workloads Before Sizing a Local LLM
One local LLM speed number hides the work behind it. My RTX 5090 sweep shows why short generation, long context, and code need separate rates.
- 5 min
Ollama num_batch: 256 Was My RTX 5090 Sweet Spot
I tested four Ollama settings on Gemma 4 26B. num_batch 256 delivered nearly all the speed of 512 while using less power on my RTX 5090.