如何从CivitAI获取model_index.json?解决StableDiffusion运行报错
解决CivitAI模型在Diffusers中缺少model_index.json的问题
问题根源
CivitAI上下载的.safetensors模型属于Checkpoint格式,是为Stable Diffusion WebUI这类工具设计的;而你用的diffusers库默认需要Diffusers格式的模型(必须包含model_index.json等配置文件),直接加载自然会报错。
两种实用解决方法
方法1:转换Checkpoint为Diffusers格式
用diffusers官方脚本把单文件模型转换成标准Diffusers格式,步骤如下:
- 确保依赖齐全:
pip install diffusers transformers accelerate safetensors - 运行转换命令(替换路径为你的实际文件路径):
python -m diffusers.pipelines.stable_diffusion.convert_from_ckpt \ --checkpoint_path ./model/your-model.safetensors \ --dump_path ./converted-model \ --from_safetensors True - 修改代码指向转换后的文件夹:
from diffusers import StableDiffusionPipeline import torch pipe = StableDiffusionPipeline.from_pretrained( "./converted-model", torch_dtype=torch.float16, use_safetensors=True ) prompt = "cat" image = pipe(prompt).images[0] image.save("output_image.png")
方法2:直接加载单文件模型(无需转换)
用from_single_file方法直接读取.safetensors文件,省去转换步骤,代码修改如下:
from diffusers import StableDiffusionPipeline import torch # 直接指向你的.safetensors文件路径 pipe = StableDiffusionPipeline.from_single_file( "./model/your-model.safetensors", torch_dtype=torch.float16, use_safetensors=True ) prompt = "cat" image = pipe(prompt).images[0] image.save("output_image.png")
注意:替换代码中的
./model/your-model.safetensors为你实际下载的模型文件路径。
额外优化提示
- 如果GPU显存不足,可添加以下代码减少显存占用:
pipe.enable_attention_slicing() # 轻量显存优化 # 或更彻底的CPU卸载(适合低显存显卡) # pipe.enable_model_cpu_offload() - 若生成图片颜色异常,可单独下载对应模型的VAE并加载:
from diffusers import AutoencoderKL vae = AutoencoderKL.from_pretrained("path/to/your-vae.safetensors", use_safetensors=True) pipe.vae = vae
内容的提问来源于stack exchange,提问作者Pradip Sodha
相关产品推荐
相关产品推荐

