KI & Werkzeuge

Der Seed wirkt nicht. Der erste Lauf schon

Jede Messung dieser Serie läuft mit temperature 0 und drei Seeds. Der Gedanke dahinter war: falls das Modell doch streut, fangen drei Durchgänge es ab. Beim Nachsehen in den gespeicherten Ausgaben fiel etwas auf, das dazu nicht passt. In 176 Gruppen zu je drei Durchgängen gibt es keine einzige, in der alle drei Ausgaben verschieden wären. Entweder sind alle drei gleich, oder genau einer weicht ab.

Genau einer. Nie zwei, nie drei. Das ist kein Rauschen — Rauschen sieht anders aus.

Das Ergebnis in einem Satz: Der Seed hat auf keinem der elf Modelle irgendeine Wirkung. Was wie Streuung aussah, ist der erste Lauf — und der ist auf beiden Rechnern bis aufs Byte derselbe.

Was auffiel

Der Prompt-Prüfstand umfasst 528 Zellen: elf Modelle, vier Aufgaben, vier Prompt-Varianten, drei Seeds. Das ergibt 176 Gruppen zu je drei Durchgängen, die sich nur im Seed unterscheiden. So verteilen sie sich:

GruppenAnzahl
alle drei Ausgaben identisch65
genau eine weicht ab111
alle drei verschieden0

Und die abweichende ist nicht zufällig verteilt. Es ist in 111 von 111 Fällen seed 42 — der erste Durchgang jeder Gruppe. Die Seeds 43 und 44 stimmen ausnahmslos miteinander überein, über alle elf Modelle, über alle vier Aufgaben.

Damit stand eine Frage im Raum, die man messen kann: wirkt hier der Seed, oder wirkt die Position? Im Prüfstand ist beides verwechselbar, weil der erste Durchgang immer seed 42 ist.

Die Auswertung stand vor den Daten fest

Der Prüfstand trennt die beiden Erklärungen, indem er den Seed vom Platz löst:

  1. Wiederholung: derselbe Prompt, derselbe Seed, fünf Läufe. Alle byteidentisch heißt reproduzierbar. Weicht auch nur einer ab, streut die Laufzeit.
  2. Seeds: derselbe Prompt, fünf verschiedene Seeds, je ein Lauf.
  3. Beides wird je Modell berichtet, nicht über alle gemittelt.
  4. Verglichen wird byteweise nach Normalisierung der Zeilenenden. Zusätzlich wird die Tokenzahl je Lauf festgehalten: gleiche Tokenzahl bei anderem Text ist ein anderer Befund als eine andere Tokenzahl.

Sechs Modelle, je zehn Läufe, auf zwei Rechnern: 120 Zellen. Die Aufgabe ist eine Rechnung mit eindeutiger Lösung — Positionsrabatte, Skonto, eine Versandschwelle, Umsatzsteuer.

Das Ergebnis

Modell5× gleicher Seed5× verschiedene Seeds
ornith:35b5 gleich5 gleich
qwen3.6:27b5 gleich5 gleich
gemma4:26bder erste weicht ab5 gleich
qwen3:8bder erste weicht ab5 gleich
deepseek-r1:14bder erste weicht ab5 gleich
qwq:32bder erste weicht ab5 gleich

Die rechte Spalte ist die Antwort. Fünf verschiedene Seeds liefern bei jedem der sechs Modelle exakt denselben Text — und zwar denselben, den auch die Wiederholungen zwei bis fünf unter Seed 42 liefern. Der Seed-Wert ändert nichts. Was abweicht, ist ausschließlich der erste Lauf, und der weicht auch dann ab, wenn er denselben Seed trägt wie die vier danach.

Am deutlichsten zeigt es die Tokenzahl. gemma4:26b über die fünf Wiederholungen: 503, 508, 508, 508, 508. qwen3:8b: 716, 723, 723, 723, 723. Der erste Lauf ist der kürzere — auf beiden Rechnern mit denselben Zahlen.

Wie der Unterschied aussieht

Wörtlich aus den gespeicherten Ausgaben, gemma4:26b, dieselbe Stelle mitten in der Rechnung. Bis dahin sind beide Fassungen zeichengleich; ab hier laufen sie auseinander. Erster Lauf:

**2. Anwendung des Skontos (3%):**

