Kapitel 07 · Generierung · 7 min
Das nächste Wort wählen
Temperature, Top-k, Top-p. Die Kunst, eine Wahrscheinlichkeitsverteilung in Text umzuwandeln.
Die Verteilung ist berechnet. Und dann?
An diesem Punkt des Buchs kann das Modell eine Wahrscheinlichkeitsverteilung über den nächsten Token berechnen. Um Text zu generieren, muss man jetzt einen auswählen. Das ist der Sampling-Schritt (Stichprobenziehung).
Wir haben diesen Mechanismus bereits in Kapitel 01 kurz gesehen. Jetzt ist es Zeit, genauer hinzuschauen: Er unterscheidet ein vorsichtiges von einem kreativen Modell, einen zuverlässigen Assistenten von einem repetitiven Papagei.
Warum nicht immer das Wahrscheinlichste?
Die einfachste Strategie — Greedy Decoding — besteht darin, immer den Token mit der maximalen Wahrscheinlichkeit zu nehmen. Schnell, deterministisch, reproduzierbar.
Und doch fast nie allein verwendet. Warum?
Weil Greedy Decoding seltsam flachen Text erzeugt. Es gerät in Schleifen („sehr sehr sehr interessant interessant interessant…"). Es wählt immer das konventionellste Wort. Es erzeugt technisch korrekte, aber farblose Sätze. Das Modell wurde auf menschlichem Text trainiert, der immer einen Teil an Unvorhersehbarkeit enthält — und diese Unvorhersehbarkeit muss sich in der Generierung wiederfinden.
Daher das stochastische Sampling: Man zieht einen Token zufällig gemäß der Verteilung. Je wahrscheinlicher ein Token, desto mehr Chancen hat er, ausgewählt zu werden — aber die anderen haben auch eine Chance.
Drei Regler
Dieses reine stochastische Sampling wäre zu verrauscht. Typischerweise werden drei Filter vor dem Ziehen angewendet:
Temperatur
Die Temperatur T dividiert die Logits vor dem Softmax. Das ist die mächtigste Einstellung.
T = 1,0— Verteilung wie sie aus dem Modell kommt (Referenz)T < 1,0— zugespitztere Verteilung: die Hohen werden höher, die Niedrigen niedriger. Das Modell wird vorhersehbarer.T → 0— entspricht Greedy Decoding (nur ein Token möglich).T > 1,0— abgeflachte Verteilung: wenig wahrscheinliche Optionen steigen. Das Modell wird kreativ, manchmal seltsam.T → ∞— gleichförmig, das Modell zieht völlig zufällig.
Temperatur ist ein Schieberegler zwischen Vorhersehbarkeit und Phantasie.
Top-k
Statt allen Tokens des Vokabulars (oft 100.000 und mehr) zu erlauben, behält man die k wahrscheinlichsten und setzt den Rest auf null, dann renormalisiert man. k = 40 ist ein klassischer Wert für Kreativität, k = 1 führt zurück zu Greedy.
Vorteil: Eliminiert sofort absurde Tokens (jene mit 0,0001%), die zufällig gezogen werden könnten. Nachteil: Der optimale k-Wert hängt von jedem Schritt ab — manchmal reichen 5 Kandidaten, manchmal sind 100 alle plausibel.
Top-p (Nucleus Sampling)
Cleverer als Top-k. Man behält die kleinste Menge, deren kumulierte Wahrscheinlichkeit p übersteigt, dann renormalisiert man.
- Bei einem Schritt, wo das Modell zwischen 30 ähnlichen Optionen schwankt → Top-p behält alle Optionen, deren Summe p erreicht.
- Bei einem Schritt, wo das Modell zu 95 % sicher ist → Top-p behält einen einzigen Token.
In der Praxis ist Top-p ≈ 0,9 der am häufigsten empfohlene Wert und die Voreinstellung vieler Open-Source-Konfigurationen. Achtung: Die großen APIs lassen ihn in der Regel bei 1,0 und wollen, dass du über die Temperatur steuerst — wenn du den Top-p-Effekt willst, musst du ihn ausdrücklich anfordern. Sein Nutzen bleibt derselbe: Es passt sich automatisch an die Sicherheit des Modells an.
Nochmal interagieren
Wir haben diese Visualisierung bereits in Kapitel 01 gesehen — wir spielen sie hier nochmal ab, weil das genau das Thema ist:
Spiele mit der Temperature: bei 0 ist das Modell deterministisch und repetitiv; bei 1.5 wird es kreativ — bis hin zur Inkohärenz. Top-k und Top-p schneiden die lange Reihe unwahrscheinlicher Kandidaten ab, ohne die wahrscheinlichen zu berühren.
Diesmal beobachte:
- Bei Hauptstadt ist das Modell so sicher (10,0 vs. 5,0 für den nächsten), dass es eine extrem hohe Temperatur (>1,5) braucht, um etwas anderes als
Parisauszugeben. Das ist typisch für Prompts, bei denen die Antwort bekannt ist. - Bei Der Himmel im zweiten Schritt sind mehrere Fortsetzungen semantisch plausibel. Mit
Temperatur = 1,5kann manFarbeoderMeerstattLichterhalten. Die Bedeutung bleibt korrekt, aber der Text wird unvorhersehbarer. - Bei
Top-k = 1wird jede andere Einstellung nutzlos: Man ist in Greedy. - Bei
Top-p = 0,5auf dem Prompt Hauptstadt überlebt nurParis(weil es bereits 50 % allein erreicht).
Einige typische Einstellungen
Typische Einstellungen nach Anwendungsfall:
| Anwendungsfall | Temperatur | Top-p |
|---|---|---|
| Code, strukturierte Daten | 0,0–0,2 | 1,0 |
| Faktische Antwort | 0,3–0,5 | 0,9 |
| Allgemeines Gespräch | 0,7 | 0,9 |
| Brainstorming, kreatives Schreiben | 0,9–1,2 | 0,95 |
| Variationsgenerierung | 1,2–1,5 | 0,95 |
Das sind keine harten Regeln. Aber das ist die Größenordnung, die man in den meisten Produkten findet, die ein LLM verwenden.
Drei weitere Regler, die man kennen sollte
Über Temperatur / Top-k / Top-p hinaus tauchen ein paar Parameter überall in den APIs auf.
Die Wiederholungs-Strafen. Alle bestrafen Tokens, die bereits in der Ausgabe erschienen sind, um Schleifen zu durchbrechen, ohne die Temperatur hochziehen zu müssen — aber verwechsle die beiden Familien nicht, ihre Skalen haben nichts miteinander zu tun. Die repetition penalty des Open-Source-Ökosystems (HuggingFace, llama.cpp) dividiert die Scores bereits gesehener Tokens: Sie steht auf 1, wenn sie deaktiviert ist, und man stellt sie typischerweise zwischen 1,05 und 1,2 ein. Frequency penalty und presence penalty bei OpenAI dagegen subtrahieren einen Wert: Sie reichen von −2 bis +2, stehen standardmäßig auf 0, und über 1 geht man selten hinaus. Eine frequency penalty auf 1,2 zu setzen, in dem Glauben, man wende eine repetition penalty an, führt zu einem ganz anderen Ergebnis als erwartet.
Stop sequences. Eine Liste von Zeichenketten, die, wenn sie in der Ausgabe erscheinen, die Generierung sofort stoppen. Unverzichtbar für strukturierte Anwendungen: In einem formatierten Dialog stoppt man bei <|im_end|> oder \n\nUser:, um zu verhindern, dass das Modell die Konversation allein weiterführt.
Beam search. Statt stochastisch zu sampeln, behält man parallel die k besten partiellen Sequenzen bei jedem Schritt und wählt am Ende diejenige, die die Gesamtwahrscheinlichkeit maximiert. Das Ergebnis ist „glatter", aber oft weniger natürlich. Wird in maschineller Übersetzung und Spracherkennung verwendet, viel seltener in kreativer Generierung.
Die illusorische Determinismus
Eine letzte Feinheit. Selbst mit Temperatur = 0 können zwei Aufrufe desselben Modells in der Praxis unterschiedliche Ergebnisse liefern:
- Nicht-deterministische Quantisierung (Berechnungen in INT8/FP8 haben eine Fehlertoleranz).
- Dynamisches Batching auf der Serverseite (je nach anderen Anfragen ändern sich die Reihenfolgen der Fließkommaoperationen).
- Modellversionen, die beim Anbieter stillschweigend wechseln.
Wenn du Tests schreibst, die von der genauen Ausgabe eines LLM abhängen, wirst du leiden.
Was als nächstes kommt
Jetzt weißt du, wie ein LLM:
- Text in Tokens zerlegt,
- sie in Vektoren umwandelt,
- sie über Attention aneinander betrachten lässt,
- Transformer-Blöcke stapelt, um die Repräsentation zu verfeinern,
- eine Verteilung über den nächsten Token vorhersagt,
- einen mit einer Sampling-Strategie zieht.
Und doch ist das, was wir „Assistent" nennen — etwas wie ChatGPT oder Claude — nicht nur das. Ein Basismodell an diesem Punkt wäre ein Textvervollständiger, kein Assistent. Wie kommt man von einem zum anderen? Das ist das Thema des nächsten Kapitels: das Alignment.
Aktualisiert am