在使用Stable Diffusion WebUI生成图像时,你可能会遇到性能不佳或内存占用过高的问题。本教程将介绍一些命令行参数和优化选项,以帮助你提高性能,同时降低内存使用。
优化选项总览
以下是一些可用的优化选项和它们的说明:
命令行参数/优化选项 | 说明 |
---|---|
--opt-sdp-attention | 在某些系统上可能提高速度,但需要更多VRAM。 |
--opt-sdp-no-mem-attention | 与上一个选项类似,但更可靠,性能稍差。 |
--xformers | 启用xFormers库,显著降低内存消耗和提高速度,仅支持Nvidia GPU。 |
--force-enable-xformers | 强制启用xFormers,不考虑系统支持情况,潜在不稳定。 |
--opt-split-attention | 交叉注意力层优化,显著减少内存使用,几乎没有性能损失。 |
--disable-opt-split-attention | 禁用上述优化。 |
--opt-sub-quad-attention | 子二次注意力,内存高效的交叉注意力层优化,可显著降低内存使用。 |
--opt-split-attention-v1 | 使用较旧版本的交叉注意力优化,内存占用较低,但对生成较大图像有限制。 |
--medvram | 减少Stable Diffusion模型的VRAM使用,性能略有下降,适用于节省VRAM。 |
--lowvram | 更彻底的优化,分割unet模块以降低VRAM占用,性能显著下降,但节省内存。 |
--do-not-batch-cond-uncond | 禁止批处理正面和负面提示,节省内存,性能下降(仅1.6.0之前版本)。 |
--always-batch-cond-uncond | 禁用上述优化(仅1.6.0之前版本)。 |
--opt-channelslast | 更改Stable Diffusion的内存类型,效果未详细研究。 |
--upcast-sampling | 对通常需要--no-half 参数的Nvidia和AMD卡启用,提高生成速度。 |
优化性能与内存占用测试
下表展示了不同优化选项在特定硬件和配置下的性能和内存占用情况。请注意,实际性能可能因硬件和配置而异。
优化选项 | 内存占用(批量大小1/2/4/8/16) | 初始迭代速度 | 峰值迭代速度 | 备注 |
---|---|---|---|---|
None | 4.1 / 6.2 / OOM / OOM / OOM | 4.2 | 4.6 | 性能较慢,容易内存不足 |
v1 | 2.8 / 2.8 / 2.8 / 3.1 / 4.1 | 4.1 | 4.7 | 性能较慢,内存占用最低,不需要xFormers |
InvokeAI | 3.1 / 4.2 / 6.3 / 6.6 / 7.0 | 5.5 | 6.6 | 与默认优化器几乎相同 |
Doggetx (默认) | 3.1 / 4.2 / 6.3 / 6.6 / 7.1 | 5.4 | 6.6 | 默认优化器 |
Doggetx (medvram) | 2.2 / 2.7 / 3.8 / 5.9 / 6.2 | 4.1 | 6.3 | 使用medvram预设可节省内存但性能尚可 |
Doggetx (lowvram) | 0.9 / 1.1 / 2.2 / 4.3 / 6.4 | 1.0 | 6.3 | 使用lowvram预设性能极低,但内存节省较多 |
xFormers | 2.8 / 2.8 / 2.8 / 3.1 / 4.1 | 6.5 | 7.5 | 性能快,内存占用低(需要启用xFormers) |
xFormers (channelslast) | 2.9 / 2.9 / 2.9 / 3.6 / 4.1 | 6.4 | 7.6 | 使用cuda_alloc_conf和opt-channelslast |
请注意,性能在批量大小为1时约为峰值性能的70%左右,峰值性能通常在批量大小为8左右。性能在较大批量大小下可能会有所提高,但也可能因内存占用增加而下降。
额外优化提示(Windows)
- 禁用硬件GPU调度。
- 禁用浏览器硬件加速。
- 在Nvidia控制面板中,将电源配置更改为“最大性能”。
结论
通过选择合适的优化选项,你可以在Stable Diffusion WebUI中提高性能并降低内存占用。请根据你的硬件和需求进行测试和优化,以获得最佳结果。
注意:本教程中的性能数据基于特定硬件和配置,实际结果可能会有所不同。请根据你的系统进行优化和测试。