在 Stable Diffusion WebUI 中开启 xformers 加速,通常需要在启动脚本的命令行参数中添加 `--xformers` 标记。该功能主要适用于 NVIDIA 显卡用户,用于降低显存占用并提升生成速度,但在新版 PyTorch 环境下可能已被 SDP 注意力机制替代。
先说结论:开启 xformers 需修改启动配置文件,但需确认当前 WebUI 版本是否仍优先支持该库。
- 适合:使用 NVIDIA 显卡且显存紧张的用户,或旧版本 WebUI 环境。
- 先准备:备份
webui-user.bat或webui-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.