如何开启 Stable Diffusion WebUI 的 xformers 加速功能

文章导读
在 Stable Diffusion WebUI 中开启 xformers 加速,通常需要在启动脚本的命令行参数中添加 `--xformers` 标记。该功能主要适用于 NVIDIA 显卡用户,用于降低显存占用并提升生成速度,但在新版 PyTorch 环境下可能已被 SDP 注意力机制替代。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

在 Stable Diffusion WebUI 中开启 xformers 加速,通常需要在启动脚本的命令行参数中添加 `--xformers` 标记。该功能主要适用于 NVIDIA 显卡用户,用于降低显存占用并提升生成速度,但在新版 PyTorch 环境下可能已被 SDP 注意力机制替代。

先说结论:开启 xformers 需修改启动配置文件,但需确认当前 WebUI 版本是否仍优先支持该库。

  • 适合:使用 NVIDIA 显卡且显存紧张的用户,或旧版本 WebUI 环境。
  • 先准备:备份 webui-user.batwebui-user.sh 文件,确认 PyTorch 版本兼容性。
  • 验收:启动控制台日志中出现 xformers attention enabled 字样即为生效。

命令速用版

Windows 用户编辑 webui-user.bat,Linux 用户编辑 webui-user.sh,在 COMMANDLINE_ARGS 变量中加入参数。

set COMMANDLINE_ARGS=`--xformers`

若已有其他参数,用空格隔开,例如 set COMMANDLINE_ARGS=`--xformers` `--no-half`

为什么会这样

xformers 通过优化注意力机制计算流程来减少显存占用和计算时间。Stable Diffusion 模型的核心计算集中在 Attention 层,默认实现显存消耗较大,xformers 库提供了更高效的算子实现。

分步处理

第一步:找到 WebUI 根目录下的启动脚本文件。

第二步:右键选择编辑,定位到 COMMANDLINE_ARGS 行。

第三步:在引号内添加 `--xformers`,确保前后有空格分隔其他参数。

第四步:保存文件并重新运行启动脚本,观察控制台输出。

回滚提醒:若启动报错,删除该参数即可恢复默认设置。

怎么验证是否生效

查看启动时的命令行窗口日志,搜索关键词 xformers。若显示 Using xformers attention 或类似提示,说明加速已加载。若日志提示 Using scaled dot product attention,则说明当前环境优先使用了 PyTorch 2.0 自带的 SDP 加速,此时无需强制开启 xformers。

常见坑

1. 版本冲突:新版 WebUI 默认集成 PyTorch 2.0+,可能不再默认捆绑 xformers,强制开启可能导致导入错误。

2. 显卡限制:AMD 显卡通常不支持官方 xformers 库,需使用 DirectML 分支或特定 fork 版本。

3. 参数互斥:部分优化参数如 `--opt-sdp-attention``--xformers` 可能互斥,同时添加会导致启动失败。

常见问题

xformers 和 SDP 注意力机制哪个更好?

公开资料中没有看到可靠的量化数据表明绝对优劣,通常建议新版环境优先尝试 SDP,旧版或显存极低环境尝试 xformers。

开启后生成报错怎么办?

立即移除 `--xformers` 参数,检查控制台报错信息是否指向 CUDA 版本不匹配或库文件缺失。

AMD 显卡能开启 xformers 吗?

官方原版不支持,需寻找社区维护的 DirectML 版本或 Zluda 补丁,稳定性不如 NVIDIA 环境。

参考来源

Automatic1111 stable-diffusion-webui Wiki, "Installation", GitHub.