StableDiffusion优化Xformer不推荐了吗?

发布于:2024-07-06 ⋅ 阅读:(10) ⋅ 点赞:(0)

前言

一般我们优化Stable Diffusion,都是平常运行webUI的指令后加上 --xformers 让程序在运行时使用 xformers 来进行优化,但是随着技术的发展已不再默认推荐。

我们都知道xformers只能使用NVIDIA的显卡,其他的显卡有没有加速办法?

本文中,我们将解释 –opt-sdp-attention 和 –opt-sdp-no-mem-attention,它们可以加快稳定扩散 Web UI 的图像生成速度。这篇文章推荐给有下面需要的人:

  • 想缩短Stable Diffusion Web UI 的图像生成时间。
  • 想了解更多有关 opt-sdp-attention 的背景信息。
  • 想安装 xformers,但无法安装,因为我的 GPU 不是 NVIDIA 制造的。
  • 想知道它是否可以与 xformers 结合使用。

什么是 opt-sdp-attention?

opt-sdp-attention 是“优化缩放点积注意力”的缩写。这意味着优化缩放点积注意力。您可以在启动 Stable Diffusion Web UI 时指定 –opt-sdp-attention 作为命令参数,从而加快 Stable Diffusion Web UI 的图像生成速度。

什么是缩放点积注意力?

缩放点积注意力是深度学习模型的一个组成部分,它决定着关注输入的位置。你可能听说过“注意力”这个词,它是它的一种。在首次发表注意力的论文《 Attention Is All You Need 》中,提出了两种注意力形式,其中一种是Scaled Dot-Product Attention。

如何使用-opt-sdp-attention

在记事本等文本编辑器中打开 Stable Diffusion 启动脚本 webui-user.bat(对于 Mac 或 Linux 为 webui-user.sh)。要打开它,请打开记事本并拖放该文件。然后您可以查看和编辑启动脚本的内容。set COMMANDLINE_ARGS=--opt-sdp-attention

添加一行。这--opt-sdp-attention是设定的。正如我稍后将介绍的,--opt-sdp-no-mem-attention还有一个使用几乎相同方法的选项,并且也可以通过以相同的方式指定它来应用它。set COMMANDLINE_ARGS=--opt-sdp-no-mem-attention

它与 xFormers 有什么不同?

xFormers 也是一种注意力优化。然而,优化技术存在差异。

--opt-sdp-attention Stable Diffusion Web UI github wiki上有说法是计算速度更快。

优化 · AUTOMATIC1111/stable-diffusion-webui Wiki (github.com)

当我在我的环境中测试时,速度差异非常小。

– opt-sdp-attention 的好处

  • 适用于 NVIDIA 以外的设备
  • 对于不支持 xFormers 的代码也有效。动画差异等


– opt-sdp-attention 的缺点

  • 内存消耗 (VRAM) 比 xFormers 大。
  • 非确定性:即使使用相同的设置,也会为生成的图像添加随机性。
    • 如果您想明确的话,还可以指定 –opt-sdp-no-mem-attention。相比–opt-sdp-attention,计算速度和内存效率稍差一些。


–xformers 和 –opt-sdp-attention 可以一起使用吗?

–我很好奇opt-sdp-attention,如果xFormers和它结合使用不是更好吗?关于它。于是我查了Stable Diffusion Web UI的源码。因此,在实施过程中将择其一。目前,如果两者都指定为 argument ,则将使用xfomers 。换句话说,指定两者是没有意义的。

验证结果

最后描述一下我的环境下的验证结果。

  • 显卡:RTX 3080Ti(16GB)
  • 分辨率:768×512
  • 批次数量:4

我们研究了 –xformers、–opt-sdp-attention 和 –opt-sdp-no-mem-attention 与此设置之间的差异。列出了每个结果五次生成的中值。

  • –opt-sdp-attention:生成时间 13.2s VRAM 消耗:6.2GB
  • –opt-sdp-no-mem-attention:生成时间 13.7s VRAM 消耗:6.2GB
  • –xformers:生成时间 13.7s VRAM 消耗:6.2GB

老实说,几乎是一样的。

– 研究 opt-sdp-attention 的非确定性本质

我尝试检查生成的图像的不确定性。我生成了很多次来看看差异。下面显示了其中的一个示例。双手略有不同,光线打在脸上的方式也不同。

我总共尝试了大约10次,但只是稍微改变了细节,并且具有足够的非确定性,不会影响整体构图,所以我认为我不需要太担心。事实上,如果差异这么大,最好反复生成,直到手形完美为止。

最后,你应该选择哪一个呢?

在计算速度、内存消耗和非确定性方面几乎没有区别。因此,考虑到以下两点,我们建议使用–opt-sdp-attention 。

  • 适用于 NVIDIA 以外的设备
  • 对于不支持 xFormers 的代码也有效。动画差异等

我认为当存在非确定性问题时,使用 –opt-sdp-no-mem-attention 是个好主意。

人工智能领域,更新太快了,因此我也不确定什么是当前的/推荐的或不是。


欢迎你分享你的作品到我们的平台上. http://www.shxcj.com 或者 www.2img.ai 让更多的人看到你的才华。

创作不易,觉得不错的话,点个赞吧!!!



网站公告

今日签到

点亮在社区的每一天
去签到