Local AI: hardware, models and measured tests

My M4 Max and RTX 5090 tests, plus credited research on other workstations: which local AI models fit which machine, how fast they run and what each comparison can establish.

24 guides, tests and reviews · own tests and published research · newest 31 Oct 2026

Start with the decision

Choose a model, a runner or a test by the job you need to finish.

Local AI means running models locally: inference happens on your own hardware rather than through a cloud-based AI provider. A runner is the application that loads and serves the model; changing the runner does not make the model a different size or remove its licence conditions. Open weights and open source describe different things, so check the model's own licence before using or redistributing it.

For a UAE team, test the language and documents the workflow actually uses. Include Arabic cases when they are part of the work. Check where prompts, logs and connected tools send data; a local model alone does not establish that a whole workflow stays on the device. Use the private AI data-flow checklist to map those destinations, then the workflow-readiness guide to assess the task.

Pages labelled Test report runs on hardware I own: a MacBook Pro with an M4 Max and 128 GB of unified memory, and a Windows workstation with one RTX 5090 (32 GB) that I reach over Tailscale. Each measured number carries the machine and the date it was taken on, because a local-model result is only as good as the runtime, the quantization and the context it was measured with. The research reviews quote published figures instead and credit their testers, including the five-part series on workstation benchmarks, AMD configurations and local AI costs.

Start with the first question: will the model fit? The calculator adds up weights, KV cache and overhead for a GPU or a Mac. Model weights are only part of the memory budget. Quantization, context length and the KV cache also affect what fits; check the model and runtime you intend to use.

Then the engines. On the RTX 5090, SGLang with a drafter decoded Qwen3.8-27B at 139.7 tok/s against vLLM's 100.8 with MTP and 84.5 without speculation, at the same 32K context. On the M4 Max, a DFlash 2 drafter took the same model from 16.7 to 47.2 tok/s; native MTP added about 24%. The same 27B read prompts 46× faster on the RTX 5090 than on the Mac and decoded 5× faster, but the 32 GB card caps the context window and the 128 GB Mac holds what the card must page around.

The performance tests record the runtime, quantization and context, with scripts and raw runs in the public lab repository ↗. The LM Studio/Ollama comparison checks response format instead and includes its own downloadable record. Read each test’s method before comparing its numbers.

Will it fit?

The calculator I open first, and the three numbers it rests on.

32 GB
of Mac memory runs a 27B model at 4-bit, about 16.1 GB of weights
96–128 GB
runs the 8-bit build (29.5 GB) with room for context
2×
the context that fits with an FP8 KV cache, at negligible loss

Local AI on a Mac

The M4 Max with 128 GB: which Mac, which quantization, and what speculation changes.

5 entries

The RTX 5090 workstation

One 32 GB card, set up and measured remotely: the plan, the serving configs, the engine comparison and the Mac side by side.

6 entries

Building a home AI lab on an RTX 5090: the plan

Why I moved part of my AI experiments from metered cloud GPUs to one RTX 5090 workstation, what I planned to test, and where the measured build ended up.

Note · RTX 5090 · 4 min

Reading local AI benchmarks

Published workstation and GPU tests, with credits, configuration details and limits.

5 entries

Why local LLM benchmark charts disagree

Cache state, concurrency, tokenizers and model files explain conflicting local LLM scores. Compare published tests without hiding their limits.

Review · 2 min

Choosing and fitting models

Memory maths, quantization, the KV cache, model reviews and the running test log.

8 entries

How I test

The same three things sit behind every number on these pages.