🎛️
Lektion 3 · Grundlagen

Parameter & state_dict

4.192 Zahlen in 9 Matrizen – vom Zufall zum gelernten Muster

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

📜Quelltext

Zeile 1
1n_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_embdint
    16
  • n_headint
    4
  • n_layerint
    1
  • block_sizeint
    16
🧰 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