| |
| from diffusers import StableDiffusionPipeline, UniPCMultistepScheduler |
| import time |
| import torch |
| import sys |
|
|
| path = sys.argv[1] |
| use_device_map = bool(int(sys.argv[2])) |
|
|
| start_time = time.time() |
|
|
| if use_device_map: |
| print("Load directly on GPU") |
| pipe = StableDiffusionPipeline.from_pretrained(path, torch_dtype=torch.float16, device_map="auto") |
| else: |
| print("Load directly on CPU") |
| pipe = StableDiffusionPipeline.from_pretrained(path, torch_dtype=torch.float16) |
| pipe = pipe.to("cuda") |
|
|
| pipe.scheduler = UniPCMultistepScheduler.from_config(pipe.scheduler.config) |
|
|
| prompt = "a highly realistic photo of green turtle" |
|
|
| print("Loading Time", time.time() - start_time) |
| generator = torch.Generator(device="cuda").manual_seed(0) |
| image = pipe(prompt, generator=generator, num_inference_steps=15).images[0] |
| print("Time", time.time() - start_time) |
|
|