如何避免HuggingFace中StableDiffusion模型重复下载大文件
解决Stable Diffusion每次运行重复下载模型的问题
问题根源在于StableDiffusionPipeline.from_pretrained默认会从Hugging Face Hub拉取模型文件,若未正确利用本地缓存或指定本地模型路径,就会重复下载大文件。以下是两种可行的解决方法:
方法一:本地加载模型文件
先手动把模型下载到本地目录,之后直接加载本地文件,彻底避免重复下载:
- 安装Git LFS后,在终端执行克隆命令,克隆Hugging Face Hub上的CompVis/stable-diffusion-v1-4仓库:
(若无法使用Git LFS,可直接到该仓库页面手动下载所有包含模型权重的文件,比如git lfs clone https://huggingface.co/CompVis/stable-diffusion-v1-4vae、unet、text_encoder等目录下的.safetensors文件) - 修改代码,将模型路径替换为本地目录路径:
from torch import autocast from diffusers import StableDiffusionPipeline # 替换成你本地模型的存放路径 pipe = StableDiffusionPipeline.from_pretrained( "./stable-diffusion-v1-4", use_auth_token=True ).to("cuda") prompt = "a photo of an astronaut riding a horse on mars" with autocast("cuda"): image = pipe(prompt)["sample"][0] image.save("astronaut_rides_horse.png")
方法二:配置缓存路径复用已下载文件
diffusers默认会把模型缓存到系统默认的缓存目录(Windows:C:\Users\<用户名>\.cache\huggingface\hub;Linux/macOS:~/.cache/huggingface/hub),确保代码运行环境能访问该目录,或手动指定缓存路径:
- 终端运行代码前设置环境变量:
Linux/macOS:
Windows命令行:export TRANSFORMERS_CACHE="/自定义缓存路径"set TRANSFORMERS_CACHE=C:\自定义缓存路径 - 或在Python代码中直接设置:
import os # 指定缓存目录 os.environ["TRANSFORMERS_CACHE"] = "/自定义缓存路径" from torch import autocast from diffusers import StableDiffusionPipeline pipe = StableDiffusionPipeline.from_pretrained( "CompVis/stable-diffusion-v1-4", use_auth_token=True ).to("cuda") prompt = "a photo of an astronaut riding a horse on mars" with autocast("cuda"): image = pipe(prompt)["sample"][0] image.save("astronaut_rides_horse.png")
注意事项
- 克隆模型仓库必须用Git LFS,普通Git克隆只会下载配置文件,无法获取大体积模型文件。
- 确保缓存目录或本地模型目录有读写权限,权限不足也会导致重复下载。
内容的提问来源于stack exchange,提问作者AshhadDevLab
相关产品推荐
相关产品推荐

