Skip to main content
Entwickler Themen
Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Toggle Dark/Light/Auto mode Back to homepage

0.1.13. Was weggelassen wurde

Was dieses Modell weglässt

MinimalesLLM führt denselben Schritt aus wie ein heutiges Sprachmodell: aus dem bisherigen Text eine Verteilung über das nächste Token bilden, daraus ein Token ziehen und das Token an den Text hängen. Training verschiebt die Gewichte so, dass das wirklich folgende Token wahrscheinlicher wird.

Die Techniken auf dieser Seite sitzen um diesen Schritt herum. Sie machen ihn auf großen Texten brauchbar, auf langer Eingabe bezahlbar und als Assistent benutzbar. Sie ersetzen ihn nicht. Was im Abschnitt Was sind LLMs als Kontextfenster, Ausrichtung oder Werkzeug beschrieben ist, hat hier eine konkrete Lücke.

Text in Token schneiden

Subword-Tokenizer und Byte-Pair-Encoding

Ein Subword-Tokenizer schneidet den Text in Stücke, die oft kürzer als ein Wort und länger als ein Buchstabe sind: eine häufige Endung, ein ganzes kurzes Wort, ein Satzzeichen. Byte-Pair-Encoding baut dieses Inventar, indem es immer wieder das häufigste benachbarte Paar von Zeichen zu einem neuen Symbol verschmilzt (Sennrich et al.: Neural Machine Translation of Rare Words with Subword Units, 2015 (extern) ).

Das hilft, weil ein Wort wie ein Name dann oft ein einziges Token ist und seltene Wörter trotzdem aus bekannten Stücken bestehen. Die Folge wird kürzer, das Kontextfenster fasst mehr Inhalt, und das Modell muss häufige Wörter nicht Buchstabe für Buchstabe neu entdecken. Hier ist jedes Zeichen ein Token. Das genügt, um zu zeigen, dass das Netz keine fertigen Wörter sieht.

Unbekannt-Token und Byte-Rückfall

Ein Unbekannt-Token ist eine eigene ID für ein Zeichen oder Wort, das beim Training nicht vorkam. Byte-Tokenizer gehen weiter: jedes beliebige Byte hat eine ID, unbekannter Text zerfällt in Bytes statt in ein einziges „weiß nicht“.

Das hilft, weil ein Produkt beliebige Eingabe annehmen muss, auch Tippfehler, andere Schriften und Zeichen, die in den Trainingsnamen fehlen. Hier entsteht das Vokabular aus den Zeichen der Datei. Ein Zeichen, das dort fehlt, hat keine Zeile in der Einbettung. Encode meldet den Fehler.

Eigenes Ende-Token und Fülltoken

Viele Modelle trennen den Anfang einer Folge, ihr Ende und das Auffüllen kurzer Folgen in einem Stapel. EOS sagt „hier hört der Text auf“. PAD belegt Plätze, damit mehrere Folgen dieselbe Länge haben, und wird in Attention und Verlust ausgelassen.

Das hilft, weil Anfang, Ende und „dieser Platz zählt nicht“ verschiedene Bedeutungen sind, und weil ein Stapel nur rechteckige Eingaben rechnet. Hier übernimmt eine ID, BOS, beide inhaltlichen Rollen: sie eröffnet jede Trainingszeile und beendet eine Stichprobe. Aufgefüllt wird nichts, weil ein Schritt eine einzelne Zeile ist.

Chat-Marken

Ein Chat-Format setzt besondere Token oder feste Textstücke um die Rollen: System, Nutzer, Assistent. Das Modell sieht dadurch, welcher Teil der Folge eine Anweisung ist und welcher Teil eine frühere Antwort.

Das hilft, weil dieselbe Next-Token-Vorhersage dann eine Antwort an der richtigen Stelle fortsetzt und nicht die Frage noch einmal schreibt. Hier gibt es diese Marken nicht. Eine Eingabe ist ein Namensanfang, kein Dialog.

Aufbau des Netzes

Relative Positionen, meist RoPE

Die Attention selbst sieht keine Reihenfolge. Die Position muss extra in die Vektoren kommen. Dieses Programm addiert eine gelernte Zeile je absoluter Position. Heutige Modelle drehen Query und Key mit der Position, oft mit Rotary Position Embedding: der Winkel hängt vom Abstand der beiden Positionen ab, nicht von einer festen Tabellenzeile.

Das hilft, weil „das Zeichen drei Schritte früher“ dieselbe Drehung bleibt, wenn die Folge länger wird als alles, was im Training vorkam. Eine gelernte Tabelle hat für Position 16 keine Zeile, wenn das Fenster bei 16 endet. Für die kurzen Namen reicht die Tabelle.