854,00 EUR × (1 - 0,03) = 854,00 EUR × 0,97 = **828,38 EUR**

Läufe zwei bis fünf, gleicher Seed:

**2. Anwendung des Skontos (3%):**
Der Skonto wird auf die Zwischensumme angewendet:
854,00 EUR × (1 - 0,03) = **828,38 EUR**

Beide rechnen richtig, beide kommen auf denselben Zwischenwert, und beide enden mit derselben Zeile: ERGEBNIS: 985,77 EUR. Das gilt für alle vier Modelle, deren Erstlauf abweicht. Der Unterschied liegt in der Formulierung, nicht im Ergebnis. Wer nur die Endzahl prüft, sieht ihn nie — und wer auf Byte-Gleichheit prüft, hält das Modell für unzuverlässig, obwohl es zweimal dasselbe gerechnet hat.

Zwei Rechner, 108 Zellenpaare, kein einziger Unterschied

Der Vergleich über zwei Maschinen ist in dieser Serie das stärkste Belegmittel, und hier fällt er ungewöhnlich deutlich aus. Beide Rechner tragen eine RTX 3090, sonst haben sie wenig gemeinsam — Windows gegen Linux-Container, andere CPU, anderer Unterbau.

DatensatzZellenpaarebyteidentisch
Determinismus, 6 Modelle6060
laguna-xs-2.1-stop, 16 Gruppen4848

Nicht nur die Ergebnisse stimmen überein — auch die Abweichung selbst. Wo auf dem einen Rechner der erste Lauf aus der Reihe fällt, fällt er auf dem anderen genauso aus der Reihe, mit demselben Text und derselben Tokenzahl. Bei laguna zeigen auf beiden Hosts dieselben zwölf der sechzehn Gruppen dieselbe Aufteilung: seed 42 allein, 43 und 44 zusammen.

Das ist der eigentliche Befund. Hier ist nichts zufällig. Es gibt zwei Pfade, beide für sich vollständig deterministisch und über Rechnergrenzen hinweg reproduzierbar, und welchen man bekommt, entscheidet die Position des Laufs.

Der Gegentest, der die Frage aufteilte

Bleibt die Ursache. Die naheliegende Erklärung ist die Wiederverwendung des Prompt-Caches: beim ersten Mal wird der Prompt gerechnet, danach liegt er vor, und der zweite Weg führt zu geringfügig anderen Zwischenwerten. Naheliegend ist nicht gemessen, also habe ich es gemessen — mit vorher notierter Vorhersage:

  • Reihe A: Messprompt sechsmal hintereinander, gleicher Seed.
  • Reihe B: sechsmal die Folge [Fremdprompt, Messprompt]. Der Fremdprompt soll den Cache überschreiben.
  • Vorhersage bei Cache-Ursache: in Reihe B ist jeder Lauf ein Erstlauf, also müssen alle sechs der Erstlauf-Fassung entsprechen.
  • Vorhersage sonst: Reihe B verhält sich wie Reihe A. Tritt das ein, ist die Erklärung widerlegt, und das ist dann das Ergebnis.
  • Gegenprobe: ein Modell ohne Abweichung in Reihe A darf auch in Reihe B keine zeigen. Zeigt es welche, ist der Aufbau kaputt und nicht der Befund.

Eingetreten ist beides — je nach Modell:

ModellReihe AReihe BUrteil
gemma4:26bder erste weicht aballe sechs sind Folgelaufwiderlegt
qwen3:8bder erste weicht aballe sechs sind Folgelaufwiderlegt
deepseek-r1:14bder erste weicht aballe sechs sind Erstlaufbestätigt
ornith:35bkeine Abweichungkeine AbweichungGegenprobe sauber

Bei zwei Modellen stellt der Fremdprompt den Erstlauf nicht wieder her. Bei deepseek-r1:14b tut er es, genau wie vorhergesagt — dort ist unter Zwischenprompt jeder Lauf ein Erstlauf. Die Cache-Erklärung ist damit weder widerlegt noch bestätigt, sondern zu einfach: was auch immer den ersten Lauf anders laufen lässt, verhält sich von Modell zu Modell verschieden.

ornith:35b lief als Gegenprobe mit: in beiden Reihen sechs identische Ausgaben. Der Aufbau erzeugt den Effekt also nicht selbst. Der Hash dieser sechs Läufe ist derselbe wie der des Determinismus-Laufs zwei Tage zuvor — bei anderer Generierungsgrenze, in einer anderen Sitzung.

Ein Nebenbefund räumt dabei den Verdacht aus, das Ganze sei ein Artefakt des Abschneidens: dieser Lauf hatte die Grenze bei 4000 statt 1200 Token, und deepseek-r1:14b wurde in allen zwölf Zellen fertig. Der Erstlauf-Unterschied zeigt sich also auch in einer vollständig zu Ende gerechneten Antwort.

Zwei eigene Fehler

Der erste war ein abgeschnittener Vergleich. Im Determinismus-Lauf standen qwq:32b und deepseek-r1:14b in allen zwanzig Zellen auf done_reason: length — die Generierungsgrenze lag bei 1200 Token, keine der Antworten wurde je fertig. Verglichen wurde dort also ein abgeschnittener Anfang. Im Laufprotokoll stand davon nichts; es meldete nur „STREUT“. Für diese beiden Modelle gilt der Befund deshalb nur für die ersten 1200 Token. Bei den vier anderen sind die Antworten vollständig.

Der zweite war ein vertauschtes Modell. Ich hatte notiert, die Seed-Invarianz sei hardwareabhängig: laguna liefere auf dem einen Rechner für alle drei Seeds dasselbe, auf dem anderen nicht, mit einer Trennung ab Byte 20. Nachgeprüft mit demselben Modell auf beiden Seiten stimmen alle 48 Zellenpaare byteidentisch überein. Die Trennung ab Byte 20 taucht exakt dann wieder auf, wenn man laguna-xs-2.1-stop gegen laguna-xs-2.1 hält — zwei Varianten, gleich groß, verschiedene Ergebnisse. Ich habe zwei Rechner verglichen und dabei zwei Modelle verglichen. Der Befund war ein Vergleichsfehler, und die Regel, an der er scheiterte, ist meine eigene.

Was das nicht zeigt

  • Die Ursache ist unbekannt. Gemessen ist, dass die Position wirkt und der Seed nicht. Warum der erste Lauf einen anderen Weg nimmt, ist offen — die eine geprüfte Erklärung trägt bei einem von drei Modellen und bei zweien nicht.
  • Gemessen wurde ausschließlich bei temperature 0. Über das Verhalten bei höheren Temperaturen sagt das nichts; dort soll der Seed wirken, und vermutlich tut er es auch.
  • Eine Aufgabenfamilie, ein Laufzeitsystem (Ollama 0.32.5), eine Grafikkartenklasse. Zwei Rechner sind zwei Rechner.
  • 16 der 176 Gruppen enthalten mindestens eine abgeschnittene Zelle. Sie sind in den Zahlen enthalten und dort ist der Vergleich unvollständig.
  • Der Gegentest lief mit einem Fremdprompt. Dass ein anderer Aufbau den Erstlauf doch wiederherstellt, ist damit nicht ausgeschlossen.

Die Hardware und die Regeln, denen jede Messung auf dieser Seite folgt, stehen auf Wie ich messe.

Was ich davon mitnehme

Erstens, für diese Serie: „drei Seeds“ war nie eine Seed-Variation. Es waren drei Wiederholungen, von denen die erste systematisch aus der Reihe fällt. Die gemessenen Zahlen bleiben gültig — die Begründung, sie fingen Streuung ab, war falsch. Sie ist seit dem 2. August in vierzehn Beiträgen datiert korrigiert.

Zweitens, für jeden, der lokale Modelle vergleicht: der erste Lauf ist kein Messwert wie die anderen. Wer zwei Modelle oder zwei Fassungen gegeneinander stellt und beide einmal laufen lässt, vergleicht womöglich zwei Erstläufe mit je eigenem Sonderweg. Ein Vorlauf, der verworfen wird, kostet ein paar Sekunden und nimmt eine ganze Fehlerklasse heraus.

Drittens, und das ist der Teil, der über Sprachmodelle hinausgeht: dieser Befund lag von Anfang an offen in den Daten. Es brauchte kein neues Messgerät, nur die Frage, welche der drei Zellen abweicht — statt zu zählen, wie viele abweichen. Die Zahl „nur 65 von 176 Gruppen sind reproduzierbar“ stand einen Monat lang in meinen Unterlagen. Sie war richtig und sie hat in die Irre geführt.