kaggle云端部署的stable diffusion运行时Lora模块没法儿用

问题遇到的现象和发生背景 云端部署的stable diffusion运行时Lora模块没法儿用,运行时报错
Error loading script: lora_script.py
Traceback (most recent call last):
  File "/kaggle/working/stable-diffusion-webui/modules/scripts.py", line 256, in load_scripts
    script_module = script_loading.load_module(scriptfile.path)
  File "/kaggle/working/stable-diffusion-webui/modules/script_loading.py", line 11, in load_module
    module_spec.loader.exec_module(module)
  File "", line 728, in exec_module
  File "", line 219, in _call_with_frames_removed
  File "/kaggle/working/stable-diffusion-webui/extensions-builtin/Lora/scripts/lora_script.py", line 4, in <module>
    import lora
  File "/kaggle/working/stable-diffusion-webui/extensions-builtin/Lora/lora.py", line 238, in <module>
    def lora_apply_weights(self: torch.nn.Conv2d | torch.nn.Linear | torch.nn.MultiheadAttention):
TypeError: unsupported operand type(s) for |: 'type' and 'type'


求帮忙看看是什么问题怎么解决

看起来是lora.py文件中的lora_apply_weights函数出了问题,函数中使用了“|”操作符,但是“|”操作符不支持type类型,所以报错了。可以尝试把“|”操作符改成“or”,看看是否可以解决问题。

该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:

根据错误信息,这是一个Python脚本中的错误,具体原因是在 lora.py 文件中的 def lora_apply_weights(self: torch.nn.Conv2d | torch.nn.Linear | torch.nn.MultiheadAttention): 这一行代码中,使用了 Python 3.10 中新增的类型注释语法 |,而你的 Python 版本可能不支持这个语法。

要解决这个问题,你可以考虑将该语句改为旧的类型注释语法,例如:

def lora_apply_weights(self):
    """
    Docstring
    """
    if isinstance(self, (torch.nn.Conv2d, torch.nn.Linear, torch.nn.MultiheadAttention)):
        ...

这样就可以避免使用 Python 3.10 中的新语法了。另外,也可以尝试升级你的 Python 版本到 3.10 以支持新的类型注释语法。


如果以上回答对您有所帮助,点击一下采纳该答案~谢谢