Stable Diffusion 基准测试 - 哪种 GPU 运行 AI 模型的速度最快(已更新)
2023-02-20 14:02
CFG Labs
2023-02-20 14:02
订阅此专栏
收藏此文章

生成 AI 是当下毋庸置疑的新科技,那么对硬件,模型训练和推理感兴趣的童鞋一定想了解目前市面上哪种显卡能提供最快的人工智能服务,我们将为大家一一剖析。

人工智能和深度学习最近不断成为头条新闻,无论是 ChatGPT 产生的不良建议,自动驾驶汽车,艺术家被指控使用人工智能,人工智能的医疗建议,等等。这些工具大多依靠复杂的服务器和大量的硬件进行训练,但通过推理使用训练过的网络可以在你的 PC 上,使用其显卡来完成。但是,消费类 GPU 做人工智能推理的速度如何?


我们在最新的 Nvidia、AMD、甚至英特尔的 GPU 上对 Stable Diffusion 进行了基准测试,看看它们的表现如何。如果你碰巧尝试过在自己的电脑上启动和运行 Stable Diffusion,你可能会对这一过程的复杂性 -- 或简单性 -- 有一些印象。- 这可能是多么复杂或简单。简而言之,Nvidia 的 GPU 占主导地位,大多数软件都使用 CUDA 和其他 Nvidia 工具集设计。但这并不意味着你不能在其他 GPU 上运行 Stable Diffusion。


我们最终使用了三个不同的 Stable Diffusion 项目进行测试,主要是因为没有一个软件包可以在每个 GPU 上运行。对于 Nvidia,我们选择了 Automatic 1111 的 webui 版本;它表现最好,有更多的选项,而且很容易运行。AMD GPU 使用 Nod.ai 的 Shark 版本进行测试 -- 我们检查了 Nvidia GPU 的性能(在 Vulkan 和 CUDA 模式下),发现它...缺乏。由于缺乏支持,让英特尔的 Arc GPU 运行起来比较困难,但 Stable Diffusion OpenVINO 给了我们一些非常基本的功能。

免责声明是有必要的。我们没有对这些工具进行编码,但我们确实在寻找那些容易运行的工具(在 Windows 下),而且似乎也得到了合理的优化。我们比较有信心的是,Nvidia 30 系列测试在提取接近最佳性能方面做得很好 -- 特别是当 xformers 被启用时,它提供了额外的约 20% 的性能提升(尽管精度降低,可能影响质量)。同时,RTX 40 系列的结果最初较低,但 George SV8ARJ 提供了这个修复方法,其中更换 PyTorch CUDA DLLs 对性能有一个健康的提升。


AMD 的结果也有点喜忧参半。RDNA 3 GPU 表现非常好,而 RDNA 2 GPU 似乎相当平庸。Nod.ai 让我们知道他们仍在为 RDNA 2 的 "调整 "模型工作,一旦它们可用,性能应该会有相当大的提升(可能是两倍)。最后,在英特尔 GPU 上,尽管最终的性能似乎与 AMD 的选项一致,但在实践中,渲染的时间大大延长 -- 在实际生成任务开始之前需要 5-10 秒,而且可能有很多额外的后台东西正在发生,使其变慢。


由于软件项目的选择,我们也在使用不同的 Stable Diffusion 模型。Nod.ai 的 Shark 版本使用 SD2.1,而 Automatic 1111 和 OpenVINO 使用 SD1.4(尽管在 Automatic 1111 上可以启用 SD2.1)。同样,如果你对 Stable Diffusion 有一些内部知识,并且想推荐不同的开源项目,这些项目可能比我们使用的项目运行得更好,请在评论中告诉我们(或者直接给 Jarred)。


