最近Controlnet作者推出了重磅的Stablediffusion-webui-forge版本,它在webui的基础上做了一系列的代码优化,能有效大幅提高出图速度和降低显存的消耗,通过加入Unet Patcher补丁技术,现在webui forge也能支持SVD生成视频了,瞬间comfyui就变得没那么香了。
Stable Diffusion WebUI Forge 是一个建立在稳定扩散 WebUI 之上的平台,旨在为用户提供更快速、更高效的深度学习模型部署与推断体验。通过与原始 WebUI 相比,Forge 能够实现显著的推断速度提升,优化 GPU 资源管理,并支持更大规模的扩散与批处理。
在测试中,Stable Diffusion WebUI Forge展现出了非常强大的性能。根据测试结果显示,在测试者的电脑上,Forge的图片生成速度比Web UI快了一倍左右,仅需1.9秒即可完成。Forge还内置了一些非常有用的功能,比如FreeU可以提高图像质量,而Kohya的HRFix则可以帮助SD1.5直接生成大图。
不知道平时经常使用 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。
- 更优质的插件生态环境
Forge 相较原版,另一个重要的变化是对资源管理方面的程序进行了优化,因此各类功能插件的适配范围大大提升,对插件开发者而言,不用再绞尽脑汁的对各类 Bug 做临时修复,消除不同扩展插件相互干扰的风险,像之前开启多个插件时容易发生的冲突报错问题也被大大缓解。
- 支持更多的采样器
此外 Forge 里还在原版基础上添加了更多的采样器,包括但不限于 DDPM、DDPM Karras、DPM++2M Turbo、DPM++2M SDE Turbo、LCM Karras、Euler a Turbo 等,可以灵活选择升级的采样算法配合模型使用。
- 预安装更多拓展插件
作者在新的 Forge 中为我们默认预装好了 ControlNet、FreeU、SVD 视频生成、Z123 图生 3D 对象等功能拓展,像原版 SD WebUI 没有的 Ip-adapter 蒙版、controlnet 蒙版、photomaker 等功能在新的 Forge 中都得到了原生支持。
- 不足之处
当然缺点也是有的了,那就是新的 Forge 没法直接用秋叶大佬开发的整合包管理工具,默认情况下需要手动下载和安装 Git、Python 等环境依赖程序来进行安装,插件管理和更新也没有启动器来的方便。
好在 Forge 作者也很贴心的为我们准备好了官方安装包,其中内置了 Git 和 Python,同样可以实现一键启用,下面看下如何正确安装 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 的生态环境会更加全面和完善。
请登录后查看评论内容