免费内容
网盘密匙:Qpipi
允许生成图像/视频商用
允许再次训练
不允许转售AI模型
不允许生成计算服务费
许可证:CreativeML Open RAIL-M
🎀包含版本🆕reForge_25.01.25、reForge_24.12.05、reForge_24.11.11、UNet补丁、SVD视频补丁、简单的 ControlNet、预处理器

【更新v25.01.25】reForge:将 a1111 WebUI 整体效能优化提升

Stable Diffusion WebUI Forge/reForge 都是将A1111 WebUI的整体效能优化提升而不改变原WebUI操作界面,用户无需重新学习适应。建议A1111 WebUI用户使用。

reForge 是 Forge 的后辈,但两者有相同的血缘,reForge在后端、调度和功能上优化加强了一些。性能加强的效果主要还是看硬件…

图片[1]_reForge:将 a1111 WebUI 整体效能优化提升

使用reForge前后对比:

使用前:

图片[2]_reForge:将 a1111 WebUI 整体效能优化提升

使用后:

图片[5]_reForge:将 a1111 WebUI 整体效能优化提升

Stable Diffusion WebUI Forge/reForge 是 Stable Diffusion WebUI(基于 Gradio)之上的平台,用于简化开发、优化资源管理、加快推理和研究实验功能。

“Forge”这个名字的灵感来自“Minecraft Forge”。该项目旨在成为 SD WebUI 的 Forge。

重要:分支

  • main:具有 A1111 的所有可能的上游更改、新的采样器/调度器/sd 选项等,以及与原始 forge 相比对后端的一些修改(主要是为了同时加载多个检查点)。它可能缺少一些与舒适后端相关的新功能。
  • dev_upstream:与 main 分支相同,但使用 Confy 的更新后端。它比 main 快一点。它可能不稳定。它有一些新功能、优化、自定义扩展等。Comfy 扩展可以移植到这里。
  • main_new_forge:已弃用。

安装 Forge/reForge

您有 A1111 并且您了解 Git

我在这里建议 2 条路径。似乎经过大量更改后,git reset –hard 引入了一些问题。所以现在,我们将尝试使用 git stash 来代替。 选项 1: 如果您已经拥有 OG A1111 并且您熟悉 git,我强烈建议您在终端中运行以下命令/path/to/stable-diffusion-webui

要返回 OG A1111,只需执行 或 。

git checkout mastergit checkout dev

如果您遇到合并以解决冲突的问题,您可以使用

git merge --abort

选项 2:如果上述说明不起作用,我建议按照下面的说明进行全新安装,然后将文件夹(扩展、模型等)移动到 reForge 文件夹中。

您没有 A111 或进行全新安装。

如果您知道自己在做什么,您可以使用与 SD-WebUI 相同的方法来安装 Forge/reForge。(安装 Git、Python、Git 克隆 reForge 存储库,然后运行 webui-user.bat):

然后运行 webui-user.bat 或 webui-user.sh。

当您想要更新时:

cd stable-diffusion-webui-reForge
git pull

预先完成的包是 WIP。

Forge/reForge 后端

Forge/reForge 后端删除了所有与资源管理相关的 WebUI 代码,并重新设计了所有内容。所有以前的 CMD 标志,如 、 …都已删除。添加这些标志不会导致错误,但它们现在不会执行任何操作。

我们强烈建议 Forge/reForge 用户删除所有 cmd 标志,并让 Forge/reForge 决定如何加载模型。

medvram, lowvram, medvram-sdxl, precision full, no half, no half vae, attention_xxx, upcast unet

在没有任何 cmd 标志的情况下,Forge/reForge 可以运行 4GB vram 的 SDXL 和具有 2GB vram 的 SD1.5。

