StableDiffusion_01_setup

参考资料

Novel AI 是一个收费的项目,给一定的钱然后在指定期间内能渲出N张的收费模式
我们这里基于 Stable-Diffusion(简称SD)来本地跑 Novel AI

首先下载:Stable Diffusion – Web UI

新用户推荐参考该仓库中的教程:
Stable Diffusion 引导
Stable Diffusion FAQ
Stable Diffusion Web UI – WIKI

SD 模型下载页
Hypernet 下载

参考链接中有提到详细的部署教程,本文仅仅将其中的内容进行搬运、整理

初次部署

准备工作

  • 确保你即将下载 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文件放一起,然后运行它,等几分钟

Leave A Reply

Your email address will not be published. Required fields are marked *