Trend-Themen
#
Bonk Eco continues to show strength amid $USELESS rally
#
Pump.fun to raise $1B token sale, traders speculating on airdrop
#
Boop.Fun leading the way with a new launchpad on Solana.
Du bist in einem Interview für einen KI-Ingenieur bei OpenAI.
Der Interviewer fragt:
"Unser GPT-Modell generiert 100 Tokens in 42 Sekunden.
Wie machst du es 5x schneller?"
Du: "Ich werde mehr GPUs zuweisen, um die Generierung zu beschleunigen."
Interview vorbei.
Hier ist, was du verpasst hast:
Der eigentliche Engpass ist nicht die Rechenleistung, sondern die redundante Berechnung.
Ohne KV-Caching berechnet Ihr Modell Schlüssel und Werte für jedes Token neu und wiederholt damit die Arbeit.
- mit KV-Caching → 9 Sekunden
- ohne KV-Caching → 42 Sekunden (~5x langsamer)
Lassen Sie uns eintauchen, um zu verstehen, wie es funktioniert!
Um KV-Caching zu verstehen, müssen wir wissen, wie LLMs Tokens ausgeben.
- Der Transformer erzeugt verborgene Zustände für alle Tokens.
- Die verborgenen Zustände werden in den Vokabularraum projiziert.
- Die Logits des letzten Tokens werden verwendet, um das nächste Token zu generieren.
- Wiederholen für nachfolgende Tokens.
Überprüfen Sie dies👇
Um also ein neues Token zu generieren, benötigen wir nur den verborgenen Zustand des letzten Tokens.
Keiner der anderen verborgenen Zustände ist erforderlich.
Als Nächstes sehen wir uns an, wie der letzte verborgene Zustand innerhalb der Transformator-Schicht aus dem Aufmerksamkeitsmechanismus berechnet wird.
Während der Aufmerksamkeit:
Die letzte Zeile des Abfrage-Schlüssel-Produkts umfasst:
- den letzten Abfragevektor.
- alle Schlüsselvektoren.
Außerdem umfasst die letzte Zeile des endgültigen Aufmerksamkeitsresultats:
- den letzten Abfragevektor.
- alle Schlüssel- und Wertevektoren.
Überprüfen Sie diese Visualisierung, um es besser zu verstehen:
Die obige Erkenntnis legt nahe, dass zur Generierung eines neuen Tokens jede Aufmerksamkeitsoperation im Netzwerk nur benötigt:
- Abfragevektor des letzten Tokens.
- alle Schlüssel- und Wertevektoren.
Aber es gibt hier noch eine weitere wichtige Erkenntnis.
Wenn wir neue Token generieren:
- Ändern sich die KV-Vektoren, die für ALLE vorherigen Token verwendet werden, nicht.
Daher müssen wir nur einen KV-Vektor für das Token generieren, das einen Schritt vorher erstellt wurde.
Die restlichen KV-Vektoren können aus einem Cache abgerufen werden, um Rechenleistung und Zeit zu sparen.
Das nennt man KV-Caching!
Um es zu wiederholen: Anstatt die KV-Vektoren aller Kontext-Token redundant zu berechnen, speichere sie im Cache.
Um ein Token zu generieren:
- Generiere den QKV-Vektor für das Token, das einen Schritt zuvor generiert wurde.
- Hole alle anderen KV-Vektoren aus dem Cache.
- Berechne die Aufmerksamkeit.
Überprüfe das👇
KV-Caching beschleunigt die Inferenz, indem der KV-Cache des Prompts vor der Generierung von Tokens berechnet wird.
Genau deshalb benötigt ChatGPT länger, um das erste Token zu generieren als die restlichen.
Diese Verzögerung wird als Time-to-First-Token (TTFT) bezeichnet.
Die Verbesserung von TTFT ist ein Thema für einen anderen Tag!
178
Top
Ranking
Favoriten
