From 8ba1ddc0dcebf2e8a55f95e9dd630400f1490780 Mon Sep 17 00:00:00 2001 From: Chenyang Yuan Date: Tue, 23 Apr 2024 22:30:28 -0400 Subject: [PATCH] Added DiT examples --- README.md | 53 ++++++++++-------- examples/fashion_mnist_dit.py | 38 +++++++++++++ ...fashion_mnist.py => fashion_mnist_unet.py} | 0 imgs/fashion-mnist-samples.png | Bin 19525 -> 17406 bytes 4 files changed, 69 insertions(+), 22 deletions(-) create mode 100644 examples/fashion_mnist_dit.py rename examples/{fashion_mnist.py => fashion_mnist_unet.py} (100%) diff --git a/README.md b/README.md index 024624c..971ba91 100644 --- a/README.md +++ b/README.md @@ -37,27 +37,34 @@ losses = [ns.loss.item() for ns in trainer] Results on various toy datasets:

- +

-### U-Net models -The same code can be used to train [U-Net-based models][unet-py]. To -train a model on the FashionMNIST dataset and generate a batch of samples (after -first running `accelerate config`): +### Diffusion Transformer +We provide [a concise implementation][model-code] of the diffusion transformer introduced in +[[Peebles and Xie 2022]][dit-paper]. To train a model on the FashionMNIST dataset and +generate a batch of samples (after first running `accelerate config`): ``` -accelerate launch examples/fashion_mnist.py +accelerate launch examples/fashion_mnist_dit.py ``` With the provided default parameters and training on a single GPU for around 2 hours, the model can achieve a [FID score](https://paperswithcode.com/sota/image-generation-on-fashion-mnist) of -around 12-13, producing the following generated outputs: +around 5-6, producing the following generated outputs:

- +

+### U-Net models +The same code can be used to train [U-Net-based models][unet-py]. + +``` +accelerate launch examples/fashion_mnist_unet.py +``` + ### StableDiffusion smalldiffusion's sampler works with any pretrained diffusion model, and supports DDPM, DDIM as well as accelerated sampling algorithms. In @@ -82,7 +89,7 @@ schedules, as demonstrated in [examples/stablediffusion.py][stablediffusion]. A few examples on tweaking the parameter `gam`:

- +

@@ -141,7 +148,7 @@ Three schedules are provided: The following plot shows these three schedules with default parameters.

- +

### Training @@ -174,15 +181,17 @@ and implemented in only 5 lines of code, see Appendix A of [[Permenter and Yuan]][arxiv-url]. -[diffusion-py]: https://github.com/yuanchenyang/smalldiffusion/blob/main/src/smalldiffusion/diffusion.py -[unet-py]: https://github.com/yuanchenyang/smalldiffusion/blob/main/examples/unet.py -[diffusers-wrapper]: https://github.com/yuanchenyang/smalldiffusion/blob/main/examples/diffusers_wrapper.py -[stablediffusion]: https://github.com/yuanchenyang/smalldiffusion/blob/main/examples/stablediffusion.py -[build-img]: https://github.com/yuanchenyang/smalldiffusion/workflows/CI/badge.svg -[build-url]: https://github.com/yuanchenyang/smalldiffusion/actions?query=workflow%3ACI -[pypi-img]: https://img.shields.io/badge/pypi-blue -[pypi-url]: https://pypi.org/project/smalldiffusion/ -[blog-img]: https://img.shields.io/badge/Tutorial-blogpost-blue -[blog-url]: https://www.chenyang.co/diffusion.html -[arxiv-img]: https://img.shields.io/badge/Paper-arxiv-blue -[arxiv-url]: https://arxiv.org/abs/2306.04848 +[diffusion-py]:https://github.com/yuanchenyang/smalldiffusion/blob/main/src/smalldiffusion/diffusion.py +[unet-py]:https://github.com/yuanchenyang/smalldiffusion/blob/main/examples/unet.py +[diffusers-wrapper]:https://github.com/yuanchenyang/smalldiffusion/blob/main/examples/diffusers_wrapper.py +[stablediffusion]:https://github.com/yuanchenyang/smalldiffusion/blob/main/examples/stablediffusion.py +[build-img]:https://github.com/yuanchenyang/smalldiffusion/workflows/CI/badge.svg +[build-url]:https://github.com/yuanchenyang/smalldiffusion/actions?query=workflow%3ACI +[pypi-img]:https://img.shields.io/badge/pypi-blue +[pypi-url]:https://pypi.org/project/smalldiffusion/ +[dit-paper]:https://arxiv.org/abs/2212.09748 +[model-code]:https://github.com/yuanchenyang/smalldiffusion/blob/main/src/smalldiffusion/model.py +[blog-img]:https://img.shields.io/badge/Tutorial-blogpost-blue +[blog-url]:https://www.chenyang.co/diffusion.html +[arxiv-img]:https://img.shields.io/badge/Paper-arxiv-blue +[arxiv-url]:https://arxiv.org/abs/2306.04848 diff --git a/examples/fashion_mnist_dit.py b/examples/fashion_mnist_dit.py new file mode 100644 index 0000000..cd426d0 --- /dev/null +++ b/examples/fashion_mnist_dit.py @@ -0,0 +1,38 @@ +import torch +from accelerate import Accelerator +from torch.utils.data import DataLoader +from torchvision import transforms as tf +from torchvision.datasets import FashionMNIST +from torchvision.utils import make_grid, save_image +from torch_ema import ExponentialMovingAverage as EMA +from tqdm import tqdm + +from smalldiffusion import ScheduleDDPM, samples, training_loop, MappedDataset, DiT + +# Setup +accelerator = Accelerator() +dataset = MappedDataset(FashionMNIST('datasets', train=True, download=True, + transform=tf.Compose([ + tf.RandomHorizontalFlip(), + tf.ToTensor(), + tf.Lambda(lambda t: (t * 2) - 1) + ])), + lambda x: x[0]) +loader = DataLoader(dataset, batch_size=1024, shuffle=True) +schedule = ScheduleDDPM(beta_start=0.0001, beta_end=0.02, N=1000) +model = DiT(in_dim=28, channels=1, + patch_size=2, depth=6, head_dim=32, num_heads=6, mlp_ratio=4.0) + +# Train +trainer = training_loop(loader, model, schedule, epochs=300, lr=1e-3, accelerator=accelerator) +ema = EMA(model.parameters(), decay=0.99) +ema.to(accelerator.device) +for ns in trainer: + ns.pbar.set_description(f'Loss={ns.loss.item():.5}') + ema.update() + +# Sample +with ema.average_parameters(): + *xt, x0 = samples(model, schedule.sample_sigmas(20), gam=1.6, batchsize=64, accelerator=accelerator) + save_image(((make_grid(x0) + 1)/2).clamp(0, 1), 'fashion_mnist_samples.png') + torch.save(model.state_dict(), 'checkpoint.pth') diff --git a/examples/fashion_mnist.py b/examples/fashion_mnist_unet.py similarity index 100% rename from examples/fashion_mnist.py rename to examples/fashion_mnist_unet.py diff --git a/imgs/fashion-mnist-samples.png b/imgs/fashion-mnist-samples.png index d44fc9ab86127817466ac39854ed114c4b8ff9b9..aaba8ace83675a53762b13352b6bd49198a691c3 100644 GIT binary patch literal 17406 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

>o6(PfL(ujKJ4Tn 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