Tom Jansen

Benchmark · KI-Tooling · Werkstattbericht

DS4 auf DRACO: von 42,64 auf 52,36 %

Tom Jansen · · 25 Min. Lesezeit

Nach dem Juni-Lauf sah es zuerst so aus, als läge das lokale DS4 deutlich hinter GPT-5.5. Unter demselben strengen Judge blieben davon aber nur 1,19 Prozentpunkte übrig: 48,18 gegen 49,37 %, allerdings mit einem Judge-Lauf bei DS4 und drei bei GPT-5.5. Damit war für mich die Frage nicht mehr, ob das Modell genug weiß. Ich wollte wissen, wo der Harness die Punkte verliert.

Die Antwort war ziemlich konkret: Ein Tool-Aufruf kippte einmal 15,7 MB in den Kontext. Der KV-Cache kam auf 3.102 Verdrängungen bei nur 76 Treffern. Die höchste Denkstufe war gar nicht erreichbar. Und das Zeitlimit produzierte leere Antworten, obwohl im Sitzungsprotokoll teilweise schon ein brauchbarer Bericht lag.

In den folgenden drei Wochen habe ich diese Stellen repariert und in kontrollierten Läufen gemessen. Der neue Stack lag auf denselben 20 Aufgaben rund 6,8 pp über dem Juni-Wert. Wegen der anderen Pi-Version, der Harness-Änderungen und einem statt drei Judge-Läufen ist das ein Vorher/Nachher-Wert, keine isolierte Kausalwirkung. Die kombinierte Konfiguration aus präziserem Quant und höherem Cap lag weitere 2,9 pp darüber. Insgesamt stieg DS4 auf dem bewusst harten Subset von 42,64 auf 52,36 %.

Das ist kein offizieller DRACO-Wert und kein Vergleich mit dem OpenRouter-Leaderboard. Es ist ein interner Mess-Harness, mit dem ich meine eigenen Konfigurationen vergleichen kann. Alle direkten Vergleiche unten nutzen denselben strengen Judge (Pi openai-codex/gpt-5.5:xhigh, criterion-Modus). Wo sich die Zahl der Judge-Läufe oder der Harness unterscheiden, schreibe ich es dazu.

+9,73 ppaus den ungerundeten Werten auf demselben 20-Aufgaben-Subset: 42,64 % (Juni, Judge ×1) → 52,36 % (9.7., Judge ×3).
48,18 vs. 49,37DS4-256k mit Empty-Retry (Judge ×1) gegen GPT-5.5 direkt (Judge ×3), 100 Aufgaben und derselbe strenge Judge.
3.102 : 76KV-Cache-Verdrängungen zu Treffern auf dem 8-GB-Default-Budget. Ein Treffer: 35 bis 55 ms. Der vermiedene 61k-Re-Prefill: 236 s.
−3,3 %DSpark mit Basis-Draft gegen das abliterierte Quant: keine Beschleunigung, sondern ein kleiner Verlust.

Wie ich die Zahlen vergleiche

Einige Zahlen sehen ähnlich aus, dürfen aber nicht gegeneinander gerechnet werden. Für die Tabellen gelten deshalb diese Regeln:

Im Juni war der Judge größer als der Modellabstand

Bevor ich am Stack weitergebaut habe, musste ich die Juni-Zahlen erst richtig sortieren:

Die 100-Aufgaben-Werte und die Subset-Werte sind nicht direkt vergleichbar. Das Subset ist bewusst hart zusammengestellt und enthält pathologische, schwache, starke und mittlere Aufgaben. Vergleiche gelten nur innerhalb einer Gruppe. DS4-256k-Werte: 1 Judge-Lauf statt 3.
Score-Übersicht als Tabelle
GruppeKonfigurationScore %Judge-Läufe
100 AufgabenGPT-5.5 direkt, Judge gpt-4.1-mini61,773
100 AufgabenGPT-5.5 direkt, strenger Judge49,373
100 AufgabenDS4-256k unrepariert43,051
100 AufgabenDS4-256k + Empty-Retry48,181
100 AufgabenFusion DS4/Gemma/Qwen repariert48,293
20er-SubsetJuni-Stand, dieselben 20 Aufgaben42,641
20er-SubsetNeuer Stack, 87-GB-Modell (3.7.)49,443
20er-SubsetSteering aus (ffn=0, 4.7.)47,983
20er-Subset91-GB-Quant, Cap 2100 s (8.7.)48,703
20er-Subset91-GB-Quant, Cap 2500 s (9.7.)52,363