GELU und SwiGLU

Die Stelle zwischen den beiden Matrizen des vorwärtsgerichteten Netzes ist hier eine ReLU: negative Koordinaten werden 0, positive bleiben. GPT-2-artige Modelle nutzen GELU, eine glatte Schwelle. Neuere Modelle nutzen oft SwiGLU: eine zweite Matrix erzeugt ein Tor, und Tor und Wert werden multipliziert.

Das hilft, weil die glatte Schwelle und das Tor mehr Abstufungen zulassen als ein hartes An oder Aus, und weil das Tor Informationen ausblenden kann, ohne sie auf null zu schneiden. ReLU lässt die lokale Ableitung eine einzelne Ja-Nein-Entscheidung bleiben.

Bias-Vektoren

Ein Bias ist ein gelernter Vektor, der nach einer Matrix-Vektor-Multiplikation addiert wird. Er verschiebt die Ausgabe, auch wenn der Eingabevektor null wäre.

Das hilft, weil eine lineare Abbildung damit nicht durch den Ursprung muss. Manche neueren Modelle lassen den Bias trotzdem weg, weil die Normierung und die Einbettung die Lage des Stroms schon tragen. Dieses Programm hat an den Projektionen und an den Logits keinen Bias. Jede Ausgabe ist nur das Skalarprodukt mit einer Gewichtszeile.

Dropout

Dropout setzt beim Training zufällig einen Teil der Aktivierungen auf null und verstärkt die übrigen. Beim Ziehen bleiben alle Aktivierungen an.

Das hilft, weil das Modell sich nicht auf einzelne Koordinaten verlassen kann und die Gewichte auf mehreren Wegen zum selben Verlust kommen. Auf einer Liste von ein paar hundert Namen würde dasselbe Verfahren vor allem Rauschen in einen ohnehin kurzen Lauf mischen. Hier bleibt jede Aktivierung stehen.

Gruppierte Query-Attention

Volle Multi-Head-Attention gibt jedem Kopf eigene Query-, Key- und Value-Matrizen. Gruppierte Query-Attention teilt sich die Key- und Value-Köpfe über mehrere Query-Köpfe. Multi-Query-Attention geht bis zu einem gemeinsamen Key-Value-Paar.

Das hilft, weil der Speicher der bisherigen Schlüssel und Werte mit der Kontextlänge und der Kopfzahl wächst. Weniger Key-Value-Köpfe machen lange Folgen billiger, die Queries vergleichen weiter parallel. Hier hat jeder der vier Köpfe seine eigenen Schlüssel und Werte.

Breite, Tiefe und langes Fenster

Ein heutiges Modell hat Residualvektoren von Tausenden Koordinaten, Dutzende Schichten und ein Fenster von vielen tausend Token, trainiert auf einem großen Teil des öffentlichen Texts. Die Referenz hier ist Breite 16, eine Schicht, Fenster 16.

Das hilft, weil mehr Koordinaten mehr voneinander unterscheidbare Merkmale tragen, mehr Schichten diese Merkmale erneut mischen und ein längeres Fenster Abhängigkeiten über Absätze hinweg in die Attention lässt. Die Rechenmenge und die Datenmenge wachsen mit. GPT-3 ist dieselbe Art von Modell mit 175 Milliarden Parametern (Brown et al.: Language Models are Few-Shot Learners, 2020 (extern) ). Die Namensliste zeigt die Arbeitsweise bei einer Größe, die eine CPU in Minuten trainiert.

Wie trainiert wird

Stapel

Ein Stapel legt mehrere Dokumente nebeneinander und mittelt ihre Verluste zu einem Update. Die Gewichte bewegen sich in Richtung, die vielen Beispielen gleichzeitig dient.

Das hilft, weil ein einzelnes kurzes Dokument eine sehr laute Richtung vorgibt und die Hardware Matrizen erst auslastet, wenn viele Zeilen dieselbe Rechnung teilen. Hier ist ein Schritt ein Name. Der gedruckte Verlust springt deshalb von Zeile zu Zeile, auch während der Trend fällt.

Zurückgehaltene Prüfung

Eine Prüfung teilt die Texte vor dem Training. Ein Teil verschiebt die Gewichte, ein Teil wird nur gemessen. Der zweite Verlust zeigt, ob das Modell die Regel trifft oder die Trainingszeilen auswendig kann.

Das hilft, weil der Trainingsverlust bei genug Epochen auf einer kleinen Liste immer weiter fällt, auch wenn neue Namen schlechter werden. Hier gibt es diese Teilung nicht. Jede Zeile der gewählten Datei darf in die Updates eingehen. Ob ein Vorschlag in der Datei stand, sagt der Verlust nicht.

