走进AI绘画的大门stable-diffusion-webui AMD显卡踩坑记录2——命令行参数和优化
官方文档:https://github.com/AUTOMATIC1111/stable-diffusion-webui/wiki/Command-Line-Arguments-and-Settings
本文写于2023年4月3日,SD版本为1.5。
我的启动参数(AMD RX5700 8G)
如下配置可以把RX5700显存用满,推理时性能占用维持95%以上。出图效率比较高,常用350x700的尺寸(总尺寸与512x512接近),速度可以在1.6s/it,一张图平均20~30次迭代,也就是一分钟内可以出一张图。
set COMMANDLINE_ARGS=--medvram --always-batch-cond-uncond --opt-split-attention
为什么使用这三个参数
--medvram这个参数对于显存8G及以上的N卡用户来说通常无需配置,但经过我的实测,RX5700不加--medvram非常容易爆显存。显存更低(6G及以下)的用户,建议使用-lowvram。
--always-batch-cond-uncond 此参数只有与--medvram、--lowvram同时使用时才有意义。因为开启低显存会默认关闭batch-cond-uncond(我理解为批量处理正面、负面提示词,用于进一步降低显存占用,但会明显降低出图速度)。经过测试RX5700开启此参数不会发生爆显存的情况,其他更低显存的显卡酌情使用。
--opt-split-attention这个参数纯纯黑科技,官方解释“强制启用Doggett的跨注意力层优化”支持cuda的N卡默认开启,AMD用户需要手动开启,效果是出图效率几乎达到了之前的3倍!
常用的参数和解释如下
命令行参数 | 解释 |
---|---|
--share | online运行,也就是public address |
--listen | 使服务器侦听网络连接。这将允许本地网络上的计算机访问UI。 |
--port | 更改端口,默认为端口7860。 |
--xformers | 使用xformers库。极大地改善了内存消耗和速度。Windows 版本安装由C43H66N12O12S2 维护的二进制文件 |
--force-enable-xformers | 无论程序是否认为您可以运行它,都启用 xformers。不要报告你运行它的错误。 |
--opt-split-attention | Cross attention layer optimization 优化显着减少了内存使用,几乎没有成本(一些报告改进了性能)。黑魔法。支持cuda的N卡默认开启,但AMD用户需要手动开启 |
--disable-opt-split-attention | 禁用上面的优化 |
--opt-split-attention-v1 | 使用上述优化的旧版本,它不会占用大量内存(它将使用更少的 VRAM,但会限制您可以制作的最大图片大小)。 |
--medvram | 通过将稳定扩散模型分为三部分,使其消耗更少的VRAM,即cond(用于将文本转换为数字表示)、first_stage(用于将图片转换为潜在空间并返回)和unet(用于潜在空间的实际去噪),并使其始终只有一个在VRAM中,将其他部分发送到CPU RAM。降低性能,但只会降低一点-除非启用实时预览。 |
--lowvram | 对上面更彻底的优化,将 unet 拆分成多个模块,VRAM 中只保留一个模块,破坏性能 |
*do-not-batch-cond-uncond | 防止在采样过程中对正面和负面提示进行批处理,这基本上可以让您以 0.5 批量大小运行,从而节省大量内存。降低性能。不是命令行选项,而是使用–medvramor 隐式启用的优化–lowvram。 |
--always-batch-cond-uncond | 禁用上述优化。只有与–medvram或–lowvram一起使用才有意义 |
--opt-channelslast | 启用4d tensor的替代布局,可能仅在具有tensor core(16xx及更高)的Nvidia卡上实现更快的推理 |