如何加速Stable Diffusion:优化的三种方式

2023年09月11日 由 camellia 发表 2699 0

Stable Diffusion是AI图像生成领域的一种先进算法,它彻底改变了我们创造图像的方式。然而,就像许多尖端技术一样,它也面临一系列挑战。开发人员和研究人员所面临的主要障碍之一是延迟问题——生成一张图像需要的时间可能相当长。这让许多用户想知道是否有方法可以加快Stable Diffusion的速度。


本文全面探讨了如何加速Stable Diffusion的三种关键技术。这些方法将帮助你优化这个强大的工具,释放其全部潜力。


Stable Diffusion简介


在深入研究加速Stable Diffusion的技术之前,让我们先了解它是什么以及为什么它如此重要。Stable Diffusion是一种基于AI的算法,用于创建图像。它属于扩散模型的大家庭,由于其生成高质量图像的能力而受到广泛关注。


这些模型通过逆向工程一个图像的模糊过程来工作。它们从一个随机图像开始,并根据提示逐渐完善,直到达到所需的输出。这个过程虽然有效,但是可能耗时且资源密集。


2023年一个受到关注的另一个流行的图像生成工具是Midjourney。但是,Stable Diffusion与Midjourney有何不同?了解一下。


3.1

Stable Diffusion生成的图像


加速Stable Diffusion的三种方法


现在,让我们深入探讨优化Stable Diffusion的策略。


策略1:交叉注意力优化


交叉注意力优化是加速Stable Diffusion最有效的方法之一。这种技术主要着眼于使交叉注意力计算更快速、占用更少内存。


如何实施交叉注意力优化?


根据你使用的软件不同,实施交叉注意力优化的过程会有所不同。本指南将使用AUTOMATIC1111 Stable Diffusion GUI来展示此过程。该GUI可以在Google Colab、Windows或Mac等各种平台上使用。


在AUTOMATIC1111 Web-UI中,导航到“设置”页面,选择左侧面板上的“优化”。在“交叉注意力优化”下拉菜单中,选择一个优化选项。初始选择为“自动”。选择所需选项后,点击“应用设定”。


不同的交叉注意力优化技术


有多种交叉注意力优化技术可供选择。让我们来看一些最常用的技术:


  • Doggettx:这是对原始实现的注意力操作的早期改进。它最初显著加快了速度,但现在大多数用户已经转向其他选项。
  • xFormers:由Meta AI团队开发的xFormers是一个能够优化注意力操作的转换器库,它减少了内存使用,并提高了速度。它实现了高效的内存注意力和闪电注意力,减少了内存使用量,并加快了操作速度。
  • Scaled-dot-product(SDP)注意力:这是PyTorch中内置的高效记忆注意力和闪电注意力的实现。它是xFormers选项的一种有力替代方案,尽管有一个缺点——生成的图像有时可能是不确定的。
  • sdp-no-mem:这是去除了内存注意力的缩放点积注意力。生成的图像是确定性的,即相同的生成参数产生完全相同的图像。
  • Sub-quadratic attention:这是另一种高效的内存注意力的实现,可在xFormers或SDP不可行时使用。
  • Split-attention v1:这是内存注意力的早期版本。在尝试这个版本之前,建议先使用xFormers或SDP。
  • Invoke AI:对于没有Nvidia GPU的MacOS用户来说,这是一个有用的选项。它使用Invoke AI代码库中实现的跨注意力优化。


在这里你还可以了解如何训练你自己的Stable Diffusion模型。


策略2:令牌合并


令牌合并是一种新颖的技术,通过减少需要处理的标记数量来提升Stable Diffusion的效果。其思想是识别和合并冗余标记,而不会对输出产生重大影响。


如何实施令牌合并?


AUTOMATIC1111内置支持令牌合并。要使用它,请导航到“设置”页面,转到“优化”部分,并设置令牌合并比例。例如,0.2表示合并20%的标记。最后,点击“应用设定”。


策略3:负向引导最小sigma


负向引导最小sigma选项是加速Stable Diffusion的另一种有效方式。这种技术在某些被认为是无关紧要的条件下关闭负向提示。


如何实施负向引导最小sigma?


要使用它,请导航到“设置”页面,转到“优化”部分,并设置负向引导最小sigma的值。最后,点击“应用设定”。


西格玛

其他优化策略


除了上述方法外,你还可以利用PyTorch和其他第三方库(如DeepSpeed)的多种优化来降低Stable Diffusion的成本,同时对生成的图像质量影响不大。


PyTorch优化


PyTorch提供了几种强大的优化技术,可以显著提高Stable Diffusion模型的性能。以下是三个关键的PyTorch优化技术,你可以实施:


  • 使用torch.float16代替torch.float32进行混合精度:这可以使推理速度提高40%。
  • 使用torch.inference_mode或torch.no_grad模式:这两种模式下推理速度可以提高<1%。
  • 实施CUDA图形:此技术可以使推理速度提高5%。


DeepSpeed推理


DeepSpeed推理是由微软提供的一种工具,它提供了一系列功能,以更高效地服务基于transformer的PyTorch模型。它会用优化后的版本替换任何与DeepSpeed内部注册的层匹配的层。这样可以实现更快的推理时间。这可能导致推理速度提高44%。


通过探索策展AI生成艺术工具的精选列表,将你的想象力变成数字杰作,解锁无限的艺术可能性。


深度

总结


优化Stable Diffusion可以显著提高推理速度和内存使用率。通过利用诸如跨注意力优化、令牌合并和负向引导最小sigma等技术,可以使Stable Diffusion变得更快且更高效。


但是,重要的是要记住,每种优化技术都有其自身的权衡。因此,务必仔细考虑每种优化技术的影响,并选择最适合你需求的技术。

文章来源:https://ambcrypto.com/blog/how-to-speed-up-stable-diffusion-3-ways-to-optimize-it/
欢迎关注ATYUN官方公众号
商务合作及内容投稿请联系邮箱:bd@atyun.com
评论 登录
热门职位
Maluuba
20000~40000/月
Cisco
25000~30000/月 深圳市
PilotAILabs
30000~60000/年 深圳市
写评论取消
回复取消