优化 Stable Diffusion 生成速度的核心在于降低显存占用与提升计算效率。最立竿见影的方法是启用 xformers 加速、使用半精度模型(FP16)以及调整分辨率。
以下是分维度的详细优化方案:
这是提升速度最显著且成本最低的手段,适用于大多数用户。
xformers 是 Meta 开发的 Transformer 优化库,能大幅降低显存占用并提升速度。
--xformers。避免使用 FP32 模型,除非你的显卡显存极大且支持特殊计算。FP16 模型体积减半,速度更快。
fp16 或 half,并在设置中确认使用了半精度。在 webui-user.bat (Windows) 或启动脚本中添加参数:
--medvram:针对 4GB-6GB 显存用户,牺牲少量速度换取大分辨率支持。--lowvram:针对 4GB 以下显存用户,速度会明显下降。--opt-sdp-attention:对于较新的 NVIDIA 显卡(30系及以上),这通常比 xformers 更快且更准确,可尝试替代 --xformers。通过微调生成时的设置,可以在质量损失很小的情况下换取速度。
| 参数 | 建议设置 | 原理说明 |
|---|---|---|
| 采样步数 (Steps) | 20 - 30 | 大多数采样器(如 Euler a, DPM++)在 20-30 步时已达到收敛,增加步数只会增加时间而无质量提升。 |
| 采样方法 (Sampler) | Euler a / DPM++ 2M | 避免使用 DDIM 或 PLMS(较慢)。DPM++ 2M Karras 是目前速度与质量平衡最好的选择。 |
| 分辨率 (Resolution) | 512x512 或 768x768 | 分辨率翻倍,显存需求呈指数级增长。建议先生成小图,再用 Hires. fix 放大。 |
| 批处理大小 (Batch size) | 1 | 除非显存极大,否则增加 Batch size 会导致显存溢出或速度极慢。增加“批处理计数 (Batch count)”更安全。 |
使用 LCM-LoRA 或 SDXL Turbo / Lightning 模型,可以将采样步数降低到 4-8 步 甚至 1 步出图,速度提升 5-10 倍。
如果你是 NVIDIA 30/40 系显卡,可以使用 TensorRT 扩展。它会针对你的显卡编译优化模型,推理速度可提升 30%-70%(但初次编译模型耗时较长)。
针对 AMD 显卡或核显用户,使用 DirectML 或 ONNX 后端通常比 PyTorch 原生支持速度更快。
| 优化项 | 预估速度提升 | 备注 |
|---|---|---|
| 启用 xformers | 20% - 50% | 显存占用也会降低 |
| 步数 50 -> 20 | 60% | 质量无明显损失 |
| 使用 LCM-LoRA | 300% - 500% | 需配合特定模型或 LoRA |
| TensorRT 加速 | 30% - 70% | 仅限 NVIDIA 新卡,需编译 |
权重与提示词技巧:
此外,优化提示词结构也能间接提升效率。过长的负面提示词(Negative Prompt) 会显著增加计算量。建议只保留关键的负面词(如 low quality, worst quality, extra fingers),精简掉冗余描述,这样可以减少模型对注意力的计算负担。