🎛️
Lektion 3 · Grundlagen
Parameter & state_dict
4.192 Zahlen in 9 Matrizen – vom Zufall zum gelernten Muster
Tempo1 / 15
Vorbereitung Daten Forward Verlust Backward Update Sampling Ergebnis
📜Quelltext
Zeile 11➤n_embd = 16 # Embedding-Dimension
2n_head = 4 # Anzahl Attention-Heads
3n_layer = 1 # Anzahl Schichten
4block_size = 16 # maximale Sequenzlaenge
5head_dim = n_embd // n_head
6matrix = lambda nout, nin, std=0.08: [[Value(random.gauss(0, std)) for _ in range(nin)] for _ in range(nout)]
7state_dict = {'wte': matrix(vocab_size, n_embd), 'wpe': matrix(block_size, n_embd), 'lm_head': matrix(vocab_size, n_embd)}
8for i in range(n_layer):
9 state_dict[f'layer{i}.attn_wq'] = matrix(n_embd, n_embd)
10 state_dict[f'layer{i}.attn_wk'] = matrix(n_embd, n_embd)
11 state_dict[f'layer{i}.attn_wv'] = matrix(n_embd, n_embd)
12 state_dict[f'layer{i}.attn_wo'] = matrix(n_embd, n_embd)
13 state_dict[f'layer{i}.mlp_fc1'] = matrix(4 * n_embd, n_embd)
14 state_dict[f'layer{i}.mlp_fc2'] = matrix(n_embd, 4 * n_embd)
15params = [p for mat in state_dict.values() for row in mat for p in row]
16print(f"num params: {len(params)}")
🖥️Konsole (stdout)
— noch keine Ausgabe —
🔎Variablen (locals)
🟡 = geändert- n_embdint16
- n_headint4
- n_layerint1
- block_sizeint16
🧰 VorbereitungZeile 1
Die Parameter sind das Wissen des Modells
Alles, was das Modell je lernt, steckt in einer großen Sammlung von Kommazahlen – den Parametern. Sie starten zufällig und werden im Training Schritt für Schritt verbessert. Vier Zahlen legen die Größe fest: 16 Dimensionen pro Vektor, 4 Attention-Heads, 1 Schicht, höchstens 16 Token Kontext.
🎬Visualisierung
🎛️
Die vier Stellschrauben der Modellgröße
- 1n_embd = 16 → jeder Buchstabe wird zu 16 Zahlen
- 2n_head = 4 → vier parallele „Aufmerksamkeiten“
- 3n_layer = 1 → ein Transformer-Block
- 4block_size = 16 → maximal 16 Token pro Name