How I Keep LLM Results Valid After a Driver Update
A new GPU snapshot does not refresh an old benchmark. I show how I bind driver, runtime, workload, and timestamps to each local LLM result.
A fresh machine snapshot can make an old local LLM result look newer than it is.
The short answer: I bind every benchmark row to the machine state, runtime, settings, workload, and time from that run. A later GPU snapshot is useful health data, but it does not update an older result. Canonical URL: https://bmdpat.com/blog/local-llm-benchmark-provenance-gpu-snapshot-2026

What went wrong in my July 30 report?
My July 30, 2026 lab report captured a current RTX 5090 snapshot at 09:50. nvidia-smi reported driver 610.88, 32,607 MiB total memory, 1,905 MiB in use, 90.11 watts, and 42 C.
The same report also collected 11 benchmark rows from four older input files. Those rows included measurements from July 9 and June 14. One July source recorded driver 610.62.
Each number is valid inside its own record. The problem starts if I read the current driver in the report header as the driver used for every row in the table. The report generation time and the benchmark run time answer different questions.
Why does benchmark provenance matter?
A local inference result belongs to the full route that produced it. That route includes the GPU, driver, model file, quant, runtime version, context setting, batch setting, workload, and residency state.
Change one part and the old result becomes evidence from a different route. It may still help with a rough choice. It does not become a fresh measurement.
This matters most when two rows are close. My July measurements included gemma4:26b workshop runs at 215.7 and 218.5 output tokens per second with different num_batch settings. I should not explain that gap with a later driver snapshot. The saved rows already name the settings and source file that produced them.
My guide to benchmarking local LLM input and output separately applies the same rule within one request. Load time, prompt ingestion, output generation, and task checks need their own fields. Provenance applies across runs too.
What should one local LLM receipt contain?
I keep one record per completed route. At minimum, it carries:
captured_at gpu_name driver_version model quant runtime_version context batch workload resident_or_cold input_tokens output_tokens output_tokens_per_second task_check source_file
The source file is not paperwork. It is how I get back to the raw row when a summary table raises a question.
I also keep machine health beside the run when it matters. Memory use, temperature, and power can explain whether a route had room to operate. They should carry the run timestamp, not the timestamp from a later report build.
How do I combine old rows with a fresh snapshot?
I label the sections by purpose.
The current snapshot says whether the machine is available and what it reports now. The benchmark table says what happened during each saved run. The report generator may place both on one page, but it should not imply that they share one capture time.
For a decision, I filter to comparable rows first. I match the model, quant, runtime, workload, and key settings. Then I check whether the environment changed enough to require a rerun.
A driver update does not prove that an old result is wrong. It creates a clear boundary. If the result controls a production route, I rerun it on the new stack before I call it current.
The same discipline keeps eval claims readable. My post on why local LLM benchmark numbers can mislead covers denominators, runs that could not complete, and machine stability. A timestamped route receipt adds the missing link between the number and the environment.
When should I rerun the benchmark?
I rerun when the answer will change a routing or sizing decision and the measured route has changed.
That includes a new model file, quant, runtime, driver, context limit, batch setting, or workload shape. I also rerun after a machine fault that makes the old environment hard to trust.
I do not rerun every row just because a report date changed. That would replace provenance with churn. I keep the old row, mark its route and time, and collect a new row only when I need a current comparison.
The result is a smaller table I can defend. I know what ran, where it ran, and which decision the number can support.
Accompanying prompt
What the prompt does: It turns mixed local LLM benchmark files and machine snapshots into timestamped route receipts without assigning new metadata to old results.
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.
I publish measured local AI build notes in The 5090 Reports. Join the email list for the next result.
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
- 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
My 5090 benchmark was missing the field I needed most
A fresh Qwen3.5 9B run showed 84.94 tok/s, but the useful number was the 6,105 ms load phase. I added phase timings and capture time to the benchmark receipt.
- 5 min
When a 4B Local LLM Beats 26B on One Task
On one RTX 5090 workshop, a 4B model beat a 26B model on speed while both passed four code checks. Here is the model-selection rule I kept.
- 5 min
The faster local model run took 83x longer
One llama3.1:8b run posted 188.16 tok/s and finished in 43.9 seconds. The next posted 153.12 and finished in 0.53. Tokens per second ranked them backwards.
- 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.