holistechlabsQwen3.8-27B · 6 Engines
DEEN

Messung · 9. und 10. Oktober 2026 · sechs Engines

Qwen3.8-27B als Agent auf dem Mac Studio M1 Ultra

Rapid-MLX, oMLX, MTPLX, mlx-dspark, llama.cpp, mlx-lm mit Agentenverläufen bis 98.000 Token

Autoren

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

Maschine

Mac Studio M1 Ultra

SoC
Apple M1 Ultra, 20 CPU-Kerne (16 Leistung, 4 Effizienz), 64 GPU-Kerne
Speicher
64 GiB Unified Memory, davon 56 GiB für die GPU freigegeben
System
macOS 26.2 (25C56), am Netz

Modell

Qwen3.8-27B

Bauart
dicht, hybrid: Gated-DeltaNet-Schichten mit rekurrentem Zustand und klassische Attention
Gewichte
je Engine ihre eigene 4-Bit-Fassung, mit Entwurfskopf, wo die Engine einen nutzt
Kontext
262.144 Token Fenster auf jeder Engine

Engines

Stand und Gewichte

Rapid-MLX
0.15.7 · Qwen3.8-27B-4bit-MTP-fp16-MLX
oMLX
0.7.0 · Qwen3.8-27B-oQ4e-fp16-mtp
MTPLX
2.12.2 · Qwen3.8-27B-MTPLX-Optimized-Speed-FP16
mlx-dspark
0.20.3 · Qwen3.8-27B-4bit-MTP-fp16-MLX
llama.cpp
0.6.0 · Qwen3.8-27B-UD-Q4_K_M.gguf
mlx-lm
0.32.0 · Qwen3.8-27B-4bit

Messung

Wie OpenCode arbeitet

API
OpenAI-kompatibel, gestreamt, mit Werkzeugen
Prompts
Verläufe eines echten Coding-Agenten, 2.300 bis 98.000 Token
Einstellung
Temperatur 0, Denkaufwand low, bis 1.024 Token Ausgabe
Ablauf
eine Engine zur Zeit, Vorprüfung vor jedem Start, Sensoren alle 2 s

Bewertung auf einen Blick

gut mittel schwach

EngineStand, Gewichte, Einsatz Verlauf haltennach Nebenfrage, zweiter Sitzung NeustartVerlauf danach Einlesenkalt, 13k AusgabeAgent, 13k Langer Kontextrichtig, Folgefrage Ausgabe treumit Spekulation, ohne Cache
Rapid-MLX0.15.7 · 4bit-MTP-fp16-MLXAgent bis 52kgut: 1,3 sgut: 1,2 sgut: 300 Token/sgut: 31,5 Token/sschwach: liest neu ein32k: Folgefrage 116 sgut: gleichin allen Läufen
oMLX0.7.0 · oQ4e-fp16-mtpAgent bis 98k; bricht abgeschnittene Werkzeugaufrufe abgut: 2,3 sgut: 6,6 sgut: 293 Token/smittel: 29,5 Token/smittel: bis 64k23/24 · 18 sgut: gleichin allen Läufen
MTPLX2.12.2 · MTPLX-Optimized-Speed-FP16schnellste Ausgabe, mit Spekulation aber eine anderegut: 1,5 sgut: 5,9 sgut: 285 Token/sgut: 37,3 Token/sschwach: bis 32k24/24 · 7,3 sschwach: weicht abTempo 2,0-fach
mlx-dspark0.20.3 · 4bit-MTP-fp16-MLXAgent ohne Neustart; Cache wird nicht wiedergefundengut: 1,3 sschwach: 3,6 mingut: 301 Token/smittel: 27,6 Token/smittel: bis 64k23/24 · 26 smittel: längernur an der Token-Grenze
llama.cpp0.6.0 · UD-Q4_K_M.ggufDokumente über 64kgut: 1,0 sschwach: 4,4 minmittel: 232 Token/sschwach: 20,2 Token/sgut: bis 128k24/24 · 1,8 sgut: gleichin allen Läufen
mlx-lm0.32.0 · 4bitReferenz; verliert den Verlauf bei jeder Nebenfrageschwach: 4,7 minschwach: 4,7 minschwach: 214 Token/sschwach: 23,4 Token/sschwach: liest neu ein32k: Folgefrage 2,6 mingut: gleichin allen Läufen