我们的测试参数对所有的 GPU 都是一样的,尽管在英特尔版本上没有负面提示选项(至少,我们没有找到)。上面的图集是在 Nvidia GPU 上使用 Automatic 1111 的 webui 生成的,具有更高的分辨率输出(需要更长的时间来完成)。这是同样的提示,但目标是 2048x1152,而不是我们用于基准测试的 512x512。请注意,我们选择的设置是为了在所有三个 SD 项目上工作;一些可以提高吞吐量的选项只在 Automatic 1111 的构建中可用,但后面会有更多的内容。以下是相关的设置。


正面提示:

postapocalyptic steampunk city, exploration, cinematic, realistic, hyper detailed, photorealistic maximum detail, volumetric light, (((focus))), wide-angle, (((brightly lit))), (((vegetation))), lightning, vines, destruction, devastation, wartorn, ruins


负面的提示:

(((blurry))), ((foggy)), (((dark))), ((monochrome)), sun, (((depth of field)))


步:

100


分类器自由指导:

15.0


采样算法:

某种欧拉变体(自动 1111 的祖先,AMD 的鲨鱼欧拉离散)。


采样算法似乎不会对性能产生重大影响,尽管它可能会影响输出。自动 1111 提供了最多的选择,而英特尔的 OpenVINO 构建则没有给你任何选择。


以下是我们对 AMD RX 7000/6000 系列、Nvidia RTX 40/30 系列和 Intel Arc1 A 系列 GPU 的测试结果。请注意,每个 Nvidia GPU 都有两个结果,一个是使用默认的计算模型(速度较慢,呈黑色),另一个是使用来自 Facebook 的更快的 "xformers "库(速度较快,呈绿色)。


SD 图片 3

正如预期的那样,与 AMD 或英特尔的任何产品相比,Nvidia 的 GPU 提供了卓越的性能 -- 有时是以巨大的优势。随着 Torch 的 DLL 修复到位,RTX 4090 的性能比带有 xformers 的 RTX 3090 Ti 高出 50%,而没有 xformers 的性能则高出 43%。生成每张图片只需要三秒多,甚至 RTX 4070 Ti 也能勉强超过 3090 Ti(但如果你禁用 xformers 就不行)。


从 Nvidia GPU 的顶级卡中,事情以相当一致的方式下降,从 3090 下降到 3050。同时,AMD 的 RX 7900 XTX 与 RTX 3090 Ti 并驾齐驱(经过额外的重新测试),而 RX 7900 XT 与 RTX 3080 Ti 并驾齐驱。7900 卡看起来相当不错,而每张 RTX 30 系列卡最终都能击败 AMD 的 RX 6000 系列部件(目前)。最后,英特尔 Arc GPU 几乎排在最后,只有 A770 设法超过了 RX 6600。让我们再来谈一谈这些差异。


适当的优化可以使 RX 6000 系列卡的性能提高一倍。Nod.ai 说,它应该在未来几天内为 RDNA 2 调整模型,届时整体性能应该开始与理论性能有更好的关联。说到 Nod.ai,我们也使用该项目对一些 Nvidia GPU 做了一些测试,在 Vulkan 模型下,Nvidia 显卡的速度大大低于 Automatic 1111 的构建(4090 的 15.52 it/s,4080 的 13.31,3090 Ti 的 11.41,3090 的 10.76 - 我们无法测试其他显卡,因为它们需要先被启用)。


基于 7900 卡使用调谐模型的性能,我们也很好奇 Nvidia 卡以及它们能够从其 Tensor 核心中获得多少好处。在纸面上,4090 的性能是 RX 7900 XTX 的五倍以上 -- 即使我们不考虑稀缺性,也是 2.7 倍。在实践中,现在的 4090 在我们使用的版本中只比 XTX 快 50% 左右(如果我们省略精度较低的 xformers 结果,则下降到只有 13%)。这同样的逻辑也适用于英特尔的 Arc 卡。


