🔤
Lektion 1 · Einstieg
Datensatz & Tokenizer
Aus 32.033 Namen werden Zahlenfolgen mit Anfangs- und Endmarke
Tempo1 / 17
Vorbereitung Daten Forward Verlust Backward Update Sampling Ergebnis
📜Quelltext
Zeile 11➤# 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ändertNoch 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