14 Punkte von siwoo4985 2026-04-05 | Noch keine Kommentare. | Auf WhatsApp teilen

Hallo, vor etwa einem Monat habe ich ein Text-Diffusion-Modell von Grund auf implementiert und veröffentlicht. Kürzlich habe ich beim Lesen von GeekNews wieder daran gedacht und stelle es jetzt endlich hier vor.


Warum ich es gebaut habe

Als ich MicroGPT von Andrej Karpathy gesehen habe, war mein Eindruck: „So kann man also mit so wenig Code den Kern von GPT erklären.“ Ich wollte ohnehin gerade Diffusion lernen, also habe ich beides zusammengebracht und dieses Lernprojekt mit dem Gedanken begonnen: „Es wäre doch interessant, Code zu schreiben, mit dem man Diffusion auf die gleiche Weise verstehen kann.“


AR vs. Diffusion: Was ist der Unterschied?

Texterzeugung im Zeitalter der LLMs ist fast vollständig Autoregressive (AR). Dabei werden Token von links nach rechts einzeln vorhergesagt.

Discrete Diffusion funktioniert umgekehrt. Die gesamte Sequenz wird auf einmal betrachtet und schrittweise aus Rauschen (Maskierung) wiederhergestellt.

Am Beispiel des Namens "emma":  
  
Forward (Training - Rauschen hinzufügen):  
  t=0 :  e m m a   ← Original  
  t=25:  e _ m a   ← teilweise maskiert  
  t=50:  _ _ m _   ← stärker maskiert  
  t=100: _ _ _ _   ← vollständig maskiert  
  
Reverse (Generierung - Rauschen entfernen):  
  t=100: _ _ _ _   ← Start im leeren Zustand  
  t=75:  _ m _ _   ← Wiederherstellung beginnt an den sichersten Positionen  
  t=50:  e m _ a  
  t=0 :  e m m a   ← fertig  

Wenn AR „ein Wort Buchstabe für Buchstabe zu schreiben“ ist, dann ist Diffusion eher „ein Kreuzworträtsel zu lösen“.


Implementierungsstruktur

Es gibt drei Versionen, sodass man je nach Schwierigkeitsgrad wählen kann.

  • train_minimal.py — 2-layer MLP / nur NumPy verwendet (am einfachsten)
  • train_pure.py — 3-layer MLP + skip connection / nur NumPy verwendet
  • train.py — 4-layer Transformer / verwendet PyTorch

Alle drei Versionen teilen sich dieselbe Diffusion-Schleife. Nur die Denoiser-Architektur ist unterschiedlich.
Die Trainingsdaten bestehen aus 32.000 englischen Namen, die Parameter liegen bei etwa 170K bis 239K.

Man kann es direkt ausführen:

pip install numpy  # Mindestversion  
python train_minimal.py  

Feedback oder PRs sind willkommen!

Noch keine Kommentare.

Noch keine Kommentare.