我正在尝试运行 following repo,它基本上是一个用于 ControlNet/Stable Diffusion 的 Docker 容器。它需要我先下载模型文件,我已经完成了,然后你可以运行容器来生成图像。
没有对 repo 做任何更改,我得到一个错误,指出找不到
v1-5-pruned.ckpt
文件:
Traceback (most recent call last):
File "/root/.pyenv/versions/3.8.16/lib/python3.8/site-packages/cog/server/worker.py", line 185, in _setup
run_setup(self._predictor)
File "/root/.pyenv/versions/3.8.16/lib/python3.8/site-packages/cog/predictor.py", line 49, in run_setup
predictor.setup()
File "predict.py", line 33, in setup
self.canny_model = load_model(canny_model_name)
File "predict.py", line 243, in load_model
torch.load(os.path.abspath('./models/v1-5-pruned.ckpt'))
File "/root/.pyenv/versions/3.8.16/lib/python3.8/site-packages/torch/serialization.py", line 699, in load
with _open_file_like(f, 'rb') as opened_file:
File "/root/.pyenv/versions/3.8.16/lib/python3.8/site-packages/torch/serialization.py", line 230, in _open_file_like
return _open_file(name_or_buffer, mode)
File "/root/.pyenv/versions/3.8.16/lib/python3.8/site-packages/torch/serialization.py", line 211, in __init__
super(_open_file, self).__init__(open(name, mode))
FileNotFoundError: [Errno 2] No such file or directory: '/src/models/v1-5-pruned.ckpt'
ⅹ Model setup failed
要重现此错误,只需克隆 repo,下载模型权重并使用
cog
运行预测。
这是它失败的功能:
def load_model(name):
model = create_model(f'./models/{name}.yaml').cpu()
torch.load(os.path.abspath('./models/v1-5-pruned.ckpt'))
model.load_state_dict(load_state_dict(f'./models/v1-5-pruned.ckpt', location='cuda'), strict=False)
model.load_state_dict(load_state_dict(f'./models/{name}.pth', location='cuda'), strict=False)
model = model.cuda()
return model
现在,我检查了容器,确定模型文件在那里。我假设问题与使用的(相对)路径有关,并且它们与文件夹结构不匹配。我试图以各种方式改变路径以使其指向正确的位置,但我就是想不通。
这里发生了什么? Torch 加载文件的基本路径是否与其余代码不同?