想要优化 Stable Diffusion 的性能,核心在于平衡显存(VRAM)、内存(RAM)和算力(Compute)。根据你的硬件配置不同,优化的侧重点也不同。
以下是分层次的优化方案,从软件设置到硬件升级,再到进阶技巧。
一、 基础软件设置(立竿见影)
无论你用 Automatic1111、ComfyUI 还是 SD.Next,这些设置是最基本的。
1. 启动参数优化 (Command Line Arguments)
这是最重要的优化手段。修改你的 webui-user.bat (Windows) 或启动脚本。
推荐组合(针对 4GB-8GB 显存):
--medvram --xformers --opt-sdp-attention
参数详解:
--xformers:必选。NVIDIA 显卡的神器,能大幅降低显存占用并提升速度(10%-30%)。如果不兼容,尝试 --opt-sdp-attention。--medvram:4GB-8GB 显存必选。将模型分块加载,牺牲一点速度换取显存空间。--lowvram:4GB 及以下显存必选。比 medvram 更激进,速度会慢很多,但能跑起来。--no-half:如果你的显卡很老(如 GTX 10系列)或者出现黑图/NaN错误,加上这个(但会变慢、占显存)。--opt-sub-quad-attention:另一种注意力算法,某些显卡(特别是AMD或非N卡)比 xformers 更好。--upcast-sampling:修复部分采样器在高分辨率下报错的问题,略微增加显存占用。
2. 界面内设置 (Settings)
在 WebUI 的 Settings 标签页中调整:
- Optimizations (优化):
- Attention mechanism: 选择
xFormers 或 SDP (no xFormers)。 - Stable Diffusion:
- Clip skip: 保持 1 或 2(数值越高影响越小,但无关性能)。
- Live Previews (实时预览):
- Live previews display: 选择
Never 或 Every 10 steps,避免边跑边画图浪费算力。 - Checkpoint 管理:
- 尽量使用 FP16 或 Pruned (剪枝) 模型。Full 模型(2GB+)加载慢,FP16(1.5GB左右)速度更快且画质几乎无差。
二、 显存与算力优化技巧
1. 降低分辨率
- 原理:显存占用与像素数成正比(二次方关系)。
- 建议:SD 1.5 基础训练分辨率是 512x512,SDXL 是 1024x1024。
- 做法:不要直接在 1920x1080 生成。建议先低分辨率生成(如 512x768),然后使用 Hires. Fix (高清修复) 或 Ultimate SD Upscale 放大。
2. 批处理 (Batch Size)
- 不要增加 Batch Size (批次数量),除非你显存极大(如 24GB+)。
- 增加 Batch count (批次计数):这影响不大,因为是一张一张跑。
3. 启用 VAE 优化
- Tiled VAE:如果你在解码图像(生成结束或预览时)爆显存,在设置中勾选
Move VAE to RAM 或安装 Tiled VAE 扩展。它会分块处理 VAE,极大降低显存压力。
4. 关闭不必要的扩展 (Extensions)
- Automaic1111 的很多扩展(尤其是涉及 ControlNet、额外预览、复杂的 UI 插件)会拖慢速度。不用的插件请禁用或删除。
三、 模型层面的优化
1. 使用 SDXL Turbo / LCM / Turbo 模型
- SDXL Turbo / SD Turbo: 只需 1-2 步采样就能出图,速度快到离谱。
- LCM (Latent Consistency Models): 可以适配大多数 SD 1.5 和 SDXL 模型,只需 4-8 步即可生成高质量图片,速度是原来的 5-10 倍。
- 方法:下载 LCM LoRA 或使用专门的 LCM 模型,并将采样步数 (Steps) 降至 4-8。
2. 模型量化 (Model Quantization)
- GGUF 格式: 类似于 LLM 的量化。现在 SD 模型也有 GGUF 格式。可以将模型量化为 Q4, Q5 等。虽然画质有轻微损失,但显存占用极低,加载速度极快(特别适合 ComfyUI 或低显存用户)。
- 使用 FP8: 如果你使用 SDXL 且显卡支持(30系/40系及以上),使用 FP8 精度的模型可以节省大量显存且速度更快。
四、 硬件与环境优化
1. 硬件升级
- 显卡 (GPU): 核心。建议 NVIDIA 显卡,因为 CUDA 和 xFormers 对 SD 支持最好。
- 入门: RTX 3060 12GB (显存大,性价比神卡)。
- 进阶: RTX 4070 Ti / 4080 / 4090。
- 内存 (RAM): 建议 16GB 起步,32GB 最佳。如果内存不足,系统会频繁读写硬盘(虚拟内存),导致卡顿。
- 硬盘 (SSD): 模型文件很大(几个GB一个),放在 NVMe SSD 里加载速度比机械硬盘快得多。
2. 软件环境
- 显卡驱动: 更新到最新的 NVIDIA Game Ready 或 Studio 驱动。
- PyTorch: 确保你使用的是支持 CUDA 的 PyTorch 版本。Automatic1111 通常会自动处理,但如果你手动配置环境,务必检查。
五、 不同显存配置的建议方案
| 显存大小 | 推荐设置 | 建议分辨率 | 备注 |
|---|
| 4GB 以下 | --lowvram --xformers | 512x512 (SD1.5) | 只能跑 SD1.5,跑 SDXL 极其困难。 |
| 4GB - 6GB | --medvram --xformers | 512x768 (SD1.5) | 勉强跑 SDXL,需配合 Tiled VAE。 |
| 8GB | --medvram --xformers | 768x1024 (SD1.5) / 1024x1024 (SDXL) | 甜点区,大部分操作都能做。 |
| 12GB | --xformers | 1024x1024+ | 可以跑大部分 SDXL 和训练 LoRA。 |
| 16GB+ | (默认即可) | 任意 | 可以开启 Batch Size > 1,进行大模型训练。 |
六、 进阶:ComfyUI vs Automatic1111
如果你追求极致的性能:
- ComfyUI: 比 Automatic1111 快 10%-25%,显存占用更低。因为它是节点式工作流,没有 WebUI 那么多的后台开销,且支持异步加载。
- 建议: 如果你已经熟悉 SD,强烈建议尝试 ComfyUI,配合
fp8_e4m3fn 精度的模型,体验极佳。
总结:快速检查清单
- 启动参数加了
--xformers 和 --medvram 了吗? - 用的是 FP16 模型还是 Full 模型?
- 生成时分辨率是不是太高了?开了 Hires. Fix 吗?
- 显卡驱动更新了吗?
- 如果是 N 卡,PyTorch 版本对吗?
按照以上步骤调整,通常能解决 90% 的性能卡顿和爆显存问题。