Benchmarks

Local models, measured on my Mac Studio

Nine model builds and four runtimes through the same tests: speed, long context, quality and real agent tasks. The winner for my agent: Qwen3.8 Flash Next at 2.75 bits on sushi.

model builds
9
runtimes
4
fastest writing
119 tok/s
recall at 199K tokens
12/12
The front of a Mac Studio on a white background

Head to head on my agent's workload

Same three requests for each model: a 600-word answer in French (3 runs, median shown), a 42K-token code dump with one fact hidden in the middle, and 8 tool-calling cases. Every model found the hidden fact.

Writing speed, tokens/s, higher is better
Reading a 42K-token prompt, tokens/s, higher is better

The 27B run came from the server's prompt cache, so its reading speed isn't a real measurement and is left out. Tool calls: all four passed 8 of 8 in these runs. Download every number on this page (JSON).

Speed as the prompt gets longer

Four prompt sizes from 1K to 128K tokens, each made unique so no cache helps, 2 runs per size. The 2.75-bit build with MTP barely slows down: it loses 3% of its writing speed between 1K and 128K. The 4-bit build reads prompts fastest but needs a lot more memory.

Writing speed, French prose, tokens/s
02550751001251K16K64K128K
  • Flash Next 2.75 bpw, MTP · sushi
  • Flash Next 2.75 bpw, DFlash · sushi
  • Flash Next 4 bpw, MTP · sushi
  • Flash Next 3.3 bpw, MTP · mlx-serve
  • DeepSeek V4.1 Flash 1.75 bpw · sushi
The numbers
1K16K64K128K
Flash Next 2.75 bpw, MTP · sushi98.5100.791.895.4
Flash Next 2.75 bpw, DFlash · sushi95.388.786.983.7
Flash Next 4 bpw, MTP · sushi103.1103.299.690.9
Flash Next 3.3 bpw, MTP · mlx-serve99.293.382.578.8
DeepSeek V4.1 Flash 1.75 bpw · sushi38.839.239.238.7
Reading speed (prefill), tokens/s
01,0002,0003,0004,0001K16K64K128K
  • Flash Next 2.75 bpw, MTP · sushi
  • Flash Next 2.75 bpw, DFlash · sushi
  • Flash Next 4 bpw, MTP · sushi
  • Flash Next 3.3 bpw, MTP · mlx-serve
  • DeepSeek V4.1 Flash 1.75 bpw · sushi
The numbers
1K16K64K128K
Flash Next 2.75 bpw, MTP · sushi1,6522,3722,2972,252
Flash Next 2.75 bpw, DFlash · sushi1,6492,3122,2642,192
Flash Next 4 bpw, MTP · sushi1,6103,4013,2373,150
Flash Next 3.3 bpw, MTP · mlx-serve5631,8312,1282,046
DeepSeek V4.1 Flash 1.75 bpw · sushi216668663646

Writing code is faster than prose on every build (100–145 tokens/s), because code is easier for the MTP head to guess. DeepSeek V4.1 Flash streams its experts from the SSD, which is why it stays near 40.

Quality: almost everything at the ceiling

Tool calls and auto-checked answers were repeated 4 times. Code runs against hidden tests, maths answers are matched against a key, and the long-context test hides 5 notes in a 199K-token prompt, one of them a later correction of another.

BuildTool callsChecked answersCode, hidden testsMathsRecall at 199KFrench grammarFrench fixes
Flash Next 2.75 bpwsushi29/3216/1654/5448/4812/1228/308/8
Flash Next 4 bpwsushi30/3216/1654/5448/4812/1227/308/8
Flash Next 3.3 bpwmlx-serve32/3216/1654/5447/4812/1226/308/8
DeepSeek V4.1 Flash 1.75 bpwsushi27/3214/16–––––
27B fine-tune "Turbo 735"llama.cpp, 4 bit––36/3631/32–28/305/8
27B fine-tune "Jumbo 747"llama.cpp, 4 bit––35/3632/32–27/304/8

Bold means a perfect score. The 3.3-bit build on mlx-serve was the only one with 32/32 tool calls, so on tools my pick is not the best. The two community 27B fine-tunes ran a shorter code and maths set (2 samples instead of 3): strong there, but they fixed only half of the French sentences.

Real agent tasks

Benchmarks are one thing. These are two jobs I handed to Hermes Agent with the local model in charge, from one prompt, with no help.

Build a complete shop website

A watch shop in plain HTML, CSS and JavaScript: catalogue, filters, cart, checkout, responsive, accessible. Up to 150 steps, one hour. Graded on a 100-point rubric.

  1. One prompt in French
  2. Hermes plansup to 150 steps
  3. Writes 24 filesHTML, CSS, JavaScript
  4. Checked in Chromefeatures, mobile, Lighthouse
  5. 96/100 in 11.6 min
STQ 2.75 bpw
sushi
iQ 3.3 bpw
mlx-serve
Total, out of 1009697
Features, /404040
Mobile, /252524
Accessibility, /151515
Design, /201618
Time to build11.6 min20.4 min

Both scored 100 on Lighthouse mobile accessibility, best practices and SEO. The 2.75-bit build finished in about half the time.

Fill a PDF form and sign it

A 6-page insurance form, 6 values to enter, and a handwritten signature to cut out of a screenshot with a real transparent background and place in 3 boxes. 2 runs per build.

  1. 6-page PDF form
  2. Fills 6 fields
  3. Cuts out the signaturetransparent background
  4. Places it in 3 boxes8 of 8 runs passed
Time to finish, every run passed, seconds

8 of 8 passed the automatic check. The scorer only checks values, image placement and transparency, not how good the signature looks.

French writing, judged blind

Most of what my agent writes is in French, so I graded 12 everyday writing tasks with the two finalists shuffled under neutral labels. Result: 98 for the 2.75-bit build against 97.5 for the 3.3-bit build, out of 120. The 2.75-bit build won 7 tasks, lost 3 and tied 2. A tie, honestly.

Task2.75 bpw · sushi3.3 bpw · mlx-serve
Chat message about a backup98.5
Formal letter to an administration77
Explain something to a beginner79
Summarise server logs98
Formal rewrite98
Technical translation99
Apology to a customer87.5
Daily briefing78.5
Social media post89
Steps for an elderly person8.57.5
Reply to a complaint7.57
Short opinion piece98.5

Scores out of 10, the winner of each task in bold. One grader, one sample per task.

Temperature 0.6 or 1.0?

Same model, same tests, only the sampling temperature changed. 0.6 matched or beat 1.0 everywhere, so it's my default now.

TestT = 0.6T = 1.0
Tool calls, 4 runs29/3228/32
Harder code tasks18/1816/18
Maths48/4848/48

How I run them

  1. Through the real API. Every test sends streaming requests to the same OpenAI-compatible endpoint my agent uses, and times them from the client.
  2. Answers are checked by code where possible. Hidden unit tests for code, an answer key for maths, exact checks for tool names and arguments.
  3. Caches are defeated. Each long prompt is made unique, and runs that hit the cache anyway are thrown out.
  4. Several runs. 2 to 4 per test depending on how long it takes. I show the median or the mean, never the best run alone.
  5. The gaps stay visible. If a run was aborted or a number can't be trusted, it says so below.

What these numbers don't tell you

  • Speed tests ran on sushi 1.4.1. I now run 1.5.1 and haven't re-measured yet.
  • The agent tasks are one or two runs each, and the design score and the blind French grades come from a single grader.
  • Some result files don't record the build they ran; where I inferred it from timing and file names, the raw data says so.
  • Every test ran on one machine. A Mac with less memory would rank these builds differently.

The open models people download most

Not measured by me yet: these are estimates from each model's published config, at 4-bit with an 8K context.

ModelParametersMemory, 4 bitSmallest MacDownloads, 30 days
Qwen3.8 27B27.8B19 GB32 GB7.5M
Gemma 4 31B31.3B22 GB32 GB7.1M
gpt-oss 20B20.9B14 GB24 GB5.8M
Gemma 4 26B-A4B25.8B17 GB24 GB5.5M
Qwen3.6 35B-A3B36.0B23 GB32 GB4.2M
Qwen3.8 Flash Next180B111 GB192 GB3.5M
gpt-oss 120B117B73 GB128 GB2.4M
GLM-5.3753B462 GBOver 256 GB2.0M

Data from Hugging Face, 9 Nov 2026. All models

Tools to check before you download

Benchmarks write-ups

More: Setup · Workflows · Notes · all posts

Photos via Wikimedia Commons:Yasu (CC BY-SA 3.0).