Stable Diffusion WebUI Forge/reForge
Stable Diffusion WebUI Forge/reForge 是一个基于 Stable Diffusion WebUI(基于 Gradio)之上的平台,旨在简化开发、优化资源管理、加速推理并研究实验性功能。
“Forge” 这一名称灵感来源于 “Minecraft Forge”。该项目旨在成为 SD WebUI 的 Forge。
为稳定性建议替代 reForge 的仓库
- Forge Classic: https://github.com/Haoming02/sd-webui-forge-classic,来自 @Haoming02,包含大量优化和功能,基于 reforge、forge 等旧版 forge 后端。
- Forge Neo: https://github.com/Haoming02/sd-webui-forge-classic/tree/neo,来自 @Haoming02。 它是 Forge2 的延续(因此支持 Flux、fp8、gguf 等),但具有更多功能(wan 2.2、Qwen Image、Nunchaku 等),专注于优化和新功能。
- ersatzForge: https://github.com/DenOfEquity/ersatzForge,来自 DenOfEquity,基于 Forge2,但正如他所说,对 Forge2 webUI 进行了(实验性的、有主见的)修改。
谢谢!
Forge2/reForge2
- newmain_newforge: 基于最新的 forge2(gradio4、flux 等),并包含一些我计划非常缓慢地添加的小改动。目前它支持 python 3.12、sage/flash attention 支持、reForge (1) 中的所有采样器和调度器,以及最近支持的 CFG++ 采样器。
其他分支:
- main:包含多项更改和更新的主分支。但不如 main-old 分支稳定。
- dev:与 main 类似,但包含更多不稳定的更改。例如,对于 sd1.x 和 sdxl,使用 comfy/ldm_patched 后端而不是 A1111。
- dev2:比 dev 更不稳定,目前与 dev 相同。
- experimental:与 dev2 相同,但使用 gradio 4。
- main-old:使用旧版 forge 后端的分支。可能是最稳定且较旧的分支(2025-03)
安装 Forge/reForge
(建议)全新安装。
为此,您需要 Python(Python 3.7 到 3.12 均可正常工作,3.13 仍存在一些兼容性问题)
如果您知道自己在做什么,可以使用与 SD-WebUI 相同的方法安装 Forge/reForge。(安装 Git、Python,Git Clone reForge 仓库 https://github.com/Panchovix/stable-diffusion-webui-reForge.git 然后运行 webui-user.bat):
git clone https://github.com/Panchovix/stable-diffusion-webui-reForge.git
cd stable-diffusion-webui-reForge
git checkout main
然后运行 webui-user.bat(Windows)或 webui-user.sh(Linux,对于后者,请确保根据您的文件夹、路径和所需设置取消注释相应的行)。
当您想要更新时:
cd stable-diffusion-webui-reForge
git pull
如果使用 Windows 7 和/或 CUDA 11.x
为此,安装方式略有不同,因为它使用另一个 req 文件。我们将原始 req 文件重命名为备份,然后将旧版文件重命名为原始文件名,以保持更新功能正常工作。 对于 Windows CMD,操作如下:
git clone https://github.com/Panchovix/stable-diffusion-webui-reForge.git
cd stable-diffusion-webui-reForge
git checkout main
ren requirements_versions.txt requirements_versions_backup.txt
copy requirements_versions_legacy.txt requirements_versions.txt
Windows PS1
git clone https://github.com/Panchovix/stable-diffusion-webui-reForge.git
cd stable-diffusion-webui-reForge
git checkout main
Rename-Item requirements_versions.txt requirements_versions_backup.txt
Copy-Item requirements_versions_legacy.txt requirements_versions.txt
然后运行 webui-user.bat(Windows)。
你已有 A1111 且熟悉 Git
教程来自:https://github.com/continue-revolution/sd-webui-animatediff/blob/forge/master/docs/how-to-use.md#you-have-a1111-and-you-know-git
如果你已经拥有 OG A1111 并且熟悉 git,一个选项是前往 /path/to/stable-diffusion-webui 并
git remote add reForge https://github.com/Panchovix/stable-diffusion-webui-reForge
git branch Panchovix/main
git checkout Panchovix/main
git fetch reForge
git branch -u reForge/main
git stash
git pull
若要返回 OG A1111,只需执行 git checkout master 或 git checkout main。
如果你卡在合并以解决冲突,可以使用 git merge --abort 回退
预打包方案已规划,但我不确定如何实现。欢迎提交 PR 或提供相关帮助。
Forge/reForge 后端
Forge/reForge 后端移除了所有与资源管理相关的 WebUI 代码,并对所有功能进行了重构。所有之前的 CMD 标志,如 medvram, lowvram, medvram-sdxl, precision full, no half, no half vae, attention_xxx, upcast unet、... 均已移除。添加这些标志不会导致错误,但它们现在不会有任何作用。
在不使用任何 cmd 标志的情况下,Forge/reForge 可以使用 4GB 显存运行 SDXL,使用 2GB 显存运行 SD1.5。
一些您可能仍需注意的标志:
-
--always-offload-from-vram(此标志会使操作变慢,但风险更低)。此选项将使 Forge/reForge 始终从 VRAM 中卸载模型。如果您同时使用多个软件,并希望 Forge/reForge 使用更少的 VRAM,将部分 VRAM 留给其他软件,或者当您使用某些会与 Forge/reForge 竞争 VRAM 的旧扩展时,或者(非常罕见地)当您遇到 OOM 时,此选项可能很有用。 -
--cuda-malloc(此标志会使操作变快,但风险更高)。这将要求 pytorch 使用 cudaMallocAsync 进行张量内存分配。在某些性能分析器中,我可以观察到毫秒级的性能提升,但在大多数我的设备上,实际加速往往不明显(每张图像约 0.1 秒或更少)。由于许多用户报告异步内存分配会导致程序崩溃,因此不能将其设置为默认值。用户需自行承担风险启用此 cmd 标志。 -
--cuda-stream(此标志会使速度更快,但风险更高)。这将使用 pytorch CUDA streams(GPU 上的一种特殊线程类型)来同时移动模型和计算张量。这几乎可以消除所有模型移动时间,并在使用小显存的 30XX/40XX 设备(例如,RTX 4050 6GB、RTX 3060 Laptop 6GB 等)上,将 SDXL 的速度提升约 15% 到 25%。然而,不幸的是,这无法被设置为默认值,因为我观察到在 2060 上出现纯黑图像(Nan 输出)的可能性更高,以及在 1080 和 2060 上出现 OOM 的几率更高。当分辨率较大时,单个 attention 层的计算时间有可能长于将整个模型移动到 GPU 的时间。当这种情况发生时,下一个 attention 层将会 OOM,因为 GPU 已被整个模型占满,没有剩余空间用于计算另一个 attention 层。大多数开销检测方法在旧设备上(在我的测试中)不够稳健,无法可靠工作。用户需要自行承担风险来启用此 cmd 标志。 -
--pin-shared-memory(此标志会使速度更快,但风险更高)。仅在与--cuda-stream一起使用时有效。在卸载模型时,这将把模块卸载到共享 GPU 内存,而不是系统 RAM。在某些 VRAM 较小的 30XX/40XX 设备(例如,RTX 4050 6GB、RTX 3060 Laptop 6GB 等)上,我可以观察到 SDXL 有显著(至少 20%)的速度提升。然而,不幸的是,这不能设置为默认值,因为共享 GPU 内存的 OOM 比常见的 GPU 内存 OOM 是一个更严重的问题。Pytorch 没有提供任何稳健的方法来卸载或检测共享 GPU 内存。一旦共享 GPU 内存 OOM,整个程序将会崩溃(在 GTX 1060/1050/1066 上使用 SDXL 时观察到),并且没有动态方法来防止或从崩溃中恢复。用户需要自行承担风险启用此 cmd 标志。
一些额外的标志,可以根据你的需求帮助提升性能或节省 VRAM,或者更多。它们中的大多数可以在 ldm_patched/modules/args_parser.py 和正常的 A1111 路径(modules/cmd_args.py)中找到:
--disable-xformers 禁用 xformers,以使用其他注意力机制,如 SDP。 --use-sage-attention 使用 SAGE 注意力实现,来自 https://github.com/thu-ml/SageAttention。您需要单独安装该库,因为它需要 triton。 --attention-split 使用分割交叉注意力优化。当使用 xformers 时将被忽略。 --attention-quad 使用次二次交叉注意力优化。当使用 xformers 时将被忽略。 --attention-pytorch 使用新的 pytorch 2.0 交叉注意力函数。 --disable-attention-upcast 禁用所有注意力的上转换。除调试外,通常不需要。 --force-channels-last 在推理模型时强制使用 channels last 格式。 --disable-cuda-malloc 禁用 cudaMallocAsync。 --gpu-device-id 设置此实例将使用的 cuda 设备 ID。 --force-upcast-attention 强制启用注意力上转换。
(VRAM related)
--always-gpu 将所有内容(文本编码器/CLIP 模型等)存储并运行在 GPU 上。 --always-high-vram 默认情况下,模型在使用后会被卸载到 CPU 内存。此选项使它们保留在 GPU 内存中。 --always-normal-vram 用于在 lowvram 被自动启用时强制使用正常 vram。 --always-low-vram 将 unet 拆分为部分以减少 vram 使用。 --always-no-vram 当 lowvram 不够用时。 --always-cpu 使用 CPU 处理所有内容(速度慢)。
(float point type)
--all-in-fp32
--all-in-fp16
--unet-in-bf16
--unet-in-fp16
--unet-in-fp8-e4m3fn
--unet-in-fp8-e5m2
--vae-in-fp16
--vae-in-fp32
--vae-in-bf16
--clip-in-fp8-e4m3fn
--clip-in-fp8-e5m2
--clip-in-fp16
--clip-in-fp32
(rare platforms)
--directml
--disable-ipex-hijack
--pytorch-deterministic
Lora ctl (Control)
我添加了此仓库,已适配 reforge。
如果没有原版,这是不可能实现的!
非常感谢 cheald 的 Lora ctl (Control)。reforge 扩展的链接是:https://github.com/Panchovix/sd_webui_loractl_reforge_y.git
非常感谢 @1rre 为 lora control 的初步可用版本所做的工作!
您可以在各自的仓库中查看如何使用它们
https://github.com/cheald/sd-webui-loractl
将内置扩展移至独立仓库
由于内置扩展使 UI 变得非常杂乱,我移除了一些扩展并将其拆分为独立的仓库。你可以通过 UI 上的扩展安装器安装它们,或者在 extensions 文件夹中执行 git clone repo.git,将 repo.git 替换为以下链接。
- RAUNet-MSW-MSA (HiDiffusion): https://github.com/Panchovix/reforge_jankhidiffusion.git
- Skimmed CFG: https://github.com/Panchovix/reForge-SkimmedCFG.git
- Forge Style Align: https://github.com/Panchovix/sd_forge_stylealign.git
- reForge Sigmas Merge: https://github.com/Panchovix/reForge-Sigmas_merge.git
- Differential Diffusion: https://github.com/Panchovix/reForge-DifferentialDiffusion.git
- Auomatic CFG: https://github.com/Panchovix/reForge-AutomaticCFG.git
- reForge_Advanced_CLIP_Text_Encode (尚未可用): https://github.com/Panchovix/reForge_Advanced_CLIP_Text_Encode.git
- Hunyuan-DiT-for-webUI-main: https://github.com/Panchovix/Hunyuan-DiT-for-webUI-main.git
- PixArt-Sigma-for-webUI-main: https://github.com/Panchovix/PixArt-Sigma-for-webUI-main.git
- StableCascade-for-webUI-main: https://github.com/Panchovix/StableCascade-for-webUI-main.git
- StableDiffusion3-for-webUI-main: https://github.com/Panchovix/StableDiffusion3-for-webUI-main.git
forge2 之前的最后一个“旧” Forge 提交 (https://github.com/lllyasviel/stable-diffusion-webui-forge/commit/bfee03d8d9415a925616f40ede030fe7a51cbcfd)。
支持
有些人一直在询问如何捐赠或支持该项目,我对此真的非常感激!我根据一些建议创建了这条 buymeacoffe 链接!
