中文 英语

人工智能基准的黑暗世界

适用于一种应用程序的方法可能完全不适用于另一种应用程序;准确性可能因用例而异。

受欢迎程度

在过去几年里,人工智能初创公司一直在以惊人的速度涌现,同时一直在兜售TOPS基准数据。但它的真正含义是什么? TOPS数字是否适用于所有应用程序?答:这取决于多种因素。

从历史上看,每一类设计都在产品开发和定位中使用某种标准基准。例如,SPECint、dhrystone和geekbench被用作处理器性能的一组基准程序。RFC 2544用于对组网专用集成电路进行基准测试。但是,定制化和异构化程度更高的硬件的发展,加上人工智能算法的不断更新,使得基于基准的决策充其量也只是模糊的。

“近年来,我们看到了许多硬件选择的进步人工智能-从gpu到fpga到定制硬件asic,”Anoop Saha说,市场开发经理Mentor是西门子旗下的企业.“然而,现有的基准并不适合衡量硬件在人工智能应用中的工作方式——无论是在训练还是推理方面。”

目前,TOPS(每秒1兆次操作)是用于描述许多硬件设计性能的最常用指标。但买家要小心了。

“有无数家公司在做推理,他们提出了很多主张,”Perceive的首席执行官史蒂夫·泰格(Steve Teig)说。“其中许多说法都被夸大了。当人们说,‘我每瓦有这么多的TOPS和这么多的TOPS’时,我鼓励他们指出这一点。当我看别人的声明时,我也这么做。我想,‘你声称你以这种速度运行这个网络,你可以在网上查询这个网络在这种速度下有多少次操作。你可以算出来,然后确定他们到底有多少个TOPS,而不是他们说有多少个。’”

要理解TOPS数字的组成部分,就需要了解测试的具体内容。但这对于提供设备在现实世界中如何运行的背景作用不大。

“TOPS只衡量芯片的性能,”萨哈说。”电力消耗是更大的挑战在加速神经网络.这是因为这些算法具有高度并行的性质,它们也具有重要的内存访问。一个更好的衡量标准是每瓦TOPS -每单位能量的性能。事实上,现在大多数人工智能硬件的数据表都将TOPS和TOPS / watt描述为一个指标,而且两者都很重要。与数据中心相比,对于边缘设备来说,每瓦的TOPS甚至更加重要。”

top数值也会因测量的是固定运算还是浮点运算而有所不同,该公司产品营销、管理和业务发展集团总监Pulin Desai表示节奏.“对于定点作战,人们通常会使用特种作战号码。有时他们可能会加入一些浮点运算,并引用千兆运算,也就是每秒浮点运算。工程集团说的第三件事是,‘我不在乎原始产能。你有实际的计算能力。我想让你告诉我,如果我运行这个神经网络,我每秒能得到多少推论?“他们正在研究不同的分类网络,包括ResNet和其他对图像进行分类的网络。题目想知道ResNet每秒能运行多少次推理。每个用户可能都有自己最喜欢的网络,这是基于他们的用例。有人想分类,有人想探测物体,有人想做别的。 They will give those networks and then ask what we can do. There, it boils down to system-level performance versus IP-level performance.”

寻找更深层次的
要理解TOPS数字需要做一些调查工作。例如,该数字中包含哪些类型的操作?如果一个产品运行在1GHz,有2048个8位操作,那就等于2048乘以1024千兆操作,或2个TOPS。但如果它真的是4位操作,4位操作的数量可能会翻倍,它可能会被宣传为20个TOPS。

“一般来说,我们倾向于坚持8位,因为今天发生的大多数推断都是8位的,”德赛说。“这是一个乘法累加运算。但是现在插入一个DSP,这里有很多并行操作。如果有另一个并行操作,因为它是一个并行设备,你必须把2048个乘数累加器操作加上另一个8位操作。更简单地说,我说MAC操作的数量和8位操作的数量。你把这些加起来,然后乘以你跑步的频率,这就得到了TOPS。”

