8 min

Als Workshop führen

Derselbe Stoff, geführt: die acht Schritte auf zwei Stunden umgeschnitten.

Der Stoff dieses Kapitels ist derselbe wie in den acht Schritten davor. Was sich ändert, ist die Situation: nicht allein im eigenen Tempo, sondern alle zur gleichen Zeit im selben Raum, mit jemandem vorn, der den Takt vorgibt.

Das hat eine Folge, die man besser vorher zugibt als mittendrin merkt: In einer geführten Session tippen nicht alle acht Schritte alle selbst. Der Kurs ist auf zweieinhalb Stunden konzentrierte Einzelarbeit geschnitten; zwei Stunden zu zehnt sind etwas anderes. Wer alle acht Schritte live durchtippen lässt, kommt bis Schritt 05 und hört genau vor dem Moment auf, für den der Kurs existiert.

Der Ablauf unten schneidet deshalb um. Er gibt den zwei Schritten, die die Einsicht tragen, die volle Zeit, fährt die Mitte als Demo und holt alle für den Beweis zurück an die Tastatur.

Der Ablauf (120 Minuten)

Erprobt mit sechs bis zwölf Teilnehmern, ein Rechner pro Person, ein Beamer vorn. Die Uhrzeiten sind Weckerzeiten, keine Schätzungen - wer bei 0:55 noch nicht in der Pause ist, kürzt den Schnelldurchgang, nicht den Beweis.

0:00-0:10 · Ankommen und die eine Regel. Zero Magic erklären: NumPy ist erlaubt, torch, jax, tinygrad und autograd sind verboten. Dann einmal gemeinsam prüfen, dass die Umgebung steht - python -c "import numpy; print(numpy.__version__)", das Skill-Pack entpackt, Claude Code im entpackten Verzeichnis gestartet, /tinytorch einmal aufgerufen. Diese zehn Minuten sind gut investiert: Eine fehlende NumPy-Installation, die erst bei 0:20 auffällt, kostet den Betroffenen den ganzen Autograd-Teil.

0:10-0:25 · Schritt 01, der Tensor. Alle tippen. /tt-01-tensor. Der Schritt ist bewusst leicht, er ist die Aufwärmrunde: ein Objekt, das ein NumPy-Array hält und +, * und @ beherrscht. Wichtig ist hier nicht die Erkenntnis, sondern der Rhythmus - python -m pytest tests/test_01_tensor.py, grün, weiter. Wer den Rhythmus einmal hat, braucht ihn bei Schritt 02 nicht mehr zu lernen.

0:25-0:55 · Schritt 02, Autograd. Alle tippen. /tt-02-autograd. Das ist der Kern der Session, und er bekommt mit dreißig Minuten ein Viertel der gesamten Zeit. Der Satz, um den es geht, steht auf der Leinwand, bevor jemand anfängt: Ableiten ist Buchhaltung, kein Zauber. Jeder Tensor merkt sich, aus welchen Eltern er entstanden ist und mit welcher lokalen Ableitung; backward() läuft diese Kette rückwärts ab und addiert auf. Mehr ist es nicht.

Der Meilenstein ist der Moment, an dem der Raum kippt: Die Ableitung von x² + x an der Stelle 3 kommt als 7 heraus, ohne dass jemand eine Ableitung hingeschrieben hat. Lass die 7 laut sagen. Wer sie selbst erzeugt hat, glaubt ab diesem Punkt keiner Blackbox-Erzählung über Deep Learning mehr.

0:55-1:05 · Pause. Echte zehn Minuten. Der schwierige Teil liegt hinter der Gruppe, der Rest ist Bauen.

1:05-1:30 · Schritte 03 bis 07 im Schnelldurchgang. Goal-Demo vorn. Hier tippt niemand mehr mit. Du fährst vorn den autonomen Modus aus dem Goal-Skill-Pack - /goal-03-schichten, /goal-04-loss, /goal-05-optimizer, /goal-06-trainingsschleife, /goal-07-dataloader - und kommentierst, während der Agent schreibt und die Tests grün zieht. Die Teilnehmer holen sich dieselben Kapitel per Goal auf ihren eigenen Rechner, so haben am Ende alle denselben Stand für den Beweis.

