Strata · Qwen3.8-Flash-Next · Quantvergleich

Nachtlauf 23./24.10.2026 · Ryzen 9 3900X, 96 GB DDR4-3200, RX 7900 XTX 24 GB (Strata/HIP) · IQ3_S · UD-IQ4_XS · UD-Q4_K_XL · Strata 0.1.46.2, MTP spec 4, KV int8

Vorläufiges Fazit (Stand 24.10., Python mit 2 Proben, Probe 3 nur teilweise): IQ3_S ist der beste Allrounder. Es ist am schnellsten (61 tok/s), braucht am wenigsten RAM (50 GiB) und hat die beste Python-Bilanz (23/24 voll gelöst). Auch das WebGL-Schwarze-Loch kommt der Vorlage am nächsten. Q4_K_XL baut das vollständigste Layout, ist aber rund 40 % langsamer, braucht 75 GiB RAM, und beide WebGL-Versuche schlugen mit Syntaxfehlern fehl. IQ4_XS liegt beim Tempo in der Mitte und hat die schwächste Python-Bilanz (20/24). Bei 256k Kontext finden alle drei Quants jede Nadel, das Tempo sinkt dabei kaum.
IQ3_SISTA · 2 Dateien
61,2 tok/s Decode
Python-Score 98 % · 24 Lösungen · Prefill 32K 1.296 tok/s
UD-IQ4_XSUnsloth
52,3 tok/s Decode
Python-Score 92 % · 30 Lösungen · Prefill 32K 1.193 tok/s
UD-Q4_K_XLUnsloth · NVMe
37,5 tok/s Decode
Python-Score 93 % · 24 Lösungen · Prefill 32K 1.152 tok/s

1 · Tempo

strata_bench --long (3 Läufe, Median, Thinking aus, temperature 0). Decode = kurze Chat-Antworten mit MTP; Agent = Folgerunden einer Agent-Sitzung mit wachsendem Kontext. RAM = Zuwachs durch den geladenen Server.

QuantKontextLadenDecodeAgent-DecodePrefill 4K16K32KTTFTExperten im VRAMRAMCPU max
IQ3_S128k120 s61,263,91.1241.3071.2960,55 s8.416 (16,0 GiB)50,1 GiB55,4 °C
IQ3_S256k125 s59,566,31.1251.3051.2950,56 s8.297 (15,7 GiB)51,9 GiB50,9 °C
UD-IQ4_XS128k215 s52,357,41.0341.2011.1930,68 s6.726 (15,2 GiB)58,4 GiB61,4 °C
UD-IQ4_XS256k236 s48,760,51.0271.1911.1810,68 s6.630 (14,9 GiB)60,4 GiB50,1 °C
UD-Q4_K_XL128k110 s37,545,19431.1501.1520,88 s5.129 (15,0 GiB)75,1 GiB55,2 °C
UD-Q4_K_XL256k100 s37,147,09361.1451.1500,91 s5.053 (14,7 GiB)76,7 GiB50,8 °C

2 · Langer Kontext

Ein Prompt aus Strata-Doku und -Quelltext, darin drei Notizen mit Zugangscodes bei 15 %, 50 % und 85 % Tiefe; das Modell soll alle drei nennen (Thinking aus). Prefill = Lesetempo des ganzen Prompts, Wartezeit = bis zur fertigen Antwort.

QuantServerPrompt-TokensPrefill tok/sDecode tok/sWartezeitCodes gefunden
IQ3_S128k30.7751.13153,228 s3/3
IQ3_S128k63.8441.19462,854 s3/3
IQ3_S128k120.3561.14561,1106 s3/3
IQ3_S256k172.3611.08947,2160 s3/3
IQ3_S256k250.2781.03156,8228 s3/3
UD-IQ4_XS128k30.7751.08945,429 s3/3
UD-IQ4_XS128k63.8441.10145,859 s3/3
UD-IQ4_XS128k120.3561.06053,6115 s3/3
UD-IQ4_XS256k172.3611.01340,9172 s3/3
UD-IQ4_XS256k250.27896549,1244 s3/3
UD-Q4_K_XL128k30.77598732,733 s3/3
UD-Q4_K_XL128k63.84499735,165 s3/3
UD-Q4_K_XL128k120.35696443,2126 s3/3
UD-Q4_K_XL256k172.36192832,1188 s3/3
UD-Q4_K_XL256k250.27888335,1267 s3/3

3 · Python-Aufgaben

12 Aufgaben in vier Stufen, Prompt nennt nur die Spezifikation. Bewertet mit versteckten Tests (Randfälle, Zufallstests gegen eine Referenzlösung, Tempo-Grenzen). Thinking an, temperature 1.0 / top_p 0.95 / top_k 20, bis 32.768 Tokens. Zelle = bestandene Tests je Probe. ↻ = nach Denkschleife wiederholt, ∞ = zweimal Schleife (nicht bestanden).

