- miniDiffusion ist ein Projekt, das das Stable-Diffusion-3.5-Modell in reinem PyTorch mit minimalen Abhängigkeiten neu implementiert und für Bildungs-, Experimentier- und Hacking-Zwecke konzipiert ist
- Die gesamte Implementierung umfasst von der VAE über DiT bis hin zu Trainings- und Datensatz-Skripten rund 2.800 Zeilen und zielt darauf ab, den für die Reproduktion von Stable Diffusion 3.5 von Grund auf erforderlichen Code zu minimieren
- Der zentrale Modellcode befindet sich in
dit.py, dit_components.py und attention.py; dort sind Joint Attention, Embeddings, Normalisierung, Patch-Embedding und DiT-Hilfsfunktionen aufgeteilt
- Zu den Komponenten gehören VAE, CLIP, T5-Text-Encoder, Byte-Pair- und Unigram-Tokenizer, ein Multi-Modal Diffusion Transformer, ein Flow-Matching-Euler-Scheduler und Logit-Normal Sampling
- Das Repository enthält noch experimentelle Funktionen, benötigt weitere Tests und wird unter der MIT License für Bildungs- und Experimentierzwecke bereitgestellt
Zweck und Umfang von miniDiffusion
- miniDiffusion ist ein Projekt, das das Stable-Diffusion-3.5-Modell mit reinem PyTorch und minimalen Abhängigkeiten neu implementiert
- Es wurde für Bildungs-, Experimentier- und Hacking-Zwecke entwickelt und konzentriert sich darauf, den Umfang des Codes zu reduzieren, der nötig ist, um Stable Diffusion 3.5 von Grund auf zu reproduzieren
- Der Umfang der Implementierung beträgt einschließlich VAE, DiT, Trainingsskripten und Datensatzskripten etwa 2.800 Zeilen
Wichtige Dateistruktur
- Der Kerncode des Stable-Diffusion-Modells befindet sich in den folgenden Dateien
dit.py: Code des Haupt-DiT-Modells
dit_components.py: Embeddings, Normalisierung, Patch-Embedding und DiT-Hilfsfunktionen
attention.py: Implementierung von Joint Attention
noise.py enthält einen Euler Scheduler zum Lösen der ODE von Rectified Flow
- Text-Encoder und Tokenizer sind in separaten Dateien organisiert
t5_encoder.py: T5-Text-Encoder
clip.py: CLIP-Implementierung
tokenizer.py: T5- und CLIP-Tokenizer
metrics.py implementiert die Fréchet Inception Distance (FID)
- Hilfscode für das Training und Code zur Datentransformation befinden sich in den folgenden Dateien
common.py: Hilfsfunktionen für das Training
common_ds.py: Implementierung eines iterable dataset, das Bilddaten in Trainingsdaten für DiT umwandelt
Ordner und Checkpoints
- Der Ordner
model speichert Modell-Checkpoints und Logs nach dem Training
- Der Ordner
encoders speichert Checkpoints anderer Module wie VAE und CLIP
Enthaltene Komponenten
- Kernmodule für die Bildgenerierung
-
VAE
-
CLIP
-
T5 Text Encoders
- Byte-Pair- und Unigram-Tokenizer
- Stable-Diffusion-3-bezogene Komponenten
- Multi-Modal Diffusion Transformer Model
- Flow-Matching Euler Scheduler
- Logit-Normal Sampling
- Joint Attention
- Enthält Trainings- und Inferenzskripte für Stable Diffusion 3
Installation und Vorbereitung vor der Nutzung
git clone "https://github.com/yousef-rafat/miniDiffusion"
- Abhängigkeiten installieren
pip install -r requirements.txt
- Vor der Installation der Modell-Checkpoints muss in
get_checkpoints.py ein Hugging Face Token hinzugefügt werden
python3 encoders/get_checkpoints.py
Status und Lizenz
- Das Repository enthält noch experimentelle Funktionen und benötigt weitere Tests
- Das Projekt wird unter der MIT License bereitgestellt und ist für Bildungs- und Experimentierzwecke gedacht
Noch keine Kommentare.