使用stable diffusion(sdxl-turbo)时遇到报错
具体报错如下:
root/miniconda3/lib/python3.8/site-packages/diffusers/image_processor.py:111: RuntimeWarning: invalid value encountered in cast images = (images * 255).round().astype("uint8")
输出是全黑的图
这是代码:
sdpath = '/root/autodl-tmp/cache/sdxl-turbo'
#尝试的办法一:使用修补的vae
vae = diffusers.AutoencoderKL.from_pretrained("madebyollin/sdxl-vae-fp16-fix",torch_dtype=torch.float16)
pipe = DiffusionPipeline.from_pretrained(sdpath, vae=vae,torch_dtype=torch.float16, variant="fp32")#办法二:将fp16变成fp32
pipe.scheduler = diffusers.DDIMScheduler(rescale_betas_zero_snr=True)#办法三:设置了rescale_betas_zero_snr
pipe.to(device)
pipe.generate_ip_adapter_embeds = generate_ip_adapter_embeds.__get__(pipe)
# load ip adapter
ipadaperpath = "/root/autodl-tmp/cache/IP-Adapter"
pipe.load_ip_adapter(
ipadaperpath, subfolder="sdxl_models",
weight_name="ip-adapter_sdxl_vit-h.safetensors",torch_dtype=torch.float16)
# set ip_adapter scale (defauld is 1)
pipe.set_ip_adapter_scale(1)
可以看到,我尝试了常用的两个办法,还是不行,而且奇怪的是,这套代码在另一个设备上能跑出结果(一模一样的代码)。