英特尔的 Arc GPU 目前提供了非常令人失望的结果,特别是由于它们支持 FP16 XMX(矩阵)操作,应该提供高达 4 倍于常规 FP32 计算的吞吐量。我们怀疑目前我们使用的 Stable Diffusion OpenVINO 项目也有很大的改进空间。顺便提一下,如果你想尝试在 Arc GPU 上运行 SD,请注意你必须编辑'stable_diffusion_engine.py'文件,将 "CPU "改为 "GPU"-- 否则它就不会使用显卡进行计算,而且需要花费大量时间。


那么总的来说,使用指定的版本,Nvidia 的 RTX 40 系列卡是最快的选择,其次是 7900 卡,然后是 RTX 30 系列的 GPU。RX 6000 系列表现不佳,而 Arc GPU 看起来普遍较差。随着软件的更新,情况可能会发生根本性的变化,考虑到人工智能的普及,我们预计看到更好的调校只是时间问题(或者找到已经调校好的正确项目,提供更好的性能)。


我们还对传统的 GPU 进行了一些测试,特别是 Nvidia 的图灵架构(RTX 20- 和 GTX 16- 系列)和 AMD 的 RX 5000- 系列。RX 5600 XT 失败了,所以我们在 RX 5700 的测试中离开了,而 GTX 1660 超级版的速度很慢,我们觉得没有必要对低级别部件做进一步的测试。但这里的结果是相当有趣的。


首先,RTX 2080 Ti 的表现最终超过了 RTX 3070 Ti。这通常不会发生,在游戏中,即使是虚构的 3070 也往往会击败前冠军。更重要的是,这些数字表明,Nvidia 在安培架构中的 "稀疏性 "优化根本没有被使用 -- 或者也许它们根本不适用。


我们一会儿会讨论一些其他的理论计算性能数字,但再次考虑 RTX 2080 Ti 和 RTX 3070 Ti 作为一个例子。2080 Ti 的张量核心不支持稀疏性,有高达 108 TFLOPS 的 FP16 计算。RTX 3070 Ti 支持稀疏性,有 174 TFLOPS 的 FP16,或 87 TFLOPS 的 FP16,不支持稀疏性。2080 Ti 击败 3070 Ti 的事实清楚地表明,稀疏性并不是一个因素。同样的逻辑适用于其他比较,如 2060 和 3050,或 2070 超级和 3060 Ti。


至于 AMD 的 RDNA 卡,RX 5700 XT 和 5700,在性能上有很大差距。5700 XT 仅比 6650 XT 领先,但 5700 低于 6600。从纸面上看,XT 卡的速度应该高达 22%。然而,在我们的测试中,它的速度是 37%。无论哪种方式,在我们最初的Stable Diffusion基准测试中,老的 Navi 10 GPU 都没有特别的表现。


最后,GTX 1660 超级版在纸面上的理论性能应该是 RTX 2060 的 1/5 左右,使用后者的 Tensor 核心。如果我们使用 FP16 的着色器性能(图灵在 FP16 着色器代码上有两倍的吞吐量),差距缩小到只有 22% 的赤字。但是在我们的测试中,GTX 1660 超级版的速度只有 RTX 2060 的 1/10 左右。


同样,目前还不清楚这些项目到底有多优化。也不清楚这些项目是否完全利用了诸如 Nvidia 的 Tensor 核心或英特尔的 XMX 核心。因此,我们认为看一下各种 GPU 的最大理论性能(TFLOPS)会很有趣。下图显示了每个 GPU 的 FP16 理论性能(只看较新的显卡),在适用的地方使用张量 / 矩阵核心。Nvidia 的结果还包括稀缺性 -- 基本上是在矩阵中最多一半的单元中跳过乘以 0 的能力,据说这在深度学习工作负载中是一个相当频繁的现象。


