当前位置:   article > 正文

StableDiffusionInpaintPipeline的Example报错:OSError: Unable to load weights from pytorch checkpoint..._loading pipeline components.

loading pipeline components.

项目地址: 

https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/inpainticon-default.png?t=N7T8https://huggingface.co/docs/diffusers/api/pipelines/stable_diffusion/inpaint

背景:

运行的是以下这个Example,在上一次报错后,已经把模型下载到了本地并对应修改了执行脚本中的内容

上一次是网络连接错误,解决方法是:icon-default.png?t=N7T8https://blog.csdn.net/chenzhuochen7788/article/details/135825187?spm=1001.2014.3001.5501完整报错内容如下: 

  1. (myconda) root@P4Qmo1:/mnt/Diffusers/inpainting# ls
  2. SD_inpaint_eg.py runwayml--stable-diffusion-inpainting
  3. (myconda) root@P4Qmo1:/mnt/Diffusers/inpainting# python3 SD_inpaint_eg.py
  4. Loading pipeline components...: 43%|█████▌ | 3/7 [00:29<00:39, 9.92s/it]
  5. Traceback (most recent call last):
  6. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/transformers/modeling_utils.py", line 533, in load_state_dict
  7. return torch.load(
  8. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/torch/serialization.py", line 712, in load
  9. return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
  10. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/torch/serialization.py", line 1044, in _load
  11. unpickler = UnpicklerWrapper(data_file, **pickle_load_args)
  12. TypeError: 'weights_only' is an invalid keyword argument for Unpickler()
  13. During handling of the above exception, another exception occurred:
  14. Traceback (most recent call last):
  15. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/transformers/modeling_utils.py", line 542, in load_state_dict
  16. if f.read(7) == "version":
  17. File "/root/miniconda3/envs/myconda/lib/python3.8/codecs.py", line 322, in decode
  18. (result, consumed) = self._buffer_decode(data, self.errors, final)
  19. UnicodeDecodeError: 'utf-8' codec can't decode byte 0x80 in position 64: invalid start byte
  20. During handling of the above exception, another exception occurred:
  21. Traceback (most recent call last):
  22. File "SD_inpaint_eg.py", line 20, in <module>
  23. pipe = StableDiffusionInpaintPipeline.from_pretrained(
  24. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/huggingface_hub/utils/_validators.py", line 118, in _inner_fn
  25. return fn(*args, **kwargs)
  26. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/diffusers/pipelines/pipeline_utils.py", line 1271, in from_pretrained
  27. loaded_sub_model = load_sub_model(
  28. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/diffusers/pipelines/pipeline_utils.py", line 525, in load_sub_model
  29. loaded_sub_model = load_method(os.path.join(cached_folder, name), **loading_kwargs)
  30. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/transformers/modeling_utils.py", line 3527, in from_pretrained
  31. state_dict = load_state_dict(resolved_archive_file)
  32. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/transformers/modeling_utils.py", line 554, in load_state_dict
  33. raise OSError(
  34. OSError: Unable to load weights from pytorch checkpoint file for '/mnt/Diffusers/inpainting/runwayml--stable-diffusion-inpainting/text_encoder/pytorch_model.bin' at '/mnt/Diffusers/inpainting/runwayml--stable-diffusion-inpainting/text_encoder/pytorch_model.bin'. If you tried to load a PyTorch model from a TF 2.0 checkpoint, please set from_tf=True.
问题:

查看第一个报错信息:

  1. Traceback (most recent call last):
  2. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/transformers/modeling_utils.py", line 533, in load_state_dict
  3. return torch.load(
  4. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/torch/serialization.py", line 712, in load
  5. return _load(opened_zipfile, map_location, pickle_module, **pickle_load_args)
  6. File "/root/miniconda3/envs/myconda/lib/python3.8/site-packages/torch/serialization.py", line 1044, in _load
  7. unpickler = UnpicklerWrapper(data_file, **pickle_load_args)
  8. TypeError: 'weights_only' is an invalid keyword argument for Unpickler()

说的是‘weights_only'参数有问题,因为模型和代码都是官网上搞到的,如果有问题早就被别人发现了,所以怀疑是不是版本问题。

第一行:问题出在transformers这个库,感觉上是版本不兼容。

解决:

分别查看了torch和tansformers的版本:

  1. >>> import transformers
  2. >>> print(transformers.__version__)
  3. 4.37.0
  4. >>> import torch
  5. >>> print(torch.__version__)
  6. 1.11.0+cu113

torch是租用的云服务器上预装的,版本不算新。

然后觉得可能是自己装的transformers这个库版本太新了。

尝试降版本到4.36,报错解决了。(装好后pip check一下检查有没有冲突)

  1. (myconda) root@wnyg7e:/mnt/Diffusers/sd-inpainting# pip install transformers==4.36
  2. (myconda) root@wnyg7e:/mnt/Diffusers/sd-inpainting# pip check

之后可以运行代码:

  1. (myconda) root@wnyg7e:/mnt/Diffusers/sd-inpainting# python3 SD_inpaint_eg.py
  2. Loading pipeline components...: 43%|█████████████████▏ | 3/7 [00:08<00:12, 3.10s/it]`text_config_dict` is provided which will be used to initialize `CLIPTextConfig`. The value `text_config["id2label"]` will be overriden.
  3. `text_config_dict` is provided which will be used to initialize `CLIPTextConfig`. The value `text_config["bos_token_id"]` will be overriden.
  4. `text_config_dict` is provided which will be used to initialize `CLIPTextConfig`. The value `text_config["eos_token_id"]` will be overriden.
  5. Loading pipeline components...: 100%|████████████████████████████████████████| 7/7 [00:30<00:00, 4.37s/it]
  6. 100%|██████████████████████████████████████████████████████████████████████| 50/50 [00:09<00:00, 5.54it/s]
  7. (myconda) root@wnyg7e:/mnt/Diffusers/sd-inpainting# vim SD_inpaint_eg.py
  8. (myconda) root@wnyg7e:/mnt/Diffusers/sd-inpainting# ls
  9. SD_inpaint.png SD_inpaint_eg.py stable-diffusion-inpainting

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/小蓝xlanll/article/detail/700006
推荐阅读
相关标签
  

闽ICP备14008679号