holistechlabssushi 1.2.1 · 1.2.4 · Fork
DEEN

Measured · 18 October 2026 · 8 lengths twice per build

Qwen3.8-Flash-Next with sushi on the Mac Studio M1 Ultra

sushi 1.2.1 · sushi 1.2.4 · fork cead269c on Mac Studio M1 Ultra

Authors

Dipl.-Ing. Sören GebbertInstitut für holistische Technologieforschung GmbH Claude Code Opus 5.5Anthropic

Machine

Mac Studio M1 Ultra

SoC
Apple M1 Ultra, 20 CPU cores, 64 GPU cores
Memory
64 GiB unified memory, up to 58 GiB for the GPU (iogpu.wired_limit_mb)
OS
macOS 26.2, on mains power
Weights
beamster/Qwen3.8-Flash-Next-Sushi-2.6bpw

Three builds of sushi

Two releases and a fork

1.2.1
release, SHA-256 787ceffca035
1.2.4
release, SHA-256 4de05a815b52
Fork
1.2.4 with 11 commits, at cead269c (chapter 05)
Launch
the same for all: MTP on, KV cache 8 bit, context 262,144

Protocol

Eight questions about a weather log

Lengths
8 steps from 32,000 to 245,000 tokens, one document per step
Order
fork, 1.2.4, 1.2.1, 1.2.1, 1.2.4, fork
Budget
3,072 output tokens, at most 2,048 of them thinking
Measured
reading, follow-ups, output and questions without an answer
245k Context245,127 tokens in the prompt

435tokens/s

sushi 1.2.1prompt processing on the first question

9.4minutes

Reading the whole text once, on the first question

19.2seconds

Reading a follow-up the text is already processed

49.9tokens/s

Output when answering follow-up questions

Out of memory

sushi 1.2.47 of 16 questions without an answer, in both measurements

–

Reading the whole text the first question failed

–

Reading a follow-up runs with errors do not count

–

Output runs with errors do not count

709tokens/s

Fork cead269cprompt processing on the first question

5.8minutes

Reading the whole text once, on the first question

14.6seconds

Reading a follow-up the text is already processed

49.5tokens/s

Output when answering follow-up questions

Mean of both measurements of a build. On the first question about a text sushi reads all of it, on every follow-up only part of it. Chapter 02 shows the lengths in between.

01 · Setup

The same questions to three builds

Three builds of sushi ran on the Mac Studio M1 Ultra with the same weights, the same launch line and the same documents as in the report on Apple M1: release 1.2.1, release 1.2.4 and a fork of 1.2.4 with changes for the M1 Ultra (chapter 05). Each length from 32k to 245k had one document and eight questions; every run got a freshly started server without a disk cache.

Each build ran twice, in the order fork, 1.2.4, 1.2.1, 1.2.1, 1.2.4, fork. If the machine changes over the hours, on average this affects all three alike. The two measurements of a build differ by at most 1.7 % in reading speed, and up to 128k 1.2.1 reads within 0.5 % of its speed in the report on Apple M1.

The GPU had 58 GiB available, 2 GiB more than the default of 56 GiB. With this limit 1.2.1 answered every question at 229k and 245k in the report on Apple M1 as well.

02 · Speed

At 245k the fork reads 1.6 times as fast as 1.2.1

The fork reads 5 % more tokens per second than 1.2.1 at 32k, 23 % more at 128k and 63 % more at 245k. 1.2.4 reads more slowly than 1.2.1 up to 192k, by 29 % at 32k.