您可能仍会注意的一些标志:

  1. --always-offload-from-vram(这个标志会让事情变慢,但风险更小)。此选项将允许 Forge/reForge 始终从 VRAM 中卸载模型。如果您同时使用多个软件并希望 Forge/reForge 使用更少的 VRAM 并将一些 VRAM 提供给其他软件,或者当您使用一些与 Forge/reForge 竞争 vram 的旧扩展时,或者(非常罕见)当您获得 OOM 时,这可能很有用。
  2. --cuda-malloc(这个标志会让事情变得更快,但风险更大)。这将要求 pytorch 将 cudaMallocAsync 用于张量 malloc。在某些分析器上,我可以观察到毫秒级的性能提升,但在我的大多数设备上,真正的加速通常被忽视(每张图像大约或少于 0.1 秒)。这不能设置为默认值,因为许多用户报告了异步 malloc 将使程序崩溃的问题。用户需要自行承担启用此 cmd 标志的风险。
  3. --cuda-stream(这个标志会让事情变得更快,但风险更大)。这将使用 pytorch CUDA 流(GPU 上的一种特殊类型的线程)同时移动模型和计算张量。这几乎可以消除所有模型移动时间,并将具有小 VRAM 的 30XX/40XX 设备(例如,RTX 4050 6GB、RTX 3060 笔记本电脑 6GB 等)上的 SDXL 速度提高约 15% 至 25%。但是,遗憾的是,这不能设置为默认值,因为我观察到在 2060 上出现纯黑色图像(Nan 输出)的可能性更高,而在 1080 和 2060 上出现 OOM 的可能性更高。当分辨率较大时,单个注意力层的计算时间有可能比将整个模型移动到 GPU 的时间长。发生这种情况时,下一个注意力层将 OOM,因为 GPU 充满了整个模型,并且没有剩余空间可用于计算另一个注意力层。大多数开销检测方法都不够强大,在旧设备上不可靠(在我的测试中)。用户需要自行承担启用此 cmd 标志的风险。
  4. --pin-shared-memory(这个标志会让事情变得更快,但风险更大)。仅当与 一起使用时有效。这会在卸载模型时将模块卸载到共享 GPU 内存,而不是系统 RAM。在一些具有小 VRAM 的 30XX/40XX 设备(例如,RTX 4050 6GB、RTX 3060 笔记本电脑 6GB 等)上,我可以观察到 SDXL 的加速显著(至少 20%)。但是,遗憾的是,这不能设置为默认值,因为共享 GPU 内存的 OOM 是一个比普通 GPU 内存 OOM 严重得多的问题。Pytorch 不提供任何强大的方法来卸载或检测共享 GPU 内存。一旦共享 GPU 内存 OOM,整个程序将崩溃(在 GTX 1060/1050/1066 上使用 SDXL 观察到),并且没有动态方法来防止崩溃或从崩溃中恢复。用户需要自行承担启用此 cmd 标志的风险。--cuda-stream

CMD 标志位于 ldm_patches/modules/args_parser.py 和正常 A1111 路径 (modules/cmd_args.py) 上

--disable-xformers
    Disables xformers, to use other attentions like SDP.
--attention-split
    Use the split cross attention optimization. Ignored when xformers is used.
--attention-quad
    Use the sub-quadratic cross attention optimization . Ignored when xformers is used.
--attention-pytorch
    Use the new pytorch 2.0 cross attention function.
--disable-attention-upcast
    Disable all upcasting of attention. Should be unnecessary except for debugging.
--gpu-device-id
    Set the id of the cuda device this instance will use.

(VRAM 相关)

--always-gpu
    Store and run everything (text encoders/CLIP models, etc... on the GPU).
--always-high-vram
    By default models will be unloaded to CPU memory after being used. This option keeps them in GPU memory.
--always-normal-vram
    Used to force normal vram use if lowvram gets automatically enabled.
--always-low-vram
    Split the unet in parts to use less vram.
--always-no-vram
    When lowvram isn't enough.
--always-cpu
    To use the CPU for everything (slow).

(浮点型)

--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

(稀有平台)

--directml
--disable-ipex-hijack
--pytorch-deterministic

同样,Forge/reForge 不建议用户使用任何 cmd 标志,除非你非常确定你真的需要这些标志。

UNet 补丁

支持 FreeU 给有需要的小伙伴:下载UNet 补丁文件,解压后 forge_freeu.py 放在

extensions-builtin/sd_forge_freeu/scripts/ 目录里覆盖(可以先重命名老文件再粘贴)。

图片[8]_reForge:将 a1111 WebUI 整体效能优化提升

ControlNet 最终可以由不同的扩展调用。

Stable Video Diffusion 视频补丁

