Auch wenn die LLMs selbst für ihre
Entwickler eine Black Box sind, kann es hilfreich sein, wenn man
wenigstens eine Grobvorstellung von dem hat, was darin ist. In ChatGPT und den anderen LLM (Large Language Models)?
Dankenswerterweise hat Herr Rau eine ausführliche Erklärung verfasst. Er erklärt es Schritt für Schritt. Dann folgen mehr oder minder genaue (und mehr oder minder verständliche) Einzelerläuterungen
Ein LLM wird mit dem Äquivalent von 100 Millionen Büchern an Text trainiert. Das Training geschieht erst automatisch, dann durch menschliches Feedback.
In jeder Decoder-Schicht wird jeder Eingangsvektor in beliebiger Reihenfolge verarbeitet.
Bei der Verarbeitung werden die 7.999 Nachbartoken ebenfalls berücksichtigt. Wie sehr und wie, das entscheiden der Q- und der V-Vektor des aktuellen Tokens und die 7.999 K-Vektoren der Nachbartoken zusammen. Die werden anhand trainierter Tabellen ausgerechnet. Das ist das eigentliche Kern der Sache.
Bei dieser Verarbeitung steht ein Neuronales Netz an letzter Stelle.
Nach der Verarbeitung entsteht wieder für jedes der 8.000 Token ein neuer Vektor der gleichen Größe.
Die Schritte 5 bis 8 wiederholen sich je Decoder-Schicht.
Das letzte Embedding des letzten Token wird in ein Neuronales Netz eingegeben, das 100.000 Ausgangsneuronen hat: für jedes Token im Wortschatz eines. Deren Werte heißen Logits.
Die Logits werden mit Softmax (normalisierte Exponentialfunktion) normalisiert, so dass man 100.000 Werte zwischen 0 und 1 hat, die für jedes Token im Wortschatz eine Wahrscheinlichkeit angeben.
Ein Algorithmus wählt aus diesen Werten ein Token aus, das das nächste generierte Token bildet.
Der Prozess beginnt von vorn.
Die Zahlen sind gerundet und geschätzt und gehen je nach Modell auch mal um den Faktoren zehn oder mehr nach unten, sind aktuell aber an der Obergrenze.
Ein Computerprogramm hat eine Textmenge zur Verfügung und sucht die jeweils wahrscheinlichsten Textverknüpfungen heraus: mit 1, 2, 3 und n-Wörtern. (N-Gramme)
Statt Wörtern verwenden die Large Language Models Tokens, das sind charakteristische Schriftbestandteile (meist Silben in Verbindung mit Zeichen davor oder danach), die mehr Informationen enthalten als Buchstaben, aber nicht so zahlreich sind wie Wörter.
Fortsetzung von hier. Ein leichteres Kapitel als das vorherige, in dem dennoch neue Wörter eingeführt werden, mit deren Hilfe sich der Autor vor den richtig schwierigen Sachen durch geschickte Gaukelei zu drücken versucht. Die schwärzeste aller Boxen bleibt ungeöffnet. Dafür wird es das nächste Mal dann sehr technisch.
Wir wissen aus den letzten Teilen, was N-Gramme und Token sind, wir wissen, was ein Embedding ist. Was Neuronale Netze sind, wissen wir wohl auch; die stecken nämlich überall in den LLM drin. Jetzt nähern wir uns den fieseren Sachen.
1. Allgemeines Vorgehen beim Erzeugen eines LLM
Die allgemeinen Schritte beim Erzeugen eines LLM sind folgende:
Daten sammeln und aufbereiten.
LLM-Architektur anlegen: Wie sieht das überhaupt aus - Eingangsschicht, Ausgangschicht, Encoder-Decoder-Transformer?
LLM trainieren, in mehreren Phasen:7
Mit großer Datenmenge Voraussagen üben. Dann ist schon mal ein basales LLM da.
LLM wird erzogen: Finetuning, Reinforcement Learning with Human Feedback.
Chatbot wird für Kunden angepasst
Chatbot nutzt externe Anwendungen, schlägt also intern und unbemerkt bei Wolfram Alpha nach.
Wenn ein LLM gelernt hat, in gegebenen Texten das jeweils nächste, oder auch ein in der Mitte fehlendes, Token vorherzusagen, dann kann man es auch dazu benutzen, neue Texte zu erzeugen. Dann wird das ein Chatbot.
Der interessante Schritt für mich ist 2, auf dem das Training 3.1 aufsetzt. Das geschieht relativ automatisiert. Der Schritt 3.2 ist schon auch wichtig, damit man mit dem Bot überhaupt so interagieren kann, wie man es gewohnt ist. Dieser Schritt arbeitet mit kleineren Datenmengen, aber mit viel menschlicher Interaktion. Das sind die vielen vielen unterbezahlten Arbeiter und Arbeiterinnen in Entwickungsländern, die das LLM erst zu dem machen, was wir kennen: Die Antworten des LLM werden durch Menschen bewertet, worauf sich das System nach und nach an die Bewertung anpasst, wie das Neuronale Netze nun einmal tun.
Schritt 1 ist gesellschaftlich wichtig: Wo kommen diese Daten, zum Beispiel Texte, aber auch Bilder, her? Man nimmt alle Texte der Welt als Input, derer man habhaft werden kann. In allen Sprachen, die man so findet. Mit Tippfehler oder ohne. Privat oder professionell, Programmcode oder Gedicht. Pornografisch oder nicht, gestohlen oder nicht. Instagramdirektnachricht oder Office365-Dokument. Hochgeladene Texte bei Chatbots. Alles, was irgendwie erreichbar ist. Am beste frische Daten, was die Leute auf Instagram oder Facebook oder sonst überall halt so schreiben. GPT4 soll auf einer Datenbasis von 13.000.000.000.000 Token trainiert worden sein, das sind etwa 100 Millionen Bücher voll.
2. Kontext
Kontext, das ist das Drumherum. Im Studium wurde gelegentlich, so glaube ich mich zu erinnern zwischen Kotext und Kontext unterschieden: Kotext, dass sind die Wörter drumherum; zum Kontext gehört die Redesituation und der Ort der Kommunikation und vieles mehr. Der Kontext, um den es in unserem Zusammenhang geht, sind aber immer nur die Wörter.
(Exkurs: "Glaube ich mich zu erinnern" - das feine Büchlein Lost World aus dem Jahr 2005 - Blogeintrag - sammelt Dinge, die uns verloren gegangen sind. Dazu gehört auch diese "glaube ich"-Floskel, die man 2005 ja einfach im Web durch eine Recherche überprüfen konnte. Möglicherweise kommt das wieder, weil man ja nichts mehr findet. Sicherheitshalber habe ich natürlich trotzdem geschaut, ob mich meine Erinnerung da nicht trügt.)
Bei LLMs ist der Kontext der vorangegangene Text, der bei der Erzeugung des nächsten Textteils mit berücksichtigt wird. Je nach System kann der Kontext zum Beispiel 30.000 Token lang sein. Das heißt, dass auf Grundlage der vorhergehenden 30.000 Token entschieden wird, welches Token als Nächstes drankommt. Länger zurück reicht das Gedächtnis der Maschine erst einmal nicht. Deshalb kann man sich sehr lange mit einem LLM-Chatbot unterhalten, bevor er den Anfang des Gesprächs vergisst. Und bei manchen Modellen ist der Kontext auch noch größer.
30.000, das ist aber schon recht viel. Das einfache GPT-4 hat einen Kontext der Länge 8.192, für mehr Geld kriegt man Zugang zu einem GPT-4 mit 32.768 Token Kontext. In den folgenden Grafiken gehe ich immer von einem Kontext der Länge 8.000 aus, weil das übersichtlicher.
Ich habe allerdings nicht wirklich versucht, ein Gespräch über so viele Token zu führen und danach nach meiner ersten Frage zu fragen, um zu schauen, ob die noch im Kontext ist oder nicht. Könnte man ja mal probieren.
3. Chunks und RAG
Weil 8.000 Token leichter verarbeitbar sind als längere Texte, werden eben jene längere Texte gerne in Chunks zerlegt. Das spielt zum Beispiel eine Rolle, wenn man ein LLM als Datenbasis benutzt.
Ein Szenario dazu sieht so aus: Ich lade bei GPT4All oder auch in ByLKI alle Deutsch-Kontaktbriefe der letzten 20 Jahre hoch, oder alle kultusministeriellen Schreiben. Diese Sammlung wünsche ich mir dann als Grundlage für Antworten auf meine Fragen, als Wissensdatenbank sozusagen, das Schlagwort dazu heißt Retrieval-Augmented Generation (RAG).
Die allgemeine Sprachfähigkeit, wenn man so weit gehen möchte, liegt im vortrainierten LLM, die konkreten Inhalte können aus den dem LLM bisher unbekannten Dokumenten der Wissensbasis kommen. (Wobei ich davon ausgehe, dass alle erreichbaren Kontaktbriefe und KMS ohnehin in den großen Modellen verwurstet sind, insofern sie ja online zugänglich waren.)
So konnen auf Grundlage einer allgemeinen Quasi-Sprachfähigkeit Fragen zu einer Bestimmten Textgrundlage beantwortet werden. Dazu werden die Texte, die ja vielleicht länger als der Kontext des LLM sind, in Chunks umgewandelt, die Chunks in Embeddings. Eine Frage an die Datenbank wird ebenfalls embedded und mit den embedded chunks verglichen; der Chunk, dessen semantischer Vektor dem Fragenvektor am nächsten kommt, wird als Kontext zusammen mit der ursprünglichen Frage an das eigentliche LLM weitergeleitet.
4. Alles bis auf das Wichtigste
4.1 Black Box 1
Es geht ein Chunk Text hinein in das System. Der besteht aus: dem Prompt, den vorangegangenen Prompts, versteckten Trainingsanweisungen, eventuell Material, das sich das LLM aus externen Quellen geholt hat, sowie der angefangenen Teilantwort darauf. Und es kommt 1 Token heraus, nämlich das nächste. Beim Training geht es darum, dieses nächste vorherzusagen, beim Generieren darum, eines zu produzieren. Wenn das Training erfolgreich war, ist die menschliche Nutzerin mit dem generierten Ergebnis zufrieden.
Nach diesem einen generierten Token wird eben dieses Token zum Eingangstext hinzugefügt, und der ganze Durchgang beginnt mit diesem erweiterten Input noch einmal von vorne. Danach wird das zweite generierte Token an den bereits erweiterten Input angefügt und bildet zusammen mit diesem den Input für den nächsten Zyklus, und das immer so weiter, bis ein Ende-Signal kommt oder eine maximale Tokenzahl erreicht ist.
Dieses wiederholte Wort-für-Wort erzeugen ist in den nächsten Grafiken nicht mehr dargestellt.
4.2 Black Box 2
Der Eingangstext wird est einmal in Token aufgeteilt. Siehe Blogeintrag.
Natürlich geht das Auswählen des nächsten Tokens nicht durch Nachschlagen der Wahrscheinlichkeiten von Bi-, Tri-, 4-, 5- und 40.000-Grammen in einer Tabelle. Es muss also anders gehen, nämlich mit einer Architektur aus Neuronalen Netzen. Die haben einer Nachschlagetabelle gegenüber den großen Vorteil, dass sie darauf trainiert werden können, Ähnlichkeiten zu erkennen, und damit eine größere Menge von Eingabedaten sinnvoll verwerten können. Details stecken in der inneren Black Box.
Der Input für die Black Box in der Mitte sind die 8.000 Token des Kontexts, also 8.000 Token in einer bestimmten Reihenfolge. Der Output ist eine Wahrscheinlichkeitsverteilung über alle Elemente des Wortschatzes des Modells. Das wahrscheinlichste Token wird jeweils als nächstes gewählt, abhängig von der Temperatur. Im Bild ist ein Token-Vokabular der Größe 100.000 angedeutet, andere Modelle haben vielleicht nur ein Vokabular der Größe 30.000.
4.3 Black Box 3
Die Eingangstoken erhalten ein berechnetes Embedding. Die Embeddings sind während des Trainings entstanden, auf eine Art, die prinzipiell vergleichbar ist mit der Art, wie sie im letzten Blogeintrag beschrieben ist. (Beim Training entsteht eine Matrix von Embeddings. Das Token wird in einen One-Hot-Vektor umgeformt, also mit lauter Nullen und einer einzigen 1 an der Stelle mit der Vektor-ID; dieser Vektor wird mit der Matrix multipliziert, das Ergebnis ist der Embedding-Vektor für dieses Token.)
4.4 Black Box 4
Frühere Modelle arbeiteten den Input sequentiell ab, also erst das erste Token des Kontexts, dann das zweite Token des Kontexts, und so weiter. Dann weiß das System ja automatisch, ob es gerade am ersten oder zweiten oder wievielten Token es arbeitet. Transformer-Verfahren bearbeiten alle Token des Kontexts unabhängig voneinander, also potentiell gleichzeitig, demnach parallel. Das ist gut, weil sich das Rechnen auf mehrere Computer verteilen lässt. Damit weiß das System aber erst einmal nicht, an welcher Position im Kontext sich das Token befindet. (Mehr dazu nächstes Mal.) Die Position ist allerdings semantisch wichtig, allein schon, weil in vielen Sprachen die Position von Subjekt und Objekt relativ fix ist und ein Wort am Anfang des Satzes etwas anderes bedeuten kann als am Ende: man bites dog. Deshalb wird das bisherige Embedding noch durch einen gelernten Positionsvektor modifiziert; dieser wird je nach System entweder addiert oder konkateniert, also hinten angehängt.
Der Positionsvektor kann absolut sein, also für das erste Element des Kontexts einen fixen Vektor, für das zweite einen fixen Vektor, für das dritte ebenso, und so weiter. -Dann geht es um die Position in der Sequenz. Oder er kann relativ sein, dann hängt der Wert ab vom Abstand zum aktuell untersuchten Token (aber jeweils mit einem festen Wert, also wenn das Training beendet ist, versteht sich).
Hier ein Diagramm, wie das Sprachmodell BERT (2018) vorgeht. Der Input besteht aus dem Text "alice follows the white rabbit follow the white rabbit neo" und SEPARATOR-Token dazwischen. Jedes Token erhält ein gelerntes Embedding, dazu ein (absolutes) Positionsembedding, und zusammengehörende Elemente in einem Segment erhalten ebenfalls ein Embedding, das das markiert.
Das Ziel ist, möglichst viel relevante Information in das Embedding zu packen, so dass die nachfolgenden Schichten damit arbeiten können. Andererseits: je ausführlicher das Embedding, desto mehr Rechenaufwand bei der Verarbeitung.
Tja: Jetzt sind wir an dem Punkt angelangt, an dem es schwierig wird. Wenn die Eingangsvektoren für die neue innere Black Box 10.000 Zahlen lang sind, und der Kontext nur 8.000 Token lang ist, dann besteht der Input für diese Black Box aus 80.000.000 Zahlenwerten, nur damit am Ende ein einziger Wert, die ID des nächsten Tokens herauskommt. Dazu brauchen wir Begriffe wie: Transformer, Encoder, Decoder, Attention. Puh.
Das war es dann aber auch weitgehend. Das Geheimnis der LLM ist tatsächlich, wie überzeugend es anhand des Trainings einen Kontext von 8.000 oder 40.000 Token benutzen kann, um das nächste Token vorherzusagen.
LLM Grundlagen, Teil 5: Die vorletzte Black Box – TransformerFortsetzung von hier. Es wird noch technischer als beim vorletzten Mal, ich bitte um Entschuldigung und Verständnis.
Das ist nun einmal die Ebene, die mich interessiert, nämlich die, auf der ich wenigstens einen Eindruck davon bekomme, was wirklich und nicht nur metaphorisch geschieht beim Auswerten eines Inputs und Erzeugen eines Texts. Respekt, wer das hier zu lesen versucht. Ich wiederhole mich mehrfach, finde das aber okay, das hilft mir zumindest beim Verstehen.
1. Überblick
1.1 Der Ausgangspunkt
Und zwar sind wir bei diesem Diagramm stehen geblieben:
Erweiterte Kontext-Vektoren gehen in die innere Black Box hinein (hier 8.000, weil der Beispielkontext so lang ist), eine Wahrscheinlichkeitsverteilung über die (im Beispiel) 100.000 Token des Wortschatzes kommt heraus. Je nach System kann der Kontext auch schon 30.000 Token oder mehr lang sein, oder der Wortschatz nur halb so groß. Es müssen natürlich nicht 8.000 Vektoren sein, der Kontext muss ja nicht voll ausgeschöpft werden.
1.2 Was metaphorisch geschieht
Jedes Token ist ja durch, in unseren Beispiel: 10.000 Zahlenwerte embedded. Diese Zahlenwerte werden in mehreren Durchgängen modifiziert, bis am Ende die 10.000 Werte des letzten Tokens darüber entscheiden, welches Token als nächstes generiert wird.
Nehmen wir als Input: „The dogs bark loudly.“ (Es gibt technische Gründe für die Unnatürlichkeit des Beispielsatzes.) Der Input sind ja eigentlich nicht diese Token, es geht hier nie um Token, sondern immer nur um deren Embedding, aber der Einfachkeit halber spreche ich hier ein Weilchen einfach von Token.
In jedem Durchgang wird jedes Input-Token mit allen anderen Input-Token verglichen. Nehmen wir zum Beispiel das Token „bark“, das hier also mit „The“, „dogs“, „loudly“ und „.“ verglichen wird. Das Token „bark“ sucht dabei besonders nach Token, die das Merkmal „Nomen im Plural“ und „ist ein Lebewesen“ tragen, oder auch „es geht um Bäume“, weil das ja auch „Baumrinde“ bedeuten kann. Das ist wie bei diesem Kartenspiel, wo man die anderen fragt: „Hast du eine Herz Sieben?“
Beim „.“ wird das „bark“ nicht fündig, bei „The“ nur ein wenig, aber als es zu „dogs“ kommt, schreit das sofort „biete Substantiv im Plural!“ und „biete Tier!“ Das ist das Zeichen für „bark“, dem Token „dogs“ besonders viel Aufmerksamkeit zu widmen.
Wenn für jedes Token ein Aufmerksamkeitswert ermittelt ist, geht es ans Modifizieren: das Token „dogs“ darf dann bestimmte Werte auf das Embedding von „bark“ übertragen, etwa Werte für „bin dein Subjekt“ und „es geht um Hunde“ und „du bist ein Verb und nicht etwa ein Substantiv“.
Beim nächsten Durchgang wird wieder jedes Input-Token modifiziert. Diesmal sucht „bark“ nicht mehr nach Bäumen. Ganz am Ende steckt dann im Embedding des letzten Tokens „.“ die Information „gerade eben haben Hunde laut gebellt“, und auf Basis dieses Embeddings wird dann das nächste Token vorausgesagt, möglicherweise: „They“.
1.3 Alberner Exkurs
Und tatsächlich: Wenn ich den Prompt „Continue the sequence ‚The dogs bark loudly.‘ with one token.“ eingebe, gibt mir der Chatbot „They“ aus.
> Continue the sequence "The dogs bark loudly." with one token. They
> Continue the sequence "The dogs bark loudly. They" with one token. are
> Continue the sequence "The dogs bark loudly. They are" with one token. running
> Continue the sequence "The dogs bark loudly. They are running" with one token. in
> Continue the sequence "The dogs bark loudly. They are running in" with one token. the
> Continue the sequence "The dogs bark loudly. They are running in the" with one token. yard.
Na gut, am Ende waren das zwei Token, und auch „running“ sind vermutlich zwei.
> Continue the sequence "The dogs bark loudly. They are running in the" with one token. Turn the temperature up really high. dust.
Interesting…
> Continue the sequence "The dogs bark loudly. They are running in the" with one token. Turn the temperature up as high as possible. void.
Das könnte ein reizvolles Spiel werden. Aber das bildet natürlich nicht wirklich innere Vorgänge ab, weil der Prompt ja nicht wirklich nur aus diesen Token besteht.
1.4 Das Geheimnis Enthüllt
Ab jetzt nicht mehr metaphorisch.
In der Black Box ist eine Reihe von Decodern. Decoder gehören zum Transformer-Modell, das die Entwicklung ab 2017 revolutionierte, auch wenn die Idee an sich älter ist. Zuvor arbeitete man mit einem anderen System (RNN), das aber Nachteile hatte, die mit etwas, das sich Attention nannte, halbwegs ausgeglichen werden konnten. Dann stellte sich heraus, dass man ohne RNN und nur mit Attention auch auskommt, und die moderne Transformer-Struktur entstand, auf der nicht alle, aber doch die bekannten modernen LLM basieren.
Ein Transformer besteht eigentlich aus mehreren Encoder-Schichten gefolgt von mehreren Decoder-Schichten. Für das Generieren von Text, anders als bei der maschinellen Übersetzung, verzichten die meisten Systeme, wie zum Beispiel GPT, auf die Encoder-Schichten, deshalb beschränke ich mich im weiteren Verlauf – von einem als solchen Exkurs abgesehen – auf Decoder.
Neu am Transformer-Modell ist, dass diese 8000 Eingangsvektoren aus dem Bild oben nicht wie den Modellen zuvor sequentiell, also nacheinander, abgearbeitet werden müssen, sondern parallel verarbeitet werden können. Das ist praktisch fürs Rechnen mit mehreren Computern.
Alle 8.000 Vektoren werden also verarbeitet und dabei modifiziert; die Berechnungen dazu laufen im Prinzip unabhängig voneinander. Aber jede Modifizierung eines einzelnen Vektors ist abhängig von den jeweils anderen 7.999 Vektoren des Kontexts.
Jeder einzelne der 8.000 Vektoren wird also nach diesem Prinzip durch einen Decoder modifiziert, bis bis man am Ende wieder 8.000, jetzt: neue, Vektoren hat, weiterhin für jedes Token einen. Deren ursprüngliches Embedding ist jetzt aber durch den Kontext angereichert. Mit diesen angereicherten Vektoren wird dann weiter gearbeitet.
Und zwar gehen sie in einen weiteren Decoder. Und noch einen. Und noch einen. Insgesamt 8 oder 96 oder 120, je nach System.
Ich habe versucht, das im Bild zu zeigen:
Die 8.000 Vektoren bilden zusammen den Input in einen Decoder.
Im Decoder werden die 8.000 Vektoren abgearbeitet.
Jeder Vektor wird verändert, und zwar beeinflusst durch die anderen 7.999 Vektoren.
Am Ende des Durchgangs hat man wieder 8.000 Vektoren.
Und diese gehen dann in den nächsten – nicht noch einmal denselben! – Decoder
Die Größe der Vektoren ist dabei beim Eingang in den und Ausgang aus dem Decoder immer gleich.
Auf Grundlage des Embedding-Vektors des letzten Tokens wird dann eine Wahrscheinlichkeitsberechnung über dem Wortschatz erstellt.
Es folgt ein Exkurs zu Transformern, blau markiert im Blog den kann man gerne überspringen und bei Punkt 3 weiter machen.
2. Exkurs: Transformer
2.1 Der volle Transformer
Die folgende Grafik zeigt die ursprüngliche, inzwischen noch etwas verbesserte, vollständige Transformer-Architektur:
Man sieht: Links unten geht eine Sequenz hinein, die wird in Embeddings umgewandelt, dazu kommt Positions-Embedding; dann beginnt die Black Box, und rechts oben kommen Vorhersagen heraus.
Die Grafik zeigt die prinzipiellen Elemente oder Schichten; neu sind die eingekastelten Blöcke in der Mitte, unsere bisherige Black Box:
Tokenizer-Schicht (zum Beispiel byte pair encoding, siehe Blogeintrag)
Embedding-Schicht (Tabelle + Position, siehe Blogeintrag und Blogeintrag)
Transformer-Schichten, bestehend aus mehreren Encoder-, gefolgt von mehreren Decoder-Schichten. LLMs bestehen oft nur aus Decoder-Schichten, Encoder braucht man vor allem für andere Aufgaben. Dazu später mehr.
Un-embedding-Schicht (die Wahrscheinlichkeitsverteilung, ganz am Ende)
Der linke gelb eingerahmte Block, das ist ein Encoder. Der rechte eingerahmte Block, das ist ein Decoder. Üblicherweise sind bei Transformern mehrere Encoder hintereinander geschaltet, und danach mehrere Decoder. Es kann zum Beispiel 6 oder 12 oder 24 Encoder-Schichten (Layer) geben, gefolgt von 6 oder 12 oder noch viel mehr Decoder-Schichten, größenordnungsmäßig. Manche Modelle benutzen die volle Encoder-Decoder-Struktur, andere sind encoder-only oder decoder-only.
Die Encoding-Schichten übersetzen zum Beispiel einen englischen Eingangstext in viele Zahlenwerte, also eine interne und abstrakte Repräsentation des Eingangstexts. Die Decoding-Schichten übersetzen Zahlenwerte dan zum Beispiel in Deutsch oder Französisch. Das ist eine Art, wie maschinelle Übersetzung funktioniert. Aber dieses Transformer-Prinzip funktioniert nicht nur mit Text als Input, sondern auch mit Pixeln oder Audiomaterial.
2.2 Blick hinein: Encoder und Decoder hintereinander
Das Bild zeigt vereinfachte Transformer-Einheiten. Vereinfacht, weil im Gegensatz zum Bild oben die Normalisierungs-Zwischenschritte fehlen, deren Position für die Effizienz wichtig ist und die sich im Vergleich zu dem ursprünglichen Modell verändert hat.
In der linken Hälfte der Grafik sieht man einen Überblick:
Es gibt erstens beispielhaft 6 Encoder-Schichten. Die erste Schicht arbeitet mit den oben erwähnten Eingangs-Vektoren und gibt das Ergebnis, modifizierte Vektoren, an die nächste Encoding-Schicht weiter, und die macht das ebenso. Am Ende der Encoding-Schicht steht eine interne Repräsentation des Eingabetexts in Form vieler Zahlenwerte, sozusagen die Bedeutung des Inputs.
Es gibt zweitens beispielhaft 6 Decoder-Schichten. Jede Schicht erhält als Input a) das feststehende Ergebnis der Encoding-Schicht, und b) das Ergebnis der vorhergehenden Decoding-Schicht. (Bis auf die erste Decoder-Einheit, die ja noch keinen Vorgänger hat. Wir reden nicht darüber, okay?)
In der rechten Hälfte der Grafik sieht man Details:
Eine Encoder-Schicht. Die nimmt 1 Input entgegen und besteht aus 2 Elementen oder Teilschichten, der blauen und der gelben Box. Es gibt 1 Output.
Eine Decoder-Schicht. Die nimmt 2 Inputs entgegen und besteht aus 3 Elementen oder Teilschichten, den roten, blauen und gelben Boxen. Es gibt 1 Output.
Die gelben Schichten, das sind jeweils Neuronale Netze, ganz so, wie man sie in der Schule kennenlernt.
2.3 Blick hinein: Eine Encoder- und eine Decoder-Schicht
Das nächste Bild zeigt das auf die einfachen Teilschichten reduzierte Modell: Eine Encoder-Schicht, eine Decoder-Schicht. Sequenzierung und Embedding und Un-Embedding sind weggelassen. Die Encoding-Schicht hat als Eingang den vollständigen vektorisierten Eingangstext; die zwei Eingänge der Decoding-Schicht erhalten a) das Ergebnis der Encoding-Schicht und b) das Ergebnis der vorhergenden, hier nicht gezeigten, Decoding-Schicht.
Was ein Encoder macht und was ein Decoder macht, das wissen wir immer noch nicht, das müssen wir auch noch nicht wissen; ich nähere mich langsam.
2.4 Modelle nur mit Encoder- oder Decoder-Schichten
Es gibt manche Modelle, die bestehen praktisch nur aus Encoder-Schichten. BERT ist so eine Familie von Sprachmodellen, die nur aus Encodern besteht. In den Encoder-Schichten wird der Input, also zum Beispiel Text, in noch mehr Zahlenwerte als bisher encodiert, die immer mehr relevante Information enthalten. Das Encoding ist vor allem wichtig, lese ich, wenn mit den Zahlenwerten unmittelbar gearbeitet wird, bei Klassifizierungsaufgaben etwa, oder sentiment analysis. Aber dafür kann man BERT nicht prompten; BERT ist nicht zur Texterzeugung da. Google nutzt oder nutzte ab 2019 BERT, um Suchanfragen auszuwerten.
Die Aufgabe der Decoder-Schichten ist es, aus Zahlenwerten einen Output zu erzeugen. Einen neuen Text etwa, also eine Fortführung des bisherigen Textes oder eine Übersetzung in eine andere Sprache.
GPT besteht nur aus Decoder-Schichten, die auf den Eingangsvektoren arbeiten. Der Grund, heißt es, dass das weniger Aufwand ist. Für kleinere Modelle ist eine Encoder-Decoder-Struktur besser, für richtig große zwar auch, aber der Abstand wird ausgeglichen durch den enormen Zuwachs an Leistungsfähigkeit insgesamt ab einer gewissen Größe. (Mehr dazu.) Der Bezeichner „Decoder-only“ ist insofern irreführend, als der Input natürlich schon encodiert ist und immer weiter encodiert wird, aber halt innerhalb der Decoding-Module.
3. Die Decoder-only-Schichten des LLM
Das nächste Bild zeigt eine Decoder-only-Architektur, wie sie bei LLMs wie GPT eingesetzt wird. Der Vorgang beginnt unten mit dem Input, unseren 8.000 Token Kontext, die im roten Kästchen ihr Anfangsembeddings erhalten und die danach mit Positionsembedding ergänzt werden.
Dieser Haufen von 8.000 Vektoren ist der Input für den Decoder-Block, das ist der große graue Kasten, der am Ende auch wieder einen Haufen von 8.000 modifizierten Vektoren an nächsten grauen Decoder-Block weitergibt. Der Fachausdruck für Haufen ist Matrix.
Diese modifizierten Vektoren heißen auch „hidden states“, falls einem der Begriff mal begegnet; das sind sozusagen die ganzen Zwischenergebnisse, die auf dem Weg zum Endergebnis anfallen, und mit denen die Decoder arbeiten. Ihre Größe, also die Anzahl an Zahlen im modifizierten Embedding, ist je nach LLM unterschiedlich, aber in der Regel immer konstant; die Vektoren werden also immer wieder modifiziert, haben aber stets die gleiche Größe von, sagen wir, 10.000 Zahlenwerten.
Für die Größenordnung: GPT4 (decoder-only) soll insgesamt solche 120 Decoder-Schichten haben. Je Schicht werden 8.000 Vektoren nach und nach verarbeitet, jeder Vektor besteht aus 10.000 Zahlen. Wer mehr bezahlt, kriegt auch Modelle mit mehr Kontext und anderen Werten.
Am Ende wird das Embedding nur des letzten Tokens als Input für ein letztes Neuronales Netz herangezogen (das ist der grüne Linear-Block oben). Dieses Netz erzeugt daraus einen neuen Vektor, der so groß ist wie der Wortschatz des LLM und für alle möglichen Token im Wortschatz Rohwerte angibt („Logits“), die proportional zur Wahrscheinlichkeit für dieses Token sind. Der Softmax-Block am Ende, der eigentlich ganz einfach ist, normalisiert diese Logits auf Größen zwischen 0 und 1 und heißt auch „normalisierte Exponentialfunktion“ und ist für das Prinzip nicht so wichtig. Dann schaut man im einfachsten Fall nach, welches Token der Position des höchsten Wertes im Ergebnisvektor entspricht, und das ist dann das nächste Token. (Tatsächlich könnte der Algorithmus noch etwas komplizierter sein, und auch die Temperatur spielt hier eine Rolle.) Ich habe versucht, diese letzten Schritte hier zu illustrieren:
Aber vielleicht ist es noch einfacher, den gesamten Vorgang noch einmal im Diagramm zu betrachten. Im nächsten Bild wird (1) der Kontext „The dogs bark loudly.“ (2) in Token zerlegt, (3) deren ID ermittelt, (4) deren Anfangs-Embedding nachgeschlagen, (5) die Position ergänzt, und das ganze dann (6.1 bis 6.3) in 3 Decoder geschoben und am Ende (7 – 9) ausgewertet: (10) Das nächste Token ist „They“ und die Runde kann jetzt mit „The dogs bark loudly. They“ wieder von vorne beginnen.
Wichtig: Der blaue Pfeil verfolgt die Berechnung des dritten Tokens. Genau das gleiche geschieht auf dieser Schicht aber auch parallel mit den anderen Token, man müsste also noch auf jeder Schicht vier weitere bunte Pfeile und 16 gestrichelte Pfeile ergänzen, aber dann wird es unübersichtlich.
Jetzt bleibt nur noch zu klären, wie so ein Decoder funktioniert.
4. Überblick: Die Decoder-Schicht
Ein Decoder-Modul besteht – siehe das Diagramm oben – aus zwei Untermodulen: a) Masked Multi-Head (Self-, nicht Cross-) Attention gefolgt von b) einem Neuronalen Netz (das ist das Feed Forward). „Norm“ steht für Normalisierung und interessiert uns jetzt nicht.
4.1 Das Untermodul Attention
Attention, Aufmerksamkeit, heißt: Manche Elemente des Inputs sind wichtiger als andere, und zwar um eine bestimmte Größe. Diese zwei Aspekte verfeinern den Input also und betonen die relevanten Aspekte darin. Das ist das Interessanteste und Neue und wird weiter unten und im nächsten Eintrag ausführlicher erklärt. Attention bestimmt, welche Elemente im Kontext wichtig sind, und verändert Vektoren in Abhängigkeit davon.
4.2 Das Untermodul Feed Forward
Das Neuronale Netz (das ist mit Feed Forward gemeint) verarbeitet dann diese Information, entscheidet sozusagen, was damit gemacht wird. Diese Entscheidungen sind, wie es bei Neuronalen Netzen allgemein der Fall ist, nicht mehr nachvollziehbar. Es geschieht etwas mit dem Eingangsvektor. Mehr weiß ich im Moment nicht.
Das Neuronale Netz hat in der verdeckten Schicht größenordnungsmäßig viermal so viele Knoten wie jeweils beim Input und Output. Input und Output, das ist die aktuelle Embedding-Größe d_model, der hidden states size, in unserem Beispiel 10.000. Bei dieser Embedding-Größe hat das Neuronale Netz dieser Decoding-Schicht demnach 40.000 Knoten in der verdeckten Schicht. Diese Zahl ist es, wenn man von „intermediate size“ oder „filter size“ oder „feedforward size“ spricht.
5. Überblick: Das Aufmerksamkeits-Untermodul
Das Prinzip hier heißt Masked Multi-Head (Self-) Attention. Diese Begriffe verwirren erst einmal, deshalb erkläre ich sie etwas ausführlicher; sie sind dann gar nicht so schwer zu verstehen, bis auf den ersten.
„Attention“
Bestimmte Elemente des Eingangs werden stärker gewichtet als andere. Welche? Und wie stark? Das sind genau die Fragen, die in diesem Untermodul geklärt werden. Self-Attention heißt dabei, dass nur der eigene Input ausgewertet wird. (Beim Standard-Transformer-Modell mit Encodern gibt es im Decoder nämlich außerdem ein zusätzliches Untermodul Cross-Attention, was heißt, dass der eigene Input und der Encoder-Input ausgewertet werden. Aber separate Encoder-Module gibt es bei uns ja keine, weil wir uns nur Texterzeugung und nicht Übersetzung anschauen.)
„Masked“
Beim Training heißt das, dass das LLM nicht schummelt, sondern nur alle Token vom Anfang des Inputs bis zur vorherzusagenden Lücke auswertet und nicht etwas die darauf folgenden Token. Es geht zum Beispiel darum, die Lücke in „Der Einbrecher öffnete den ______________ schnell, weil er die Kombination wusste“ zu schließen, ohne das hilfreiche „Kombination“ zu verwenden, sondern nur die vier Wörter vor der Lücke. (Tatsächlich wird der Input länger sein und es nicht nur um diesen einen Satz gehen.) Technisch geschieht das, indem der Aufmerksamkeitswert für nachfolgende Token auf 0 oder etwas entsprechendes gesetzt wird.
Beim Erzeugen von Text mit dem fertig trainierten Modell heißt das mit dem „masked“ nicht viel.
„Multi-head“
Die für die Attention zuständigen Elemente heißen Head, also Lesekopf. Ein Head durchsucht den Input nach Auffälligkeiten und gewichtet sie und gibt die Ergebnisse weiter an das nächste Submodul, das Neuronale Netz. Multi-Head heißt, dass mehrere Heads parallel und unabhängig voneinander arbeiten und deren Ergebnisse dann kombiniert werden. Mir reicht es aber völlig, wenn wir verstehen, wie ein einzelner Head funktioniert, und selbst das erst im nächsten Blogeintrag dazu. Wie viele Heads gibt es pro Schicht? Bei kleinen Modellen vielleicht 8, bei großen 100 oder mehr.
6. Ausblick
Ein letztes Mal: Es gehen 8000 Vektoren in das Aufmerksamkeitsmodul hinein. Die werden in beliebiger Reihenfolge einzeln verarbeit, was gut für Parallelisierung ist, also das Verteilen der Arbeit auf mehrere Rechner. Die Reihenfolge kann deshalb beliebig sein, weil die Information darüber, ob das Token, dessen Vektor gerade bearbeitet wird, vorne oder hinten im Kontext steht, ja durch das Positionsembedding irgendwie verwertbar gemacht wird. Bei jeder Verarbeitung eines Vektors spielen die anderen 7.999 Vektoren eine Rolle, und zwar eine unterschiedlich große – je nachdem, wie viel Aufmerksamkeit sie erhalten.
Wir wissen also: Ein Lesekopf verarbeitet einen Inputvektor unter Berücksichtigung der anderen Vektoren im Kontext; genau genommen nicht nur einer, sondern mehrere Leseköpfe; und das Ergebnis geht an ein Neuronales Netz, das Dinge damit macht.
TFA (Trifluoressigsäure) reichert sich unbegrenzt an und schädigt langfristig Kinder in der Schwangerschaftsphase. Trotzdem wird es noch in Autoklimaanlagen eingesetzt, und das, obwohl es inzwischen Nachweisbar in Pflanzen und in 49 getesteten Weinen in Europa nachgewiesen wurde.
Ich werde mich bemühen, noch seltener mit Google zu "suchen/googlen". Gegenwärtig suche ich meist mit https://www.ecosia.org/search? und wechsle nur dann zu Google, wenn die Ecosiasuche erfolglos war. Oft findet dann auch Google nichts Passendes.
"Googles Paradigmenwechsel
Mit der Einführung des AI Mode in der Google-Suche markiert der Konzern eine strategische Zäsur: Statt zehn blauer Links tritt nun ein KI-generierter Antwortblock in den Vordergrund. Nutzer erhalten direkt in der Suchmaske vollständige Antworten auf komplexe Fragen, oft ohne Klick auf eine externe Website.
Für Google bedeutet das eine tiefgreifende Reorganisation seines Geschäftsmodells. Für die Anbieter der Inhalte bringt der Strategiewechsel eine massive strategische Herausforderung.
Holger Schmidt
Verantwortlicher Redakteur für Newsletter und Verticals.
Inhalteanbieter verlieren Sichtbarkeit und Kontrolle. Ihre Inhalte bleiben zwar die Grundlage für KI-generierte Antworten, doch der Google-Traffic fällt weg. Die klassische Logik des offenen Webs – Inhalte gegen Reichweite und Werbeeinnahmen – wird durch eine Logik der Plattformintermediation ersetzt. Wer nicht als Quelle sichtbar bleibt, verliert Relevanz und Monetarisierungspotenzial. Zugleich wachsen die Abhängigkeiten: Um überhaupt noch Reichweite zu erzielen, müssen sich Verlage stärker als je zuvor in Googles Ökosystem integrieren, zum Beispiel mit strukturierten Daten oder der Teilnahme an Partnerprogrammen.
Die Branche der Suchmaschinenoptimierer steht vor einem Paradigmenwechsel. Klassisches Optimieren auf Schlagworte verliert an Wirksamkeit, wenn Google die Suchintention eigenständig antizipiert und Nutzer gar nicht mehr zu Webseiten weiterleitet. Künftig wird es wichtiger sein, Inhalte so zu strukturieren, dass sie in den KI-Antworten als relevante Quellen auftauchen, auch wenn dies kaum nachvollziehbar oder beeinflussbar ist.
Strategisch verändert sich der Suchmarkt grundlegend. Google versucht, sich selbst zu kannibalisieren, bevor es andere wie OpenAI, Perplexity oder You.com tun Der AI Mode ist Googles Versuch, den Paradigmenwechsel von Navigation zu Information, von Linkverzeichnis zu Antwortmaschine, selbst zu steuern. Der Konzern verteidigt damit seinen Zugang zu Nutzerdaten und zur Werbevermarktung – auch wenn er kurzfristig eigene Suchanzeigen kannibalisiert. Langfristig könnte sich ein neues Plattformregime herausbilden, bei dem Inhalte nur noch dann Sichtbarkeit bekommen, wenn sie in AI-Antworten eingespeist werden – kontrolliert, gewichtet und bewertet von einer Handvoll dominanter KI-Plattformen." Frankfurter Allgemeine Pro DIGITALWIRTSCHAFT 21.5.25
Ursprünglich befanden sich offene Herdstellen im Freien oder in Gebäuden oder Zelten, als flache Gruben, zwischen Steinen oder auf einer Lehm- oder Steinplatte. In der Ausgrabungsstätte um die Klissoura-Höhle 1 in der Ebene von Argos im nordwestlichen Peloponnes haben Archäologen 23.000 bis 34.000 Jahre alte Tonherde der Aurignac-Kultur gefunden.[3] Die Entdeckung hilft, den Übergang von den ältesten bekannten Herden aus Stein zu den Tonkonstruktionen, wie jenen von Dolní Věstonice in Tschechien, zu erklären. Viel später kamen aufgemauerte Sockel hinzu, die im Mittelalter etwa Tischhöhe erreichten. Gebraten wurde auf Rosten oder an Spießen, gekocht mit Kesseln, die an Kesselhaken über dem offenen Feuer hingen oder auf Dreibeinen standen. Mit der Einführung des Rauchfangs rückte die Herdstelle an die Wand. Eine wesentliche Weiterentwicklung des ausgehenden Mittelalters stellte der gemauerte Potager dar.
Im Jahr 1735 entwickelte François de Cuvilliés der Ältere für die Amalienburg im Schlosspark Nymphenburg mit dem Castrol-Herd (oder Topfherd, von frz. Casserole, Kochtopf) den ersten voll ummauerten Kochherd mit durchlöcherter Eisenplatte, auf der die Töpfe standen, und einem Rauchfang. Das tägliche Löschen des Herd- und Ofenfeuers wurde im 18. Jahrhundert in vielen deutschen Kurfürsten- und Fürstentümern zu bestimmten Abendstunde vorgeschrieben.[4]
Seit dem Ende des 18. Jahrhunderts gibt es echte Kochherde mit vollständig geschlossenem Feuerraum und eisernen oder kupfernen Herdplatten mit Öffnungen über dem Feuer, in die Töpfe und Kessel eingesetzt wurden. Durch den Einbau von Rosten für die Feuerung und Klappen zum Verschließen der Feuerkammer entwickelten sie sich zu Sparherden, die das Brennmaterial, in der Regel Steinkohle, wesentlich besser ausnutzten. Für verschiedene Topfgrößen konnten die Löcher der Herdplatte mit verschiedenen Ofenringen angepasst werden. Sparherde verfügten meist auch über einen Backofen, einen Tank für Warmwasser – Wasserschiff genannt – und einen Wärmeschrank. Die Entwicklung des Sparherds geht maßgeblich auf den Physiker Benjamin Thompson zurück, der mehrere Modelle in München entwickelte und nach seinen Anleitungen bauen ließ. Bekannt wurde der Rumford-Herd, ein energiesparender Küchenherd, der nur halb so viel Brennstoff verbrauchte wie die noch weithin üblichen offenen Herde. Diese Herde wurden zunächst vorwiegend in Volksküchen eingesetzt. Ab dem Jahr 1817 wurden die Sparherde auch als Kochmaschine weiterentwickelt und beschrieben.[5]
Waren die früheren Herde noch gemauert, so kamen Mitte des 19. Jahrhunderts die ersten Herde aus Metall auf den Markt. Eine Entwicklungsstufe dieser Zeit war die sogenannte Kochmaschine, auch als Stangenherd oder im Volksmund als Küchenhexe bekannt. Dies war eine Herdversion mit verschiedenen innenliegenden Feuerrosten, durch Wärmezüge zu den Kochstellen geleitete Hitze, Heißwasserbereitern, verschiedenen Backröhren und Backöfen und durch Herdringe in der Größe verstellbare Feuerstellen. Mit Anfangs hohen Beschaffungskosten waren zuerst wohlhabende Leute in der Lage, sich derartige Herde zu leisten; in Deutschland setzten diese sich ab 1860 mit sparsamen und ausgereiften Modellen durch. Zu dieser Zeit wurden auch die ersten Puppenherde gebaut; diese verkleinerten Nachbildungen eiserner Feuerherde waren in wohlhabenden Familien ein beliebtes Spielzeug. Einfachere Versionen gehörten bald zur Normalausstattung in Mietskasernen (z. B. in Berlin) des späten 19. Jahrhunderts.
Schon zu Anfang des 19. Jahrhunderts gab es erste Versuche mit gasbefeuerten Herden, allerdings war eine sinnvolle Verwendung an die Verbreitung eines ausreichenden Gasnetzes in den Städten gekoppelt. Auf der Industrieausstellung in London wurde 1851 der erste transportable eiserne Herd gezeigt, der seit den 1860er Jahren in Deutschland serienmäßig hergestellt wurde. Die Herdplatte hatte mehrere herausnehmbare Ringe, die Töpfe wurden in die Öffnung eingehängt. Im ländlichen Raum blieben diese Herde bis weit ins 20. Jahrhundert hinein in Gebrauch. Auf der Weltausstellung 1893 in Chicago wurde der erste Elektroherd vorgestellt, allerdings dauerte es bis 1930, bis dieser sich allgemein verbreiten konnte, was auch seinen Grund in der für derartige Herde notwendigen Infrastruktur hatte.
In der zweiten Hälfte des 19. Jahrhunderts kamen verschiedene Kombinationen aus Heizofen und Kochherd auf den Markt, teilweise mit seitlich eingebauten Backröhren, mit Aufsätzen zum Backen und Braten, mit einem Wärmekasten für das Essgeschirr.
Moderne Herde werden fast ausschließlich mit Gas oder elektrisch betrieben. Gasherde wurden Mitte des 19. Jahrhunderts eingeführt und setzten sich um das Jahr 1900 in den Städten allgemein durch. Auch Kombinationsherde, die ein Kochen auf Feuer oder mit Gas bzw. Strom erlaubten, waren bis in die 1960er Jahre verbreitet. Da der mit Holz oder Kohle befeuerte Herd im Winter auch zur Beheizung der Küche diente, kochte man in der kalten Jahreszeit auf Feuer, im Sommer wurde elektrisch oder mit Gas gekocht, da eine Erwärmung der Küche dann nicht nötig und sogar unangenehm war. Durch die zunehmende Verbreitung von Zentralheizungen verschwanden solche Geräte vom Markt.
Neuere Entwicklungen neben Gasherd und Elektroherd sind der Mikrowellenherd und der Induktionsherd. Neben Standgeräten, die Kochfeld oben und Backofen unten verbinden, gibt es heute vielfach getrennte Geräte zum Einbau in Arbeitsplatten und Küchenschränke, die eine größere Flexibilität bei der Kücheneinrichtung und eine bessere Ergonomie ermöglichen.