AufgabeIQ3_SUD-IQ4_XSUD-Q4_K_XL
Leicht
L1 · Lauflängenkodierung13/13 13/13 ·13/13 13/13 13/1313/13 13/13 ·
L2 · Römische Zahlen24/24 24/24 ·24/24 24/24 24/2424/24 24/24 ·
L3 · Häufigste Wörter9/9 9/9 ·9/9 9/9 9/99/9 9/9 ·
Mittel
M1 · Intervalle zusammenführen21/21 21/21 ·21/21 21/21 21/2121/21 21/21 ·
M2 · LRU-Cache7/7 7/7 ·7/7 7/7 7/77/7 7/7 ·
M3 · Kursreihenfolge11/11 11/11 ·11/11 11/11 11/1111/11 11/11 ·
Schwer
S1 · Ausdrucksauswerter46/46 46/46 ·46/46 46/46 ·46/46 43/46 ·
S2 · Labyrinth mit Schlüsseln15/15 15/15 ·15/15 3/15 ·15/15 3/15 ·
S3 · Regex-Matcher27/27 13/27 ·27/27 27/27 ·27/27 27/27 ·
Hard
H1 · Mini-Lisp-Interpreter34/34 34/34 ·0/34 30/34 ·34/34 34/34 ·
H2 · Minimale Zuordnung10/10 10/10 ·10/10 10/10 ·10/10 2/10 ·
H3 · Besondere Zahlen zählen11/11 11/11 ·11/11 5/11 ·11/11 11/11 ·
Score je Stufe (Anteil bestandener Tests, gemittelt über Aufgaben und Proben)
Leicht100 % 6/6 voll100 % 9/9 voll100 % 6/6 voll
Mittel100 % 6/6 voll100 % 9/9 voll100 % 6/6 voll
Schwer91 % 5/6 voll87 % 5/6 voll86 % 4/6 voll
Hard100 % 6/6 voll72 % 3/6 voll87 % 5/6 voll
Gesamt98 % 23/24 voll92 % 26/30 voll93 % 21/24 voll
Denk-Tokens im Schnitt13.41914.53114.501

4 · WebGL: Schwarzes Loch

Aufgabe: eine einzelne HTML-Datei, WebGL ohne Bibliotheken, animiert, wie das Referenzbild. Screenshots nach 1,5 s in Chromium (RX 7900 XTX über ANGLE/Vulkan). „animiert“ = zwei Bilder im Abstand von 2 s unterscheiden sich. Klick auf ein Bild öffnet die echte Seite.

Referenz
Referenzbild

IQ3_S

Probe 1 animiert
8661 Tokens · 124 s · Seite öffnen
Probe 2 animiert
10095 Tokens · 144 s · Seite öffnen
Beide animiert, s1 kommt der Vorlage am nächsten.

UD-IQ4_XS

Probe 1 animiert
13215 Tokens · 229 s · Seite öffnen
Probe 2 animiert
11997 Tokens · 200 s · Seite öffnen
Beide animiert: s1 Ring mit Scheibe, s2 eine merkwürdig flache Scheibenansicht.

UD-Q4_K_XL

Probe 1 steht still 1 JS-Fehler
SyntaxError: Unexpected token 'var'

12096 Tokens · 258 s · Seite öffnen
Probe 2 steht still 1 JS-Fehler
ERROR: 0:6: 'pow' : no matching overloaded function found

14102 Tokens · 294 s · Seite öffnen
Beide kaputt: s1 JS-SyntaxError, s2 GLSL-Fehler bei pow(). Das Bild bleibt schwarz und statisch.

5 · Weblayout nach Bild + DESIGN.md

System-Prompt = image-to-code-Skill, dazu 8 Bildausschnitte der 1920 × 11.926 px großen Vorlage und die DESIGN.md (Sternen-Shadow-Zeilen gekürzt, sonst unverändert). Ganzseiten-Screenshot bei 1920 px Breite, verkleinert; im Kasten scrollen. Klick öffnet die echte Seite.

Vorlage · 11.926 px hoch
IQ3_S
24610 Tokens · 351 s · 9.973 px hoch · Seite öffnen
UD-IQ4_XS
35188 Tokens · 599 s · 13.000 px hoch · Seite öffnen
UD-Q4_K_XL
34384 Tokens · 743 s · 12.998 px hoch · Seite öffnen
IQ3_S: Kompakt und treu, aber kürzer als die Vorlage.
UD-IQ4_XS: Zusätzliche obere Navigationsleiste und eine merkwürdige Spalte großer Icons im App-Mockup.
UD-Q4_K_XL: Alle Abschnitte vorhanden, der Abschluss-CTA ist nah an der Vorlage. Insgesamt am vollständigsten.

4b · WebGL und Layout mit Werkzeugen

