import torch from PIL.Image import Image from diffusers import StableDiffusionXLPipeline, LCMScheduler from pipelines.models import TextToImageRequest from torch import Generator def load_pipeline() -> StableDiffusionXLPipeline: pipeline = StableDiffusionXLPipeline.from_pretrained( "./models/newdream-sdxl-20", torch_dtype=torch.float16, local_files_only=True, ).to("cuda") pipeline.scheduler = LCMScheduler.from_config(pipeline.scheduler.config) pipeline.load_lora_weights("./models/sdxl-lcmlora-1024-100k-3000steps") pipeline(prompt="") return pipeline def infer(request: TextToImageRequest, pipeline: StableDiffusionXLPipeline) -> Image: generator = Generator(pipeline.device).manual_seed(request.seed) if request.seed else None return pipeline( prompt=request.prompt, negative_prompt=request.negative_prompt, width=request.width, height=request.height, generator=generator, num_inference_steps=4, guidance_scale=1.5, ).images[0]