这种细节对于确定究竟要测量什么是至关重要的。“如果有人给你tera操作号码,那么它是什么类型的数据类型——2位、4位、8位还是16位?你用了什么?如果计算tera运算,假设的频率是多少?你的设备是只做这个操作,还是有一些其他的操作同时发生?如果他们给出了特定网络的信息,那么同样的问题也适用。“你是用定点法给我这个号码的吗?”你给我浮点数是为了给我数字吗?你跑的频率是多少?您是否假设有特定的内存带宽?’ And eventually the customer will ask about power. What’s the power consumption when you are running that? So it’s the raw data, and on top of that frames per second, and then power,” he said.

然而,这远非客观的分析。性能可能会根据网络上所做的优化而变化,比如修剪、量化和压缩。许多机器学习模型可以提供与低精度整数模型类似的精度,而不是使用浮点运算。因此,对于使用32位整型精度的硬件来说,每瓦的TOPS与使用8位整型精度的硬件不同。根据他们所需要的精度,用户可以在他们的模式中决定量化的精度水平。

更大的问题是应该运行哪些应用程序来提供准确的基准度量。Saha说:“目前,常用的网络如MobileNet、ImageNet和ResNet被用于这些指标。“我们需要的是一套标准化的基准应用程序,它不仅公平和详尽,而且有一个公共数据集,以避免数据集可能发生的任何变化。MLPerf是一项行业倡议,旨在为AI硬件开发标准化的基准应用程序,用于训练和推断。Tiny-MLPerf是一个子小组,它试图提出一个针对边缘设备的基准测试,几乎完全是推理。”

上下文中的基准测试
在所有这一切中,要记住这是一个相对不成熟的市场,每天都在发展想象力的技术.“事情一直在变化,所以对于任何类型的芯片架构师或SoC架构师来说,他们都有很多东西需要吸收和理解。如果你看看成熟的市场cpuCoreMark和类似的东西是非常重要的-或者如果你看gpu在美国,多年来已经建立了大量的基准测试——你只需要拿出那个软件,运行测试几分钟,就会弹出所有的分数。因为这些市场已经存在了20年,这要容易得多。”

对于人工智能,有不同的基准来衡量性能的不同方面。“但即便如此,你最终还是会遇到这样的情况,比如,如果你在看一个移动GPU,那么这个特定的GPU在一段时间内的表现以及它对电池的消耗是非常重要的。但基准测试的像素绘制方面并没有考虑到这一点,”Grant解释道。“当我们审视人工智能基准本身时,请记住,整个人工智能、机器学习和神经网络领域一直在变化。每一天都有新的发展,这使得它成为一个令人兴奋的工作空间。但在我们工作的领域,我们听到了从浮点性能到每秒量化推理之类的东西。TOPS可能是最常用的命名性能的方法之一,但它不是一个完整的数字。为了真正了解任何芯片或任何架构的性能,你需要知道性能是什么,在什么时钟速度下,在什么节点上,即,16nm,或7nm,或5nm,甚至是28nm或40nm的早期版本,因为所有这些都会影响最终SoC中的芯片尺寸。所以这是一件相当棘手的事情。”

更令人困惑的是,不同的基准应用于开发过程中的不同层次SoC.在Imagination的案例中,因为它的IP会进入其他人的SoC,所以很多基准测试活动都直接与特定环境下的特定网络相关。“我们经常被问到是否可以运行客户可能实际使用的代表性网络,然后我们将在GPU或神经网络加速器上运行它。所以,有趣的是,如果我们看看我们的神经网络加速器,我们可能会说它是一个10 TOPS加速器。但当你想看看它在特定情况下使用特定网络的实际表现时,其他事情可能会变得更重要,”格兰特说。

除了MLPerf,许多组织正在寻求建立一个更全面的篮子作为基准。这与CPU和GPU领域的情况类似。例如,AI-Benchmark.com在已经进入硅的网络上做了很多工作。

今天需要的是对不同领域的人工智能基准的含义以及不平衡基准的影响的共同理解。“在gpu领域有一些例子,制造商最终不得不追求一个特定的基准,因为这是引用的常见基准之一,尽管它可能与用户不再相关。你最终会遇到一种相当奇怪的情况,广告牌上显示的数字很好,但用户实际上想要的是完全不同的东西。我们渴望确保这种事情不会在神经网络加速器和计算领域发生同样的程度。人们会在FP 32或FP 16时考虑浮点性能。以我们的神经网络加速器为例,它是定点的,是量化的性能。这是一种不同的动物,所以拥有这些数字,并确保进行相关和定期的测试,这是一个非常重要的方面。”格兰特说。


