参考资料
Novel AI 是一个收费的项目,给一定的钱然后在指定期间内能渲出N张的收费模式
我们这里基于 Stable-Diffusion(简称SD)来本地跑 Novel AI
首先下载:Stable Diffusion – Web UI
新用户推荐参考该仓库中的教程:
Stable Diffusion 引导
Stable Diffusion FAQ
Stable Diffusion Web UI – WIKI
参考链接中有提到详细的部署教程,本文仅仅将其中的内容进行搬运、整理
初次部署
准备工作
- 确保你即将下载 Web UI 的工作目录的上级目录中,没有空格,没有名为 venv、repositores 文件夹,这可能引发误判
- 确保你 使用的是 Nvidia 显卡,并且安装了 CUDA 工具集
- 另外,确认你的显卡型号,如果是 N卡16系列,可能算出的图是黑色,请参考下文
这种生产型任务,对于显存(VRAM) 的要求相对高一些,
主流的 GTX 1650 显卡、甚至低端的 GTX 10系 的显卡,理论上都是可以运行的,只是速度没有 RTX 20系、30系的快
而 VRAM 受限时可以尝试文档中给出的若干优化方案,如果还是不行,则只能考虑用 CPU 来计算,或者升级配置
安装
- 安装 git,并且拉取该项目. 日后可以通过
git pull
更新程序 - 安装 python 和 pip 工具,将两者设置环境变量,根据需要设置 python 全局镜像
- 准备好 git、python、pip 后,运行项目中的
webui-user.bat
,它会运行一系列文件去下载依赖,如果下载卡住不动请自行设置镜像或者代理
当更新完毕后,webui 会提示你在浏览器中打开 http://127.0.0.1:7860/
如果前面流程没有问题,即可成功打开 webui 的主界面
如果这个流程中,你没有能正确安装,则可以尝试教程中给出的另一个方案:–ALTERNATE GUIDE (Conda)–
此外,Linux 的部署请参考教程
另外,目前的教程中有提到另一种有别于 webui.py 的文件,叫做 v2.py, 看上去仍然在开发中,有兴趣可以参考文档
下载地址在 v2.py 里,放到 web-ui 根目录执行
导入必要文件
WebUI 只是一个界面工具,要生成画还需要导入模型文件,
这里我们需要下载 leak 整合包,
更多的整合包可以参考 Stable Diffusion Models,
注:这些模型在相关场合经常被缩写为 SD(Stable Diffusion)
、WD(Waifu Diffusion)
等等,
对于这里提供的 leak 包,里面包含 SD 模型数据,
我们要找出其中有三类文件,共四个地方,其中模型文件是必须移动的
后缀类型 | 文件地址(基于下载文件根目录) | 移动到目标位置(基于WebUI根路径) | 描述 |
---|---|---|---|
*.vae.pt | animevae.pt | models/Stable-diffusion/NAME.vae.pt | 【可选】 是一种名为 hypernetwork 的技术,用于优化细节 |
*.pt | modules/modules/*.pt | models/hypernetworks/*.pt | 同上 |
*.yaml | animesfw-final-pruned/config.yaml | models/Stable-diffusion/NAME.yaml | 【可选】配置文件 |
*.ckpt | animesfw-final-pruned/model.ckpt | models/Stable-diffusion/NAME.ckpt | 【必须】模型文件 |
按照提示将你需要的文件搬运(或拷贝)到指定地方,并且将 Stable-diffusion 文件夹下的三种对应文件取相同的名字(这里的 NAME 只是示例)
当文件正确放置后,如果你的 WebUI 正在启动中,则需要重新启动,或者在设置界面重新加载配置、并且选择你刚加入的模型(比如这里叫做 NAME.ckpt)
注:这里用的是 animesfw-final-pruned
文件夹里的模型,这里的模型经过官方优化处理(pruned 技术), 因此文件大小要小很多,如果使用其他文件可能有许多训练时期残留的数据,使得文件很大,并且加载时间也会很长
详情参考下文 关于-ckpt-裁剪
运行时的相关问题
参数追加
你不能也不应该在命令行中对 webui-user.bat
追加参数,那是没用的
如果你需要追加参数,打开 webui-user.bat
文件,在 COMMANDLINE_ARGS
之后追加,
其中,
- 等号前后千万不要有空格,否则不会正确注入参数。
- 每个参数之间用空格分开,就像命令行那样。
形如:
COMMANDLINE_ARGS=--option1 --option2 option3 ...
另外,改参数上访的 VENV_DIR
可以设置虚拟环境,这里不再赘述,有需要请参考文档
Out of memory
如果你的 VRAM 较低(对于中低端显卡,或者希望算更大 batch size 的情况),建议追加参数
--medvram
对应 4G VRAM--lowvram
对应 2G VRAM
此时在 webui-user.bat
编写为 COMMANDLINE_ARGS=--medvram
另外,如果此异常仍然发生,则追加 --always-batch-cond-uncond
参数
如果你做了以上工作,仍然遇到 Out of memory
问题,
确保你关闭了 浏览器的硬件加速,关闭了任何可能占用 VRAM 的东西,
如果你安装了 GFPGAN 请移除它
如果经过这些尝试仍然不能解决问题,可以去网络社区询问,或者升级个人配置,又或者尝试用 CPU 去算图,这里不再赘述
GTX 16系 N卡 可能存在的问题
算图时,可能一切流程都是正常的,但是最后出来的图是黑色
这可能是因为你的显卡不支持 half precision floating point numbers(半浮点数)
你必须追加 --precision full --no-half
参数,以避免使用半浮点,而这样可能会申请更多的 VRAM
综合上一节提到的优化方案,对于 GTX16 的显卡,推荐参数如下:
COMMANDLINE_ARGS=--lowvram --always-batch-cond-uncond --precision full --no-half
其他常见问题
原文参考:–TROUBLESHOOTING–
比较重要的在前面已经提及,这里追加说明几点剩下的:
- img2img 模式下遇到
RuntimeError: Sizes of tensors must match
,需要改变输入图片的分辨率 - webui.bat 需要下的依赖在
requirements_versions.txt
中,如果你要安别的版本的工具可以修改,并配合REQS_FILE=requirements.txt
使用,不过建议使用默认值 - 如果输出的是彩虹,则你设置的图像分辨率太低
- CFG 应该保持在 5 ~ 15 之间,否则颜色会失真
关于 ckpt 裁剪
–PRUNING A .CKPT–
未修建的模型文件有 7G,里面包含很多冗余的训练数据
它可以不损失质量修剪到 3.6G,以节约 RAM 的使用率和加载时间
- 把你要处理的 *.ckpt 文件放到 webui 根目录
/stable-diffusion-webui
- 下载这个python文件,prune.py
- 删除它的 6 和 8 行,最后一行的 prune_it(file) 中将 file 替换为你具体的模型文件子路径(相对路径),例如 prune_it(‘wd-v1-2-full-emma.ckpt’)
然后保存到根目录 - 下载原文中提到的bat文件,由于Windows会报毒所以我直接复制下来了,把这个文件和 python文件放一起,然后运行它,等几分钟