在 Stable Diffusion WebUI 启动脚本的 COMMANDLINE_ARGS 变量中添加 `--medvram` 参数,适合显存受限的显卡环境,主要风险是图像生成速度会下降。
先说结论:`--medvram` 通过牺牲生成速度换取显存占用降低,是低配电脑运行 Stable Diffusion WebUI 的标准优化方案。
- 适合:显存不足导致溢出报错的场景
- 先准备:找到 webui-user.bat 或 webui.sh 启动文件
- 验收:成功生成图像且控制台无显存错误
命令速用版
该操作主要涉及修改启动脚本配置,以下是 Windows 系统下的编辑示例:
set COMMANDLINE_ARGS=`--medvram`如果是 Linux 或 Mac 系统,编辑 webui.sh 文件,在 COMMANDLINE_ARGS 变量中加入该参数。
为什么会这样
显存溢出是因为模型权重和中间计算数据超过了显卡物理显存上限。`--medvram` 参数指示程序将暂时不用的模型层移动到系统内存中,从而释放显存空间。
公开资料中没有看到可靠的量化数据说明具体节省多少显存,但官方文档确认该参数会降低生成速度以换取更低的显存需求。
分步处理
步骤 1:定位启动文件
在 Stable Diffusion WebUI 安装目录下,找到名为 `webui-user.bat`(Windows)或 `webui.sh`(Linux/Mac)的文件。
步骤 2:编辑配置参数
使用文本编辑器打开文件,找到 `set COMMANDLINE_ARGS=` 这一行。在等号后面添加 `--medvram`。如果已有其他参数,用空格隔开。
步骤 3:保存并重启
保存文件修改,关闭编辑器。重新双击运行启动脚本,等待服务初始化完成。
怎么验证是否生效
观察控制台日志,确认没有出现在 `CUDA out of memory` 或 `OutOfMemoryError` 相关的报错信息。尝试生成一张默认参数的图片,如果页面正常返回结果且未崩溃,说明参数生效。
部分启动日志会显示显存优化相关的提示,但不同版本输出格式不同,以不报错且能生成为准。
常见坑
参数冲突:不要同时设置 `--medvram` 和 `--lowvram`,两者功能重叠且可能导致不可预知的行为,通常只选其一。
速度预期:开启后生成速度会明显变慢,这是正常现象,不是配置错误。如果显存充足,不建议开启此参数。
精度问题:部分旧显卡或特定模型可能需要配合 `--no-half` 参数使用,但会进一步增加显存占用,需权衡测试。
常见问题
medvram 和 lowvram 有什么区别?
`--lowvram` 比 `--medvram` 更激进,显存占用更低但速度更慢,适合显存极低的设备。
Mac 电脑可以使用这个参数吗?
Mac 版本 WebUI 架构不同,通常不需要也不支持该参数,建议使用针对 Mac 优化的启动方案。
开启后为什么生成时间变长了?
因为数据需要在显存和系统内存之间交换,传输耗时增加,属于该参数的固有代价。
参考来源
AUTOMATIC1111/stable-diffusion-webui GitHub README, Arguments section, https://github.com/AUTOMATIC1111/stable-diffusion-webui