Zurück zum Archiv
#ai#llm#glossary#aigen

Prefill

Du sendest eine lange Frage an den Chat und wartest auf das erste Wort. Bevor das Modell eine Antwort hinzufügt, muss es den bereits erhaltenen Inhalt verarbeiten. Diese anfängliche Phase kann viel Arbeit erfordern, besonders bei einem langen Dokument.

Prefill ist die Verarbeitung der bekannten Eingabe, des sogenannten Prompts, vor der weiteren Generierung. Das Modell erstellt numerische Beschreibungen der Tokens — Textstücke — und kann einen Teil der Ergebnisse im KV Cache zur Wiederverwendung aufbewahren.

Da die gesamte Eingabe bereits vorliegt, können viele ihrer Positionen innerhalb einer Schicht parallel berechnet werden. Die Regeln für den Kontextzugriff gelten weiterhin: Parallele Arbeit erlaubt einer früheren Position keinen Blick auf die verbotene Zukunft.

Das Ergebnis der letzten Position erlaubt es, die Wahrscheinlichkeiten für das erste neue Token zu berechnen. Seine Auswahl ist ein eigener Schritt. Prefill umfasst nicht die gesamte Zeit ab dem Absenden der Frage: Netzwerk, Warteschlange und weitere Phasen kommen hinzu. Das weitere Erweitern der Antwort beschreibt Decode.

Quelle des Mechanismus: NVIDIA, Mastering LLM Techniques: Inference Optimization, Abschnitt „Understanding LLM inference“.

Mechanismus und Details

Mehrere fertige Papierstreifen gelangen gleichzeitig unter einen breiten Kamm; der letzte erreicht einen leeren Platz für ein neues Element.

Der bekannte Prompt lässt sich parallel verarbeiten

Alle Eingabetokens sind bereits verfügbar. Innerhalb einer Schicht können deshalb viele Positionen gleichzeitig berechnet werden. Weiterhin gilt die kausale Maskierung: Die zweite Position verwendet nicht die dritte. Parallele Berechnungen heben weder diese Abhängigkeit noch die Reihenfolge beim Durchlaufen der Schichten auf. Die Grundlage beschreiben Vaswani et al., §3.1–3.2.

Prefill kann den Prompt auch in Portionen verarbeiten [Polski] und dabei den Cache früherer Positionen bewahren. Die vLLM-Dokumentation, „Chunked Prefill“ beschreibt, wie diese Aufteilung die Arbeit an Prompts mit der Erzeugung von Antworten für andere Anfragen verschränkt.

Vier Positionen, gleiches Ergebnis

Das eigene Beispiel isoliert einen Attention-Kopf mit Dimension 1: Alle Queries und Keys sind 1, die Values [2,4,8,10][2,4,8,10]. Die zulässigen Vergleichswerte sind gleich. Jede Position liefert daher den Mittelwert der sichtbaren Values: [2,3,14/3,6][2,3,14/3,6]. Vergleiche die Verarbeitung aller vier Positionen mit Abschnitten zu je zwei. In der zweiten Variante muss die dritte Position weiterhin die ersten beiden sehen.

Dies ist die Berechnung einer einzelnen Operation ohne trainierte Modellgewichte und ohne GPU-Messung. Im vollständigen Modell wird der Cache für jede Schicht separat geführt. Eine andere Aufteilung kann kleine numerische Implementierungsunterschiede verursachen; die mathematische Maske verändert sie nicht.

Nach dem Prompt beginnt Decode, bei dem weitere Eingaben von gerade ausgewählten Tokens abhängen. Die Prefill-Zeit allein umfasst nicht die gesamte Wartezeit des Nutzers: Warteschlange, Eingabevorbereitung und Ergebnislieferung zählen ebenfalls. Siehe auch: Time to First Token umfasst die Wartezeit des Clients bis zum ersten Token, und Continuous Batching ermöglicht Änderungen der bearbeiteten Gruppe zwischen Iterationen.

Ich verwende KI-generierte Inhalte als Teil meines täglichen Lernprozesses.