Inferenz
Was passiert, wenn ein fertiges Modell benutzt wird – warum die erste Antwort auf sich warten lässt, warum Text Stück für Stück erscheint und was Geschwindigkeit und Kosten bestimmt.
Inferenz heißt: ein fertig trainiertes Modell benutzen. Die Parameter stehen fest, es wird nur noch gerechnet – Eingabe rein, Ausgabe raus. Das passiert bei jeder einzelnen Chat-Nachricht.
Bei Sprachmodellen läuft das in zwei Phasen: Erst wird die ganze Eingabe auf einmal verarbeitet (Prefill), dann entsteht die Antwort Token für Token (Decode). Für jedes einzelne Token müssen dabei praktisch alle Parameter aus dem Speicher gelesen werden – deshalb bestimmt die Speicherbandbreite der Hardware, wie schnell ein Modell schreibt.
Training und Inferenz
| Training | Inferenz | |
|---|---|---|
| Was passiert | Parameter werden angepasst | Parameter werden nur gelesen |
| Wie oft | einmal pro Modellversion | bei jeder Anfrage, millionenfach am Tag |
| Dauer | Wochen bis Monate | Sekunden bis Minuten |
| Hardware | riesige Rechner-Verbünde | von großen Rechenzentren bis zum eigenen Laptop |
Einzeln ist eine Inferenz billig. Weil sie aber ständig passiert, verbrauchen Anbieter insgesamt viel Rechenleistung dafür – inzwischen oft mehr als für das Training.
Zwei Phasen: Prefill und Decode
① Prefill – lesen
Die gesamte Eingabe – Systemprompt, Verlauf, Frage – wird in einem Rutsch verarbeitet. Das ist gut parallelisierbar und schnell, dauert bei sehr langen Eingaben aber spürbar. Daraus ergibt sich die Wartezeit bis zum ersten Wort.
② Decode – schreiben
Jetzt entsteht die Antwort, streng nacheinander: Jedes Token hängt vom vorigen ab. Pro Token ein kompletter Durchgang durchs Modell. Das bestimmt, wie schnell der Text erscheint.
Damit beim Schreiben nicht jedes Mal die ganze Eingabe neu berechnet werden muss, merkt sich das Modell die Zwischenergebnisse jedes bisherigen Tokens im KV-Cache (siehe Kontextfenster). Pro neuem Token kommt nur noch ein Eintrag dazu.
Wie schnell ist schnell?
Zwei Zahlen bestimmen das Gefühl beim Benutzen: die Zeit bis zum ersten Token und die Tokens pro Sekunde danach. Probier aus, wie sich das anfühlt:
Warum Speicherbandbreite entscheidet
Beim Schreiben steckt die meiste Zeit nicht im Rechnen, sondern im Lesen: Für jedes einzelne Token müssen die Gewichte aus dem Grafikspeicher zu den Recheneinheiten wandern. Bei einem Modell mit 140 GB Gewichten sind das 140 GB – pro Token. Daraus folgt eine einfache Obergrenze:
Tokens pro Sekunde ≲ Speicherbandbreite / Größe der GewichteViele Nutzer auf einmal
Wenn das Lesen der Gewichte der Engpass ist, liegt ein Trick nahe: Einmal gelesene Gewichte gleich für viele Anfragen verwenden. Genau das machen Anbieter mit Batching – die Grafikkarte erzeugt das nächste Token für Dutzende Gespräche gleichzeitig. Für den Einzelnen wird es kaum langsamer, die Kosten pro Token sinken aber drastisch.
Eingabe ist billiger
Eingabe-Tokens werden im Prefill parallel verarbeitet, Ausgabe-Tokens einzeln nacheinander. Deshalb kosten Ausgabe-Tokens bei APIs meist ein Mehrfaches.
Caching
Bleibt der Anfang einer Anfrage gleich – etwa ein langer Systemprompt –, können Anbieter das Prefill zwischenspeichern. Solche Tokens werden dann deutlich günstiger berechnet.
Spekulatives Dekodieren
Ein kleines Modell rät mehrere Tokens voraus, das große prüft sie in einem Durchgang. Stimmen sie, spart man Zeit – am Ergebnis ändert sich nichts.
Für Entwickler übersetzt
| Begriff | Entspricht ungefähr |
|---|---|
| Inferenz | der Produktivbetrieb – im Gegensatz zum Build |
| Prefill | eine Batch-Verarbeitung über alle Eingaben |
| Decode | eine Schleife mit Abhängigkeit von der vorigen Iteration – nicht parallelisierbar |
| Speichergebunden | wie das Durchlaufen eines riesigen Arrays: Die CPU wartet auf den RAM, nicht auf die Rechenwerke |
| Batching | mehrere Requests bündeln, um eine teure Ressource besser auszulasten – wie Batch-Inserts in eine Datenbank |
| Streaming | Server-Sent Events: Die API schickt jedes Token, sobald es fertig ist |