Gruppen nicht mischen: 100-Aufgaben-Läufe und Subset-Läufe messen verschiedene Aufgabenmengen. Alle Werte strenger GPT-5.5-Judge außer Zeile 1 (gpt-4.1-mini).

Die beiden GPT-5.5-Balken zeigen das eigentliche Problem: dieselben Antworten, 12,4 pp Unterschied, nur weil der Judge wechselt. Mit dem gleichen strengen Judge lag DS4-256k nach dem Empty-Retry noch 1,19 pp hinter GPT-5.5 direkt und gewann 52 von 100 Aufgaben im direkten Vergleich. Der Vergleich ist wegen eines Judge-Laufs bei DS4 gegen drei bei GPT-5.5 nicht perfekt, aber er war gut genug für die nächste Entscheidung: Der größte sichtbare Verlust lag nicht im Modellwissen. Er lag in 12 leeren Antworten, Tool-Schleifen und Kontextüberläufen.

Am 2. Juli habe ich den Lauf auseinandergenommen

Ich habe Server, Adapter, Ergebnisse, Fusion und Harness parallel von acht Agenten untersuchen lassen: fünf lasen Code und Laufartefakte, zwei prüften die Dokumentation und einer führte die Befunde zusammen. Daraus kam diese Fehlerliste, sortiert nach den wahrscheinlich verlorenen Punkten:

BefundBelegKosten
Unbegrenztes get_search_contentein Aufruf lieferte 15,7 MB in den Kontext; 48/100 Aufgaben hatten ein Tool-Ergebnis >31k ZeichenAufgaben im >180k-Kontext-Bereich: im Schnitt 10,2 %
Tool-/Fetch-Schleifen bis zum TimeoutAufgabe 71e3456f: 875 doppelte Fetches derselben URL, 2× 7.200 s, beide Male 0 Byte12/100 leere Antworten à 0 %
Zeit korreliert negativ mit Scorecorr(Dauer, Score) = −0,53; jede Aufgabe >3.600 s blieb unter 27 %6 Timeouts verbrannten 12 h für 0 Punkte
KV-Cache-Thrashing3.102 Verdrängungen vs. 76 Treffer (8-GB-Budget; ein 61k-Checkpoint ≈ 830 MB)Treffer ~50 ms statt 236 s Re-Prefill
Trimmer zerstört den KV-Prefixgleitendes Trimm-Fenster schrieb alte Nachrichten jede Runde neu57-75k-Token-Re-Prefills, ~4 min je Runde
Think Max unerreichbarServer bildet low..xhigh auf dieselbe Stufe ab; nur „max“ + --ctx ≥ 393216 schaltet die Top-Stufe freialle bisherigen DS4-Zahlen liefen eine Denkstufe unter Maximum
Falsche Antwort-ExtraktionModell endete mit 486-Zeichen-Statusnotiz, der echte 24k-Bericht lag eine Nachricht davordiese Antwort: 7,5 % beim Judge
Zitierformat8 nicht-leere Antworten zitierten nackte Domains statt URLsdiese Aufgaben: im Schnitt 10,6 %

Ein zweiter Befund kam direkt von der Hardware. Beim Decode liest dieses Quant ungefähr 10,4 GB pro Token, davon rund 83 % aus den Q8-Nicht-Experten-Gewichten. Bei etwa 546 GB/s Speicherbandbreite liegt die theoretische Obergrenze um 52 t/s; frisch gemessen waren 37 t/s. Kleinere Experten-Quants ändern daran kaum etwas. Spekulatives Decoding blieb damit als ein plausibler Weg übrig, mehr als diese 37 t/s zu erreichen.

Ich habe am selben Tag zuerst die Stellen repariert, die Antworten direkt zerstörten: Tool-Ausgaben wurden bei 30k Zeichen gedeckelt und bekamen Paging, das KV-Budget stieg von 8 auf 64 GB und Think Max wurde überhaupt erst erreichbar. Der Trimmer arbeitet seitdem klebrig: Einmal gekürzte Nachrichten bleiben byte-identisch, damit der KV-Prefix erhalten bleibt.

Im Runner kamen Salvage, ein Cap von 2.100 s und ein eigenes Timeout für Fusion-Kinder dazu. Der Systemprompt verlangt klare Struktur, rohe https-URLs, Primärquellen, ein begrenztes Tool-Budget und eine echte Finalisierung. Außerdem blockiert der Harness die Rubrik-Domains. Und dann musste ich noch den Juni-Overflow-Patch wiederherstellen, den das Pi-Update von 0.79.4 auf 0.80.2 still gelöscht hatte. Alle Änderungen stehen mit Datum im Repo.

Steering: Meine Hypothese ließ sich nicht bestätigen

Aus der Rubrik-Analyse hatte ich abgeleitet, dass die „Hedging“-Richtung des Steering-Vektors auf der Faktenachse 2 bis 8 pp kosten könnte. Also habe ich genau diese eine Variable getestet: uncertainty_ablit_imatrix mit ffn = −0,75, dem Default, gegen ffn = 0.

Beide Arme bekamen dieselben 20 Aufgaben, denselben Stack und denselben strengen Judge mit drei Läufen. Zwischen den Armen wurde der Server neu gestartet. Vorher hatte ich festgelegt, dass |Δ| < 2 pp als kein Effekt zählt.

Mit Steering erreichte DS4 49,44 %, ohne Steering 47,98 %. Das sind gepaart +1,46 pp bei einer Streuung von 18,41 und 12 von 20 Siegen. Für die vorhergesagten Hedging-Kosten gab es in diesem Test keinen messbaren Beleg.

Gepaarte Differenz im Mittel +1,46 pp bei einer Streuung von 18,41 – innerhalb des vorab festgelegten ±2-pp-Rauschbands. Die beiden ±40-pp-Ausreißer sind die zwei nicht geretteten Salvage-Ausfälle (einer je Arm), nicht das Steering.
Steering-A/B als Tabelle
AufgabeDomäneSteering aus (0) %Steering an (−0,75) %Δ pp
2aac5ef3Finance0,039,7+39,7
b8ff32b6Medizin41,876,6+34,7
4b089235Shopping59,278,4+19,2
78bfa372Shopping34,943,7+8,8
8cf941c5Technologie40,547,7+7,2
6b3233e6Shopping35,141,0+5,9
72e81ce6Finance48,553,9+5,4
49d841f1General Knowledge54,659,8+5,2
3b5505fbLaw72,476,7+4,3
1070e6ebNeedle i. Haystack76,480,7+4,3
34e9b780Shopping47,751,3+3,5
e3734e91Academic79,181,0+1,8
ebac60eaTechnologie23,522,4−1,2
cd680e2eUX Design70,368,7−1,6
79224558Technologie19,917,3−2,6
7e9fa201General Knowledge35,924,4−11,5
ab17484fLaw68,954,9−14,0
342b15b8Finance51,335,7−15,6
71e3456fFinance53,134,8−18,3
10e75d21Finance46,30,0−46,3

Sortiert nach Differenz (an − aus), größte zuerst. Judge: strenger GPT-5.5, criterion, 3 Läufe je Arm.

Die Laufzeit erklärt den kleinen Unterschied nicht: Beide Arme verhalten sich mit 10,0 gegen 10,5 Stunden Wall-Zeit und 11 gegen 14 Aufgaben am Cap ähnlich. Die großen Ausreißer sind dagegen klar: je ein Salvage-Totalausfall pro Arm. Ohne diese beiden Aufgaben bleiben +1,99 pp, also weiterhin Rauschen.