图1:神经网络

基准的准确性
除此之外,还有人工智能基准测试结果的准确性。Imagination公司人工智能应用工程经理Salvatore De Dominicis表示:“这是最新版本AI- benchmark中引入的一个关键点。”“当你在分析一个量化网络时,有很高的风险会失去精度,得到的结果实际上并不准确,除非IP的设计能够在需要时保持精度和准确性。当你谈论CPU或gpu时,这并不是一个真正的因素,因为你主要关注的是性能。有一些关于GPU图像质量的东西。但是当你处理神经网络工作负载时,关键的一点是你还想保护数值的准确性。这是一个新概念。”

实现所有这些,同时还保持性能和低功耗,这并非易事。“这就是为什么像AI-Benchmark这样的基准测试供应商实际上推动了这一新类别的引入,”德多米尼西斯说。“基本上,评分在很大程度上受到结果质量的影响,这在整个市场的光学中是相当新的。所以情况并不稳定。事情正在发生变化。一开始有很多解决方案看起来性能很好,但精度很差,这限制了一些产品的实际可用性。”

De Dominicis指出,为了使IP更加精确,需要设计硬件,以便在必要时保持较高的内部精度。“然后问题就变成了在必要的时候理解,因为你显然不想在所有地方都付出代价。否则,您将增加面积和功耗。这个想法是你想要有一个好的最终精度。这意味着网络的输出尽可能接近理论输出。我们提供了一套工具,可以帮助我们的客户修改网络,这样我们就可以基本上恢复这些数学运算产生的一些噪声,即使我们使用较低的分辨率(如较低的比特数)进行运算,也能保持较高的精度。再说一次,形势正在发生很大变化。”

架构选择的含义
一旦应用程序和指标定义良好,设计人员就面临一个关键的选择。“他们可以使用哪些杠杆来获得最佳性能和功率指标?选择正确的架构在这里是极其重要的,因为他们对改善结果有最大的投资回报率,”Saha说。“在这一点上,也不能一刀切。设计人员需要调整目标和用例,以选择正确的体系结构。无论它是广义的还是专门化的,它是针对数据中心还是边缘?它会主要用于训练还是推理?这将有助于决定正确的方法。”

要找到最佳架构,需要尽早运行基准测试应用程序,获得准确的性能和功率数字,并具备快速调整架构的能力。然后,重复所有步骤。换句话说,系统架构师需要采取构建-测量-学习的方法来为AI硬件创建基于用例的优化架构。

有一类特殊的应用程序专用硬件加速器,通常用于边缘物联网萨哈说。“用例将局限于一些特定的神经网络算法。对于这些加速器来说,做出正确的体系结构选择变得更加重要,因为它们必须针对应用程序进行调优。例如,在深度神经网络中,不同的层可能需要不同的架构。有些层可能有数百万个权重,需要存储在芯片外ram中。其他层可能有不同大小或类型的卷积。通用硬件架构的效率并不高,因为它不能实现100%的利用率,而且需要从系统内存中进行冗余读/写。通常情况下,数据局部性将显著提高功耗。”

展望未来
在这个迅速发展的领域,挑战也在不断变化。一个网络可能不是正确的,或者可能会有一个更新的网络。

Cadence的Desai说:“新一代可能需要更大的处理能力,或者它们可能需要一些不同的东西。”“开发团队最终会着眼于两个层面。首先,他们要确保他们有一个可扩展的解决方案,因为他们需要灵活性或未来的证明。这是关于通过拥有灵活的架构来响应市场变化的能力。它可以在可编程性或如何制作方面具有灵活性。它可以是可扩展的。其次,随着新网络的到来,你能多快地将网络定义转换成可以在你的设备上开始工作的代码或程序,不管它是IP还是其他?这就是网络编译器的作用,它从Caffe2或TensorFlow或Pytorch中获取网络定义。你按下一个按钮,就有希望得到一个针对你的架构优化的可执行文件,所以当新的网络出现在该领域或你的科学家想出一个新的网络时,你可以非常快速地部署你想要的东西。”



留下回复


(注:此名称将公开显示)

Baidu