Stufen nach festen Schwellen. Verlauf halten und Neustart: erstes Token im 52k-Verlauf, gut bis 5 bzw. 10 s, mittel bis 30 bzw. 60 s. Einlesen und Ausgabe: Anteil am besten Wert, gut ab 90 bzw. 80 %, mittel ab 75 bzw. 65 %. Langer Kontext: größte Länge mit höchstens einer falschen Antwort und einer Folgefrage bis 30 s, gut ab 128k, mittel ab 64k. Ausgabe treu: byteweise gleich gegenüber dem Lauf ohne Spekulation und ohne Cache. Alle sechs lösten außerdem jede Werkzeugaufgabe.

01 · Aufbau

Sechs Server, ein Modell, dieselben Verläufe

Qwen3.8-27B passt mit 4 Bit in die 64 GiB des Mac Studio und lässt daneben Platz für einen langen Verlauf. Auf dem Mac gibt es dafür sechs Server mit OpenAI-kompatibler Schnittstelle: mlx-lm als Referenz von Apple, die Ableger Rapid-MLX, oMLX, MTPLX und mlx-dspark, und llama.cpp mit Metal. Jede Engine lief mit den Gewichten, für die sie gebaut ist, und mit ihrem Cache so, wie man ihn im Alltag einschaltet.

Gemessen sind vier Dinge. Erstens eine Sitzung: ein Agentenverlauf von 52.000 Token, der Turn um Turn wächst, unterbrochen von einer Nebenfrage, einer zweiten Sitzung und einem Neustart des Servers. Zweitens acht einzelne Agentenschritte von 2.300 bis 98.000 Token, jeder kalt, für das reine Einlese- und Ausgabetempo. Drittens Folgefragen an ein Dokument von 32.000 bis 128.000 Token mit geprüften Antworten. Viertens, ob die Spekulation, mit der vier der Engines werben, die Ausgabe verändert.

Die Agentenverläufe sind aus der Aufzeichnung eines echten Coding-Agenten (mini-swe-agent) geschnitten; derselbe Satz lief schon auf dem HP ZBook Ultra G1a. Alle Zeiten sind auf der Uhr des Messskripts genommen, nicht aus den Angaben der Server. Vor jedem Start prüfte ein Skript, dass kein anderer Server, kein Download und kein Build lief. Werkzeugaufrufe beherrschen alle sechs: jede Engine löste die fünf Werkzeugaufgaben in drei Runden ohne formalen Fehler.

02 · Sitzung

Wer den Verlauf hält, antwortet in einer Sekunde

Den ersten Turn liest jede Engine kalt ein: 3,5 bis 4,7 Minuten bei 52.000 Token. Danach beginnt der nächste Turn bei allen nach 1,0 bis 3,0 Sekunden. Den Unterschied machen die Unterbrechungen: Nur Rapid-MLX bleibt in jeder Lage bei höchstens 1,3 Sekunden.

Wer den Verlauf hält, antwortet in einer Sekunde Zeit bis zum ersten Token in einem Agentenverlauf von 52.000 Token, logarithmisch. Mac Studio M1 Ultra · 64 GPU-Kerne · 64 GiB · Qwen3.8-27B, je Engine ihre eigenen 4-Bit-Gewichte Temperatur 0 · Denkaufwand low · eine Engine zur Zeit · gemessen am 9. und 10.10.2026 Rapid-MLX oMLX MTPLX mlx-dspark llama.cpp mlx-lm 0,5 s 1 s 3 s 10 s 1 min 5 min erstes Token kalt Folgeturn 4,7 min nach Nebenfrage 4,7 min nach zweiter Sitzung 3,6 min 4,4 min 4,7 min nach Neustart
mlx-lm verliert den Verlauf schon bei einer Nebenfrage, llama.cpp und mlx-dspark beim Neustart. Dann liest die Engine alles neu ein, so lange wie beim ersten Turn. Gestrichelt: der Median des kalten ersten Turns.

Der Grund liegt im Modell. Seine DeltaNet-Schichten tragen einen Zustand, der den ganzen Verlauf zusammenfasst und sich nicht auf eine frühere Stelle zurückschneiden lässt. Eine Engine kann einen gespeicherten Verlauf deshalb nur wiederverwenden, wenn der neue Prompt ihn genau fortsetzt, oder wenn sie unterwegs Schnappschüsse des Zustands abgelegt hat. Agentenschritte setzen den Verlauf fort; das gelingt allen.

Eine Nebenfrage oder eine zweite Sitzung schiebt einen anderen Verlauf dazwischen. mlx-lm hält nur einen Eintrag dieser Größe und liest danach 4,7 min neu ein. Über einen Neustart retten den Verlauf nur die Engines, die ihn auf die SSD schreiben: Rapid-MLX (1,2 s), oMLX (6,6 s) und MTPLX (5,9 s). llama.cpp hält den Verlauf im Arbeitsspeicher, mlx-dspark legt zwar einen Plattencache an, findet ihn nach dem Neustart aber nicht wieder.

