【转AI绘画】Anaconda用户NovelAI(Stable-Diffusion)部署小教程(含常见错误排除)

最近看到很多人在玩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界面. 这里尽量避免路径中含有中文字符, 以防万一.

image

然后通过git clone命令进行部署. 由于GitHub部署速度非常辣鸡, 可以使用国内镜像站, 对部署速度会有很大提升. 这里采用了gitclone.com作为镜像站, 只需要在GitHub地址前加上gitclone.com/即可.

如本例中: https://gitclone.com/github.com/AUTOMATIC1111/stable-diffusion-webui.git

image

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的变量→编辑, 然后对照图片康康是否有遗漏的, 有的话点新建然后输入即可.

image

(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, 如图:

image

这是因为, 部署的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, 需要不同对应版本的显卡驱动, 如下图所示

image

如何查看显卡驱动版本? 打开cmd, 输入nvidia-smi, 即可在下图所示位置找到驱动版本号.

image

如不满足请自行前往搜索英伟达显卡驱动于官网进行进行升级, 或使用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.

- THE END -
版权声明:
转载原创文章请注明,文章出处://kinggoo.com
原文地址:https://kinggoo.com/python-novelai-install.htm
发表评论?

2 条评论。

  1. 前来学习!!!!

回复给 course ¬
取消回复


此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据