一个深奥的学习谎言背后的真相

文章作者:Ludovic Larzul, Mipsology

用于确定人工智能和其他芯片在运行深度学习工作负载时的实际性能的公式。

人工智能公司通常专注于一个标准:每秒更多的tera操作(TOPS)。不幸的是,当硅制造商推广他们的TOPS指标时,他们并没有真正提供准确的指导。在大多数情况下,被炒作的数字不是真正的TOPS,而是peak TOPS。换句话说,你认为你在卡片上得到的TOPS数字实际上是芯片在一个更完美的世界中表现的最好情况。

我将讨论这个行业因错误地标注性能指标而造成的问题,并解释用户如何独立地评估真实世界的TOPS。

假TOPS vs真TOPS

人工智能应用程序开发人员通常会通过评估芯片制造商公布的TOPS性能数据是否足以为他们的项目提供动力来开始尽职调查。

假设你试图在U-Net神经网络上以10帧/秒的速度重制全高清图像。由于U-Net操作需要每个图像3个TOPS,简单的计算表明你需要30个TOPS才能在理想的FPS下完成你的项目。因此,在购买芯片时,您会假设声称运行50、40甚至32个TOPS的卡片对该项目是安全的。在一个完美的世界里,是的,但你很快就会发现卡片很少能命中广告上的号码。我们说的不是仅仅几滴TOPS;计算效率可能低至10%。

当然,通过调整神经网络来从卡片中挤出更好的性能是可能的,但你几乎不可能接近供应商列出的top峰值。试图达到60%或70%的计算效率将是一个巨大的时间消耗。如果神经网络发生了任何变化,您将不得不回到起点再次优化所有东西——而且,它甚至可能对您的应用程序不起作用。这个问题在小批量处理中尤其明显;如果你能得到超过15%的峰值,那就太幸运了。

计算效率
此时,您可能想知道如何计算真正的TOPS。很简单!

要发现一个特定的卡将交付多少实际TOPS,首先需要确定该卡的计算效率。理想情况下,这可以通过简单地在目标卡片上运行你需要的神经网络来实现。但是,你可能没有这张卡。你仍然可以通过从供应商那里获取更多的营销数据的细节来得到估计。像ResNet50(或类似的)这样的神经网络的性能数据通常是可用的。假设这是一个典型的ResNet50实现,您可以找到计算单个映像的每秒千兆操作数(GOPS,而不是TOPS)。然后,只需将其乘以供应商所宣传的每秒图像数量(IPS),瞧!,你有一个更现实的数量或“真正的”TOPS。

效率就是实际值除以峰值值的比值,或者:

峰值TOPS x计算效率=实际TOPS

这个公式使用户能够在购买任何东西之前运行神经网络来比较卡片的真正效率。您可以重用您所需要的TOPS的效率,看看它是否符合您的需要。虽然功率和批量大小等因素会影响结果,但如果您知道卡片的效率,这个公式可以很好地估计它在真实世界用例中的实际性能。当然,供应商发布的神经网络的IPS仍然可以被质疑,但至少这个估计给出了一个更好的想法,比比较你真正需要的top和卡的峰值top要好。

值得注意的是,这不仅仅是GPU的问题。大多数专业asic的实际效率很低,即使他们的营销推广高效率。只要使用IPS,已知的网络GOPS和简单的乘法,就会给你一个真实的数字。

有效的选择
当gpu和asic都在为效率和性能而挣扎时,有一个替代方案,不涉及这些芯片中的任何一个。

2020年10月的MLPerf结果显示,结合推断加速的fpga比其他替代方案显著提高效率,因此可以接近其他芯片制造商宣传的峰值TOPS数字。

在图
比较不同架构中每个发布的TOPS数据的每秒帧数(FPS)

fpga不仅在计算方面效率更高,而且在计算硅的使用方面效率也更高。从本质上说,这些卡片是“用更少的钱做更多的事”,这导致神经网络以一小部分的成本表现得更好。

值得重复的是:买家不应该因为TOPS的营销炒作而跌倒。这是一个夸大的性能数字,大多数神经网络在现实环境中永远不会看到。相反,利用这个公式:

峰值TOPS x计算效率=实际TOPS

这样做将帮助您快速、轻松和准确地比较您的性能需求与芯片的实际性能,而不是任何夸大的供应商声称。

这篇文章最初发表于EE倍

卢多维奇Larzul是Mipsology的创始人兼首席执行官。

留下你的评论