要了解 AI 引擎的能力,除了 TOPS/W,还需要考虑很多其他指标。 TOPS/W 是一个非常随意的指标,可衡量引擎每瓦功率运算次数,但该指标完全忽略了重点,即与其他引擎的多次运算相比,某个引擎的单次运算可能会完成更多有用的工作。 系统架构师或芯片设计师在确定符合其独特应用需求的最佳 AI 引擎时,在任何情况下都不应将 TOPS/W 作为唯一标准。 有经验的系统设计师会告诉您,软件栈、芯片尺寸/面积要求、对特定神经网络的适用性等因素通常更为重要。
不过,TOPS/W 通常是 NPU(神经处理单元)制造商提供的最主要的性能基准之一,艾伯德也在其列。 在底层测试条件下,考虑该指标可能有实用价值。但遗憾的是,在比较不同的 NPU 时,由于没有配置硬件和报告基准结果的标准化方法,因此比较难以进行。
我们来了解一下,在评估 TOPS/W 基准数据时,底层测试条件是如何发挥作用的。
频率是 TOPS/W 的一个变量
TOPS 指标的计算公式为 TOPS = MAC 数 * 频率 * 2。 我们先从等式的频率部分开始。 不存在 NPU 制造商应使用的“最佳”或“最正确”的频率。 频率取决于制成节点,也取决于 NPU 设计,而且不同 NPU 之间也存在差异。 例如,使用的频率不同,相同 IP 也会产生不同的结果。 个 54K MAC 引擎在 1GHz 频率下算力为 108 TOPS,而同一 54K MAC 引擎在 1.25GHz 频率下算力可达 135 TOPS。 提高频率后获得的 TOPS 结果更高,但代价是功耗将大幅增加。 对于基于芯片的 NPU 来说,最大处理频率是固定的,而基于 IP 的 NPU(例如艾伯德的产品)其频率将取决于实际的芯片实施方式。 当比较不同供应商的基准结果时,对测试中的不同频率进行归一非常重要。
所使用的神经网络是 TOPS/W 的一个变量
/W频率归一化处理后,接下来我们需要看看使用的神经网络。 神经网络有非常广泛的特征。
上图突显了五个常用的神经网络在处理方面的巨大差异。 例如,ResNet 50 的运算次数不足 Unet 的 1/27,但权重却是后者的 12 倍之多。 因此,二者的处理要求(和性能)将存在差异。 在同一引擎上运行,这两个网络将产生不同的结果。 而在其他竞争对手的引擎上运行时,这两个网络产生的结果很可能差异巨大,不一定代表可用于比较的实际性能。 要对 AI 引擎进行准确的直接比较,我们需要运行相同的网络。
精度是 TOPS/W 的一个变量
这些网络的精度同样也是一个重要的考虑因素。 当运行的神经网络的引擎采用 INT4 精度时,需要处理的数据量为采用 INT8 精度时处理的一半,处理量大幅下降。 理想情况下,NPU 提供商将报告所有网络层在相同精度下的数据,不论是功耗还是性能数据(或两者都报告)。 在实际中,一些引擎会降低某些处理密集型网络层的精度,以控制功耗。 且不论这种方法本身是否正确,但在进行基准测试时,这种方法可能会带来困扰,因为与在整个网络都采用更高精度的引擎相比,在一个或多个网络层中降低精度的 AI 引擎可能看起来处理能力更具优势。
稀疏化和剪枝是 TOPS/W 的一个变量
下一个要回答的问题是是否使用稀疏化或剪枝等节省处理能力的技术。 稀疏化和剪枝都是普遍接受的方法,这些技术能够避免在乘法方程计算引入 0 值,或去除模型中最不重要部分的冗余,从而减少处理需求或降低 AI 引擎的功耗。 使用这些技术可带来显著的 PPA(性能、功耗、面积)增益——一些网络允许 30% 或更多的稀疏化,对网络精度影响甚微。 如果在 TOPS/W 的假设结果中未进行说明,上例中的 NPU 可能较使用同一网络但稀疏度为 0 的另一个 NPU 具有 30% 的人为性能优势。
制程节点是 TOPS/W 的一个变量
了解测试的底层条件有助于为比较不同 NPU 的 TOPS 结果建立平等的环境。 理想情况下,可对基准测试条件进行配置或插补,以贴近您的应用要求。 但在比较 NPU 时,您很可能需要采取一些措施,包括归一化处理频率、使用相同的神经网络和相同的精度以及自始至终使用(或不使用)稀疏化和剪枝。
我们现在需要考虑制程节点与功耗的关系。 转移至较小制程节点的一大优势是,对于相同的操作,小节点通常功耗更低。 例如,同一 NPU 采用 TSMC 5nm 节点很可能比采用 TSMC 7nm 节点功耗低约 25%。 基于 IP 和基于芯片的 NPU 均是如此。 制程节点对性能有显著影响,因此在比较基准数据时必须考虑这一因素。 务必要询问 NPU 供应商功率值是在实际芯片中测量得出、根据实际芯片推断而来,还是基于模拟得出,这一点很重要。 如果使用了实际的芯片,供应商应指明制程节点。
内存功耗是 TOPS/W 的一个变量
AI 行业的一个热门话题是如何计算一次 TOPS/W 对话中的内存功耗。 有的 AI 提供商会计算,有的不计算。 所有 AI 引擎都需要内存,有些甚至需要非常庞大的内存。 考虑适合于您应用的最佳内存大小并相应地对报告的结果进行归一化处理,这是一个明智的策略。
利用率是 TOPS/W 的一个参数
我们可以看到,评估和比较 NPU 的性能潜力并不容易。 然而,还有一个经常被忽视的因素:处理器利用率。 与所有处理器一样,NPU 的利用率也达不到 100%。 这意味着,处理器在一定百分比的时间里处于空闲状态,等待下一个数据集的到来(数据还在内存中移动)。 虽然处理器的性能范围中可能存在利用率较高的“最佳位点”,但总体而言,这些位点在性能范围中的位置往往差异很大。 利用率高是一件好事,因为它可以最大限度地减少可能影响性能的空闲时间和停顿。 同时还可降低需要的功耗和面积。 原则上来讲,这是因为一个利用率为 90% 的处理器可以完成两个利用率为 45% 的同等处理器的工作。 艾伯德按以下公示计算利用率:利用率 = 为神经网络推断而执行的实际计算运算总数/TOPS。
为您的应用找到合适的 NPU
如果所有 NPU 制造商都以标准方式提供 TOPS/W 规格,或者至少包括上面讨论的所有底层配置信息,找到合适的 NPU 肯定会更容易。 为了方便客户进行评估,艾伯德提供了详细信息,解释了我们如何对 NPU 进行基准测试使其算力达到 18 TOPS/W,请见下表。 如果您想了解我们的 NPU 是否适合您的应用,请联系我们,我们很乐意针对您的应用工作负载提供专门的结果。
规格 | Expedera |
规定的每瓦 TOPS | 18 |
频率 (GHz) | 1 |
使用的神经网络 | ResNet 50 |
精密应用 | INT8 吞吐量 |
应用稀疏或修剪? | 否 |
了解 | 功耗考虑有包括 IP 边界内的所有内存 |
工艺节点 | 台积电7纳米 |
能量消耗 | 实际硅芯片测量 |
利用率 | 70-90% |