请注意,尽管上述代码看起来像独立的代码,但它们实际上会自动卸载/卸载任何其他模型。例如,下面是我打开 webui,加载 SDXL,生成一个图像,然后转到 SVD,然后生成图像帧。您可以看到 GPU 内存得到了完美管理,SDXL 被移动到 RAM,然后 SVD 被移动到 GPU。

请注意,此管理是完全自动的。这使得编写扩展变得超级简单。

解压后 forge_svd.py 放在

extensions-builtin/sd_forge_freeu/scripts/ 目录里覆盖(可以先重命名老文件再粘贴)。

稳定的视频扩散文件目录:

extensions-builtin/sd_forge_svd/scripts/forge_svd.py

简单的 ControlNet

下面是一个简单的扩展,它具有完全独立的 ControlNet 传递,永远不会与任何其他扩展冲突:

extensions-builtin/sd_forge_controlnet_example/scripts/sd_forge_controlnet_example.py

请注意,此扩展是隐藏的,因为它仅适用于开发人员。要在 UI 中查看它,请使用 . --show-controlnet-example

此示例中的内存优化是完全自动的。您无需关心内存和推理速度,但如果您愿意,您可能希望缓存对象。

图片[12]_reForge:将 a1111 WebUI 整体效能优化提升

添加预处理器

以下是添加具有完美内存管理的 normalbae 预处理器的完整代码。

您可以使用任意独立的扩展来添加预处理器。

您的预处理器将被所有其他使用 modules_forge.shared.preprocessors

以下文件在 extensions-builtin\forge_preprocessor_normalbae\scripts\preprocessor_normalbae.py

其它新功能(在原始 WebUI 中不可用)

多亏了 Unet Patcher,许多新事物现在成为可能,并在 Forge/reForge 中得到支持,包括 SVD、Z123、掩码 IP 适配器、掩码 controlnet、photomaker 等。

Masked Ip-Adapter

Masked ControlNet

Marigold Depth

图片[19]_reForge:将 a1111 WebUI 整体效能优化提升

New Sampler

DDPM

其他采样器可能可用,但在调度器合并后,应该不需要它们。

关于扩展

ControlNet 和 TiledVAE 已集成,您应该卸载这两个扩展:

sd-webui-controlnet
multidiffusion-upscaler-for-automatic1111

请注意,AnimateDiff 正在由 sd-webui-animatediff forge/master 分支和 sd-forge-animatediff 的 continue-revolution 构建(它们是同步的)。(继续原词:Prompt Travel、Inf T2V、ControlNet V2V 已被证明运行良好;Motion Lora、I2I 批次仍在建设中,可能在近期完成)

其他扩展应该可以正常工作,例如:

canvas-zoom
translations/localizations
Dynamic Prompts
Adetailer
Ultimate SD Upscale
Reactor

但是,如果较新的扩展使用 Forge/reForge,则它们的代码可能会短得多。

通常,如果使用 Forge/reForge 的 unet 补丁程序对旧扩展进行返工,则可以删除 80% 的代码,尤其是当它们需要调用 controlnet 时。

💡如有问题或建议,🥳请在社区评论告诉我们。🎨享受精彩的AI绘画乐趣!| 使用Qpipi读图提示功能,获取图片TAG Prompt提示 | Stable Diffusion AI绘图软件常见问题解答 | AI绘画新人必备工具指南

⭕ 看官老爷觉得本文有用,请点赞、收藏、关注作者。

© 版权声明
THE END
❤️ 喜欢就支持一下吧!点赞支持作者喔 👍
点赞23 分享
【更新v25.01.25】reForge:将 a1111 WebUI 整体效能优化提升_Qpipi
【更新v25.01.25】reForge:将 a1111 WebUI 整体效能优化提升
此内容为免费资源,请登录后查看
0积分
网盘密匙:Qpipi
允许生成图像/视频商用
允许再次训练
不允许转售AI模型
不允许生成计算服务费
许可证:CreativeML Open RAIL-M
🎀包含版本🆕reForge_25.01.25、reForge_24.12.05、reForge_24.11.11、UNet补丁、SVD视频补丁、简单的 ControlNet、预处理器
免费资源
✍️ 评论 共16条

请登录后发表评论

      • 小皮的头像_QpipiVIP会员小皮徽章-小有名气_Qpipi等级-LV8_Qpipi作者0