不知道平时经常运用 SD WebUI 的小伙伴发现没有,随着安置插件和模型越来越多,WebUI 时不时会出现卡顿或爆显存的情况,尤其在低显存的硬件上更加明显,只能不停的重启来解决。
估计是 WebUI 的作者张吕敏博士自己也发现了这个问题,于是升级版的 SD WebUI Forge 它来了!操作界面虽然和原来的一模一样,但运转效率和图像生成速度都有了不错的提升,下面快跟着我来看看吧~
一、Forge 基础介绍
首先关于为什么取 Forge 这个名字:单词 Forge 有「锻造」的意思,根据作者解释,该词的灵感是来源于 Minecraft Forge 我的世界,而新开发的 forge 版本项目也是致力于在此前 SD WebUI 的基础上做进一步的精炼和提效。
1. 更快的生成速度
而 SD WebUI Forge 也确实做到了这一点,首先该版本最大的特点就是开发过程中极大的简化了代码逻辑,通过优化资源配置进一步加快推理速度,尤其对显存越小的玩家来说提升愈加明显。根据官方描述,相较于原版的 SD WebUI,在运用 SDXL 模型生成 1024 分辨率的图片时可以直接带来以下性能提升:
此外,SDXL 模型在配合运用 ControlNet 时,最多支持控制单元直接翻倍,生成速度也有提升 30%~45%。
查看上面的效果对比可以发现,显存越小的硬件在运用 SD WebUI Forge 绘图时性能提升愈加明显,最高可达 75%!也就是说不需要任何额外设置,Forge 即可支持在 4GB 显存下运转 SDXL 以及在 2GB 显存下运转 SD1.5。
2. 更优质的插件生态环境
Forge 相较原版,另一个重要的变化是对资源管理方面的步调进行了优化,因此各类功能插件的适配范围大大提升,对插件开发者而言,不用再绞尽脑汁的对各类 Bug 做临时修复,消除不同扩展插件相互干扰的风险,像之前开启多个插件时容易发生的冲突报错问题也被大大缓解。
3. 支持更多的采样器
此外 Forge 里还在原版基础上添加了更多的采样器,包括但不限于 DDPM、DDPM Karras、DPM++2M Turbo、DPM++2M SDE Turbo、LCM Karras、Euler a Turbo 等,可以灵活选择升级的采样算法配合模型运用。
4. 预安置更多拓展插件
作者在新的 Forge 中为我们默认预装好了 ControlNet、FreeU、SVD 视频生成、Z123 图生 3D 对象等功能拓展,像原版 SD WebUI 没有的 Ip-adapter 蒙版、controlnet 蒙版、photomaker 等功能在新的 Forge 中都得到了原生支持。
5. 不足之处
当然缺点也是有的了,那就是新的 Forge 没法直接用秋叶大佬开发的整合包管理工具,默认情况下需要手动下载和安置 Git、Python 等环境依赖步调来进行安置,插件管理和更新也没有启动器来的方便。
好在 Forge 作者也很贴心的为我们准备好了官方安置包,其中内置了 Git 和 Python,同样可以实现一键启动,下面看下如何正确安置 Forge。
SD WebUI Forge 项目地点:
https://github.com/lllyasviel/stable-diffusion-webui-forge
二、Win 安置方法
我们在 SD WebUI Forge 的 Github 项目介绍里可以找到作者提供的 Win 系统一键下载安置包地点,点击下载解压后我们可以看到以下几个文献,其中 WebUI 部分放在「webui」的文献夹内,运用方法和之前一样,对应模型、插件等也是安置在该文献夹内。
在第一次启动 Forge 时,一定要先双击启动「update.bat」步调,因为官方提供的安置包是刚发布的初代版本,存在早期的潜在报错风险,启动该步调可以帮我们自动更新至最新版。启动过程会比较漫长,除了下载各种配置文献外,耗时最久的事需要下载一个体积 1.99G 的 CKPT 模型「realisticVisionV51_v51VAE.safetensor」,期间如果网络条件不佳很容易中断,下次又要从头开始下载。
我这边已经为大师下载好该模型,强烈建议大师直接下载至本地,提前放在 forge 根目录下的「\webui\models\Stable-diffusion」文献夹内,「update.bat」步调运转时可直接跳过模型下载步骤,更新速度会快很多。
更新完成后会在浏览器中自动为我们打开新的 SD WebUI Forge 页面,可以看到和此前 WebUI 界面完全一样。在初次更新并正常运转,日后如果想再次启动,只需双击「run.bat」步调就能正常运转了。
三、Mac 安置方法
由于作者只提供了 Win 系统的一键安置方法,相较而言 Mac 系统上的安置只能手动部署且只支持 M 芯片的电脑。这里安置 Forge 和安置原版的 SD WebUI 流程差不多,依旧是通过终端先安置软件包管理器 Homebrew,接着安置环境依赖步调 Python、Git,最后是 Forge 本体。
等到安置完成后,你可以运转以下命令,终端将返回对应步调的版本号信息,由此检测对应的几个环境依赖步调是否被正确安置。
brew –versionpython3 –versiongit –versionwget –version
接着在安置 Forge 主步调时,最常见做法是通过 Git 挪用作者在 Github 上的 Forge 步调包,下面是终端运转的挪用代码。
git clone https://github.com/lllyasviel/stable-diffusion-webui-forge
在这个过程中会花费很长时间下载对应的步调资源以及各种依赖文献,因此很容易出现各种不知名报错,所以建议大师直接下载我已经成功运转的本地步调包来运用,其中很多依赖文献已经下载完成,可以一定程度上规避掉不少网络导致的报错问题。
此外,我在 Mac 部署后运转时还发现一个问题,就是 Forge 的根目录文献夹不要和原 SD WebUI 放在一起,且 Forge 文献夹名称也要改成和原版 SD WebUI 一致,否则会出现模型无法挪用的情况。排查后猜测出现这样的原因是挪用步调中的命名还是运用原来的「stable-diffusion-webui」,而新的「stable-diffusion-webui-forge-main」无法被正确识别。
无论大师是自行在 Github 上下载安置,还是运用我提供的步调包,在本地安置完成后我们右键选择根目录文献夹在终端打开。
接着输入以下命令来启动 SD Forge,运转完成后会在默认浏览器中打开 http://127.0.0.1:7860/ ,也就是 Forge 的步调界面,到这里 Forge 就在 Mac 上就部署成功啦。
./webui.sh
如果你 Mac 同时安置原版 SD WebUI 和 Forge,且前面你没有修改 Forge 文献夹的名称,很可能你启动的还是原版的 SD WebUI,你可以在页面下方判断当前启动的是哪个版本。
四、如何与原版 WebUI 共享模型地点
这里还有一个比较困扰大师的问题,如果你的电脑上同时安置了原版的 SD WebUI 和新的 Forge,如果每个模型都要从原版那里复制一遍未免太麻烦,且浪费很多硬盘空间,下面教大师如何在 Forge 中直接挪用原版 SD WebUI 的相关模型。
打开 SD Forge,我们选择进入「webui」文献夹,在其中找到「webui-user.bat」文献,右键选择运用文本编辑器打开,可以看到以下代码:
这里就是内置好的模型资源挪用步调,我们如果想实现直接挪用原 SD WebUI 的模型文献,需要做的是将对应文献夹地点粘贴至这里,但是可以看到这里支持的挪用模型类型只有 ckpt、hypernetwork、embeddings、lora 这 4 种,而 controlnet、gfpgan 等一众其他模型文献并没有,所以建议大师直接运用下面我准备好的这串代码,可挪用的模型文献会更加齐全。
@REM Uncomment following code to reference an existing A1111 checkout. set A1111_HOME=「你的原 SD WebUI 根目录路径」set VENV_DIR=%A1111_HOME%/venv set COMMANDLINE_ARGS=%COMMANDLINE_ARGS% ^ –ckpt-dir %A1111_HOME%/models/Stable-diffusion ^ –vae-dir %A1111_HOME%/models/VAE ^ –lora-dir %A1111_HOME%/models/Lora ^ –embeddings-dir %A1111_HOME%/embeddings ^ –controlnet-dir %A1111_HOME%/extensions/sd-webui-controlnet ^ –gfpgan-models-path %A1111_HOME%/models/GFPGAN ^ –codeformer-models-path %A1111_HOME%/models/CodeFormer ^ –esrgan-models-path %A1111_HOME%/models/ESRGAN ^ –realesrgan-models-path %A1111_HOME%/models/RealESRGAN ^ –ldsr-models-path %A1111_HOME%/models/LDSR ^ –swinir-models-path %A1111_HOME%/models/SwinIR ^ –bsrgan-models-path %A1111_HOME%/models/ESRGAN ^ –scunet-models-path %A1111_HOME%/models/ScuNET call webui.bat
下面演示下具体的操作步骤,我们找到原 SD WebUI 的文献夹,右键选择「复制文献地点」,比如我这里直接运用的是秋叶大佬整合包,所以对应文献夹就是整合包的文献地点。注意原 SD WebUI 文献夹地点尽量不要包含中文字符和空格,否则后面可能会出现无法识别的情况。
接着将复制的文献地点添加至前面给大师提供的这串代码中的「你的原 SD WebUI 根目录路径」位置,这里一定要记得将文献地点中的「\」替换为反斜杠「/」,否则是无法识别的。
然后将这一整串代码粘贴至 SD Forge 的「webui-user.bat」文献中,最终的文献内容如下图所示,记得要点击保存。
设置完成后,我们正常运转 Forge 可以看到,原版的 SD WebUI 中的模型文献都已经被 Forge 成功挪用了,像 ControlNet 等控制网络模型也是可以正常运用的。
我在资源包里也为大师准备好了「webui-user.bat」文献,可以下载后替换掉 Forge 中的对应文献,然后将你本地的文献地点粘贴进去。此外,该方法不仅对 Forge 适用,像其他 A1111(指的是 Automatic1111,WebUI 项目的原始开发者)的运转文献也同样有效。
除此之外大师在运用 Forge 时可能还会遇到其他问题,首先这里方法支持挪用的只有模型文献,像各类扩展插件和辅助依赖步调是没法挪用的,因此还需要额外进行手动处理。
以 ControlNet 为例,除了需要基础的控制网络模型外,用于进行预处理的各类 Annotator 预处理器也是必不可少的,如果没有提前下载安置的话,在初次运转预处理器时会单独下载,耗时不说还可能因为网络不畅导致出现报错情况。如果你遇到了类似问题,需要先检查下原版 SD WebUI 中 ControlNet 预处理器对应的文献位置,比如下图所示位于「\extensions\sd-webui-controlnet\annotator\downloads」。
而我们需要将其完整复制到 Forge 中,但由于作者对步调资源代码进行了改写,所以在 Forge 中对应的文献地点会不一样。文末我也为大师整理好了完整的预处理器资源包,大师只需将「ControlNetPreprocessor」文献夹完整替换 Forge 的「\webui\models\ControlNetPreprocessor」文献夹即可。
以上是针对 ControlNet 举例的情况,除此之外还有像 Adetailer 等其他插件在初次运转时也会自动下载对应的模型文献,大师可以在终端里查看下载的模型资源并搜索文献位置,参考上面的方法进行处理,这里就不一一说明了。
最后,如果你的模型文献在 Forge 中没有被正确识别或运转时出现报错,仔细检查下和我提供的字符串内容是否保持一致,以及文献地点是否路径正确。上面这套操作方法是我查了不少博主资料和自己实际测试可用的,如果你觉得太麻烦或者出现实在不知道如何处理的报错,还是老老实实手动复制粘贴模型文献吧~
五、对比测试效果
下面也给大师实际测试下在绘制相同质量图像情况下原版 WebUI 和 Forge 的显存占用对比,分别运用 SD V1.5 和 SDXL 模型来测试出图效果。
对于 SD V1.5 模型,这里我选择生成共 4 个批次,每个批次 8 张,共计 32 张 512 分辨率的图像,下面是运用原版 SD WebUI 出图效果和显存消耗占比,可以看到共计用时 34.5s,平均占用显存 6.1GB。
接着我们切换至 SDXL 模型,选择生成 4 个批次,每个批次 2 张,共计 8 张 1024 分辨率的图像,共计用时 52.1s,平均占用显存 14.5GB。
我们保持提示词内容、参数、种子值等信息完全不变,再运用 Forge 来绘图看看,同样情况下 SD V1.5 模型生成 32 张 512 分辨率图像,共计用时 26.6s,平均占用显存 9.8GB。
而当切换成 SDXL 模型时,Forge 累计用时 36.5s,平均占用显存 12.7GB。
通过对比可以发现在同样图像数量和质量的情况下,Forge 在生成速度上确实比原版 SD WebUI 更具优势,尤其在 SDXL 模型上优势会更加明显:显存占用更低,生成速度反而更快。
总结
最后关于 Forge 的实际运转效果我也查阅了一些博主的测评结果和他们评论区粉丝的看法,总结来看在本地显卡配置较低的情况下,新的 SD WebUI Forge 带来出图体验的提升会更加明显,尤其在开启 ControlNet 等插件的情况下稳定性都会比原版高上不少。在本文测试里我用的是新出的 4080s 显卡,不排除显存性能过剩带来的误差,如果有成功部署好的小伙伴也可以在评论区发表下自己的测试结果和看法。
不管怎么说,无论是原版的 SD WebUI,还是新的 Forge 都只是在操作步调上进行了调整,如果大师更习惯用秋叶大佬的整合包没有必要非得更换 Forge,因为这并不会对日常的应用出图有本质的影响。Forge 更大的价值是对日后新插件的开发兼容性会高上许多,相信日后随着更多社区的资源,SD 的生态环境会更加全面和完善。