最近看到很多人在玩NovelAI/Stable-Diffusion, 有点手痒, 自己也想搞个试试. 顶着2Mb/s的宿舍网下了一晚上别人部署好的Stable-Diffusion整合包. 谁料部署过程却完全不像有些教学视频所说的"猴子也能学会", 傻瓜式的整合包并不适用于anaconda下的python. 经过一天摸索大概已经弄清楚了anaconda玩家如何部署Stable-Diffusion, 同时附上过程中遇到的(而且是较为常见的)错误(z.B. assertionerror: torch is not able to use GPU)及其解决方法.
1. 安装git, cuda, cuDNN
NovelAI/Stable-Diffusion是基于Pytorch库进行学习的, 而在windows下不能通过Pytorch进行A卡的GPU加速, 因此NovelAI/Stable-Diffusion仅适用于N卡. 这一步站内已经有很多视频作者进行了较为详细的讲解, 因该教程步骤和此类视频并无出入, 故在此不表.
2. Git部署Stable-Diffusion
在你喜欢的地方建立文件夹, 然后右键单击文件夹→在终端中打开(win10可能是"在powershell中打开"), 来到powershell界面. 这里尽量避免路径中含有中文字符, 以防万一.
然后通过git clone命令进行部署. 由于GitHub部署速度非常辣鸡, 可以使用国内镜像站, 对部署速度会有很大提升. 这里采用了gitclone.com作为镜像站, 只需要在GitHub地址前加上gitclone.com/即可.
如本例中: https://gitclone.com/github.com/AUTOMATIC1111/stable-diffusion-webui.git
3. 添加模型文件
站内已有较详细教学及资源, 详见该视频16:00处, 简言之就是将下载的模型拷入部署好的stable-diffusion目录下的models文件夹中(没有models就自己创建一个), 因为不太有难度, 所以直接默认大家都会了.
4. 运行webui-user.bat
站内多数教学到这一步就直接打开stable-diffusion目录下的webui-user.bat开始安装依赖库与进行更多的git clone, 但是对于anaconda用户来说, 这里才报错的起点. 以下就是经过一天折磨个人的一点心得, 仅作参考.
以下步骤, 适用于未安装过Pytorch等依赖库的用户.
(1) 检查
首先检查anaconda的环境变量/系统变量是否已设置好. 多数情况下安装anaconda全家桶时环境变量与系统变量就已经设置好. 但是为了避免在webui-user.bat运行时无法顺利调用\anaconda\lib下的库, 最好还是检查一下.
右键我的电脑→高级系统设置→"高级"选项卡→环境变量→在系统变量中找到名为Path的变量→编辑, 然后对照图片康康是否有遗漏的, 有的话点新建然后输入即可.
(2) 修改webui.bat中的部分代码
使用代码编辑软件(本例使用VSCode)打开webui.bat, 没有代码编辑器的话可以使用记事本 (小声: 要是你打开webui-user.bat的话可以看到本质上webui-user.bat还是在调用webui.bat). 然后把代码拉到比较后面的地方, 找到这几行代码
if exist repositories\stable-diffusion goto :clone_transformers echo Cloning Stable Difusion repository... %GIT% clone https://github.com/CompVis/stable-diffusion.git repositories\stable-diffusion >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :clone_transformers goto :show_stdout_stderr :clone_transformers if exist repositories\taming-transformers goto :clone_codeformer echo Cloning Taming Transforming repository... %GIT% clone https://github.com/CompVis/taming-transformers.git repositories\taming-transformers >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :clone_codeformer goto :show_stdout_stderr :clone_codeformer if exist repositories\CodeFormer goto :install_codeformer_reqs echo Cloning CodeFormer repository... %GIT% clone https://github.com/sczhou/CodeFormer.git repositories\CodeFormer >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :install_codeformer_reqs goto :show_stdout_stderr
可以看出来(?), 这部分是调用了git执行了git clone. 由于git clone在网速太慢的情况下很容易超时报错, 所以在这里我们同样在地址前添加gitclone.com/ (参见第二步). 即地址改为如下:
... %GIT% clone https://gitclone.com/github.com/CompVis/stable-diffusion.git repositories\stable-diffusion >tmp/stdout.txt 2>tmp/stderr.txt ... ... %GIT% clone https://gitclone.com/github.com/CompVis/taming-transformers.git repositories\taming-transformers >tmp/stdout.txt 2>tmp/stderr.txt ... ... %GIT% clone https://gitclone.com/github.com/sczhou/CodeFormer.git repositories\CodeFormer >tmp/stdout.txt 2>tmp/stderr.txt ...
注意! 此处"…"仅表示省略, 不是把代码全删喽
(3)运行webui-user.bat
通过cmd或者powershell, cd到webui-user.bat所在的目录下. 假如你不会cd到你的目录, 那么下面这些应该够用了
cd.. #返回上一级目录 d: #进入D盘根目录 cd AI_pic #进入当前目录下名为AI_pic的文件夹中 .\webui-user.bat #打开名为webui-user.bat的文件
理论上现在已经一切顺利, 部署成功了. 接下来可以站内或者其他地方寻找如何游玩即可.
以上是基本操作指南, 接下来对常见的错误进行排查
A. 对于已经安装过Pytorch等依赖库/使用conda install安装依赖库/库的安装路径位于anaconda\lib\site-packages(或其他路径)下的朋友
在运行webui-user.bat时, 会遇到错误提示:assertionerror: torch is not able to use GPU, 如图:
这是因为, 部署的Stable-Diffusion在venv文件夹下自带了一个Python, 这个Python的IDLE默认库的引用路径并不在anaconda下, 所以不得不再次修改webui.bat的代码, 以保证能够批处理文件顺利执行.
仍然使用代码编辑器打开webui.bat, 在靠前部分找到这一部分代码:
for /f "delims=" %%i in ('CALL %PYTHON% -c "import sys; print(sys.executable)"') do set PYTHON_FULLNAME="%%i" echo Creating venv in directory %VENV_DIR% using python %PYTHON_FULLNAME% %PYTHON_FULLNAME% -m venv %VENV_DIR% >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :activate_venv echo Unable to create venv in directory %VENV_DIR% goto :show_stdout_stderr
在该部分第一行添加代码, 改为如下:
for /f "delims=" %%i in ('CALL %PYTHON% -c "import sys; sys.path.append(r:'d:\anaconda\lib\site-packages'); print(sys.executable)"') do set PYTHON_FULLNAME="%%i" echo Creating venv in directory %VENV_DIR% using python %PYTHON_FULLNAME% %PYTHON_FULLNAME% -m venv %VENV_DIR% >tmp/stdout.txt 2>tmp/stderr.txt if %ERRORLEVEL% == 0 goto :activate_venv echo Unable to create venv in directory %VENV_DIR% goto :show_stdout_stderr
即在.bat文件调用Python IDLE时, 额外执行一行Python代码:
sys.path.append(r'D:\anaconda\lib\site-packages')
这里的路径不要和我填一样的, 你的pytorch安装在哪, 就填哪个路径. 对于anaconda来说, 假如是用conda install安装的Pytorch库, 路径一般就在\anaconda\lib\site-packages下. 此时按照4.(3)中的方法运行webui-user.bat即可.
B. 我安装了Pytorch按照上面做却没用/我没装过Pytorch但是也报一样的错/我不是anaconda环境也报错了
考虑两种可能性:
(1) 显卡驱动没跟上
不同版本的cuda, 需要不同对应版本的显卡驱动, 如下图所示
如何查看显卡驱动版本? 打开cmd, 输入nvidia-smi, 即可在下图所示位置找到驱动版本号.
如不满足请自行前往搜索英伟达显卡驱动于官网进行进行升级, 或使用pip uninstall(非anaconda玩家)与conda uninstall(anaconda玩家)对pytorch/torchvision/torchaudio进行卸载, 然后使用pip install与conda install进行正确版本的重装.
(2) cuda安装了CPU版而非GPU版
进入python IDLE或者新建.py文件, 执行以下代码:
import torch print(torch.__version__) print(torch.cuda.isavailable())
若结果为
1.8.1+cpu #版本号+cpu Fals
则可以判断出安装了错误的cuda版本, 请参考1.中给出的视频教程下载正确的适用于GPU加速的cuda.
前来学习!!!!