16 Large Language Models
In diesem Kapitel behandeln wir die Transformer-Architektur, die einen Durchbruch in der Sprachverarbeitung mit Neuronalen Netzen darstellt. Der Transformer und seine resultierenden Technologien werden auch als Large Language Models (LLM) bezeichnet. Wir gehen insbesondere auf die auf Transformer basierenden GPT-Netze ein (Generative Pre-Trained Transformers), welche ein Beispiel for Decoder-Netze sind und auch die Grundlage für ChatGPT und ähnliche ChatBots ist.
Transfer Learning, Pre-Training, Finetuning, Transformer, Large Language Model, Attention, Self-Attention
16.1 Transfer Learning
Tranfer Learning bezieht sich auf die Idee, dass man Neuronalen Netzen eine Art Basiswissen über Sprache oder Bilder antrainieren kann (Pre-Training) und ein derart trainiertes Netz wiederverwenden kann, indem man ein solches Netz für eine spezifische Aufgabe weitertrainiert (Fine-Tuning). So kann man Ressourcen sparen und die Entwicklung auch solchen Instituten und Personen erlauben, die weniger Ressourcen haben.
Transfer Learning wurde zuerst in der Bildverarbeitung eingesetzt (Abschnitt 12.4.2) und später auch in der Sprachverarbeitung.
16.1.1 Pre-Training
Beim Pre-Training wird ein (wiederverwendbares) Basismodell auf einem enorm großen Datensatz trainiert (Abb. 16.1), um allgemeine Sachverhalte zu lernen. Dies hat hohe Kosten (Rechenleistung, Energieverbrauch) und das Training dauert auch relativ lang (Wochen oder Monate), natürlich abhängig von der eingesetzten Hardware.
In der Bildverarbeitung werden meistens Konvolutionsnetze (Kap. 10) auf großen Bilddatensätzen wie ImageNet vortrainiert, die Millionen von Bildern und Tausende von Klassen enthalten. Dieses Modell lernt allgemeine visuelle Merkmale und Muster, wie z.B. Kanten, Texturen und Objekte, durch eine Aufgabe der Bildklassifikation. Ziel ist es, allgemeine visuelle Repräsentationen zu lernen, die auf verschiedene Bildverarbeitungsaufgaben anwendbar sind.
In der Sprachverarbeitung werden meistens Transformer-basierte Netze auf großen Korpora von Textdaten vortrainiert, die aus verschiedenen Quellen stammen, wie z.B. Büchern, Artikeln und Webseiten. Dieses Modell lernt allgemeine Sprachrepräsentationen durch self-supervised learning, also Aufgaben wie autoregressive Sprachmodellierung (nächstes Wort vorhersagen, z.B. GPT) oder maskierte Sprachmodellierung (beliebig entnommene Wörter vorhersagen, z.B. BERT). Das Ziel ist es, ein tiefes Verständnis von Sprachstrukturen, Grammatik, Semantik und Kontextabhängigkeiten zu erlernen und im Netz zu speichern.
Im Pre-Training wird natürlich eine andere Aufgabe für das Training verwendet, da das Netz ja allgemein bleiben soll. Hier eine Auswahl der aktuellen Trainingsaufgaben im Pre-Training bei LLMs.
- Autoregressive Language Modeling
- Verwendet von GPT-3 (Brown et al. 2020)
- Aufgabe: Das nächste Wort (Token) in einem Satz vorhersagen, basierend auf den vorhergehenden Wörtern (Tokens).
- Beispiel: Aus dem Satz “Wie geht es dir?” würde man u.a. das Trainingspaar “Wie geht” und “dir” generieren.
- Masked Language Modeling (MLM)
- Verwendet von BERT (Devlin et al. 2018)
- Aufgabe: Ein Teil der Wörter (Tokens) in einem Satz wird zufällig entfernt (maskiert), das Modell hat die Aufgabe, diese entfernten Wörter (Tokens) vorherzusagen.
- Beispiel: In der Sequenz “Wie M1 es M2?”, wird das Modell darauf trainiert, M1 und M2 an den maskierten Positionen vorherzusagen.
- Next Sentence Prediction (NSP)
- Verwendet von BERT (Devlin et al. 2018)
- Aufgabe: Erkennen, ob zwei Sätze in einer Sequenz aufeinander folgen (binäre Klassifikation).
- Beispiel: Das Satzpaar (“Wie geht es dir?”, “Prima, und selbst?”) soll positiv klassifiziert werden, das Satzpaar (“Wie geht es dir?”, “Er ging aus dem Haus”) negativ.
Die obigen Beispiele sind Beispiele für self-supervised learning, d.h. die Daten müssen nicht gelabelt werden, sondern es werden Trainingsbeispiele (Eingabe und Label) automatisch aus den Daten generiert. Bei NSP zum Beispiel (binäre Klassifikation) werden als Positivbeispiele einfach Satzpaare entnommen, die hintereinander auftreten. Als Negativbeispiele werden zufällig Satzpaare zusammengestellt, die nicht hintereinander vorkommen. Dabei sollte die Anzahl der Negativbeispiele der Anzahl der Positivbeispiele entsprechen.
16.1.2 Fine-Tuning
Das Fine-Tuning nimmt das vortrainierte Modell und trainiert dieses auf der eigentlichen Aufgabe an (Abb. 16.1). Im Vergleich zum Pre-Training ist der Datensatz wesentlich kleiner und das Training dauert entsprechend weniger lang (z.B. eher Wochen oder Tage) und ist weniger Ressourcenintensiv (Rechenleistung, Energie).
In der Bildverarbeitung könnten spezifische Aufgaben sein: Objekterkennung, Bildsegmentierung oder spezifische Bildklassifikation (z.B. Personenerkennung). Das Modell passt sich an die spezifischen Anforderungen der Zielaufgabe an, wobei die bereits erlernten allgemeinen visuellen Merkmale dafür genutzt werden. Ein Netz zur Erkennung spezifischer Personen nutzt allgemeines Wissen über Gesichter, Frisuren etc. In der Bildverarbeitung werden häufig die allgemeinen Merkmale in den vorderen Schichten erlernt, so dass beim Fine-Tuning eher die hinteren Schichten angepasst werden, z.B. Schichten am Ende hinzugefügt werden. Diese Trennung kann entweder sehr klar sein (z.B. Basismodell wird beim Fine-Tuning “eingefroren”) oder eher graduell (unterschiedliche Lernraten oder Regularisierung in vorderen und hinteren Schichten).
In der Sprachverarbeitung könnten spezifische Aufgaben sein: Textklassifikation, Named Entity Recognition oder maschinelle Übersetzung. Das Modell passt sich an die spezifischen Anforderungen der Zielaufgabe an, wobei die bereits erlernten allgemeinen Sprachrepräsentationen genutzt werden. In der Sprachverarbeitung wird im Pre-Training oft das gesamte Netz trainiert und beim Fine-Tuning ebenfalls. Dabei gibt es natürlich Variationen. Bei BERT z.B. wird im Fine-Tuning dem Basismodell eine (einzige) weitere Schicht hinzugefügt.
16.2 Hintergrund
Wichtige Vorarbeiten für Transformer waren: Neuronale Sprachmodelle und Word Embeddings.
2015-17 Dominanz von rekurrenten Netzen in Form vom LSTM-Netzen in der Sprachverarbeitung
2017 kam das Paper Attention Is All You Need von Vaswani et al. (2017) aus den Google-Laboren heraus und führte zur Dominanz von Transformer-basierten Netzen. 2018 kam das Paper Universal Language Model Fine-tuning for Text Classification (ULMFiT) von Howard and Ruder (2018) heraus.
Abbildung 16.2 zeigt die Transformer-Architektur. Diese besteht aus einem Encoder-Teil (linke Hälfte) und einem Decoder-Teil (rechte Hälfte). Beide Teile werden in Anwendungen wie maschineller Übersetzung benötigt. Aber es gibt auch Anwendungen, wo nur ein Teil benötigt wird.
Hier ein Abriss der Entwicklungen nach 2017:
- 2017: Google stellt die Transformer-Architektur in dem Paper Attention Is All You Need vor (Vaswani et al. 2017)
- Juni 2018: OpenAI veröffentlicht GPT, ein Decoder-only Transformer mit beachtlicher Performance.
- Oktober 2018: Google veröffentlicht BERT, ein Encoder-only Transformer
- Februar 2019: GPT-2
- Oktober 2019: BART und T5
- Mai 2020: GPT-3
- November 2022: ChatGPT wird öffentlich und kostenlos bereitgestellt (basiert auf GPT-3.5)
- März 2023: GPT-4 wird veröffentlicht und über ChatGPT kostenpflichtig bereitgestellt
Siehe auch Kapitel 1 in HuggingFace (2022).
Wir haben mittlerweile drei Typen von Transformer-Netzen (Abb. 16.3):
- Encoder-only Transformer (insbes. BERT) sind besonders für Klassifikationsaufgaben geeignet, der Fokus liegt also darauf, den Input zu verstehen.
- Decoder-only Transformer (insbes. GPT-1 bis GPT-4) sind besonders für Textgenerierung geeignet, der Fokus liegt also darauf, möglichst guten Output zu generieren.
- Encoder-Decoder-Transformer (insbes. BART und T5) sind besonders für Übersetzung oder Summarization geeignet, wo sowohl Input-Verständnis als auch Output-Generierung im Vordergrund stehen.
16.2.1 Encoder-only Transformer (BERT)
Das erste Meilenstein-Paper für ein Encoder-only Transformer-Netz ist BERT (Bidirectional Encoder Representations from Transformers) von Devlin et al. (2018). Hier wurde insbesondere gezeigt, wie mächtig die Trennung von Pre-Training und Fine-Tuning ist (siehe Abb. 16.4).
Manchmal spricht man einfach nur von Encoder-Netzen. Neben BERT sind weitere bekannte Encoder-Netze:
- ALBERT
- RoBERTa (Robustly Optimized BERT Approach)
- DistilBERT
- ELECTRA
- ERNIE (Enhanced Representation through Knowledge Integration)
Siehe auch den linken Ast in Abb. 16.3.
16.2.2 Decoder-only Transformer (GPT)
Das erste Meilenstein-Paper für ein Decoder-basiertes Transformer-Netz ist GPT von Radford et al. (2018) mit dem Paper Improving Language Understanding by Generative Pre-Training von OpenAI. Es gab zwei Follow-Up-Paper: GPT-2 wurde in dem Paper Language Models are Unsupervised Multitask Learners von Radford et al. (2019) und GPT-3 in dem Paper Language Models are Few-Shot Learners von Brown et al. (2020) vorgestellt.
GPT steht für Generative Pre-Trained Transformer und bildet auch die Basis für ChatGPT, eine offene Web-Plattform, die seit November 2022 weltweit verfügbar ist. Das ursprüngliche ChatGPT basierte auf GPT-3.5. Zu GPT-3.5 sowie dem Nachfolger GPT-4 (März 2023) gibt es keine detaillierten wissenschaftlichen Veröffentlichungen von OpenAI.
16.2.3 Encoder-Decoder-Transformer (Sequence-to-Sequence-Modelle)
Einsatzzwecke: Maschinelles Übersetzen und Automatic Summarization.
Netze:
- BART
- T5
16.3 Transformer
Wie bereits erwähnt wurde die Transformer-Architektur 2017 von Google-Wissenschaftlern in dem Paper Attention Is All You Need vorgestellt (Vaswani et al. 2017).
16.3.1 Überblick
Die allgemeine Architektur haben wir in Abb. 16.2 gesehen; diese Abbildung stammt direkt aus dem Paper. Abstrakt teilen wir das System in den Encoder (linke Seite) und den Decoder (rechte Seite) wie in Abb. 16.5 gezeigt. Man kann sich die Verarbeitung wie folgt vorstellen. Da der eigene Output im nächsten Zeitschritt wieder als Input genommen wird, sagt man auch, dass das Netz autoregressiv arbeitet.
Der Input besteht aus einer Sequenz von Tokens in den den Encoder-Teil eingespeist werden. Der Encoder erzeugt eine Repräsentation für den Decoder. Der Decoder bekommt gleichzeitig frührere Outputs eingespeist. Der Output besteht aus einem einzigen, neuen Token.
Damit eine komplette Outputsequenz (also ein Satz oder mehrere Sätze) generiert wird, muss das erzeugte Token noch einmal ins Netz gespielt werden.
Betrachten wir ein einfaches Übersetzungsbeispiel. Der Eingabesatz ist
how are you
Die generierte Übersetzung ist
wie geht es dir
Das folgende Diagramm illustriert den Ablauf:
16.3.2 Input
Als Input bekommt der Transformer eine Sequenz von Tokens. Diese Tokens werden mit Hilfe von word embeddings enkodiert, die aus einem Pre-Training stammen (siehe Kapitel X). Bei den Transformern haben die Embeddings eine Dimension von 512.
Positional Encoding
- Problem: bei FC-Schichten geht die Reihenfolgeinformation verloren (Grafik?)
- Lösung: bei jedem Wort/Token wird eine Modifkation eingebaut, die die Position im Satz enkodiert
- Konkret: Vektor der Länge 512, der addiert wird
16.3.3 Self-Attention
Problem: Word Embedding ist statisch für jedes Wort, d.h. der Kontext spielt keine Rolle
Vergleiche die Bedeutung von “schlagen” in den Sätzen:
- Wir werden die gegnerische Mannschaft schlagen
- Ich schlage das Buch auf
- Wir haben uns die Nächte um die Ohren geschlagen
Die Idee ist, dass selbst innerhalb eines Satzes die Bedeutung eines Worts durch den Kontext (also durch die anderen Wörter) präzisiert wird. Technisch gesehen muss die word embedding, also die Position eines Worts im 512-dimensionalen Bedeutungsraum modifiziert werden.
16.3.4 Multi-Head Attention
16.3.5 Masked Multi-Head Attention
16.3.6 Training vs Inferenz
16.4 Transformer-Achitekturen und Checkpoints
In der praktischen Arbeit mit Transformern geht es meistens darum, ein vorhandenes Modell zu nehmen und direkt einzusetzen oder ein vortrainiertes Modell mit einem eigenen Fine-Tuning auf eine spezifische Aufgabe zu trainieren.
Im ersten Schritt überlegt man daher, welche Architektur - z.B. GPT, BERT oder T5 - für eine Aufgabe am besten geeignet ist. Im Prinzip unterscheidet man zwischen Encoder-only, Decoder-only oder Encoder-Decoder.
Da der Begriff Modell etwas ungenau ist, sprechen wir zusätzlich von Checkpoints. Ein Checkpoint definiert einen bestimmten Trainingszustand eines Modells. Nach dem Pre-Training hat man einen ersten solchen Checkpoint. Dann beginnt das Fine-Tuning und man erhält einen zweiten Checkpoint.
16.5 Weiterführende Pointer
16.5.1 Hugging Face: Plattform für Transformer und NLP
Hugging Face ist aktuell die wichtigste und reichhaltigste Plattform zum Thema Large Language Models und Transformer-Netzen mit vielen Ressourcen, Anleitungen und Videos.
Konkret kann man vortrainierte Modelle und sowie präparierte Datensätze dort herunterladen und ausprobieren.
Die Plattform ist bemüht, diese wichtige Technologie möglichst breit und offen verfügbar zu halten. Dabei werden meistens beide aktuell beliebten Frameworks PyTorch sowie Keras addressiert.
Aus dem Team von Hugging Face stammt auch das Buch Natural Language Processing with Transformers (Tunstall, von Werra, and Wolf 2022).
16.5.2 Literatur zum Thema
Der Artikel The Illustrated Transformer erklärt die Transformer-Architektur Schritt für Schritt mit sehr guten (teils animierten) Illustrationen. Meine Übersetzung des Artikels ins Deutsche finden Sie in Anhang D. Der Artikel Transformers from Scratch könnte für einige interessant sein, weil einige mathematische Aspekte etwas genauer beleuchtet werden.
Ein weiterer bemerkenswerter Artikel ist The Annotated Transformer der NLP-Gruppe der Universität Harvard. Er begleitet das originale Paper von Vaswani et al. (2017) mit Erläuterungen und PyTorch-Code.
In dem Buch Deep Learning with Python von Chollet (2021), also vom Erfinder von Keras, werden Transformer sehr schön in Kapitel 11 in Theorie und Praxis erklärt.
Das Buch Natural Language Processing with Transformers von Tunstall, von Werra, and Wolf (2022) kommt vom Team der Plattform Hugging Face und erläutert Technik und Anwendung.
16.5.3 Videos zum Thema
Andrej Karpathy zeigt, wie man ein kleines GPT-Netz “von scratch” baut in Let’s build GPT: from scratch, in code, spelled out. Interessant auch seine Anmerkungen zu Transformern im Interview mit Lex Fridman: Transformers: The best idea in AI.
Grant Sanderson erklärt auf seinem Kanal 3Blue1Brown gewohnt visuell das Konzept Attention und gibt einen Überblick über die Grundideen der GPT-Netze.