Nvidia 的那些 Tensor 核心显然是有冲击力的(灰色 / 黑色条是没有稀疏性的),显然我们的 Stable Diffusion 测试与这些数字不完全吻合 -- 甚至不接近。例如,在纸面上,RTX 4090(使用 FP16)比 RTX 3090 Ti 快 106%,而在我们的测试中,它在没有 xformers 的情况下快 43%,而在有 xformers 的情况下快 50%。还要注意的是,我们假设我们使用的Stable Diffusion项目(自动 1111)没有利用 Ada Lovelace GPU 上的新 FP8 指令,这有可能使 RTX 40 系列的性能再次翻倍。


同时,看看 Arc GPU。他们的矩阵核心应该提供类似于 RTX 3060 Ti 和 RX 7900 XTX 的性能,给或不给,A380 下降到 RX 6800 左右。在实践中,Arc GPU 远远没有达到这些分数。最快的 A770 GPU 介于 RX 6600 和 RX 6600 XT 之间,A750 仅次于 RX 6600,而 A380 的速度大约是 A750 的四分之一。因此,它们都是预期性能的四分之一,如果不使用 XMX 核心,这将是合理的。


不过,Arc 上的内部比率看起来确实差不多。A380 的理论计算性能大约是 A750 的四分之一,这也是它现在在Stable Diffusion性能方面的位置。最有可能的是,Arc GPU 正在使用着色器进行计算,在全精度 FP32 模式下,错过了一些额外的优化。


另一件需要注意的事情是,与 RX 6000 系列相比,AMD 的 RX 7900 XTX/XT 的理论计算能力提高了很多。我们得看看经过调整的 6000 系列型号是否能缩小差距,因为 Nod.ai 说它期望在 RDNA 2 上的性能有大约 2 倍的提高。内存带宽并不是一个关键因素,至少对于我们使用的 512x512 目标分辨率而言 --3080 的 10GB 和 12GB 型号落在一起相对较近。


下面是对 FP16 理论性能的不同看法,这次只关注各种 GPU 通过着色器计算能做什么。Nvidia 的 Ampere 和 Ada 架构以与 FP32 相同的速度运行 FP16,因为假设 FP16 可以被编码为使用 Tensor 核心。相比之下,AMD 和英特尔的 GPU 在 FP16 着色器计算上的性能是 FP32 的两倍。


很明显,这第二张 FP16 计算的图表与我们的实际性能相比,并没有更好的张量和矩阵核心的图表,但也许在设置矩阵计算时有额外的复杂性,所以完整的性能需要...额外的东西。这给我们带来了最后一个图表。


这张最后的图表显示了我们更高的分辨率测试结果。我们没有测试新的 AMD GPU,因为我们必须在 AMD RX 6000 系列显卡上使用 Linux,显然 RX 7000 系列需要一个更新的 Linux 内核,而我们无法让它工作。但请看 RTX 40 系列的结果,替换了 Torch DLLs。


RTX 4090 现在比没有 xformers 的 3090 Ti 快 72%,而用 xformers 则快了高达 134%。4080 也比 3090 Ti 快 55%/18%,有 / 没有 xformers。有趣的是,4070 Ti 在没有 xformers 的情况下比 3090 Ti 慢 22%,但在有 xformers 的情况下快 20%。


看起来更复杂的 2048x1152 目标分辨率开始更好地利用潜在的计算资源,也许更长的运行时间意味着 Tensor 核心可以充分地发挥它们的力量。


归根结底,这充其量只是Stable Diffusion性能的一个时间快照。我们看到频繁的项目更新,对不同训练库的支持,以及更多。我们将在来年更多地重温这个话题,希望能有更好的优化代码用于所有不同的 GPU。


本文为该文编译版本https://www.tomshardware.com/news/stable-diffusion-gpu-benchmarks


引用


https://github.com/facebookresearch/xformers


本文所有图片皆由 Stable Diffusion 生成

相关Wiki

【免责声明】市场有风险,投资需谨慎。本文不构成投资建议,用户应考虑本文中的任何意见、观点或结论是否符合其特定状况。据此投资,责任自负。

CFG Labs
数据请求中
查看更多

推荐专栏

数据请求中
在 App 打开