过去两年是推理芯片行业最繁忙的两年。甚至有段时间,每隔一周都会有新公司推出新的优化方案。尽管这些创新都是伟大的,但问题在于大多数公司都不知道如何使用各种解决方案,因为他们无法确定哪个解决方案的性能优于另一个解决方案。在这个新市场上,由于没有一套既定的基准,公司们要么必须尽快熟知推理芯片,要么必须相信各个供应商提供的性能数据。
大多数供应商给出的某些性能指标通常都是有利于其芯片表现的基准。一些供应商在讨论TOPS和TOPS/Watt时没有指定模型、批量大小或工艺/电压/温度条件。其它供应商使用ResNet-50基准,这一模型相当简单,远低于人们的需求,因此它在评估推理选项方面的价值令人怀疑。
我们在这条漫长道路上探索了很久。众多公司逐渐发现,在评测推理芯片性能时,最关键的是(1)高MAC利用率(2)低功耗(3)保持小尺寸。
我们知道如何评测——接下来呢?
在我们熟知推理芯片之间的性能评测比对方法之后,公司们开始提出在同一设计中同时使用多个推理芯片的优点(或缺点)的问题。 简而答之,只要推理芯片设计正确,使用多个推理芯片可以实现性能的线性提高。当我们考虑使用多个推理芯片时,可以拿高速公路作类比,你想要一条单行道公路还是一条四车道公路?
显然,每家公司都想要一条四车道的高速公路,所以现在的问题变成了“我们如何在不造成交通堵塞的情况下成功打造这条四车道高速公路?” 答案在于选择正确的推理芯片。为解释这一点,让我们先了解神经网络模型。
神经网络被分解成多层。像ResNet-50有50层,YOLOv3有100多层,并且每层都会跟进上一层的激活。因此,在第N层中,其输出是进入N+1层的激活值。它等待该层的进入,计算完成后,输出是进入n+2层的激活值。这会一直持续到最后一层,直到算出结果为止。请记住,此示例的初始输入是图像或模型正在处理的任何数据集。
多个芯片何时发挥作用?
事实是,即便你的芯片具有一定的性能水平,总会有客户希望获得两倍或四倍的性能。但在某些情况下,如果你分析神经网络模型,这是有可能实现的。你只需要关注如何将模型分成两个芯片或四个芯片。
多年来,这一直是并行处理面临的问题,因为对于正在进行的处理,人们很难找出划分方式 并确保所有处理都会叠加,而不是造成性能缩减。
与并行处理和通用计算不同,使用推理芯片的好处在于,客户通常提前知道他们是否需要使用两个芯片,这样编译器就不必在运行中做出决定,它是在编译时完成的。有了神经网络模型,一切都是完全可预测的,因此我们可以分析并找出如何准确地拆分模型,以及它是否能在两个芯片上良好地运行。
为了确保该模型可以在两个或更多芯片上运行,必须逐层查看MAC的激活值大小和数量。通常情况下,最大的激活值出现在第一层。这意味着激活值大小随着层数的递增而缓慢下降。
查看MAC的数量以及每周期MAC完成数量也很重要。在大多数模型中,每个周期中完成的MAC数量通常与激活值大小相关。这很重要,因为如果您有两个芯片,并且希望以最大频率运行,则需要为每个芯片分配相同的工作负载。如果一个芯片完成了模型的大部分工作,而另一个芯片只完成了模型的一小部分工作,那么您将受到第一个芯片的吞吐量的限制。
如何在两个芯片之间分割模型也很重要。您需要查看MAC的数量,因为这决定了工作负载的分配。您还必须查看芯片之间传递的信息。在某些情况下,您需要分割模型,并使其能够传递最小激活值,以使所需通信带宽量和传输延迟最小化。若分割的模型导致激活值非常大,则激活值的传输会成为瓶颈,并限制双芯片方案的性能。
下图显示了YOLOv3/Winograd/2 Megapixel图像的激活输出大小和累积的Mac逐层操作(绘制出卷积层)。为了平衡两个芯片之间的工作量,该模型将削减约50%的累积MAC操作——此时,从一个芯片到另一个芯片的激活值是1MB或2MB。在4个芯片之间分割,削减量大约为25%、50%和75%;注意,激活值在开始时最大,所以在25%的削减点时,有4或8MB的激活要传输。
YOLOv3/Winograd/2Mpixel图像的激活输出值(蓝条)和MAC操作累积(红线),显示了如何在多个芯片之间分配工作负载(图片:Flex Logix)
性能工具
幸运的是,现在可以使用性能工具来确保高吞吐量。事实上,模拟单个芯片性能的工具可以推广到模拟两个芯片的性能。虽然任何给定层的性能完全相同,但问题在于数据传输如何影响性能。建模工具需要考虑这一点,因为如果所需的带宽不够,那么该带宽将限制吞吐量。
如果您需要处理4个芯片,则将需要更大的带宽,因为模型第一个1/4部分的激活值远大于后面部分的激活值。因此,您可以借助投入的通信资源将大量芯片连接在一起,但所有芯片,包括独立芯片在内,也会因此承担间接成本。
结论
使用多个推理芯片可以显著提高性能,但前提是必须按照上述方法正确设计神经网络。如果我们回顾一下高速公路的类比,就会发现,使用错误的芯片和神经网络模型很有可能会增加通信量。如果你一开始就使用正确的芯片,那你就步入正轨了。谨记,最重要的是吞吐量,而不是TOPS或Res-Net50基准。一旦你选择了正确的推理芯片,你就可以设计一个同样强大的神经网络模型,为你的应用需求提供最佳的性能。
(参考原文:Advantages and Challenges of Designing with Multiple Inferencing Chips , by Geoff Tate)
责编:Amy Guan
本文为《电子工程专辑》2020年1月 刊杂志文章,版权所有,禁止转载。点击申请免费杂志订阅