stable-diffusion-webui-forge工具是一个基于Stable Diffusion WebUI(基于Gradio)构建的AI绘图工具平台,目标在于简化插件开发,优化资源管理,加速推理。Forge的名字灵感来自"Minecraft Forge"。这个项目的目标是成为SD WebUI的Forge。Forge承诺永远不会对Stable Diffusion WebUI用户界面添加不必要的改变,对于熟悉Stable Diffusion WebUI的同学,能够借助与Automatic1111 WebUI经验,快速上手Forge的操作使用。
题外话:Forge作者一直活跃在AIGC绘图社区。先后开源了ControlNet、Foooucs社区优秀的开源软件,最近他又投入到Forge的开发,目标简化AIGC新手入门绘图门槛。
在分辨率为1024px图像质量下,Forge与原始WebUI在SDXL模型推理速率相比,可获得极大的性能加速提升:
- • 如果你使用常见的GPU,如8GB显存,你可以期望推理速度(it/s)提高约30~45%,GPU内存峰值(在任务管理器中)降低约700MB到1.3GB,最大扩散分辨率(不会OOM)提高约2倍到3倍,最大扩散批量大小(不会OOM)提高约4倍到6倍。
- • 如果你使用性能较低的GPU,如6GB显存,你可以期望推理速度(it/s)提高约60~75%,GPU内存峰值(在任务管理器中)降低约800MB到1.5GB,最大扩散分辨率(不会OOM)提高约3倍,最大扩散批量大小(不会OOM)提高约4倍。
- • 如果你使用性能强大的GPU,如4090,带有24GB显存,你可以期望推理速度(it/s)提高约3~6%,GPU内存峰值(在任务管理器中)降低约1GB到1.4GB,最大扩散分辨率(不会OOM)提高约1.6倍,最大扩散批量大小(不会OOM)提高约2倍。
- • 如果你使用ControlNet来进行SDXL推理,最大ControlNet数量(不会OOM)提高约2倍,SDXL+ControlNet的速度提高约30~45%。
另外,Forge引入的另一个非常重要的变化是Unet Patcher。使用Unet Patcher,像Self-Attention Guidance, Kohya High Res Fix, FreeU, StyleAlign, Hypertile等插件生态集成都能用大约100行代码简易高效的实现,极大的简化了插件生态的集成。由于Unet Patcher的引入,在Forge中能够支持更多的新插件生态,包括 SVD、Z123、masked Ip-adapter、masked controlnet、photomaker等新技术工具。
除此之外,Forge还增加了一些高效的采样器,例如:DDPM、DDPM Karras、DPM++ 2M Turbo、DPM++ 2M SDE Turbo、LCM Karras、Euler A Turbo等。
sd-webui-forge安装
Git安装
如果是熟悉Git有一定开发经验的用户,可以使用git clone下载最新版forge源码本地安装.
环境安装:
git clone https://github.com/lllyasviel/stable-diffusion-webui-forge.git
cd ./stable-diffusion-webui-forge
# Linux
pip3 install torch torchvision torchaudio
# window
# pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121
pip install -r requirements.txt -U
与sd-web-ui共享模型,节约磁盘浪费。如果是window用户则修改webui-user.bat如下:
@echo off
set PYTHON=
set GIT=
set VENV_DIR=
set COMMANDLINE_ARGS=
@REM Uncomment following code to reference an existing A1111 checkout.
set A1111_HOME=[stable-diffusion-webui目录]
set VENV_DIR=%A1111_HOME%/venv
set COMMANDLINE_ARGS=%COMMANDLINE_ARGS% ^
--ckpt-dir %A1111_HOME%/models/Stable-diffusion ^
--hypernetwork-dir %A1111_HOME%/models/hypernetworks ^
--embeddings-dir %A1111_HOME%/embeddings ^
--lora-dir %A1111_HOME%/models/Lora
call webui.bat
当看见启动命令如下则设置共享成功:
Launching Web UI with arguments: --xformers --forge-ref-a1111-home=sd目录/ --ckpt-dir sd目录/models/Stable-diffusion --vae-dir sd目录/models/VAE --hypernetwork-dir sd目录/models/hypernetworks --embeddings-dir sd目录/embeddings --lora-dir /models/lora --controlnet-dir sd目录/models/ControlNet --controlnet-preprocessor-models-dir sd目录/extensions/sd-webui-controlnet/annotator/downloads
官方并未提供linux操作指南,笔者根据sd-webui经验测试通过。为了不破坏原代码,避免后续git更新合并冲突,笔者选择在本地新增webui-run.sh:
export venv_dir="-"
export A1111_HOME=[stable-diffusion-webui目录]
./webui.sh --xformers --forge-ref-a1111-home=$A1111_HOM
然后运行./webui-run.sh就可以启动forge软件了。
快捷技巧:如果你也和笔者一样,喜欢干净自主可控的环境,则可以选择上面方案。同时也可以增加环境命令别名一键启动。在本地文件~/.bash_aliases中增加如下配置(首次没重启命令行,需要source ~/.bash_aliases),然后即可以用forge一键启动:
alias forge='conda activate [conda env] && cd "stable-diffusion-webui-forge目录" && ./webui-run.sh'
安装包安装
对于不熟悉git操作同学,则可以下载官方提供的一键安装包。下载完成安装包后,本地解压缩文件,然后使用update.bat
更新,再使用./webui.bat
运行,便可启动forge软件。作者提醒到:一定要运行update.bat
命令,这个很重要的,因为forge代码还在快速迭代开发中,确保及时更新最新代码和环境,否则可能会遇见一些未知的潜在bug版本。与sd-web-ui共享绘图模型的方式与git方案完全一致。
Forge启动
从启动界面可以看到,Forge的用户使用界面与sd-web-ui完美的保持WebUI不变。这对新手用户上手门槛降低了极大的门槛。在启动界面中,能够看见新增的SVD、Z123两个tab,这是前文说的Unet Patcher带来的新特性。
另外作者提到,Forge在保持了前端界面一致性,并承诺永远不增加任何不必要的改变。后端则移除了所有与资源管理相关的WebUI代码,并重新构建了后端的全部基础设施,是一个重大的重构过程。
Forge插件不会共享,和webui一样,使用extension安装或者手工从webui复制。
sd-webui-forge体验
在本地rtx4090 24G显存的Linux环境中,使用sd_xl_base_1.0模型绘图,能够看见对应性能提升。耗时3.2秒,平均7.18GB显存使用,最高峰8.46GB,系统使用率42.1%。相信对于其他低显存机器,有更显著的推理提升。
使用图像扩大算法R-ESRGAN 4x+,扩大2X体验。工具设置参数如下:
耗时18.1秒,平均13.6GB显存使用,最高峰17.72GB,系统使用率82.3%。
forge主要是对显存使用做了有效优化,对30系显卡提升比较明显,40系显卡提升空间不大。但是有一些新增插件支持会很好,比如:sd-forge-layerdiffusio,以及官方feature列表中的Playground v2.5支持也是期待的功能。
绘图体验
1girl, solo, portrait, dark hair, slicked back hair, simple background, shirt, parted lip, lips, expressionless
附录
- • stable-diffusion-webui-forge:https://github.com/lllyasviel/stable-diffusion-webui-forge
- • 安装包下载:https://github.com/lllyasviel/stable-diffusion-webui-forge/releases/download/latest/webui_forge_cu121_torch21.7z