前一篇专栏发出之后发现自己的Stable-Diffusion虽然可以顺利打开webui界面, 但是只有txt2img(即文字转图片)功能可用. img2img选项卡中可以正常上传待处理图片, 点击generate按钮后进度条却卡在初始长度一动不动, 与此同时launch.py打开的cmd窗口也毫无相应. 研究半天, 最后成功解决了img2img点击generate按钮后无响应的问题.
首先提前说明, 笔者是在anaconda环境下进行Stable-Diffusion的部署, 所以对于非anaconda用户而言参考价值或许有限. 以下是对该问题产生的几种可能原因的浅显分析.
1. Pytorch无法正常调用CUDA工具包/Python无法正常调用torch/gradio/pytorch-lightning/kiwisolver等库
对于anaconda用户, 最好在部署Stable-Diffusion时建立一个虚拟环境(具体如何建立可以参考下面的文章). 以下是原因(不感兴趣可以跳过不看):
【转AI绘画】Anaconda用户NovelAI(Stable-Diffusion)部署小教程(含常见错误排除)
https://kinggoo.com/python-novelai-install.htm
因为\Stable-Diffusion\venv目录下本身带有Python编译器, 当anaconda用户不进行环境隔离就直接运行webui.bat或launch.py进行部署时, 默认会优先调用该路径下的Python.exe, 把库安装在\Stable-Diffusion\venv\lib\site-packages下. 而系统的环境变量中不包含venv下的Python库路径, 只有\anaconda\lib\site-packages, 所以调用torch/kiwisolver/gradi/pytorch-lightning这些库时或多或少会存在调用失败的情况.
在上述原因下, 即使创建了隔离的虚拟环境且安装了适用于GPU加速的CUDA工具包, 编译器的torch库有时也会无法成功调用, 并返回一个警告:
"Warning: caught exception ‘Torch not compiled with CUDA enabled’, memory monitor disabled"
此时使用Powershell/cmd/anaconda prompt任选其一, cd进webui.bat所在的目录中激活虚拟环境并使用以下代码激活虚拟环境
activate automatic
在automatic环境下运行pythond代码:
import torch
print(torch.cuda.is_available())
得到的返回值为False.
False
推荐的解决方案是在该虚拟环境下重新安装torch/kiwisolver/gradi/pytorch-lightning等库. 首先使用conda list指令查询该虚拟环境下是否已经安装了不能正常调用的库, 有的话先用conda uninstall卸载, 然后再使用conda install指令重新安装.
conda list 库名
conda uninstall 库名
conda install 库名
那么我怎么知道到底是哪个库出岔子了呢? 答案是最好通过IDE(如VSCode/Pycharm等等)运行launch.py快速定位. 当然假如没有安装IDE, 打开webui.bat也可以通过报错的具体位置的代码段(如"import 库名")找到调用异常的库.
2. 未使用管理员身份运行launch.py/webui.bat
因为在依赖库的安装与git clone过程中可能会遇到安装路径下需要管理员身份进行文件操作, 因此在打开cmd/Powershell/Anaconda Prompt时务必单击右键选择"以管理员身份运行", 然后在进行后续的代码操作.
除了以上方法之外, 也可以尝试重启Gradio并刷新组件的方法尝试解决. 在Stable-Diffusion页面上点击setting选项卡, 拉到底可以找到Restart Gradio and Refresh components (Custom Scripts, ui.py, js and css only)按钮, 点击等待页面刷新尝试重新使用img2img.
这个问题我是实实在在遇到了 当时解决这个问题想了好多方法,但基本还是版本对应问题。卸载重启重新安装对应版本
我看不错噢,谢谢老师