码迷,mamicode.com
首页 > 其他好文 > 详细

推理芯片的性能建立在优化的存储子系统设计上

时间:2020-07-09 19:15:07      阅读:72      评论:0      收藏:0      [点我收藏+]

标签:optimize   mes   build   部分   form   输出   memory   权重   区别   

推理芯片的性能建立在优化的存储子系统设计上

Inference chip performance builds on optimized memory subsystem design

好的推断芯片可以很快地移动数据。             

去年公布的新推断芯片公司的数量足以让头晕目眩。由于有这么多芯片,而且不缺乏任何质量基准,业界常常忘记了一个极其关键的部分:内存子系统。事实是,除非有一个好的内存子系统,否则不可能有一个好的推理芯片。因此,如果一家推断芯片公司只讨论TOPS而很少讨论SRAM、DRAM和内存子系统,那么可能没有很好的解决方案。

这都是关于数据吞吐量的             

好的推断芯片被设计成这样,可以很快地移动数据,这意味着必须非常快速地处理这些数据,并且非常快地将数据移入和移出内存。如果看看使用ResNet-50和YOLOv3的模型,会发现不仅在计算方面,而且在如何使用内存方面都有显著的不同。             

对于使用ResNet-50的每个图像,需要20亿个乘法累加(mac),但是对于YOLOv3,需要超过2000亿个mac。那是一百倍的增长。这部分是因为YOLOv3的权重更大(6200万个权重,而ResNet-50的权重约为2300万个)。然而,最大的区别在于典型基准中的图像大小。ResNet-50使用224×224,这是没有人实际使用的尺寸,而YOLOv3使用的是200万像素。因此,YOLOv3上的计算负载要大得多。             

使用上面的示例,可以看到有两个不同的工作负载,其中一个需要100倍以上。显而易见的问题是:这是否意味着YOLOv3的运行速度慢了100倍?唯一可以回答这个问题的方法是查看内存子系统,因为将告诉任何给定芯片上的实际吞吐量。

内存子系统             

有了推断芯片,不仅仅是在创造一个芯片,正在创造一个系统。芯片有引擎,也就是mac,但是如果没有正确的燃料供给系统(内存和互连),引擎就会熄火。             

如果看看在一个推断芯片中发生了什么,数据就会进来,然后必须以一定的速率提供新的图像,比如每秒30帧。图像进入芯片,输出的是某种结果。图像大小不同,但大多数应用程序需要处理百万像素的图像以获得足够的精度。             

芯片内部的情况是,用一个神经网络模型来处理图像,所以在每一层的末尾都有代码、权重和中间激活。所有这些都需要存储在某个地方,读写到推理芯片的计算单元中。

应用             

推理的应用是众多的,如自主驾驶等边缘应用代表了最大的机会之一。未来,每辆汽车都将有多个推理引擎,以便实时检测和避免行人、公共汽车和汽车。这使得处理像YOLOv3这样的大尺寸图像非常重要。当想到用自己的眼睛看一幅图像时,这是常识。如果有人给看一个小图像,会错过细节并误解图像。在自动驾驶汽车和监控摄像头的情况下,小细节绝对至关重要。

技术图片

自主驾驶代表了AI加速器在边缘的最大机会之一。              

边缘和云端的区别在于,在边缘,需要发送即时响应,而在云端,通常拥有大量数据,并且有时间处理这些数据。例如,如果在车里,需要知道人在哪里,这样就有机会避开。然而,这在数据中心是不同的,那里有照片标记等应用程序,可以在夜间运行大批量。这在边缘应用程序中不起作用,在这种应用程序中,一切都必须快速且延迟短,这也意味着批处理大小=1。             

所以从本质上讲,正在重新构建芯片,以在短时间内(低延迟)交付结果,以便及时做出正确的响应。需要立即处理数据并立即返回结果,这意味着内存是这方面的一个绝对关键的部分。             

如果看看ResNet-50,有很多芯片在批处理大小=10或100时性能非常高,但是当进入批处理大小=1时,性能就会下降。在一些芯片中,这种下降率高达75%。这意味着,无论从mac机获得的高批处理率的利用率是批处理=1时的四分之一。因此,如果批处理=1,这在边缘非常关键,一些芯片的计算mac中可用周期的利用率低于25%。

架构的转变             

在过去的日子里,处理器的内存体系结构现在仍然在数据中心进行大量的推断,有DRAM和多级缓存,这些都被输入到一个处理器中。内存是集中的单一统一内存。有了推理芯片,内存趋于分散。一种更快地处理数据的方法是将mac分成块,然后使用本地化的SRAM分发这些块。这是Flex Logix和Intel等公司使用的一种方法,代表了一种在未来将占主导地位的方法。原因是内存靠近mac会导致访问时间更短,而mac的分布式则会导致更多的并行性。

技术图片

