- miniDiffusion es un proyecto que reimplementa el modelo Stable Diffusion 3.5 en PyTorch puro con dependencias mínimas, y está diseñado para fines de educación, experimentación y hacking
- La implementación completa, desde el VAE hasta DiT, incluyendo scripts de entrenamiento y de datasets, tiene unas 2,800 líneas, con el objetivo de minimizar el código necesario para reproducir Stable Diffusion 3.5 desde cero
- El código principal del modelo está en
dit.py, dit_components.py y attention.py, y separa Joint Attention, embeddings, normalización, patch embedding y funciones auxiliares de DiT
- Los componentes incluyen VAE, CLIP, codificadores de texto T5, tokenizadores Byte-Pair y Unigram, Multi-Modal Diffusion Transformer, Flow-Matching Euler Scheduler y Logit-Normal Sampling
- El repositorio todavía tiene funciones experimentales y necesita más pruebas, y se ofrece bajo licencia MIT para fines educativos y experimentales
Objetivo y alcance de miniDiffusion
- miniDiffusion es un proyecto que reimplementa el modelo Stable Diffusion 3.5 en PyTorch puro y con dependencias mínimas
- Fue creado para fines de educación, experimentación y hacking, y se enfoca en reducir la cantidad de código necesaria para reproducir Stable Diffusion 3.5 desde cero
- La implementación, incluyendo VAE, DiT, scripts de entrenamiento y scripts de datasets, tiene unas 2,800 líneas
Estructura principal de archivos
- El código central del modelo Stable Diffusion está en los siguientes archivos
dit.py: código principal del modelo DiT
dit_components.py: embeddings, normalización, patch embedding y funciones auxiliares de DiT
attention.py: implementación de Joint Attention
noise.py contiene el Euler Scheduler para resolver la ODE de Rectified Flow
- Los codificadores de texto y tokenizadores están organizados en archivos separados
t5_encoder.py: codificador de texto T5
clip.py: implementación de CLIP
tokenizer.py: tokenizadores de T5 y CLIP
metrics.py implementa Fréchet Inception Distance (FID)
- El código auxiliar de entrenamiento y de transformación de datos está en los siguientes archivos
common.py: funciones auxiliares para entrenamiento
common_ds.py: implementación de un iterable dataset que convierte datos de imágenes en datos de entrenamiento para DiT
Carpetas y checkpoints
- La carpeta
model guarda checkpoints del modelo y logs después del entrenamiento
- La carpeta
encoders guarda checkpoints de otros módulos como VAE y CLIP
Componentes incluidos
- Módulos principales para generación de imágenes
-
VAE
-
CLIP
-
Codificadores de texto T5
- tokenizadores Byte-Pair y Unigram
- componentes relacionados con Stable Diffusion 3
- modelo Multi-Modal Diffusion Transformer
- Flow-Matching Euler Scheduler
- Logit-Normal Sampling
- Joint Attention
- incluye scripts de entrenamiento e inferencia para Stable Diffusion 3
Preparación antes de la instalación y uso
git clone "https://github.com/yousef-rafat/miniDiffusion"
pip install -r requirements.txt
- Antes de instalar los checkpoints del modelo, hay que agregar un token de Hugging Face en
get_checkpoints.py
python3 encoders/get_checkpoints.py
Estado y licencia
- El repositorio todavía tiene funciones experimentales y necesita más pruebas
- El proyecto se ofrece bajo licencia MIT y está orientado a fines educativos y experimentales
Aún no hay comentarios.