IrisRainbowNeko / HCP-Diffusion

A universal Stable-Diffusion toolbox
Apache License 2.0
899 stars 75 forks source link

学习文档示例,WEBUI格式模型转换报错:UnpicklingError: invalid load key, '\xa0'. #54

Closed Erwin11 closed 10 months ago

Erwin11 commented 10 months ago

用的是文档的示例 https://hcpdiff.readthedocs.io/zh-cn/latest/user_guides/model_convert.html

最终报错:

magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: invalid load key, '\xa0'.

windows 系统, HCP-Diffusion版本:commit 9573c9b16d37263d79dd5e4fd4ad45cc5dfc8153 Date: Tue Nov 14 20:47:31 2023 +0800

情况说明如下,我git clone HCP-Diffusion之后,用python -m venv venv 新建虚拟环境,然后激活虚拟环境,输入文档的代码, 并将其中模型目录换成我自己的。 它这个报错, 是我输入的参数有问题嘛?

完整代码如下:

(venv) E:\AI\HCP-diffusion\HCP-Diffusion-webui\HCP-Diffusion>python -m hcpdiff.tools.sd2diffusers ^
More? --checkpoint_path "E:\AI\HCP-diffusion\erwin-demo\SD_to_Diffuse_Model\CKPT\meinamix_meinaV11.safetensors" ^
More? --original_config_file "E:\AI\HCP-diffusion\erwin-demo\SD_to_Diffuse_Model\SD1.5-v1-inference.yaml" ^
More? --dump_path "E:\AI\HCP-diffusion\erwin-demo\SD_to_Diffuse_Model\Diffuse_Output"
A matching Triton is not available, some optimizations will not be enabled.
Error caught was: No module named 'triton'
wandb is not available
Traceback (most recent call last):
  File "C:\Users\erwin\.pyenv\pyenv-win\versions\3.10.9\lib\runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "C:\Users\erwin\.pyenv\pyenv-win\versions\3.10.9\lib\runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "E:\AI\HCP-diffusion\HCP-Diffusion-webui\HCP-Diffusion\hcpdiff\tools\sd2diffusers.py", line 385, in <module>
    convert_ckpt(args)
  File "E:\AI\HCP-diffusion\HCP-Diffusion-webui\HCP-Diffusion\hcpdiff\tools\sd2diffusers.py", line 212, in convert_ckpt
    pipe = load_sd_ckpt(
  File "C:\Users\erwin\.pyenv\pyenv-win\versions\3.10.9\lib\site-packages\diffusers\pipelines\stable_diffusion\convert_from_ckpt.py", line 1258, in download_from_original_stable_diffusion_ckpt
    checkpoint = torch.load(checkpoint_path_or_dict, map_location=device)
  File "C:\Users\erwin\.pyenv\pyenv-win\versions\3.10.9\lib\site-packages\torch\serialization.py", line 1028, in load
    return _legacy_load(opened_file, map_location, pickle_module, **pickle_load_args)
  File "C:\Users\erwin\.pyenv\pyenv-win\versions\3.10.9\lib\site-packages\torch\serialization.py", line 1246, in _legacy_load
    magic_number = pickle_module.load(f, **pickle_load_args)
_pickle.UnpicklingError: invalid load key, '\xa0'.
IrisRainbowNeko commented 10 months ago

命令后面添加参数--from_safetensors,转换safetensors格式的要加这个