03 · Turns

Kalt einlesen kostet bei 52k dreieinhalb bis knapp fünf Minuten

Ohne Cache liest der M1 Ultra einen Agentenverlauf von 13.000 Token mit 214 bis 301 Token je Sekunde ein. Bei 52.000 Token wartet man 3,5 bis 4,7 Minuten auf das erste Token.

Kalt einlesen kostet bei 52k fast vier Minuten Zeit bis zum ersten Token bei einem neuen Agentenverlauf, je Engine eine Linie. Mac Studio M1 Ultra · 64 GPU-Kerne · 64 GiB · Qwen3.8-27B, je Engine ihre eigenen 4-Bit-Gewichte Temperatur 0 · Denkaufwand low · eine Engine zur Zeit · gemessen am 9. und 10.10.2026 Rapid-MLX oMLX MTPLX mlx-dspark llama.cpp mlx-lm 2k 5k 13k 52k 100k Länge des Prompts in Token (logarithmisch) 10 s 30 s 1 min 3 min 10 min erstes Token
Die MLX-Engines liegen beim Einlesen dicht beieinander, llama.cpp und mlx-lm etwas dahinter. Nur oMLX und llama.cpp liefen bis 98.000 Token; dort dauert der erste Schritt über sieben Minuten.
MTPLX schreibt am schnellsten, langer Kontext bremst alle Erzeugte Token je Sekunde bei einem Agentenschritt, kalt eingelesen. Mac Studio M1 Ultra · 64 GPU-Kerne · 64 GiB · Qwen3.8-27B, je Engine ihre eigenen 4-Bit-Gewichte Temperatur 0 · Denkaufwand low · eine Engine zur Zeit · gemessen am 9. und 10.10.2026 Rapid-MLX oMLX MTPLX mlx-dspark llama.cpp mlx-lm 2k 5k 13k 52k 100k Länge des Prompts in Token (logarithmisch) 0 10 20 30 40 50 Token je Sekunde
MTPLX schreibt mit 37,3 Token je Sekunde bei 13k am schnellsten, llama.cpp mit 20,2 am langsamsten. Bei 52k fallen alle zurück; der Punkt von MTPLX beim ersten 52k-Schritt fehlt, weil dort der Speicherwächter der Engine eingriff.

Das Einlesen bestimmt die Wartezeit eines Agenten, sobald der Cache den Verlauf verliert. Die Ausgabe bestimmt die Zeit danach: Ein Schritt mit 1.000 Token Denken und Werkzeugaufruf dauert bei 37,3 Token je Sekunde rund 27 Sekunden, bei 20,2 rund 50. Während der Schritte zog der Chip 95 bis 102 Watt bei 71 bis 74 °C; der GPU-Takt blieb bei allen Engines auf 1.296 MHz.

04 · Langer Kontext

Bei 128k antwortet nur llama.cpp sofort und fehlerfrei

Fragen an ein langes Dokument verzweigen: Jede Folgefrage setzt hinter dem Dokument neu an, nicht hinter der letzten Antwort. Für den rekurrenten Zustand des Modells ist das schwerer als ein Agentenschritt.

Bei 128k antwortet nur llama.cpp sofort und fehlerfrei Folgefrage zu einem Dokument, erstes Token; darunter richtig gelöste Aufgaben, je Länge drei Saaten. Mac Studio M1 Ultra · 64 GPU-Kerne · 64 GiB · Qwen3.8-27B, je Engine ihre eigenen 4-Bit-Gewichte Temperatur 0 · Denkaufwand low · eine Engine zur Zeit · gemessen am 9. und 10.10.2026 Rapid-MLX oMLX MTPLX mlx-dspark llama.cpp mlx-lm 1 s 3 s 10 s 30 s 100 s Folgefrage 116 s 24/24 17 s 24/24 7,3 s 24/24 5,1 s 24/24 1,0 s 24/24 2,6 min 24/24 32k – – 18 s 23/24 58 s 24/24 26 s 23/24 1,3 s 24/24 – – 64k – – 14 s 22/24 3/24 – – 1,8 s 24/24 – – 128k richtig
llama.cpp legt Schnappschüsse des Zustands ab und antwortet in jeder Länge in 1,0 bis 1,8 Sekunden. Rapid-MLX und mlx-lm lesen jede Folgefrage komplett neu ein und liefen deshalb nur bis 32k. Ein Strich: nicht gemessen.