Fünf Minuten pro Schritt, und für jeden einen Satz, der hängen bleibt:

  • 03 Schichten - ein Netz ist eine Kette simpler Bausteine, Sequential ist eine for-Schleife über eine Liste.
  • 04 Loss - Lernen heißt, eine einzige Zahl kleiner zu machen. Der ganze Vorhersagevektor wird zu einem Skalar, sonst wüsste backward() nicht, wo es anfangen soll.
  • 05 Optimizer - der Lernschritt ist eine Zeile: p.data -= lr * p.grad.
  • 06 Trainingsschleife - fünf Zeilen, und sie sind der Grund, warum das Ganze funktioniert. Diesen Schritt zeigst du langsamer als die anderen; er ist die Brücke zum Schlussbild.
  • 07 DataLoader - Training ist zur Hälfte Daten-Klempnerei. Permutieren, schneiden, ausliefern.

1:30-1:55 · Schritt 08, der Beweis. Alle wieder selbst. /tt-08-beweis. Der Datensatz kommt nicht aus einer Bibliothek: Zwei verschränkte Halbmonde sind zehn Zeilen NumPy, und Zero Magic gilt auch für die Daten. Dann trainieren, dann die Genauigkeit auf dem Testteil ausgeben.

Der Moment, auf den die ganze Session zuläuft, ist eine Zahl über 0,90 auf Daten, die das Netz nie gesehen hat - gerechnet von Anfang bis Ende mit Bauteilen, die im selben Raum entstanden sind. Lass die Zahlen reihum vorlesen. Sie sind bei allen leicht verschieden und bei allen jenseits von 90 Prozent, und genau diese Mischung macht den Moment.

1:55-2:00 · Das Schlussbild. Die Quintessenz unten, an der Leinwand, ohne Code. Fünf Minuten.

Die 90-Minuten-Fassung

Wenn nur anderthalb Stunden zur Verfügung stehen, wird nicht überall gekürzt, sondern vorn:

  • 0:00-0:08 Ankommen, Regel, Umgebung. Schritt 01 wird verschenkt - der fertige tensor.py liegt im ausgeteilten Verzeichnis, du liest ihn in zwei Minuten vor.
  • 0:08-0:35 Schritt 02, Autograd. Alle tippen. Hier wird nichts gekürzt.
  • 0:35-0:40 Kurze Pause.
  • 0:40-1:00 Schritte 03 bis 07 als Goal-Demo, jetzt vier Minuten pro Schritt.
  • 1:00-1:25 Schritt 08, der Beweis. Alle selbst.
  • 1:25-1:30 Schlussbild.

Was du nicht kürzen solltest, ist Autograd oder der Beweis. Ohne den ersten fehlt die Einsicht, ohne den zweiten der Beleg, dass sie trägt.

Was Teilnehmer brauchen

Wenig, aber das vollständig - und geprüft, bevor die Session anfängt, nicht währenddessen:

  • Python 3.10 oder neuer und NumPy. Mehr nicht. Keine Umgebung, kein Setup, keine GPU.
  • Claude Code, angemeldet und einmal gestartet. Wer keinen Zugang hat, kann die Schritte auch von Hand aus dem Kapiteltext tippen; das kostet ihn aber jedes Mal ein paar Minuten Rückstand.
  • Das Coach-Skill-Pack aus dem Kurs, entpackt, mit Claude Code im entpackten Verzeichnis gestartet. Darin liegen /tinytorch für Spielregeln und Fahrplan, /tt-01-tensor bis /tt-08-beweis für die Schritte, das Fortschrittsprotokoll PROGRESS.md und alle acht Meilenstein-Tests. Der Ordner .claude/commands/ liegt schon richtig, es ist nichts einzurichten. Beide Packs stehen auf der Kursseite zum Herunterladen - im Workshop brauchen die Teilnehmer das Coach-Pack, du zusätzlich das Goal-Pack.
  • Ein Rechner pro Person. Zu zweit an einem Gerät funktioniert dieser Kurs schlecht: Wer nur zusieht, während der andere Autograd tippt, hat den Moment nicht.

Was der Führende vorbereitet

