All Posts
AI Infrastructure October 4, 2026

Ollama's MLX Backend Beats Metal by 93 Percent: Apple Silicon Local Inference Tested (October 2026)

Ollama's 0.19 release notes say it plainly: on Apple Silicon, Ollama is now built on top of Apple's MLX framework to take advantage of its unified memory architecture, rather than the Metal backed llama.cpp path it shipped for years. On an M4 Max running Qwen3.5, that swap took decode speed from 57.8 tokens per second to 111.4, a 93 percent improvement, and prefill from 1,154 to 1,810 tokens per second. The catch is in the fine print: the MLX runner is in preview, it needs 32GB or more of unified memory to activate at all, and as of this release it only accelerates one model family. Here is what actually changed, what it costs to turn on, and where it still falls back silently to the slower path.

Ollama's MLX Backend Beats Metal by 93 Percent: Apple Silicon Local Inference Tested (October 2026)

Metric Metal backend (llama.cpp) MLX backend (Ollama 0.19) Change
Decode speed 57.8 tok/s 111.4 tok/s +93 percent
Prefill speed 1,154 tok/s 1,810 tok/s +57 percent (1.6x)
Hardware tested M4 Max, 64GB unified memory M4 Max, 64GB unified memory same chip
Model tested Qwen3.5 (int4) Qwen3.5 (int4) same quantization
Minimum memory Any supported Mac 32GB unified memory hard floor

Ollama's own 0.19 changelog describes the change directly: "Ollama on Apple silicon is now built on top of Apple's machine learning framework, MLX, to take advantage of its unified memory architecture." That is a bigger statement than it looks. For most of Ollama's life on macOS, the inference path underneath its friendly CLI and REST API was a Metal backed build of llama.cpp, the same general purpose C++ engine that runs on everything from a Raspberry Pi to a server GPU. MLX is Apple's own array framework, written specifically to exploit unified memory, the architecture where the CPU, GPU, and Neural Engine all read and write the same physical RAM instead of copying data across a PCIe bus. Routing Ollama's decode and prefill through MLX instead of a generic Metal shader path is the first time the two most widely used local inference tools on Apple hardware, Ollama and native MLX, are drawing from the same low level primitives.

The release notes list real engineering behind the number, not just a flag flip: improved KV cache efficiency over the Anthropic compatible API, periodic snapshotting during prompt processing in the MLX runner, a fixed memory leak in MLX runner KV cache snapshots, and a correction to flash attention misallocation for certain model types. None of that reads like a marketing bullet. It reads like a team that shipped a new runtime and then spent the following patch cycle fixing the things a new runtime breaks.

The benchmark, and what it does not tell you yet

The 93 percent decode improvement and the 1.6x prefill improvement come from a single, specific, reproducible test: an M4 Max with 64GB of unified memory, running Qwen3.5 at int4 quantization, Metal backend at 57.8 tokens per second decode and 1,154 tokens per second prefill, MLX backend at 111.4 and 1,810 respectively. That is a real, large improvement on real hardware, and it is consistent with what our own MLX versus llama.cpp testing has shown for a while: MLX's unified memory handling has a structural advantage on Apple Silicon that a generic backend has to work much harder to approximate.

What it does not tell you is how this generalizes. One chip, one model, one quantization level is a data point, not a curve. Memory bandwidth scales the benefit on every Apple Silicon generation we have tested, and the architectural reason MLX wins on an M4 Max, cutting out the copies a non native backend pays for, holds just as true on an M3 Ultra or a base M4 Pro, so expect the relative gain to persist even as the absolute tokens per second number moves with the chip's bandwidth. What will not generalize automatically is the specific 93 percent figure for a different model, a different quantization format, or a different context length. Prefill heavy workloads, long context summarization, batch document processing, will see a different ratio than the short, decode heavy chat completion this benchmark effectively measures.

Where it quietly does not activate

Two gates sit in front of the speed up, and Ollama does not make noise when you miss either one.

The first is memory. MLX acceleration needs 32GB or more of unified memory to turn on. A base M1, M2, M3, or M4 with 8GB or 16GB keeps running the old Metal path, full stop. That floor rules out a meaningful share of the Mac mini and base MacBook Air fleet that a lot of local inference tinkering actually happens on, which narrows this release's real audience to Pro, Max, and Ultra buyers, or anyone already running MLX against vLLM for production batching where the memory floor was never the constraint.