Bei 32k lösen alle sechs Engines alle 24 Aufgaben aus drei Fassungen des Dokuments. Bei 128k bleibt llama.cpp fehlerfrei, oMLX löst 22 von 24 und schreibt dann nur noch 10,5 Token je Sekunde. MTPLX liest 128k in 19 Minuten ein und scheitert danach an Speicherfehlern: 3 von 24. mlx-dspark lief bis 64k; bei 128k leerte sein Speicherwächter den Cache, und eine Folgefrage brauchte 16 Minuten.

05 · Spekulation

Spekulation lohnt nur bei MTPLX und ändert dort die Ausgabe

Spekulative Dekodierung lässt einen kleinen Entwurfskopf mehrere Token vorschlagen, die das Modell in einem Schritt prüft. Richtig gebaut ändert sie kein Token, nur das Tempo. Geprüft ist das je Engine mit zwei frischen Servern ohne Cache, einmal ohne und einmal mit Spekulation, je zweimal dieselben vier Prompts.

Spekulation lohnt nur bei MTPLX und ändert dort die Ausgabe Erzeugte Token je Sekunde, Prosa-Prompt, ohne und mit Spekulation, beide ohne Cache. Mac Studio M1 Ultra · 64 GPU-Kerne · 64 GiB · Qwen3.8-27B, je Engine ihre eigenen 4-Bit-Gewichte Temperatur 0 · Denkaufwand low · eine Engine zur Zeit · gemessen am 9. und 10.10.2026 ohne Spekulation mit Spekulation 0 10 20 30 40 50 Token je Sekunde MTPLX 24,4 50,0 Ausgabe weicht ab Rapid-MLX 33,6 32,9 Ausgabe gleich mlx-dspark 32,8 33,3 nur länger oMLX 32,3 nicht schaltbar Ausgabe gleich llama.cpp 21,5 keine Ausgabe gleich mlx-lm 26,3 keine Ausgabe gleich
MTPLX verdoppelt das Tempo von 24,4 auf 50,0 Token je Sekunde, aber die Ausgabe ist nicht mehr dieselbe. Bei Rapid-MLX und mlx-dspark bringt die Spekulation auf dem M1 Ultra nichts messbar.

Mit Volltext nachgeprüft weicht MTPLX im Prosa-Prompt ab Zeichen 712 des Denkens ab, in der Agentenaufgabe A03 ab Zeichen 856; dort schreibt es danach eine andere Antwort und ruft die Shell mit anderen Befehlen auf. Das Ergebnis ist nicht falsch, aber nicht das des Modells ohne Entwurf. mlx-dspark schreibt mit Spekulation dieselben Token und hängt nur an der Grenze von 512 oder 1.024 Token noch angenommene Entwurfstoken an. Rapid-MLX, oMLX, llama.cpp und mlx-lm geben in allen Läufen byteweise dieselbe Ausgabe.

oMLX schaltet die Spekulation nur in den Modelleinstellungen, nicht beim Start; dort lief sie in beiden Armen. llama.cpp und mlx-lm haben für dieses Modell keine.

06 · Wahl

Rapid-MLX für den Agenten, llama.cpp für lange Dokumente

Für OpenCode mit Verläufen bis 52k, so weit gemessen: Rapid-MLX. Es hält den Verlauf über Nebenfragen, eine zweite Sitzung dazwischen und Neustarts, antwortet dabei in höchstens 1,3 Sekunden, gibt mit und ohne Spekulation dieselben Token aus und schreibt bei 13k 31,5 Token je Sekunde. Das Zeitlimit des Clients muss trotzdem den ersten Turn aushalten: Ein neuer Verlauf von 52k braucht auch hier 3,6 min.

Für Fragen an Dokumente über 64k: llama.cpp. Es ist beim Schreiben das langsamste, aber das einzige, das bei 128k fehlerfrei und sofort antwortet. Einen Neustart übersteht sein Cache nicht.

MTPLX schreibt am schnellsten und hält den Verlauf ebenfalls, ändert mit Spekulation aber die Ausgabe, schickt Werkzeugaufrufe in wenigen großen Stücken und stößt ab 52k an seinen Speicherwächter. oMLX hält den Verlauf und reicht bis 98k, bricht einen an der Token-Grenze abgeschnittenen Werkzeugaufruf aber mit einem Fehler ab. mlx-lm ist als Referenz gemessen; für einen Agenten verliert es den Verlauf zu leicht.

07 · Alle Zahlen