Gleiche Aufgaben, aber das Modell arbeitet in einem Arbeitsordner mit Werkzeugen: Dateien schreiben/ändern/lesen und die Seite in Chromium öffnen (Konsole, JS-Fehler, eigener Testcode, Screenshots, die es selbst ansieht). Höchstens 40 Werkzeugaufrufe bzw. 2 h je Probe; jede Werkzeugantwort nennt die verbleibenden Aufrufe, ab 5 mit der Bitte, die Seite fertigzustellen. Bewertet wird die index.html am Ende, mit denselben Screenshots wie oben.

Schwarzes Loch

UD-IQ4_XS · s1 animiert
30 Aufrufe (2× schreiben, 15× ändern, 13× Browser, 12 Screenshots) · 68.858 Tokens · 22 min · Ende: budget · Seite öffnen
UD-IQ4_XS · s2 steht still
30 Aufrufe (2× schreiben, 17× ändern, 10× Browser, 7 Screenshots) · 53.736 Tokens · 17 min · Ende: budget · Seite öffnen

Layout

Vorlage
UD-IQ4_XS · s1 13.777 px hoch
18 Aufrufe (1× schreiben, 4× ändern, 12× Browser, 12 Screenshots) · 40.665 Tokens · 15 min · Ende: finish · Seite öffnen

6 · RTX 3060: Gemma 4 + Qwen Image 2.1 parallel

Gemma 4 E4B Q4_K_M (llama.cpp, 98K Kontext, Vision) als Dienst auf Port 8092, dazu ComfyUI mit Qwen Image 2.1 (int8_convrot-UNet, Qwen3-VL-8B-int8-Textencoder, 1024 × 1024, 25 Schritte, euler) auf derselben 12-GB-Karte.

Bild allein
38 s
warm · kalt 50 s · Gemma gestoppt
Bild neben Gemma (still)
42 s
warm · kalt 58 s · Gemma geladen, keine Anfrage
Bild + Gemma gleichzeitig
60 s
Gemma schreibt währenddessen ununterbrochen
Gemma-Decode
75 → 24–35
tok/s allein → während der Bildgenerierung

Ergebnis: geht, aber erst mit PyTorch cu130. Mit der alten ComfyUI-Umgebung (.venv, PyTorch 2.6 + cu124, noch für die GTX 1070 eingerichtet) schaltet ComfyUI die CUDA-Kernel von comfy-kitchen ab („You need pytorch with cu130“), rechnet int8 über den Eager-Fallback und läuft neben Gemma in allen drei Versuchen sofort in einen Out-of-Memory. Mit einer neuen Umgebung ~/comfy/ComfyUI/.venv-cu130 (PyTorch 2.14.1 + cu130, Treiber 580 unterstützt CUDA 13.0) laufen alle Bilder durch.

VRAM-Spitze 11.892 MiB von 12.288 (allein 11.562 MiB) – ComfyUI lädt das Modell teilweise und lagert den Rest dynamisch in den RAM aus, deshalb kostet die Koexistenz mit Gemma (≈ 5,5 GB) nur rund 10 % Bildzeit. Laufen beide wirklich gleichzeitig, teilen sie sich die Rechenleistung: das Bild braucht ~60 s statt 42 s, Gemma fällt von ~75 auf ~27 tok/s und ist danach sofort wieder bei 74 tok/s. Der Gemma-Dienst lief die ganze Zeit stabil weiter, keine Abstürze. GPU-Temperatur max. 77 °C, 168 W.

Nebenbei behoben: llama.cpp war nur für die GTX 1070 (sm_61) gebaut, Gemma stürzte auf der 3060 in einer Schleife ab („no kernel image is available“). Neu gebaut mit CMAKE_CUDA_ARCHITECTURES=86, alte Binärdateien in ~/src/llama.cpp-bin-sm61-backup. Gemma läuft jetzt mit ~75 tok/s. Während dieser Messung lief auf der XTX parallel Strata (Phase C).

Seed 42 · erstes Bild (kalt)
Seed 43 · warm
Seed 44 · parallel zu Gemma

Methode und Einschränkungen

WebGL nur 1 Lauf mit 2 Versuchen, Layout 1 Versuch. Die Python-Unterschiede betragen 1–3 Aufgaben und sind damit noch eine Tendenz. CPU-Boost war aus (cpu-boost-off.service), CPU Ryzen 3900X. Die S2-Aufgabe ist mehrdeutig, weil „E“ zugleich Ausgang ist und unter „A–F Türen“ fällt. Die Referenz ist korrigiert, gewertet wird E = Ausgang. IQ4_XS hat S2 in Probe 2 als Tür gelesen (3/15), bei Q4_K_XL noch nicht geprüft. Der 3060-Test lief parallel zu Strata auf der 7900 XTX.

Rohdaten: ~/src/Strata2-data/quant-test/results/ · erzeugt mit make_report.py