下载的stable diffudion 模型如何转换到diffusers可用的格式
1.背景
从liblibai或者civitai上下载的模型,通常是safetensors或者cpkt格式的模型。而在diffusers库中,常用的是.bin并搭配json配置文件。两者不能直接使用。
各种格式的区别参考大模型中 .safetensors 文件、.ckpt文件和.pth以及.bin文件区别、加载和保存以及转换方式_safetensors文件-CSDN博客
2、方法
在diffusers中提供了转换工具,具体位置在diffusers库中 ./scripts/convert_original_stable_diffusion_to_diffusers.py。
对于safetensors,使用命令:
python ./scripts/convert_original_stable_diffusion_to_diffusers.py
--checkpoint_path xxx.safetensors
--dump_path save_dir
--from_safetensors
对于cpkt,使用命令:
python ./scripts/convert_original_stable_diffusion_to_diffusers.py
--checkpoint_path xxx.ckpt
--dump_path save_dir
3、模型使用
(1)如果使用整个模型:
pipe = StableDiffusionPipeline.from_pretrained("模型保存位置", torch_dtype=torch.float16)
(2)如果只想使用unet模型:
unet = UNet.from_pretrained(“模型保存位置”, subfolder="unet").to(dtype=weight_dtype, device="cuda")