Die Ergebnisse je Engine

Aus diesen Werten sind alle Grafiken dieses Berichts gerechnet; die Werte je Anfrage stehen in docs/m1-ultra-werte.json, die Rohdaten unter laeufe/m1-ultra/.

Sitzung mit 52.000 Token: erstes Token in Sekunden
SchrittRapid-MLXoMLXMTPLXmlx-dsparkllama.cppmlx-lm
erster Turn, kalt216,1212,3240,1216,3263,4283,5
Folgeturn1,33,01,11,31,01,2
nach Nebenfrage1,32,31,51,31,0279,3
nach zweiter Sitzung1,32,20,81,31,0279,6
nach Neustart1,26,65,9217,3264,9283,7
zweite Sitzung nach Neustart0,91,32,545,357,867,2
Agentenschritte, kalt: erstes Token in Sekunden / Ausgabe in Token je Sekunde
SchrittRapid-MLXoMLXMTPLXmlx-dsparkllama.cppmlx-lm
A01 2k9 / 36,112 / 31,59 / 45,48 / 32,110 / 21,611 / 26,1
A02 5k17 / 31,817 / 31,019 / 48,217 / 32,121 / 21,023 / 25,3
A03 13k44 / 31,545 / 29,547 / 37,343 / 27,656 / 20,261 / 23,4
A04 13k45 / 30,646 / 29,548 / 41,745 / 27,158 / 20,263 / 23,4
A05 52k216 / 20,7208 / 23,1239 / –215 / 27,7264 / 17,4282 / 18,1
A06 53k221 / 24,3213 / 23,0231 / 28,4220 / 25,6269 / 17,4293 / 18,1
A07 97k–453 / 15,0––581 / 15,4–
A08 98k–464 / –––597 / 14,9–
Langer Kontext: Median über drei Fassungen des Dokuments
Engine Länge richtig Einlesen (s) Einlesen (t/s) Folgefrage (s) Ausgabe (t/s)
Rapid-MLX32k24 / 24116276116,427,3
oMLX32k24 / 2411926916,626,3
oMLX64k23 / 2426823918,019,9
oMLX128k22 / 2465719514,210,5
MTPLX32k24 / 241222647,337,1
MTPLX64k24 / 2434018957,928,5
MTPLX128k3 / 241.142112–18,4
mlx-dspark32k24 / 241182735,133,3
mlx-dspark64k23 / 2429421826,528,5
llama.cpp32k24 / 241512141,018,7
llama.cpp64k24 / 243421881,316,7
llama.cpp128k24 / 248541501,813,7
mlx-lm32k24 / 24159202157,821,1
Ausgabe ohne und mit Spekulation, Leistungsaufnahme während der Agentenschritte (Median)
EngineProsaCodeA01A03 Chip (W)°C
Rapid-MLXgleichgleichgleichgleich10173,2
oMLXgleichgleichgleichgleich10074,2
MTPLXandersgleichgleichanders10273,8
mlx-dsparkandersandersgleichanders9973,8
llama.cppgleichgleichgleichgleich9572,2
mlx-lmgleichgleichgleichgleich9770,8

08 · Grenzen

Was diese Arbeit nicht zeigt

Eine Sitzung, ein Durchgang. Die Sitzung lief je Engine einmal. Bei Temperatur 0 wiederholt sich die Ausgabe; ob ein Cache trifft, kann aber vom Zustand des Speichers abhängen und ist nicht wiederholt gemessen.

Rapid-MLX im langen Kontext ohne Spekulation. Aus einem lokalen Snapshot gestartet, schaltet Rapid-MLX die Spekulation nur mit ausdrücklicher Angabe des Entwurfskopfs ein, und bei der Messung zum langen Kontext fehlte diese Angabe. Kapitel 05 zeigt, dass sie auf dieser Maschine weder Tempo noch Ausgabe ändert.

Verschiedene Gewichte. Jede Engine lief mit der 4-Bit-Fassung, für die sie gebaut ist. Tempo und Antworten vergleichen deshalb Engine samt Gewichten, nicht die Engine allein.

Gekappte Ausgabe. Jeder Agentenschritt endete spätestens nach 1.024 Token. Einige Schritte erreichen die Grenze. Für das Tempo spielt das keine Rolle; ob sie fertig geworden wären, misst der Bericht nicht.

Eine Maschine, ein Stand. Gemessen sind die genannten Fassungen am 9. und 10. Oktober 2026. Die MLX-Ableger erscheinen fast wöchentlich neu; ein späterer Stand kann sich anders verhalten.