ADS NPU的稀疏计算

Nathan J:复睿微电子英国研发中心首席架构师,常驻英国剑桥。曾在ARM总部从事十多年的高性能CPU架构研究以及人工智能架构研究。

现如今,人工智能在诸多领域都取得了突破性进展,比如自动驾驶、计算机视觉、语音识别及翻译等。为了要解决越来越复杂的应用场景,模型的复杂度也伴随着提高,并伴随着模型参数海量提升。从下图中可以很容易看出,模型的参数最近几年呈现指数级增长。

大型 DNN 模型虽然非常强大,但会消耗大量的能量,因为模型必须存储在外部 DRAM,导致每次对模型中数据的存取都要访问DRAM。

神经网络巨大的计算量和访存量,对NPU的性能提出了更高的要求(能耗、延时、访存等)。一种可行的解决方案就是充分利用机器学习模型中的稀疏性。

所谓的稀疏性是指在计算中不必要,没用的计算。通过减少计算量,就可以保证降低不必要的存储和计算,提升机器学习模型部署时的性能。

下面通过一个简单的例子来简单介绍什么是稀疏性。卷积神经网络中由于模型的裁剪或者激活函数的操作导致weight和输入activation中通常包含大量的0值,如下图所示。这里的激活函数我们选择Relu,由于输出的特征图像的值有可能是正数,也可能是负数,负数经过Relu激活函数计算后会变为0,这就是网络稀疏性的来源之一。

这些0值其实是一些无效的数据,本不需要在网络中对其进行计算。如果我们不对这些无效数据做任何优化,NPU的硬件资源就会被浪费在处理一些无用的数据上,从而降低了NPU资源的利用率,而且会产生额外的功耗。如何对这些稀疏网络进行优化将是我们面临的一大挑战。

目前对网络的优化大概可以分为以下几类:

  • 结构设计上的优化,比如采用depthwise或者pointwise,相比于普通卷积节省了很多运算量,这种优化方式没有利用到网络的稀疏性。
  • 量化,是指通过降低数据精度将大的值映射为更小值集的过程。通常DNN的量化是通过将浮点数转化为较低精度的定点数(比如INT8, INT4, INT2),甚至极端情况下的二进制值。这种优化策略也没有利用网络的稀疏性。
  • 裁剪,是指在训练过程中将权值归0引入稀疏性的过程,而不会显著影响网络的准确性。网络裁剪主要有两种类型:结构化裁剪和非结构化裁剪。
  • 结构化裁剪是指可以有规则的裁剪掉网络更大的部分,比如按照channel裁剪,或者裁剪掉某些层,这种裁剪方式对硬件更加友好。相对应的,非结构化裁剪则是删除网络中不太显著的关联,不管他们在哪里,这导致裁剪掉的部分分布没有规律,对硬件不够友好。
  • 压缩,则是weight和activations中稀疏性的另一个产物。比如零值压缩(ZVC)、运行长度编码(RLE)等压缩技术,常被NPU使用来减少内存存储和内存访问的能量消耗。

除了前面提到的结构性裁剪和非结构性裁剪稀疏性之外,还有一种细粒度的稀疏性:平衡性稀疏

这种稀疏性在保持较高模型精度的同时,有效地实现了GPU加速。对于一个权值矩阵来说,每个矩阵的行平均分成多个大小相等的块,并且每个块具有相同数量的非零权值。如下图所示:

Nvidia的A100 GPU采用了类似于平衡性稀疏的方法,支持每个行上2:4的结构化稀疏性,即允许每4个输入向量中有两个非0值,它可以被有效地压缩并将内存存储和带宽减少近 2 倍。


另外一种稀疏算法是列组合稀疏,即将权重矩阵的列进行组合,在一组组合列中,只选择赋值最大的权重,其他都会被裁剪掉,如下图所示。这种稀疏算法可以使能效提升2倍,硬件使用率效率提升4倍。


稀疏算法的研究还在持续进行,但是不管采用何种稀疏算法,都需要有相应的NPU硬件架构与之配合,还需要结合软件编译器的优化才能使稀疏性的呈现完美的效果。

网络的稀疏性给NPU的设计带来了新的机遇和挑战:

  • 首先稀疏性的过程中必需要考虑到网络准确性的丢失。
  • 其次稀疏性的不规则,会直接影响NPU中运算单元的拓扑结构(MAC阵列或者PE阵列)。因此需要在利用稀疏性与有效数据分布之间进行共同优化设计。
  • 另外稀疏性有可能降低NPU的利用率,因为在其过程中NPU不需要计算0值并且由于工作负载分配不均匀而导致某些部分变的空闲。
  • 最后NPU对稀疏性的支持也会带来额外的硬件成本,需要在硬件成本和性能提升方面找到平衡。

参考文献:

【1】Liane B. Alexander S. and etc.“Freely scalable and reconfigurable optical hardware for deep learning”.

【2】Chuang-Bin W. Chung-Hsuan C. and etc.“Reconfigurable Deep Learning Accelerator Hardware Architecture Design for Sparse CNN”.

【3】Zhuliang Y. Shijie C. and etc.“ Balanced Sparsity for Efficient DNN Inference on GP”.

【4】H. T. Kung, Bradley M. and etc.“ Packing Sparse Convolutional Neural Networks for Efficient Systolic Array Implementations: Column Combining Under Joint Optimization”.

复睿微电子简介:复睿微电子是世界500强企业复星集团出资设立的先进技术型企业。复睿微电子根植于创新驱动的文化,通过技术创新改变人们的生活、工作、学习和娱乐方式。公司目标成为世界领先的智能出行时代的大算力方案提供商,致力于为汽车电子、人工智能、通用计算等领域提供以高性能芯片为基础的解决方案。

目前主要从事汽车智能座舱、ADS/ADAS芯片研发,以领先的芯片设计能力和人工智能算法,通过底层技术赋能,推动汽车产业的创新发展,提升人们的出行体验。在智能出⾏的时代,芯⽚是汽⻋的⼤脑。

复星智能出⾏集团已经构建了完善的智能出行生态,复睿微是整个⽣态的通⽤⼤算⼒和⼈⼯智能⼤算⼒的基础平台。复睿微电子以提升客户体验为使命,在后摩尔定律时代持续通过先进封装、先进制程和解决⽅案提升算⼒,与合作伙伴共同⾯对汽⻋智能化的新时代。

稀疏   ADS   NPU
发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章