# 使用 fp 16, 显存减少,速度提示
pipe = StableDiffusionXLPipeline.from_single_file(
modelPath,
dtype=torch.bfloat16,
variant="fp16",
use_safetensors=True,
load_safety_checker=False,
device_map="auto")
# VAE并发解码,改为串行,减少了显存使用,推理会变慢
# 多图VAE解码会有一点优化,单图的话,没啥变化
pipe.enable_vae_slicing()
# 分块处理,这样可以低显存出大图,512*512以下用不着
pipe.enable_vae_tiling()
# 子模块在需要时移动到GPU,在新模块运行时立即返回CPU。
# 这样会减少显存使用,推理会变慢
pipe.enable_model_cpu_offload()
# 子模块放入内存,需要的时候再挪到显存,比如UNet模块
# 这样会减少显存使用,推理会变慢
pipe.enable_sequential_cpu_offload()
# 插件,可以提升速度
pipe.enable_xformers_memory_efficient_attention()
参考
https://huggingface.co/docs/diffusers/en/optimization/memory
优化Stable Diffusion XL的终极指南 - 知乎