出错了qwq
今天在使用Stable Diffusion【1】的反推【2】时报错了,错误如下
Loading wd14-vit-v2 model file from SmilingWolf/wd-v1-4-vit-tagger-v2
*** Error completing request
*** Arguments: (<PIL.Image.Image image mode=RGB size=1192x671 at 0x79E8DB7F9AE0>, '', False, '', '[name].[output_extension]', 'ignore', False, False, 'wd14-vit-v2', 0.35, '', '', False, False, True, '0_0, (o)_(o), +_+, +_-, ._., <o>_<o>, <|>_<|>, =_=, >_<, 3_3, 6_9, >_o, @_@, ^_^, o_o, u_u, x_x, |_|, ||_||', False, False) {}
Traceback (most recent call last):
File "/home/***/anaconda3/envs/stablediffusion/lib/python3.10/site-packages/urllib3/connection.py", line 198, in _new_conn
sock = connection.create_connection(
File "/home/***/anaconda3/envs/stablediffusion/lib/python3.10/site-packages/urllib3/util/connection.py", line 85, in create_connection
raise err
File "/home/***/anaconda3/envs/stablediffusion/lib/python3.10/site-packages/urllib3/util/connection.py", line 73, in create_connection
sock.connect(sa)
OSError: [Errno 101] Network is unreachable
The above exception was the direct cause of the following exception:
看到OSError: [Errno 101] Network is unreachable可知是无法连接一个什么东西导致的报错。
排查
最后在"\stable-diffusion-webui\extensions\stable-diffusion-webui-wd14-tagger\tagger\interrogator.py【3】"找到了这个下载的逻辑。原本的代码:
def download(self) -> Tuple[os.PathLike, os.PathLike]:
print(f"Loading {self.name} model file from {self.kwargs['repo_id']}")
model_path = Path(hf_hub_download(
**self.kwargs, filename=self.model_path))
tags_path = Path(hf_hub_download(
**self.kwargs, filename=self.tags_path))
return model_path, tags_path
def load(self) -> None:
model_path, tags_path = self.download()
# only one of these packages should be installed at a time in any one environment
# https://onnxruntime.ai/docs/get-started/with-python.html#install-onnx-runtime
# TODO: remove old package when the environment changes?
from launch import is_installed, run_pip
if not is_installed('onnxruntime'):
package = os.environ.get(
'ONNXRUNTIME_PACKAGE',
'onnxruntime-gpu'
)
...
在download方法里使用了hf_hub_download【4】这个函数从huggingface下载模型,但是显然huggingface在我的网络环境下是访问不了的。
修复
先说说我的解决方法
先从镜像网站下载模型,放到models/interrogators【5】目录,然后更改代码如下:
# def download(self) -> Tuple[os.PathLike, os.PathLike]:
# print(f"Loading {self.name} model file from {self.kwargs['repo_id']}")
# model_path = Path(hf_hub_download(
# **self.kwargs, filename=self.model_path))
# tags_path = Path(hf_hub_download(
# **self.kwargs, filename=self.tags_path))
# return model_path, tags_path
def load(self) -> None:
# model_path, tags_path = self.download()
model_dir = Path("./models/interrogators")
model_path, tags_path = model_dir / self.model_path , model_dir / self.tags_path
# only one of these packages should be installed at a time in any one environment
# https://onnxruntime.ai/docs/get-started/with-python.html#install-onnx-runtime
# TODO: remove old package when the environment changes?
from launch import is_installed, run_pip
if not is_installed('onnxruntime'):
package = os.environ.get(
'ONNXRUNTIME_PACKAGE',
'onnxruntime-gpu'
)
改好之后报错变了:
ModuleNotFoundError: No module named 'onnxruntime'
直接pip install【6】
pip install onnxruntime
重启SD,问题解决。

写在最后的话
本来打算不更改原来的代码解决问题,因为如果改了代码,下次更新插件后又要再次修改,很麻烦。但是试了试把模型丢在hf_hub_download下载文件的cache目录【7】也不行,还是改代码算了。
Comments NOTHING