通用处理器和推理加速器内存子系统设计的差异。推理加速器倾向于以本地化SRAM的形式拥有分布式内存。             

边缘应用的另一个关键要求是满足成本和电源预算。与用于训练的芯片占用整个晶圆不同,用于汽车和监控摄像头等应用的芯片有相关的美元预算和功率限制。通常,可用的SRAM数量不足以在不破坏这些预算的情况下将所有的权重、代码和中间激活存储在芯片上。这些芯片正在处理大量的数据,并且定期处理这些数据,边缘的大部分应用程序始终处于运行状态。由于所有芯片都会发热,所以处理量将与不断增加的热量有关。从同样数量的硅和功率中获得更高吞吐量的架构将是赢家,因为可以以更低的功耗和更低的成本交付更多的结果。

优化功率和成本             

公司可以采取一些捷径来权衡探测物体的精确性。然而,这并不是客户想要的方式。客户希望运行一个模型,并在一定的功率范围内获得高精度的目标检测和识别。这样做的关键在于内存子系统。             

如果看看ResNet-50或YOLOv3,需要存储重量。YOLOv3中的权重约为23MB,而ResNet-50中的权重约为62MB。仅仅在芯片上存储这些重量就可以使芯片接近100平方毫米,这对于大多数应用来说并不经济。这意味着海量内存需要脱离芯片,这意味着DRAM。             

另外,经常被问到DRAM的类型是否重要。答案是这很重要。高带宽存储器(HBM)非常昂贵,不适用于成本受限的边缘应用。LPDDR4是一种更好的内存,因为采用宽总线配置,可以从单个DRAM中提供更多带宽。DRAM也是非常热敏感的,这可能是一个问题,在汽车和监控摄像机在室外运行。因此,对于成本和热量问题,最好尽量减少DRAM的使用。

如何设计最佳推理芯片             

最好的推断芯片将是那些由设计师设计的芯片,会考虑客户将要做什么类型的处理,负载和应用将是什么,以及将在哪里使用。归根结底,客户希望获得最高的吞吐量,这意味着需要较高的MAC利用率。获得高MAC利用率的方法是将高带宽馈入MAC,但是希望用最少的SRAM和最少的DRAM来实现这一点。             

芯片设计人员需要对客户期望运行的应用程序进行建模,并仔细观察其权重、代码大小和激活情况。现在有很多建模工具可以让芯片设计者改变mac、SRAM和DRAM的数量,这使得设计者能够在决定如何提供最便宜的芯片和最高的吞吐量时进行一系列的权衡。             

许多mac的设计者也可以用更高的频率来组织。例如,比特乘法和累加比16位乘法和累加快。在这种情况下,唯一的折衷是精确度会降低一点,每美元和每瓦特提供更高的吞吐量。             

那么ResNet-50和YOLOv3在内存使用上有什么不同呢?虽然重量相差2倍,但最大的区别在于激活。ResNet-50的每一层都会产生激活,ResNet-50的最大激活大小是1兆字节,有些层甚至比这个还要小。在YOLOv3中,最大层的最大激活量是64兆字节,因此必须存储这64兆字节,以便为下一层做好准备。当看到片上或DRAM的容量需求时,YOLOv3的激活实际上驱动了比重量更多的存储需求,这与ResNet-50非常不同。事实上,客户需要警惕的诀窍是,一些公司设计芯片,这样就可以在船上存储ResNet-50的重量,知道激活很小,这可以使性能“看起来”非常好。然而,在实际应用中,这种芯片的性能会急剧下降。

SRAM与DRAM的权衡              

DRAM芯片要花钱,而更贵的是与DRAM芯片的连接。公司倾向于关注模具尺寸,但芯片封装尺寸是决定成本的一个重要因素,有时可能比模具更昂贵。每次添加DRAM时,至少会添加100个球。今天的一些芯片有8个DRAM连接到上,这样就可以把推到1000个球包中,这是非常昂贵的。虽然公司意识到不能将所有的SRAM都安装在板上,但也意识到无法通过拥有太多的DRAM来解决成本问题。真正需要的是尽可能少的DRAM和尽可能少的SRAM。要做到这一点,芯片设计者需要研究激活。如果看看64MB的激活数,只有一个。大多数激活的大小都比较小,所以如果把8兆字节的SRAM放在芯片上,大多数中间激活都会存储在芯片上,只需要使用DRAM来处理最大的激活。             

这是推断芯片的最佳位置,也是芯片设计者在设计中应该努力追求的目标。而且,如果是客户,需要开始询问有关芯片内存子系统的问题,因为这是决定芯片在实际应用中的性能的一个重要因素。

推理芯片的性能建立在优化的存储子系统设计上

标签:optimize   mes   build   部分   form   输出   memory   权重   区别   

原文地址:https://www.cnblogs.com/wujianming-110117/p/13275358.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!