Ich lasse den Vektor an. Einen messbaren Netto-Schaden sehe ich nicht, und laut Adapter-Dokumentation schützt er die Tool-Grammatik. Wichtiger war etwas anderes: Ein einzelner Salvage-Fehlschlag kostet auf der betroffenen Aufgabe ungefähr 45 pp. Das war der nächste Hebel.

Das 91-GB-Quant brauchte ein anderes Zeitlimit

Am 3.7. veröffentlichte der pi-ds4-Upstream ein neues Standard-GGUF für Macs mit 128 GB RAM. Es nutzt dieselbe abliterierte Modelllinie, quantisiert aber die Routed Experts der Layer 37 bis 42 mit Q4_K statt mit 2 Bit. Damit bekommen sechs späte Expertenschichten mehr Präzision. Das Modell wächst von 87 auf 91 GB und decodiert ungefähr 15 % langsamer. Ich wollte wissen, ob die zusätzliche Präzision diesen Verlust wert ist.

Für den ersten Lauf hielt ich Subset, Stack, Judge und das Cap von 2.100 s konstant. Das ist ein fairer Vergleich der beiden Konfigurationen unter demselben Zeitbudget, aber kein reiner Qualitätstest: Das langsamere Modell kann vor dem gleichen Wall-Time-Limit weniger Tokens erzeugen. Diesen Confound habe ich während des Laufs notiert, bevor die Scores da waren. Meine Entscheidungsregel war ebenfalls vorher klar: Verliert das 91-GB-Quant hauptsächlich auf Aufgaben am Cap, erhöhe ich das Cap, statt das Quant zu verwerfen.

Der Rohwert lag zunächst bei 48,70 % und damit 0,74 pp unter dem 87-GB-Modell. Auf den 17 Aufgaben, in denen beide Arme eine Antwort produzierten, lag das 91-GB-Quant aber 4,41 pp vorn. Auf den fünf Aufgaben ganz ohne Cap-Kontakt waren es 6,94 pp. Zwei Finance-Aufgaben liefen leer ins Cap und danach auch mit der Salvage-Fortsetzung ins Limit. Sie bekamen 0,0 %, wo das 87-GB-Modell 35,7 und 53,9 % erreicht hatte. Gegenüber diesen beiden 87-GB-Scores entstand dadurch ein Defizit von 4,48 pp im Gesamtmittel.

Daraufhin habe ich das Cap von 2.100 auf 2.500 s und das Salvage-Limit von 1.800 auf 2.400 s angehoben. Der Lauf vom 8./9.7. vergleicht deshalb zwei vollständige Betriebskonfigurationen, nicht nur zwei Quants:

Die Kombination aus 91-GB-Quant und höherem Cap liegt im Mittel 2,92 pp vorn; 13 von 20 Aufgaben verbessern sich. Zwei große Regressionen und eine kleinere, über beide 91-GB-Läufe gleichgerichtete Regression bleiben. 10e75d21 blieb in allen drei Läufen bei 0,0.
Konfigurationsvergleich als Tabelle
AufgabeDomäne87 GB, Cap 2100 %91 GB, Cap 2500 %Δ pp91 GB, Cap 2100, Score %
2aac5ef3Finance39,771,5+31,971,9
7e9fa201General Knowledge24,452,2+27,751,9
ab17484fLaw54,981,7+26,885,1
79224558Technologie17,334,3+17,030,2
6b3233e6Shopping41,052,2+11,269,9
71e3456fFinance34,844,4+9,632,9
342b15b8Finance35,745,2+9,50,0
cd680e2eUX Design68,777,1+8,476,8
49d841f1General Knowledge59,866,5+6,758,8
34e9b780Shopping51,357,8+6,548,3
e3734e91Academic81,084,1+3,284,4
ebac60eaTechnologie22,424,3+1,920,0
1070e6ebNeedle i. Haystack80,780,9+0,271,3
10e75d21Finance0,00,0+0,00,0
72e81ce6Finance53,952,5−1,50,0
8cf941c5Technologie47,743,3−4,452,2
3b5505fbLaw76,772,1−4,680,7
78bfa372Shopping43,733,7−10,036,9
4b089235Shopping78,448,4−30,052,5
b8ff32b6Medizin76,625,1−51,550,3

Sortiert nach Differenz. Die letzte Spalte zeigt den konfundierten Zwischenlauf vom 8.7. mit demselben 91-GB-Quant und dem alten Zeitlimit.

Diese kombinierte Konfiguration erreichte 52,36 gegen 49,44 %, also +2,92 pp, und lag bei 13 von 20 Aufgaben vorn. Die beiden zusätzlichen Nullen aus dem ersten 91-GB-Lauf verschwanden mit den höheren Limits: 342b15b8 stieg von 0,0 auf 45,2 % und 72e81ce6 von 0,0 auf 52,5 %. Damit waren diese Nullen klar Cap-/Salvage-Artefakte des ersten Laufs. Wie das 91-GB-Modell mit ausreichend Zeit abgeschnitten hätte, lässt sich im Nachhinein aber nicht beobachten. Deshalb kann ich den Anteil des Quants am Endgewinn nicht isolieren.

Mit n = 20 und einer Streuung von 18,9 ist das außerdem kein Beweis auf Aufgabenebene. Neben großen Gewinnen in Finance, General Knowledge und Law gibt es drei Aufgaben, die über beide 91-GB-Läufe hinweg fallen: b8ff32b6 in Medizin von 76,6 über 50,3 auf 25,1 %, 4b089235 in Shopping von 78,4 über 52,5 auf 48,4 % und 78bfa372 ebenfalls in Shopping von 43,7 über 36,9 auf 33,7 %. 10e75d21 blieb in allen drei Läufen bei 0,0. Trotzdem ist die Entscheidung für den Betrieb klar genug: Seit dem 9.7. läuft das 91-GB-Modell mit Cap 2.500 als Standardkonfiguration.

Wie stark das Cap in diese Läufe eingreift, zeigt die Salvage-Übersicht:

ArmAm CapSalvage versuchtgerettetResume/Extraktionleer gebliebenWall-Zeit
87 GB, Cap 2100 (Steering an)11/20986/2110,0 h
87 GB, Cap 2100 (Steering aus)14/20111010/0110,5 h
91 GB, Cap 210015/20151212/0311,0 h
91 GB, Cap 250011/2013129/3112,1 h

Beim Speed-Benchmark driftete die Maschine

Am 6.7. habe ich zuerst die drei Metal-Modi auf dem alten Server-Pin vermessen. Für den MPP-Fastpath waren auf anderer Hardware 6 bis 19 % mehr Prefill dokumentiert. In meinen drei noch nicht verschränkten Vormittagsläufen war er an jeder der acht Kontexttiefen langsamer. Wegen der später erkannten Messdrift ist das kein sauber isolierter A/B-Beweis.

In den drei nacheinander gemessenen Vormittagsläufen ist der dokumentierte „Fastpath“ (MPP) an allen acht Kontexttiefen langsamer, im paarweisen Mittel um 29,7 % gegenüber Standard. Die Angabe von +6 bis +19 % stammte von anderer Hardware. Wegen der Messreihenfolge ist das kein isolierter kausaler A/B-Nachweis.
Metal-Modi als Tabelle
ctxStandardQuality-ModusMPP-Fastpath
512253,5197,6195,3
1.024301,3253,7164,5
2.048355,0290,6218,7
4.096390,1306,7235,4
8.192417,9323,7238,3
16.384366,6247,6230,8
32.768226,6174,3214,8
65.536199,1161,0187,0

ds4-bench, Prompt promessi_sposi.txt, gen-tokens 128, Pin 97319db8. Alle drei Sweeps am Vormittag des 6.7. hintereinander.

Für den Betrieb habe ich den Modus nach diesem Ergebnis verworfen. Messen schlägt Dokumentation, aber ein sauberer kausaler Nachweis bräuchte hier einen verschränkten Re-Test. Beim anschließenden Server-Update hätte ich die nächste Messung dann fast falsch gelesen.