Aufwärmen, anderer Lernratenverlauf, Gradientenschranke

Die Lernrate steigt in großen Läufen oft erst über einige Schritte an und fällt dann kosinusförmig. Eine Gradientenschranke kürzt ein Update, dessen Ableitung eine feste Norm überschreitet.

Das hilft, weil die ersten Schritte auf zufälligen Gewichten sonst zu groß sind und ein einzelner Ausreißer die Gewichte sprengt. Hier startet Adam bei 0,01 und die Rate fällt linear bis zum letzten Schritt. Die Ableitung wird so verwendet, wie der Rückwärtspass sie liefert.

Daten, Parallelität und gemischte Genauigkeit

Produktmodelle trainieren auf sehr vielen Dokumenten, oft auf vielen Beschleunigern gleichzeitig. Dieselbe Rechnung läuft in halber Genauigkeit, wo die Werte es vertragen, und in höherer, wo Summen sonst verschwinden. Die Matrizen sind zu Blöcken verschmolzen, nicht zu einzelnen Multiplikationen aufgefächert.

Das hilft, weil die Qualität mit der gesehenen Textmenge steigt und die Wanduhr sonst bei Milliarden Parametern stehen bleibt. Der Skalargraph hier zeichnet jede Multiplikation einzeln auf, damit die Kettenregel lesbar bleibt. Dieselbe Kettenregel steckt in einer verschmolzenen Matrixmultiplikation.

Wie gezogen wird

Top-k, Top-p und gieriges Dekodieren

Die Temperatur 0.5 spitzt die Verteilung und zieht danach über alle Token. Top-k behält vor der Ziehung nur die k größten Wahrscheinlichkeiten. Top-p behält die kleinstmögliche Menge der wahrscheinlichsten Token, deren Summe mindestens p erreicht. Gieriges Dekodieren zieht nicht: es nimmt immer das Token mit dem größten Logit.

Das hilft, weil die lange Restmasse auf seltenen Token sonst unsinnige Fortsetzungen in den Text mischt, und weil eine gierige Folge für denselben Anfang feststeht. Hier kann jedes Token mit seiner Temperatur-Wahrscheinlichkeit kommen, auch ein sehr seltenes. Zwei Läufe ohne festen Seed unterscheiden sich schon deshalb.

Um das Modell herum

Instruktions-Tuning und RLHF

Instruktions-Tuning trainiert dasselbe Next-Token-Ziel auf Beispielen aus Anweisung und gewünschter Antwort. RLHF und seine Nachfolger bewerten ganze Antworten mit einem zweiten Modell oder mit menschlichen Vergleichen und verschieben die Gewichte in Richtung der bevorzugten Antwort (Ouyang et al.: Training language models to follow instructions with human feedback, 2022 (extern) ).

Das hilft, weil das reine Weiterschreiben von Internettext die Frage oft wiederholt oder offen lässt, während die zusätzliche Stufe Antworten bevorzugt, die der Anweisung folgen. Die Maschine bleibt eine Next-Token-Verteilung. Daten und Ziel ändern sich. Hier ist das Ziel nur der nächste Buchstabe eines Vornamens.

Retrieval

Retrieval sucht zu einer Anfrage Textstellen in einem äußeren Bestand und legt diese Stellen in das Kontextfenster. Die Gewichte bleiben stehen. Die nächste Vorhersage sieht den gefundenen Text wie jeden anderen Token.

Das hilft, weil das Modell Fakten verwenden kann, die nicht in den Gewichten liegen oder die sich nach dem Training geändert haben. Hier steht alles, was die Ziehung weiß, in den Gewichten und im aktuellen Anfang.

Werkzeugaufrufe

Ein Werkzeugaufruf ist ein Tokenmuster, das das Programm außen herum als Auftrag liest: eine Funktion ausführen, das Ergebnis als neuen Text in die Folge schreiben, und das Modell von dort aus weiterziehen lassen.

Das hilft, weil Rechnen, Suchen und Handlungen genau sein können, wo eine Wahrscheinlichkeitsverteilung nur ungefähr ist. Die Verteilung entscheidet nur, dass der Auftrag hingeschrieben wird. Hier gibt es keine Aktion außerhalb der Namensziehung.

Gedächtnis über das Fenster hinaus

Das Fenster ist die einzige Vergangenheit, die die Attention sieht. Ein Produkt speichert ältere Gespräche, fasst sie zusammen oder schiebt sie als neuen Text wieder in das Fenster.

Das hilft, weil ein Gespräch länger wird als das Fenster und der Nutzer trotzdem erwartet, dass frühere Festlegungen gelten. Hier endet die Vergangenheit bei 16 Positionen der laufenden Folge. Die nächste Eingabe beginnt mit leerem Cache.