tools / run_kandinsky.py
patrickvonplaten's picture
further improve
a032108
raw
history blame
1.92 kB
#!/usr/bin/env python3
from diffusers import DiffusionPipeline
import torch
from diffusers.models.attention_processor import AttnAddedKVProcessor2_0, XFormersAttnAddedKVProcessor, AttnAddedKVProcessor
import time
import os
from huggingface_hub import HfApi
from pathlib import Path
api = HfApi()
prev_time = time.time()
prompt = "a picture of elon musk next to a rocket"
negative_prompt = "low quality, ugly"
pipe_prior = DiffusionPipeline.from_pretrained(
"kandinsky-community/kandinsky-2-1-prior", torch_dtype=torch.float16
)
pipe_prior.to("cuda")
t2i_pipe = DiffusionPipeline.from_pretrained("kandinsky-community/kandinsky-2-1", torch_dtype=torch.float16)
t2i_pipe.to("cuda")
t2i_pipe.unet.set_attn_processor(AttnAddedKVProcessor2_0())
t2i_pipe.unet.to(memory_format=torch.channels_last)
t2i_pipe.unet = torch.compile(t2i_pipe.unet, mode="reduce-overhead", fullgraph=True)
next_time = time.time()
print("Loading", next_time - prev_time)
prev_time = next_time
generator = torch.Generator(device="cuda").manual_seed(12)
image_embeds, negative_image_embeds = pipe_prior(prompt, negative_prompt=negative_prompt, generator=generator).to_tuple()
next_time = time.time()
print("Prior", next_time - prev_time)
prev_time = next_time
for _ in range(3):
images = t2i_pipe(prompt, image_embeds=image_embeds, negative_image_embeds=negative_image_embeds, negative_prompt=negative_prompt, num_inference_steps=50, generator=generator).images
next_time = time.time()
print("Text-to-image", next_time - prev_time)
prev_time = next_time
for i, image in enumerate(images):
path = os.path.join(Path.home(), "images", f"aa_{i}.png")
image.save(path)
api.upload_file(
path_or_fileobj=path,
path_in_repo=path.split("/")[-1],
repo_id="patrickvonplaten/images",
repo_type="dataset",
)
print(f"https://huggingface.co/datasets/patrickvonplaten/images/blob/main/aa_{i}.png")