Der alte Pin verliert zwischen Vormittag und Abend im paarweisen Mittel 27,9 % Prefill; die jeweilige Spitze fällt von 417,9 auf 267,1 t/s, also um 36,1 %. Der neue Pin ist im ersten Abendlauf 9,6 % schneller als der alte, in der Wiederholung 0,7 % langsamer. Eine stabile Beschleunigung lässt sich daraus nicht ableiten.
Messdrift als Tabelle
ctxAlt, vormittagsAlt, abendsNeu, Lauf 1Neu, Lauf 2
512253,5143,2154,8132,9
1.024301,3155,0169,1153,1
2.048355,0225,2239,3228,2
4.096390,1252,6282,8246,7
8.192417,9267,1309,8266,6
16.384366,6256,1289,8258,2
32.768226,6236,0255,6238,0
65.536199,1204,5212,2208,5

ds4-bench, identische Parameter in allen vier Läufen. Vormittagslauf 12:36, Abendläufe 17:05-17:19. Alt = Server-Pin 97319db8, Neu = c1f4aa22.

Der erste Vergleich nach dem Pin-Bump auf c1f4aa22 sah bei kurzen Kontexten wie eine Regression von 30 bis 48 % aus. Der Kontrolllauf mit dem alten Code am selben Abend zeigte aber dieselbe Drift: Im Mittel lag er 27,9 % unter seinem eigenen Vormittagslauf. Ich habe keine Temperatur- oder Leistungswerte aufgezeichnet, kann die Ursache also nicht als Thermik beweisen. Gemessen ist nur ein starker Reihenfolge- beziehungsweise Warmzustandseffekt nach mehreren langen GPU-Sweeps.

Verschränkt am selben Abend war der neue Pin im ersten Prefill-Lauf 9,6 % schneller als der alte, in der Wiederholung 0,7 % langsamer. Beim Decode waren es +13,7 und +0,7 %. Das widerlegt die scheinbare 30-bis-48-%-Regression, belegt aber keinen stabilen Speed-Gewinn. Seitdem verschränke ich Bench-Arme und vergleiche sie nicht mehr über mehrere Stunden hinweg.

Das alte KV-Default-Budget von 8 GB stammte aus einer Zeit vor Kontextfenstern mit 400k Tokens. Mein Befund von 3.102 Verdrängungen bei 76 Treffern ging als Issue an den Upstream. Am 7.7. wurde die Änderung „Raise KV disk cache default by RAM tier“ übernommen.

DSpark: Der Basis-Draft brachte keinen Speedup

Nach dem Bandbreitenbefund war spekulatives Decoding der plausibelste verbleibende Kandidat für mehr Decode-Speed. Im besten Fall hätte es auch die ungefähr 15 % Decode-Verlust des 91-GB-Quants zurückgeholt.

Nach dem Pin-Bump war die DSpark-Laufzeit im Server vorhanden und das verlustfreie B2-Rejection-Sampling lag im Engine-Code. Ich habe außerdem das Draft-GGUF aus dem Hugging-Face-Repo gebaut. Praktisch dabei: Alle 4.705 Draft-Tensoren lagen in den letzten 4 von 48 Shards. Damit musste ich ungefähr 16 GB statt 167 GB laden. Vor dem vollständigen Server-Patch blieb nur ein Ein-Zeilen-Gate.

Bevor ich dieses Gate patche und den Pin einfriere, habe ich die billigere Greedy-Probe gemacht: isolierter Server auf Port 8077, eigener Scratch-KV, Temperatur 0 und je ein Lauf mit demselben 500-Token-Prompt.

37,62 t/sDecode ohne Draft (Baseline, 91-GB-Modell, greedy).
36,37 t/sDecode mit geladenem DSpark-Draft (--mtp-draft 4): null Beschleunigung, −3,3 %.

