Skip to content

Instantly share code, notes, and snippets.

@jaretburkett
Created November 29, 2023 18:16
Show Gist options
  • Save jaretburkett/b11cbb54ec0b2d724c4b4510c1526fee to your computer and use it in GitHub Desktop.
Save jaretburkett/b11cbb54ec0b2d724c4b4510c1526fee to your computer and use it in GitHub Desktop.
diffusers_timestep_test.py
from diffusers import EulerDiscreteScheduler, DDPMScheduler
import torch
name_or_path = "stabilityai/stable-diffusion-xl-base-1.0"
euler = EulerDiscreteScheduler.from_pretrained(
name_or_path, subfolder="scheduler"
)
ddpm = DDPMScheduler.from_pretrained(
name_or_path, subfolder="scheduler"
)
# set both to 1000 timesteps
euler.set_timesteps(1000, 'cpu')
ddpm.set_timesteps(1000, 'cpu')
shape = (1, 4, 64, 64)
latents = torch.zeros(shape)
noise = torch.randn(shape, device='cpu')
zero_timestep = torch.tensor([0], device='cpu', dtype=torch.long)
print('euler timestep 0', euler.timesteps[0].item())
print('euler timestep -0', euler.timesteps[-1].item())
print('ddpm timestep 0', ddpm.timesteps[0].item())
print('ddpm timestep -1', ddpm.timesteps[-1].item())
try:
noisy_euler_latents = euler.add_noise(latents, noise, zero_timestep)
except Exception as e:
print('Euler failed at ts=0')
try:
noisy_ddpm_latents = ddpm.add_noise(latents, noise, zero_timestep)
except Exception as e:
print('DDPM failed at ts=0')
thousand_timestep = torch.tensor([1000], device='cpu', dtype=torch.long)
try:
noisy_euler_latents = euler.add_noise(latents, noise, thousand_timestep)
except Exception as e:
print('Euler failed at ts=1000')
try:
noisy_ddpm_latents = ddpm.add_noise(latents, noise, thousand_timestep)
except Exception as e:
print('DDPM failed at ts=1000')
print('Done')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment