🔤
Lektion 1 · Einstieg

Datensatz & Tokenizer

Aus 32.033 Namen werden Zahlenfolgen mit Anfangs- und Endmarke

Tempo
1 / 17
Vorbereitung Daten Forward Verlust Backward Update Sampling Ergebnis

📜Quelltext

Zeile 1
1# Datensatz: eine Liste von Dokumenten (hier: Namen)
2docs = [l.strip() for l in open('input.txt').read().strip().split('\n') if l.strip()]
3random.shuffle(docs)
4print(f"num docs: {len(docs)}")
5 
6# Tokenizer: Zeichen <-> Token-Ids
7uchars = sorted(set(''.join(docs))) # eindeutige Zeichen -> Ids 0..n-1
8BOS = len(uchars) # Sondertoken 'Beginning of Sequence'
9vocab_size = len(uchars) + 1 # +1 fuer BOS
10print(f"vocab size: {vocab_size}")
11 
12doc = "emma"
13tokens = [BOS] + [uchars.index(ch) for ch in doc] + [BOS]
14print(tokens)
15for pos_id in range(len(tokens) - 1):
16 token_id, target_id = tokens[pos_id], tokens[pos_id + 1]

🖥️Konsole (stdout)

— noch keine Ausgabe —

🔎Variablen (locals)

🟡 = geändert

Noch keine Variablen – das Programm hat gerade erst begonnen.

🧰 VorbereitungZeile 1

Alles beginnt mit Text

Sprachmodelle lernen aus einem Strom von Text, aufgeteilt in Dokumente. Bei ChatGPT wären das Webseiten, Bücher und Code – bei microgpt sind es 32.033 Vornamen, einer pro Zeile. Das Ziel: das Muster in den Daten lernen und danach neue, ähnlich klingende Dokumente erzeugen.

🎬Visualisierung

📚

Ein Dokument = ein Name

  • 1Quelle: names.txt aus Karpathys makemore-Projekt
  • 2Jede Zeile ist ein eigenes, kurzes Dokument
  • 3Das Modell soll am Ende neue Namen „halluzinieren“
  • 4Für ChatGPT ist auch dein Chat nur ein Dokument, das vervollständigt wird