Skip to content

pranay-ar/Compact-Diffusion-Models

Repository files navigation

Compact Diffusion Models

.

Introduction

Compact Diffusion Models are designed to offer a more efficient alternative to traditional diffusion models. These models aim to be smaller and faster, while maintaining effectiveness, making them suitable for a variety of applications where computational resources or time are limited.

Features

  • Efficiency: Smaller model size and faster processing without significant loss in quality.
  • Flexibility: Suitable for a range of applications where traditional diffusion models are typically used.

Repository Contents

  • configs: Configuration files for the models.
  • ddpm.py: Training script for unconditional DDPM generation.
  • ddpm_conditional.py: Training script for conditional DDPM generation.
  • generate.py: Script for generating outputs using the models.
  • modules.py: Contains various modules used in the models.
  • noising_test.py: Script for testing the noising process.
  • pruning.py: Implements pruning techniques for model efficiency.
  • quantize.py: Quantization methods for model optimization.
  • run.sh: Shell script for running the model.
  • single_generation.py: Script for single image generation.
  • utils.py: Utility functions used across the project.

Getting Started

To use these models, clone this repository and install the required dependencies. Example usage can be found in the run.sh script.

Requirements

  • Python 3.x
  • Dependencies as listed in environment.yml file.
  • Recreate the original environment using conda env create -f environment.yml.

Results

Setup Architecture Method EMA MPT Size (MB) Inference Time FID
1 UNet Base × × 93.4 27s 29.72
2 UNet Base × 93.4 22s 25.84
3 UNet Base 93.4 22s 25.92
4 UNet + Pruning 64.2 21s 43.36
5 UNetMini Compression 23.7 18s 33.82
6 UNetMini + KD loss 23.7 18s 37.82
7 UNetMini + KD loss + Pruning 15.3 19s 59.01

Generations

Model Setup Generated Images
1. Base Base Model
2. Base + EMA Base + EMA
3. Base + MPT Base + MPT
4. Base + KD + Pruning Base + Pruning
5. Mini + EMA + MPT Mini + EMA + MPT
6. Base + KD Base + KD
7. Base + Pruning Base + Pruning

License

This project is licensed under the Apache-2.0 License - see the LICENSE file for details.

Acknowledgments

  • Our base code is built on top of @dome272 work. We build several new optimizations, and methods on top of this codebase.

About

Diffusion models, equally affective but smaller and faster.

Resources

License

Stars

0 stars

Watchers

1 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors