# Messprotokoll MATH-500 — warum eine Zahl allein nichts sagt Diese Seite protokolliert, wie die Mathematik-Werte in der Modellkarte zustande kommen, welche Fehler dabei aufgetreten sind und was noch fehlt. Sie existiert, weil derselbe Messlauf je nach Auswertung **76 oder 98 Prozent** ergibt — und beide Zahlen belegbar sind. Wer Benchmark-Werte veröffentlicht, ohne das offenzulegen, veröffentlicht eine Meinung. ## Der aktuelle Stand | Modell | streng gewertet | nur abgeschlossene Antworten | abgeschnitten | |---|---|---|---| | Qwen3.8-27B Q8_0 | 76,0 % | 98,3 % | 34 von 150 (23 %) | | Qwen3.8-27B Q6_K | 76,7 % | 97,5 % | 32 von 150 (21 %) | | Qwen3.6-27B Q6_K | 76,0 % | 97,4 % | 33 von 150 (22 %) | **Beide Spalten sind verzerrt, in entgegengesetzte Richtungen.** Die strenge Wertung bestraft Antworten, die nur nicht ins Token-Budget passten. Die zweite Spalte wirft genau diese Fälle weg — und das sind überwiegend die schweren Aufgaben, also schönt sie nach oben. Die belastbare Zahl liegt dazwischen und ist noch nicht gemessen. ## Fehler 1: das Token-Budget — offen Der erste Durchgang lief mit **1.600 Token** Budget je Aufgabe. Das war die denkbar schlechteste Wahl: knapp über dem 90.-Perzentil des tatsächlichen Bedarfs. Gemessener Bedarf der Antworten, die durchkamen: | Stufe | Median | 80 % | größte abgeschlossene | abgeschnitten | |---|---|---|---|---| | L1 | 433 | 518 | 536 | 1 von 8 | | L2 | 570 | 837 | 1.578 | 1 von 33 | | L3 | 588 | 830 | 1.323 | 5 von 36 | | L4 | 862 | 1.076 | 1.467 | 10 von 35 | | **L5** | **980** | **1.235** | **1.575** | **17 von 38** | Bei Stufe 5 wurde **fast die Hälfte** mitten im Rechenweg gekappt. Keine dieser Antworten enthielt ein Ergebnis — der Abbruch ist echt, kein Extraktionsfehler. Zum Vergleich: im Produktivbetrieb läuft dasselbe Modell mit **97.000 Token** je Sitzung. Der Benchmark hat es also um den **Faktor 60** beschnitten und misst damit teilweise das Budget statt das Modell. **Behebung:** Nachmessung ausschließlich der abgeschnittenen Aufgaben mit 8.000 Token (`bench_nachmessen.py`). Kostet rund 25 Minuten je Modell statt drei Stunden für eine Neumessung. Steht aus. ## Fehler 2: zu strenger Antwortvergleich — behoben Von acht abgeschlossenen, aber als falsch gewerteten Antworten war **genau eine wirklich falsch**. Die übrigen sieben waren Schreibvarianten: | gegeben | erwartet | tatsächlich | |---|---|---| | `\frac{4}{3}` | `\frac43` | identisch, Kurzform ohne Klammern | | `\frac{3}{4}` | `\frac 34` | identisch, Leerzeichen statt Klammern | | `0,35625` | `.35625` | identisch, Dezimalkomma und führende Null | | `5` | `x=5` | richtig gerechnet, ohne Zuweisungspräfix | | `[-2, 7]` | `x \in [-2,7]` | richtig, ohne Mengenzeichen | | `B` | `\text{(B)}` | richtig, Multiple-Choice-Buchstabe | | `\frac{16}{49}` | `16/49` | identisch, andere Bruchschreibweise | | `-0.09` | `\frac{9}{100}` | **echter Fehler** (Vorzeichen) | Der Normalisierer fängt diese Formen jetzt ab. Wirkung ohne jede erneute Modellrechnung — die Antworten lagen bereits vor: | Modell | vorher | nachher | |---|---|---| | Qwen3.6-27B Q6_K | 70,7 % | **76,0 %** | | Qwen3.8-27B Q6_K | 72,7 % | **76,7 %** | | Qwen3.8-27B Q8_0 | 72,0 % | **76,0 %** | **Vier bis fünf Prozentpunkte, die reine LaTeX-Konvention waren.** Der ältere Selbsttest hatte diese Fälle nicht abgedeckt; er prüft sie jetzt (39 Prüfungen, darunter jeder oben genannte Fall). Das ist der Grund, warum `selftest_mathe.py` mitgeliefert wird: Bei Mathematik-Benchmarks steckt der Fehler fast nie im Modell, sondern im Vergleich. ## Fehler 3: Trainingskontamination — nicht geprüft MATH-500 liegt seit Jahren öffentlich auf HuggingFace. Ob die getesteten Modelle die Aufgaben im Training gesehen haben, ist **nicht untersucht**. Für den Vergleich der Varianten untereinander ist das unerheblich — Kontamination trifft alle sieben gleichermaßen. Für jeden Vergleich mit fremden Modellen macht es die absoluten Zahlen wertlos. **Geplante Prüfung:** Fortsetzungstest — dem Modell die ersten Wörter einer Aufgabe vorlegen und sehen, ob es den Originaltext wörtlich vervollständigt. Schlägt er an, gehört das als Warnung in die Modellkarte. ## Was die Zahlen deshalb bedeuten **Belastbar:** Die sieben getesteten Varianten unterscheiden sich nicht. Alle Konfidenzintervalle überlappen, in beiden Fächern (Code und Mathematik) und über alle drei Auswertungsarten hinweg. Weder die neuere Generation noch die höhere Quantisierung bringt einen messbaren Vorteil. **Nicht belastbar:** Jeder absolute Wert und jeder Vergleich mit publizierten MATH-500-Zahlen. Dort liegen Spitzenmodelle bei über 99 Prozent — allerdings mit vollem Reasoning, das hier bewusst abgeschaltet war, und ohne Budgetbeschränkung. ## Was noch aussteht 1. **Nachmessung** der abgeschnittenen Aufgaben mit 8.000 Token → schließt die Lücke zwischen 76 und 98 Prozent 2. **Omega-Messung**: Qwen3.8-27B Q8_0 mit vollem Reasoning, Budget aus einer vorgeschalteten Bedarfsmessung statt geraten, Vorgabe: keine Aufgabe bricht ab. Erst diese Zahl ist mit Leaderboards vergleichbar. 3. **Kontaminationsprüfung** per Fortsetzungstest ## Mitgelieferte Werkzeuge | Datei | Zweck | |---|---| | `bench_mathe.py` | Messlauf gegen MATH-500 / GSM8K | | `selftest_mathe.py` | 39 Prüfungen des Vergleichs — **vor** jedem Lauf ausführen | | `bench_nachmessen.py` | misst nur die abgeschnittenen Aufgaben nach | | `neubewerten.py` | wertet gespeicherte Läufe mit korrigiertem Vergleich neu | | `run_omega.sh` | zweistufige Reasoning-Messung mit gemessenem statt geratenem Budget | Alle Rohdaten liegen unter `bench/` — je Aufgabe die gelieferte Antwort, die erwartete, der Token-Verbrauch und der Abbruchgrund. Wer die Auswertung anzweifelt, kann sie nachrechnen.