如何离线使用StableDiffusionPipeline.from_single_file加载本地safetensors模型?
解决StableDiffusionPipeline离线加载本地.safetensors模型的问题
问题原因
你的代码在离线状态下报错,是因为StableDiffusionPipeline.from_single_file()方法默认会尝试从远程仓库拉取对应的模型配置文件(比如报错里的v1-inference.yaml),即使你已经有本地的.safetensors权重文件,离线时无法建立网络连接就会触发ConnectionError。
解决方案
要实现离线运行,需要提前获取配置文件并修改代码强制使用本地资源,步骤如下:
1. 提前联网获取配置文件
在联网状态下,你可以通过两种方式获取所需的v1-inference.yaml配置文件:
- 方式一:运行一次你的原始代码,diffusers会自动将配置文件缓存到本地默认路径(通常是
~/.cache/huggingface/hub),找到该文件后复制到你项目的本地目录(比如新建configs文件夹存放)。 - 方式二:直接根据报错中的配置文件路径对应的内容,手动复制保存到本地文件中。
2. 修改代码加载本地配置
修改代码,指定本地配置文件路径,并设置local_files_only=True强制仅使用本地资源,示例代码如下:
from diffusers import StableDiffusionPipeline MODEL_PATH = '/home/mypath/Stable-diffusion/limitlessvision_v20.safetensors' # 替换为你本地配置文件的实际路径 CONFIG_PATH = './configs/v1-inference.yaml' pipeline = StableDiffusionPipeline.from_single_file( MODEL_PATH, config=CONFIG_PATH, local_files_only=True )
额外说明
如果你的模型需要其他额外组件(如tokenizer、vae等),同样需要提前在联网时将这些组件的文件缓存到本地,或者手动下载到指定路径,确保所有依赖资源都在本地可用。
内容的提问来源于stack exchange,提问作者S12000
相关产品推荐
相关产品推荐