The second is model coverage, and this is the one worth flagging loudest. As of 0.19, MLX acceleration is confirmed for Qwen3.5 only. Llama, Mistral, and other architectures are not yet supported. Critically, Ollama does not error out or warn when you load an unsupported model with the MLX backend enabled. It falls back silently to Metal, so a user who sets OLLAMA_MLX=1 and loads a Llama model gets the old performance with no indication that acceleration never engaged. If you are benchmarking your own stack after reading this, confirm the model family before trusting a before and after number, because a silent fallback will make MLX look like it did nothing when the real answer is it was never in the loop.

How to turn it on

The backend is opt in through an environment variable, not a config file setting or a flag on the model pull:

OLLAMA_MLX=1 ollama serve

This requires Ollama 0.19 or later. Restart the server with that variable set, then load a supported model as usual. There is no per model override to force MLX on an unsupported architecture, and there is currently no ollama ps style indicator that tells you which backend served a given request, so the honest answer if you want to confirm it is working is to run the same prompt with the variable set and unset and compare tokens per second directly, the same way the 93 percent figure above was produced.

When this applies to your stack

If you are running Qwen3.5 on a 32GB or larger Apple Silicon Mac for local inference today, turning on OLLAMA_MLX=1 is close to a free 93 percent decode improvement with no downside beyond a preview label, and it is worth doing this week. If your production path runs a different model family, the honest move is to wait for broader MLX coverage rather than assume the number above applies, and to keep measuring your own workload rather than taking a single vendor benchmark as your capacity plan. For teams weighing Ollama against LM Studio and native MLX LM for a client deployment, this closes a meaningful part of the performance gap that used to be the main argument for going straight to MLX LM, without giving up Ollama's simpler operational model. Benchmarking an inference stack against your actual production models and context lengths, not a vendor's best case chip and model pairing, is exactly the kind of infrastructure work Contra Collective does for clients standing up local or hybrid AI deployments.

FAQ

Does the MLX backend work on Intel Macs? No. MLX is built specifically for Apple Silicon's unified memory architecture and has no equivalent path on Intel based Macs.

Why does my benchmark not show a 93 percent improvement? The most common reason is model coverage. As of Ollama 0.19, only Qwen3.5 is confirmed to use the MLX backend, and Ollama falls back to Metal silently for unsupported models rather than erroring.

Do I need 64GB of unified memory like the benchmark used? No, the hard floor is 32GB. The benchmark machine had 64GB, but the MLX backend activates at 32GB; performance below that threshold has not been independently verified at the time of writing.

Is the MLX backend stable enough for production? Treat it as a preview. Ollama's own release notes describe the MLX implementation as still under active development, and the current patch cycle has been fixing memory leaks and misallocation bugs rather than adding new model support.

[ 02 ] — Keep Reading

More from the lab.

Oct 6, 2026 AI Infrastructure

vLLM vs SGLang: Choosing a Production LLM Inference Engine in Late 2026

vLLM and SGLang are both open source, both built to serve LLMs at production scale, and both frequently recommended for the exact same job, which is exactly why teams keep picking the wrong one. The real difference is not a benchmark number. It is which attention and caching architecture matches your actual traffic pattern, and most teams never check that before they commit infrastructure budget to one or the other.

Oct 3, 2026 AI Infrastructure

DGX Spark vs Mac Studio M5 Ultra: Local LLM Inference Benchmarked (October 2026)

The M5 Ultra Mac Studio shipping in September 2026 is a quad die chip with 1.2 terabytes per second of memory bandwidth and up to 256GB of unified memory, with a 512GB configuration arriving in late October. Against a single NVIDIA DGX Spark, it is not close: on a 27B dense model, the Mac decodes at roughly four times the speed. Cluster two DGX Spark units together over NVIDIA's GX10 networking instead, and the comparison flips for a different workload entirely, concurrent multi user serving. Neither machine is the right answer for every workload, and the decision comes down to whether you are serving one user or several at once.

Oct 2, 2026 AI Infrastructure

Claude Cowork Is Merging Into Claude Chat: What Teams Running Agentic Workflows Need to Know

Anthropic confirmed in mid September that Claude Cowork, the mode it launched in January 2026 for knowledge work beyond coding, is being folded back into the main Claude chat interface. The rollout started the week of October 1, 2026 for Pro and Max subscribers, with Team and Free plans following and Enterprise customers getting 30 days of notice before anything changes under them. Anthropic also cut usage against the five hour session limit by half for design, deck, and document work through October 15, a clear signal of what it wants people doing in the unified interface first. For a company that built real workflows on top of the three mode split between chat, Code, and Cowork, this consolidation changes where context lives and how a team should plan its usage budget.

Ready when you are

Want to discuss this topic?

Start a Conversation