Fahre die Goal-Variante einmal komplett vorab. Ein Verzeichnis, /goal, einmal durch alle acht Kapitel, alle Tests grün. Das dauert dich einmal eine knappe Stunde und ist die einzige Vorbereitung, die wirklich zählt - du weißt danach, wie lange die Schritte auf deiner Maschine laufen, an welcher Stelle der Agent nachfragt und wie das Ergebnis aussieht, wenn es fertig ist. Eine Demo, die man vorher einmal gesehen hat, kann man kommentieren; eine, die man zum ersten Mal fährt, kann man nur anschauen.

Dazu, in dieser Reihenfolge:

  • Das durchgelaufene Goal-Verzeichnis als Rettungsanker bereithalten. Wer bei 1:30 noch keinen DataLoader hat, bekommt den Ordner kopiert und ist beim Beweis dabei. Niemand soll am Klempner-Schritt hängen bleiben und den Schluss verpassen.
  • Den Gradienten-Stolperstein (+= statt =) als Zettel oder zweite Folie bereitlegen - siehe oben, hochhalten erst nach zehn Minuten.
  • Den Beamer auf große Schrift stellen und die Terminal-Schrift ebenfalls. Im Schnelldurchgang lesen zwölf Leute mit, was der Agent schreibt.
  • Eine Uhr sichtbar aufstellen. Der Ablauf oben funktioniert nur, wenn die Pause bei 0:55 tatsächlich beginnt.

Erweiterungsideen

Für eine längere Session, einen zweiten Termin oder als Hausaufgabe:

  • Ein zweiter Datensatz: Spiralen statt Monde. Zwei ineinandergedrehte Spiralarme, wieder in etwa zehn Zeilen NumPy (r linear wachsend, phi mit Offset pi für die zweite Klasse). Die Aufgabe ist deutlich schwerer als die Monde - mit demselben Netz und denselben 60 Epochen kommt man nicht über 90 Prozent. Genau das ist der Lerninhalt: mehr Neuronen, mehr Epochen oder eine kleinere Schrittweite, und man sieht zum ersten Mal, wofür man an diesen Reglern dreht.
  • Momentum als neunter Baustein. SGD merkt sich nichts; Momentum merkt sich je Parameter die letzte Richtung und mischt sie dazu. Das sind drei Zeilen im Optimizer und ein zusätzliches Feld pro Parameter. Danach ist der Begriff „Optimizer“ keine Blackbox mehr, sondern eine Familie mit einem sichtbaren Unterschied: die Loss-Kurve wird glatter und fällt schneller.
  • Der Vergleichslauf gegen echtes PyTorch. Dasselbe Netz, dieselben Daten, dieselben Epochen - einmal in meintorch, einmal in fünfzehn Zeilen torch. Loss-Kurven nebeneinanderlegen, Laufzeiten vergleichen. Hier endet die Zero-Magic-Regel mit Absicht: Nach dem Selbstbau darf importiert werden. Die Kurven liegen fast aufeinander, die Laufzeit nicht - und in dem Abstand steckt die ehrliche Antwort auf die Frage, wofür ein Framework eigentlich da ist.

Die Quintessenz

Du hast in dieser Session kein Framework gebaut, das jemand benutzen wird. Du hast eine Schleife gebaut und gesehen, dass alles andere Zubehör ist.

Die Trainingsschleife lautet: Vorhersage rechnen, Fehler messen, Gradienten holen, Gewichte anpassen, von vorn. Die Agenten-Schleife lautet: Modell fragen, Werkzeug aufrufen, Ergebnis zurückgeben, von vorn. Dieselbe Figur, zweimal:

Der Fortschritt steckt nicht in einem einzelnen genialen Schritt, sondern in der Wiederholung eines sehr einfachen, dessen Zustand zwischen den Runden weitergereicht wird. „KI“ ist die austauschbare Box in einem Loop - nicht der Loop selbst.

Wer die fünf Zeilen aus Schritt 06 einmal selbst getippt hat, liest den Baustein Tools und Loop wie einen alten Bekannten. Und wer danach das Ameisen-Lab fährt, sieht dieselbe Aussage von der anderen Seite: Dort bleibt die Schleife stehen und die Entscheidungs-Box wird viermal getauscht - Handcode, lernendes Netz, LLM, LLM mit Memory. Hier hat die Gruppe die Box einmal von innen gebaut.

Zwei Kurse, ein Satz. Wer ihn an einem Nachmittag mit eigenen Händen bestätigt hat, fällt auf keinen KI-Hype mehr herein.