Der Draft lud korrekt (kind=dspark, runtime_mtp=yes), trotzdem fiel der Decode von 37,62 auf 36,37 t/s. Die Probe enthält keinen eigenen Acceptance-Zähler. Der fehlende Speedup und das beobachtete Fortschreiten um jeweils nur ein Token passen aber zu der naheliegenden Erklärung, dass fast keine Draft-Tokens akzeptiert wurden.

Die naheliegende Erklärung liegt in den Gewichten: Der Draft wurde aus der Basis-Variante von DeepSeek-V4-Flash konvertiert, während der Server das abliterierte Quant ausführt. Abliteration verschiebt genau die Ausgabeverteilung, die ein Draft vorhersagen muss. Die vorhandenen Artefakte liefern deshalb keine brauchbare Kombination. Ein passender Draft wäre ein eigenes Trainingsprojekt.

Damit war der Test für mich beendet, für weniger als einen Dollar Strom und bevor ich den Server gepatcht und den Pin eingefroren hätte. Die Skripte bleiben liegen, falls irgendwann ein Draft für die abliterierten Gewichte existiert.

Was mir die Messung unterwegs kaputtgemacht hat

Fast jeder größere Lauf hat noch eine neue Fehlerklasse gefunden. Das waren die wichtigsten:

  1. 17.6.: Billiges Task-Batch-Judging überbewertete dieselbe Antwort um rund 24 pp (83,79 gegen 59,35 %). Seitdem ist der criterion-Modus Standard.
  2. 23.6.: Pi erkannte DS4-Kontextüberläufe nicht als solche; dazu ein libmalloc-SIGTRAP nach Aufgabe 55. Patches mitten im Lauf.
  3. 26.6.: Node/V8-OOM (Killed: 9) beendete den Retry-Lauf nach drei Aufgaben – der Orchestrator starb, nicht das Modell.
  4. 28.6.: --no-extensions deaktiviert eingebaute Tools nicht: die Fusion-Reparatur recherchierte munter frisch per bash. Methodisch ungültig; Neustart mit --no-tools.
  5. 2.7.: Pi-Update löschte still den Overflow-Patch. Antwort: Patch-System mit Selbstheilung und Preflight-Guard.
  6. 2.7.: Die Regel „prüfe dich vor dem Abschluss“ im Systemprompt brachte das Modell dazu, mit einer Statusnotiz zu enden. Der Harness speicherte 486 Zeichen Kommentar statt des 24k-Berichts (Judge: 7,5 %). Zwei Fixes: Promptregel und Extraktions-Fallback.
  7. 6.7.: pi-ds4 v0.4 setzte den Adapter-Checkout hart zurück – alle fünf lokalen Patches weg. Antwort: Patches leben jetzt als idempotenter Applier im eigenen Repo, nicht im fremden Arbeitsverzeichnis.
  8. 6.7.: Der gleiche Code lag am Abend im paarweisen Mittel 27,9 % unter seinem Vormittagslauf. Ohne Sensorwerte bleibt die Ursache offen; die Messreihenfolge war damit als Vergleich unbrauchbar.
  9. 6.-7.7.: Der Download wurde ohne Anmeldung auf 0,6 bis 3 MB/s gedrosselt und brach mehrfach mit EOF ab. Ein Quoting-Fehler machte aus dem Auth-Header eine „URI“ (Unrecognized URI or unsupported protocol: Bearer\), dazu kamen 67 TLS-Handshake-Fehler. Gelöst wurde es mit dem Token in einer 0600-Conf-Datei und Retry-Schleifen.
  10. 7.7.: Ein fremder Prozess hielt Port 8000. Der Server versuchte 40 Starts in 10 Minuten, mappte jedes Mal 93 GB in Metal und scheiterte danach am Bind. Der erste Quant-Arm produzierte nichts Verwertbares. Der Port ist im Adapter hart kodiert.
  11. 8.7.: Der Cap-Starvation-Confound wurde während des Quant-Laufs notiert, bevor die Scores feststanden.
  12. 9.7.: ds4-bench kennt kein --mtp. Speculative Decoding ist ein reines Server-Feature; der geplante Bench-Test war damit nicht möglich. Die Server-Probe lieferte keinen Speedup und stützte die Hypothese, dass Basis-Draft und abliteriertes Modell nicht zusammenpassen.
Vollständige Chronik der drei Wochen
DatumEreignisZahl des Tages
17.6.Harness gebaut, Smokes, GPT-5.5-Lauf gestartet83,79 → 59,35 % (Judge-Methodik)
18.-19.6.GPT-5.5 komplett; Judge-Sensitivität etabliert61,77 / 49,37 / 47,98 % – gleiche Antworten, drei Judges
20.-22.6.Fusion-Lauf (49 ok / 51 partial); DS4-Panel-Salvage48,21 % auf 52 gültigen; harte Untergrenze 25,07 %
22.-25.6.Reiner DS4-256k-Lauf inkl. Overflow-Patches, SIGTRAP, Resume43,05 % / 41,92 % gewichtet; 12 leere Antworten
26.6.Empty-Retry in 4 Batches, V8-OOM dazwischenmerged 48,18 % / 46,61 %
28.6.Fusion-Reparatur (toolless), finaler Fusion-Wert48,29 %; Gesamtkosten 348,95 $
2.7.8-Agenten-Studie; 9 von 11 Sofortmaßnahmen + Salvage + Sticky-Trim implementiert; Subset eingefroren; Steering-A/B gestartet15,7 MB; 3.102 : 76; Cap 2.100 s
3.-4.7.Steering-A/B beide Arme gemessen+1,46 pp = Rauschen; beobachteter Stack-Abstand zum Juni-Subset +6,80 pp
6.7.Bench-Tag: MPP-Fastpath verworfen, v0.4-Patch-Wipe, Pin-Bump, Messdrift; Downloads gestartetMPP −29,7 % im paarweisen Mittel; kein stabiler Pin-Gewinn
7.7.Downloads fertig; Port-8000-Kollision zerstört Arm 1; Quant-Arm läuft; DSpark-Draft gebaut16 GB statt 167 GB; 40 Fehlstarts
8.7.91-GB-Quant roh 48,70 %; Confound erkannt, Caps angehoben, neuer Lauf gestartet+4,41 pp auf 17 vergleichbaren Aufgaben
9.7.Kombinierte 91-GB-/Cap-2500-Konfiguration bei 52,36 %; DSpark-Probe ohne Speedup+2,92 pp; 37,62 gegen 36,37 t/s

Kosten der Juli-Validierung

Validierungslauf (je 20 Aufgaben)ScoreGenerierungJudge-Kosten
Steering an (3.7.)49,44 %10,0 h76,49 $
Steering aus (4.7.)47,98 %10,5 h63,88 $
91 GB Cap 2100 (8.7.)48,70 %11,0 h67,09 $
91 GB Cap 2500 (9.7.)52,36 %12,1 h65,22 $
Summe Juli-Validierung272,68 $

Die Juni-Läufe waren deutlich teurer: Allein das Judging der Fusion-Reparatur kostete 255,42 $, die GPT-5.5-Generierung 612,60 $. Mit dem eingefrorenen 20-Aufgaben-Subset konnte ich im Juli vier kontrollierte Arme für zusammen 272,68 $ Judge-Kosten ausführen.

Was diese Zahlen nicht zeigen

Die Konfiguration, die jetzt läuft

Seit dem 9.7. läuft diese Standardkonfiguration: 91-GB-Quant, 400k Kontextfenster mit offenem Think-Max-Gate, 64 GB KV-Budget, klebriges Trimmen, gedeckelte Tool-Ausgaben, Salvage, Cap 2.500 s und Steering an.

Als Nächstes kommen der volle 100-Aufgaben-Lauf, die hartnäckige 0,0-Aufgabe 10e75d21 und der Re-Judge der Medizin-Regression. Ein abliterierter DSpark-Draft wäre später noch interessant, falls ihn jemand trainiert. Decode bleibt bis dahin bandbreitenlimitiert bei 18 bis 37 t/s. Die Physik verhandelt nicht.

Quellen und Artefakte