Inferenz schneller machen
Stapelverarbeitung, Caching, spekulative Dekodierung und Destillation: die Hebel, mit denen sich Antwortzeit und Kosten je Anfrage tatsächlich senken lassen.
Die Idee
Eine Grafikkarte, die eine einzelne Anfrage bearbeitet, ist zu über neunzig Prozent unbeschäftigt: Sie wartet darauf, dass Gewichte aus dem Speicher ankommen. Werden mehrere Anfragen gemeinsam bearbeitet, benutzt sie dieselben Gewichte für alle und wartet nur einmal.
Die Hebel, geordnet nach Wirkung
| Hebel | Typischer Gewinn | Qualitätsverlust |
|---|---|---|
| Kontinuierliches Batching | 5- bis 20-facher Durchsatz | keiner |
| Prompt-Caching | 30 bis 90 % weniger Prefill | keiner |
| Spekulative Dekodierung | 1,5- bis 3-fach je Anfrage | keiner |
| Quantisierung auf int8 | 2-fach | gering, messbar |
| Quantisierung auf int4 | 4-fach | spürbar, muss geprüft werden |
| Destillation auf kleineres Modell | 5- bis 20-fach | deutlich, aufgabenabhängig |
Kontinuierliches Batching
Klassisches Batching wartet, bis alle Anfragen im Stapel fertig sind. Da Antworten unterschiedlich lang sind, wartet der Stapel auf die längste. Kontinuierliches Batching nimmt eine neue Anfrage auf, sobald irgendeine fertig ist.
Klassisch: [====A====][==B==]......[========C========] fertig nach C
Kontinuierlich: A und B laufen, sobald A endet startet D, dann E ...
Der Gewinn hängt von der Streuung der Antwortlängen ab. Bei stark schwankenden Längen, dem Normalfall, liegt er beim Faktor fünf und mehr.
Prompt-Caching
Wenn viele Anfragen denselben Systemprompt oder dasselbe Dokument enthalten, muss dessen KV-Cache nur einmal berechnet werden.
- Den unveränderlichen Teil ganz an den Anfang des Prompts stellen, sonst greift der Cache nicht.
- Bei RAG die Reihenfolge der abgerufenen Ausschnitte stabil halten.
- Die Trefferquote des Caches messen; unter 30 Prozent lohnt der Aufwand selten.
Spekulative Dekodierung
Durchgerechnet für γ = 4, α = 0,8, c = 0,05:
E = (1 − 0,8⁵)/(1 − 0,8) = (1 − 0,328)/0,2 = 3,36 Token je Runde, geteilt durch
1 + 4 × 0,05 = 1,2, ergibt einen Gewinn von rund 2,8-fach.
Bei α = 0,5 sinkt das auf E = 1,94 / 1,2 = 1,6-fach. Die Annahmequote ist
also der entscheidende Wert, und sie hängt davon ab, wie gut das kleine Modell
zum großen passt. Ein aus demselben Modell destilliertes Entwurfsmodell erreicht
deutlich höhere Quoten als ein beliebiges kleines Modell.
Wichtig: Das Verfahren ist verlustfrei. Die Ausgabeverteilung bleibt exakt die des großen Modells, weil abgelehnte Vorschläge korrekt neu gezogen werden.
Die Reihenfolge, in der man optimiert
- 01
Messen, welche Phase klemmt
Zeit bis zum ersten Token und Token je Sekunde getrennt erfassen. Ohne diese Trennung optimiert man ins Leere.
- 02
Bedienung vor Modell
Kontinuierliches Batching, Prompt-Caching, PagedAttention. Verlustfrei und ohne Bewertungsaufwand.
- 03
Formate
Erst den KV-Cache auf int8, dann die Gewichte. Nach jedem Schritt gegen einen festen Bewertungssatz messen.
- 04
Modell
Kleineres Modell, Destillation oder ein Weiterleitungsverfahren, das einfache Anfragen an ein kleines und schwere an ein großes Modell schickt.
Was ein Weiterleitungsverfahren bringt
Wenn 70 Prozent der Anfragen von einem Modell mit einem Zehntel der Kosten
gleich gut beantwortet werden, sinken die Gesamtkosten auf
0,7 × 0,1 + 0,3 × 1,0 = 0,37, also um 63 Prozent. Die Schwierigkeit liegt in
der Klassifikation: Sie muss selbst billig sein und darf schwere Fälle nicht
falsch einordnen. In der Praxis bewährt sich eine konservative Regel, die im
Zweifel an das große Modell weiterleitet.
Passende Kurse und Quellen
Switch Transformers
Nur ein Bruchteil der Parameter rechnet je Token mit. Die Arbeit, die Mixture-of-Experts in die Breite gebracht hat.
Für das Verständnis, warum große Modelle nicht alle Parameter je Token mitrechnen.
vLLM
Server für hohen Durchsatz mit fortlaufender Stapelverarbeitung und Seitenspeicher für den Zwischenspeicher. Der Grund, warum Eigenbetrieb bei Volumen wirtschaftlich wird.
Für den Eigenbetrieb bei Volumen; der Grund, warum er sich überhaupt rechnen kann.