LLM Grundlagen, Teil 2: Über Token

(4 Kommentare.)

Fortsetzung von hier. Diesmal geht es noch gar nicht darum, wie Texte erzeugt werden, sondern um die Einführung des Begriffs Token; ein für die Erklärung vielleicht nicht notwendiges, aber doch interessantes Konzept.

1. Token statt Wörter

In den bisherigen Erklärungen ging es immer um Wörter und darum, dass Wörter vorausgesagt werden. Manche Verfahren arbeiten auch tatsächlich mit Wörtern, siehe nächste Folge. Aber moderne LLM arbeiten mit etwas anderem, nämlich Token.

Ein Token ist eine Zeichenkette, eine kurze Folge von Buchstaben. Das hier sind alles verschiedene Token:

  • ant, ast, bar, de, des, Die, ist, Menschen, un, Wür
  • apping, I, n, nearly, nodded, while
  • a, b, c, d, e, A, B, C, ., :, ;, ?

In vielen Beispielen für die Erklärung von LLM werden Wörter statt Token gezeigt, weil das anschaulicher ist. Das Prinzip bleibt dabei ohnehin gleich, der Unterschied ist für die Praxis wichtig, für das Verständnis gar nicht mal so sehr. Dennoch will ich den Begriff klären, auch um mich zu drücken vor den schwierigeren Sachen später.

2. Tokenization

Tokenization heißt der Vorgang, bei dem Texte in Token zerlegt werden. Das kann hier: https://platform.openai.com/tokenizer ausprobieren für GPT-4 und GPT-3. Die folgenden Beispiele stammen alle aus der Version für GPT-4:

Die Wür-de des Menschen ist un-ant-ast-bar.

8796, 74743, 613, 731, 19488, 2496, 537, 493, 629, 2990, 13

Der Satz „Die Würde des Menschen ist unantastbar.“ besteht aus 6 Wörtern und 1 Satzzeichen, aufgeteilt in 11 Token. Jedes Token hat eine eindeutige ID, mit der intern gearbeitet wird.

  • Es gibt verschiedene Tokenizer-Verfahren je nach LLM.
  • Zum Beispiel gibt es 50.000 bis 200.000 verschiedene Token je nach System.
  • Englisch: im Durchschnitt etwa 1,2 Token pro Wort
  • Deutsch: im Durchschnitt etwa 1,4 Token pro Wort

Wenn man Wörter statt Token nehmen würde, hätte man viel mehr davon und müsste sich überlegen, wie mit bislang unbekannten Wörtern umzugehen wäre. Wenn man Buchstaben statt Wörter nehmen würde, hätte man sehr viel weniger davon, was gut wäre, aber dann hätten die einzelnen Buchstaben viel weniger Bedeutung: Aus 100 Wörtern oder Wortteilen lässt sich das nächste besser vorhersagen, als aus 100 Buchstaben der nächste Buchstabe.

3. Mehr Beispiele für Tokenization

Hier habe ich ein paar Fragmente in den Tokenizer eingegeben. Links sieht man den Text, rechts die Aufteilung in Token, wobei die fünf Farben nichts zu bedeuten haben, sie dienen nur zu optischen Trennung der Token. Darunter sind die IDs der einzelnen Token angegeben:

4. Was fällt auf?

Wenn man sich das genau ansieht, kann man daraus Schlüsse ziehen:

  1. Ein führendes Leerzeichen, oder von mir aus ein Zeilenumbruch stattdessen, gehört quasi mit zum Token: un mit Leerzeichen davor und un ohne sind verschiedene Token. Deshalb werden „unmöglich“ und „unbelievable“ verschieden separiert: ein kleingeschriebenes „unbelievable“ am Zeilanfang ist etwas anderes als ein kleingeschriebenes „unbelievable“ mitten im Satz.
  2. Dementsprechend ist auch ein Punkt mit Absatz danach ein anderes Token als ein Punkt ohne Absatzende danach. Das sieht man im Beispiel nicht, zugegeben, aber es ist so.
  3. Da es für jeden Buchstaben ein eigenes Token gibt (im Beispiel sieht man das nur am „m“ in der vierten Zeile), lässt sich jeder Text über diesem Alphabet in Token aufteilen, aber für die häufigen Kombinationen (so etwas wie Wortbestandteile) gibt es eigene Token.
  4. Die Sprache ist irrelevant: Auf der Tokenization-Ebene spielt es keine Rolle, ob „un“ eine deutsche oder englische Vorsilbe, ein französischer Artikel oder ein spanisches Zahlwort ist. Das ist Token 537 und gut ist. (Am Absatzanfang: Token 373.)

Manchmal haben Wörter der menschlichen Sprache verschiedene Bedeutungen. Ein LLM kann zwar auf einer späteren Ebene damit umgehen, aber als Token betrachtet werden keine Unterschiede gemacht, egal was etwa das englische duck gerade bedeutet. Der mittlere der folgenden Sätze ist mehrdeutig, er kann heißen „Ich sah ihre Ente“ oder „Ich sah, wie sie sich duckte.“ Das Token ist ohnehin immer das gleiche, nämlich Nummer 61769.

You should duck now.
I saw her duck.
A duck goes qu-ack.

3575, 1757, 61769, 1954, 558,
40, 8274, 1335, 61769, 558,
32, 61769, 8805, 474, 12, 552, 558

5. Kleine Fußnote: Token und Morpheme

GPT-4 benutzt etwa 100.000 verschiedene Token, zum Beispiel: ant, ast, bar, de, des, Die, ist, Menschen, un, Wür. Die Sprachwissenschaft arbeitet mit anderen, vielleicht vergleichbaren Elementen, die Morpheme heißen: Das sind die kleinsten eine Bedeutung tragende Bausteine der Sprache. Das Adjektiv unantastbar etwa besteht aus den Morphemen: un-an-tast-bar, das Verb tastet aus den Morphemen tast-et, wobei das erste Morphem das gleiche wie im Wort davor ist und das zweite Morphem die Bedeutung „3. Person Singular Präsens Indikativ“ trägt.

Wie relevant ist es, dass GPT-4 das Wort unantastbar stattdessen in die Token un-ant-ast-bar aufteilt? Ist eine Aufteilung irgendwie echter als die andere oder sind beides einfach unterschiedliche Modelle mit unterschiedlichen Anwendungsbereichen? Solange unterschiedliche Sprachen auf einmal trainiert werden, lässt sich da vermutlich ohnehin nicht viel sagen.

6. Wo kommen die Token her?

Man beginnt mit einer großen Textsammlung, und dann gibt es verschiedene Algorithmen, die herausfinden, welche Token am geeignetsten sind, um diese Texte effektiv in sie aufteilen zu können. Mit denen habe ich mich nicht groß beschäftigt, man könnte zum Beispiel nach Byte Pair Encoding (BPE) suchen. Am Ende hat man jedenfalls eine Liste von Token, die heißt das Vokabular.

7. Liste der Token

Hier ist eine Liste der Token von GPT 4: https://github.com/kaisugi/gpt4_vocab_list/tree/main. Genaugenommen sind das zwei Varianten: Einmal die Liste der 100.000 Token von GPT-4 und einmal die Liste mit den 200.000 Token von GPT-4o. Die Zeilennummern in der 4o-Liste entsprechend der ID des Tokens, wie ich sie oben als Beispiele gezeigt habe, allerdings muss man für die ID 1 von der Zeilennummer abziehen: Die Zeilennummerierung beginnt bei 1, die Tokennummerierung bei 0.

Man sieht im Screenshot unseren alten Freund, das “ un“ mit dem Leerzeichen davor, Token ID 537, in Zeile 538.

8. Links und Ausprobieren

Fortsetzung folgt. (Da beginnt es dann haarig zu werden. Nicht nur wegen der Katzen und Hunde.)


Beitrag veröffentlicht am

in

Kommentare: 4

Schlagwörter:

Kommentare

4 Antworten zu „LLM Grundlagen, Teil 2: Über Token“

  1. Hier (https://fontanefansschnipsel.blogspot.com/2025/05/wie-funktioniert-chatgpt-und-die.html) mache ich Reklame für deine Erklärung der LLMs. Es ist aber auch Gedächtnisstütze für mich.
    Wenn man etwas nicht ganz versteht, was bei den LLMs gewiss der Fall ist, ist es hilfreich, wenn man die Erklärung noch einmal aufgreifen kann.
    Auch wenn die LLMs selbst für ihre Entwickler eine Black Box sind, kann es hilfreich sein, wenn man wenigstens eine Grobvorstellung hat, was darin ist.

  2. […] Herr Rau erklärt weiter LLMs, diesmal die Sache mit den Token. […]

  3. […] Herr Rau erschließt sich und uns LLMs. Folge 2: Token. […]

  4. […] 25-05-29 Inverse Engelkurven – iberty.de zu LLM Grundlagen, Teil 2: Über Token […]

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert