import time import torch from diffusers import (StableDiffusionPipeline, EulerAncestralDiscreteScheduler) from sfast.compilers.diffusion_pipeline_compiler import (compile, CompilationConfig) def load_model(): model = StableDiffusionPipeline.from_pretrained( 'runwayml/stable-diffusion-v1-5', torch_dtype=torch.float16) model.scheduler = EulerAncestralDiscreteScheduler.from_config( model.scheduler.config) model.safety_checker = None model.to(torch.device('cuda')) return model model = load_model() config = CompilationConfig.Default() # xformers and Triton are suggested for achieving best performance. try: import xformers config.enable_xformers = True except ImportError: print('xformers not installed, skip') try: import triton config.enable_triton = True except ImportError: print('Triton not installed, skip') # CUDA Graph is suggested for small batch sizes and small resolutions to reduce CPU overhead. # But it can increase the amount of GPU memory used. # For StableVideoDiffusionPipeline it is not needed. config.enable_cuda_graph = True model = compile(model, config)