At 245k the fork reads 1.6× as fast as 1.2.1 Tokens read per second on the first question about a text, mean of both measurements. Mac Studio M1 Ultra · 64 GPU cores · 64 GiB · macOS 26.2 Qwen3.8-Flash-Next · temperature 0 · eight questions per length, one document per length · two measurements per build · measured on 18 Oct 2026 fork sushi 1.2.4 sushi 1.2.1 32k 64k 96k 128k 192k 245k Length of the prompt in tokens (logarithmic) 300 400 500 600 700 800 tokens per second 622 610 605 600 587 557 458 435 440 538 534 547 545 536 654 681 719 736 752 754 720 709
1.2.1 slows down as the length grows, the fork stays above 650. 1.2.1 reads 622 tokens per second at 32k and 435 at 245k, the fork 654 and 709. 1.2.4 reads 440 to 547 across all lengths up to 192k; at 229k and 245k it is missing because the first question failed for lack of memory (chapter 03). At 245k the first read takes 9.4 minutes with 1.2.1 and 5.8 with the fork.
Follow-ups take 22 to 26 % less time with the fork Reading time of a follow-up question, mean of both measurements; 1.2.4 lies on 1.2.1. Mac Studio M1 Ultra · 64 GPU cores · 64 GiB · macOS 26.2 Qwen3.8-Flash-Next · temperature 0 · eight questions per length, one document per length · two measurements per build · measured on 18 Oct 2026 fork sushi 1.2.4 sushi 1.2.1 32k 64k 96k 128k 192k 245k Length of the prompt in tokens (logarithmic) 0 s 5 s 10 s 15 s 20 s 25 s reading time 12.6 s 11.8 s 11.4 s 10.5 s 9.8 s 8.8 s 19.7 s 19.2 s 9.5 s 9.2 s 8.5 s 7.9 s 7.5 s 6.6 s 14.7 s 14.6 s
On follow-ups 1.2.4 lies on 1.2.1, the fork below. sushi re-reads part of the text on every follow-up. With the fork that takes 22 to 26 % less time than with 1.2.1; 1.2.4 differs from 1.2.1 by at most 3 %. At 229k and 245k a follow-up takes 19.7 and 19.2 seconds with 1.2.1, 14.7 and 14.6 with the fork.
When writing, the three builds are close together Tokens generated per second when answering follow-ups, mean of both measurements. Mac Studio M1 Ultra · 64 GPU cores · 64 GiB · macOS 26.2 Qwen3.8-Flash-Next · temperature 0 · eight questions per length, one document per length · two measurements per build · measured on 18 Oct 2026 fork sushi 1.2.4 sushi 1.2.1 32k 64k 96k 128k 192k 245k Length of the prompt in tokens (logarithmic) 30 40 50 60 70 tokens per second 52.5 45.6 48.9 45.6 47.6 50.2 47.5 49.9 55.5 51.2 49.1 47.4 53.1 53.9 60.4 58.9 51.4 50.5 52.8 56.0 58.2 49.5
When writing, the builds are close together. 1.2.1 generates 45.6 to 52.5 tokens per second, 1.2.4 47.4 to 55.5, the fork 49.5 to 60.4. sushi writes with multi-token prediction (MTP); how often it hits depends on the text, and that differs between the builds (chapter 04). Per length the fork runs at 1.0 to 1.3 times the speed of 1.2.1.

The measuring script measures the times on the stream: reading up to the first token, output after it. A run in which a question failed for lack of memory does not count for speed.

03 · Memory

Only the fork answers every question up to 245k

At 229k and 245k 1.2.4 left 21 of 32 questions unanswered across both measurements, 1.2.1 4 in the first measurement at 192k and 229k. The fork answered all 128 questions.

Only the fork answers every question up to 245k Questions without an answer because GPU memory overflowed; two measurements per build. Mac Studio M1 Ultra · 64 GPU cores · 64 GiB · macOS 26.2 Qwen3.8-Flash-Next · temperature 0 · eight questions per length, one document per length · two measurements per build · measured on 18 Oct 2026 questions without an answer every question answered 32k 64k 96k 128k 160k 192k 229k 245k sushi 1.2.1 measurement 1 2 2 measurement 2 sushi 1.2.4 measurement 1 6 2 measurement 2 8 5 fork measurement 1 measurement 2
GPU memory overflowed while reading. sushi then reports OutOfMemory and ends the answer without text; the next question starts afresh. With 1.2.4 this hit the same lengths in both measurements, with 1.2.1 only the first measurement.

All three ran with the same limit of 58 GiB for the GPU. How much memory each build needs at which length is not measured; the series only shows where it was not enough.

04 · Answers

The three builds write different text

Between two measurements of the same build 78 % of the answers are byte-identical, between two builds 27 to 37 %.

With 1.2.1, 47 of 60 answers of both measurements match, with the fork 50 of 64; both measurements of every build always answer the first question about a text the same way. 1.2.1 and the fork, by contrast, give only 16 of 60 identical answers. So the builds do not compute bit for bit the same; the fork changes how intermediate values are rounded (chapter 05).

The fork got 36 and 37 of 64 answers right, 1.2.1 32 and 33, 1.2.4 33 and 32. With one document per length this shows no difference in understanding; the report on Apple M1 measures that with three versions per length.

05 · The fork

Eleven commits on sushi 1.2.4

The fork is public in the branch m1-ultra of holistech/sushi; the comparison with v1.2.4 shows every change at once. What is measured here is the whole fork. How much a single change contributes, this series does not show.

  • eef8792e Command buffers: the GPU collects up to 1,000 operations and 1,000 MB before it submits a buffer; on the M1 Max and M1 Ultra.
  • ef4dcb9c Attention while writing: a wider grid for the split attention so that both halves of the Ultra get work.
  • 7b57ecf9 Measurement switches for breaking down kernel costs; without a set variable they do nothing.
  • cf2e9a36 Experts while reading: the matrix multiplication computes only the blocks of eight rows that are in use.
  • 9d20a479 Command buffers per phase: 250 MB while reading, 1,000 MB while writing; this needs a small patch to MLX.
  • 1b5efd2c Weights while reading: from 1,024 rows, unpack first, then multiply.
  • aaa3762b The same route in f16 instead of bf16.
  • 4b34d2e1 Sparse attention while reading: up to 4,096 keys via a mask instead of a selection.
  • ef794693 Sparse attention beyond that: a dedicated kernel that reads the keys row by row in tiles of eight.
  • dfdcb613 Per-layer embeddings (PLE): one parallel pass through the table mapped in from the SSD.
  • cead269c Attention while reading: the kernel stores the keys row by row in the threadgroup's fast memory.

06 · Every figure

Results per length

Mean of both measurements of a build without runs with an unanswered question: reading on the first question in tokens per second, follow-up in seconds, output in tokens per second. The “unanswered” columns count the questions without an answer across both measurements. Every chart in this report is computed from these values.

Reading
Length Reading 1.2.1Reading 1.2.4Reading ForkFollow-up 1.2.1Follow-up 1.2.4Follow-up Fork
32k62244065412.612.69.5
64k61053868111.811.89.2
96k60553471911.411.58.5
128k60054773610.510.57.9
160k5875457529.89.97.5
192k5575367548.89.16.6
229k458–72019.7–14.7
245k435–70919.2–14.6
Output and unanswered questions
Length Output 1.2.1Output 1.2.4Output Forkunanswered 1.2.1unanswered 1.2.4unanswered Fork
32k52.555.560.4000
64k45.651.258.9000
96k48.949.151.4000
128k45.647.450.5000
160k47.653.152.8000
192k50.253.956.0200
229k47.5–58.22140
245k49.9–49.5070

07 · Limits

What this measurement does not show

One machine. Only the Mac Studio M1 Ultra is measured. How the fork runs on other chips is not measured.

One document per length. That is enough for speed, as the two measurements per build show. It is not enough for understanding: differences in the number of correct answers are not a finding here.

More GPU memory than the default. Every run had 58 GiB for the GPU. Nothing is measured with the default of 56 GiB.

Against the releases, not against current development. The fork builds on 1.2.4. It does not contain what has changed in sushi since 1.2.4.

No causes. Why 1.2.4 reads more slowly than 1.2.1 and runs out of memory at 229k and 245k is not investigated.

One kind of document, one session. How the builds fare with source code or in an agent is not measured here.