软件定义芯片新进展:魏少军教授谈QNAP卷积神经网络加速芯片
作者:黄烨锋
EET电子工程专辑原创
今年的2021中国IC设计成就奖,中国半导体行业协会IC设计分会理事长魏少军教授获得“年度芯片设计技术创新奖”(领先的软件定义芯片设计技术)。此前《电子工程专辑》的多番报道都有提及清华大学持续研究中的“软件定义芯片”。软件定义芯片是较大程度用于权衡当代芯片可编程性(programmability)与能效(energy efficiency)这对矛盾体的一类重要方案。魏少军教授及其团队从2008年起从事可重构芯片技术研究,提出了软件定义芯片技术和理论。
他曾在多次演讲中提及:“我觉得AI应该是Architecture Innovation(架构创新),成就'智慧化’芯片。”一方面让软件定义芯片“'猜对’'应用场景’”,另一方面硬件架构、功能在根据软件实时发生动态变化的同时,仍能确保计算的高能效。
前不久的第68届国际固态电路会议(ISSCC)之上,魏少军、刘雷波教授团队作了题为“A 28nm 12.1TOPS/W Dual-Mode CNN Processor Using Effective-Weight-Based Convolution and Error-Compensation-Based Prediction”的学术报告。这篇论文的第一作者莫汇宇,目前正在清华大学微电子所攻读博士学位。
报告提出一款卷积神经网络(CNN)加速芯片QNAP。“QNAP本身就是软件定义智能芯片的一个产物。QNAP可以根据上层应用定义的CNN模型的层数、激活函数类型、卷积核尺寸等来高效地支持不同的CNN模型。”魏少军教授在接受《电子工程专辑》采访时提到。与研究团队中其他软件定义的智能芯片相较,QNAP解决问题的方向有所不同,“可以说是之前软件定义的智能芯片的进一步发展。”
从这份学术报告来看,QNAP解决的问题主要有三:
(1)通过挖掘量化后CNN模型权值大量冗余的特征,提出一种能够显著减少冗余权值造成冗余乘操作的优化方法,降低硬件功耗。这一点体现的应该报告标题中的“Effective-Weight-Based Convolution(基于有效权值的卷积)”。(图1)
(2)提出一种减少ReLU激活函数造成冗余乘加操作的预测方法,显著提升CNN硬件的运行性能——对应报告标题中“Error-Compensation-Based Prediction(基于误差补偿的预测)”。(图2)
(3)针对广泛使用的残差结构,提出一种专用的流水结构,减少残差结构中大量的片外访存操作。魏少军教授告诉我们,标题中“Dual-Mode(双模式)”体现了这一着力点。主流CNN处理器采用的都是逐层计算模式,需要针对计算结果做频繁的片外访问操作。“QNAP为了解决这个问题,提出了一种流水计算模式,这种流水结构可以有效解决以上问题,尤其适用于残差结构。”(图3)
“但考虑到流水结构不能同时处理过多的卷积层,故QNAP仍要支持传统的逐层计算模式。所以,逐层计算模式与流水模式都能在QNAP中得到有效支持,二者互补长短,以期达到最优的CNN执行效率。”
与此同时,QNAP基于台积电28nm工艺,“仅消耗1.9mm²的面积便实现了高达12.1 TOPS/W的能效”,显著优于已有结果。总结起来,QNAP所提出的技术和方法,比较现有主流CNN处理器方案,可减少资源开销、降低功耗、提升能效。
“我们团队设计的这款芯片主要面向资源受限的边缘端设备。这些设备,比如说手机,都在追求轻薄、便携与高续航等特点,这也就势必需要内部硬件模块的面积尽可能小、功耗尽可能低,但硬件模块要完成的工作一点也不能少,甚至需要其处理性能在以上基础上更高,所以,这也就是我们团队设计这款芯片的初衷。”魏少军教授表示。
而“在应用方面,团队已经在进一步完善编译系统中对QNAP中技术的支持,预计今明两年可进行推广”,前景可期。
针对这项研究更细致的问题,魏少军教授对于电子工程专辑提出部分问题的解答如下,便于各位读者更深入地理解QNAP及其技术:
问:魏教授您好,近期看到您的团队在 ISSCC 2021 会上入选的一个 QNAP 芯片的 paper。您能首先大致解释一下,这颗芯片解决的是什么问题吗?
图4,当前主流CNN处理器存在的挑战
魏少军:QNAP是由我们团队的博士研究生莫汇宇为主设计的,要解决的是当前主流CNN处理器还没有能够有效解决的三个问题。(图4)
第一、当前主流CNN处理器处理的模型通常都是量化后的CNN模型(其中使用16比特与8比特位宽的CNN模型居多)。大多数CNN处理器主要集中于设计优越的硬件架构、高效的数据流或者利用CNN模型本身存在的稀疏性,以提高硬件执行CNN模型的性能、能量效率等指标。
然而,当前这些处理器大都忽略了CNN模型的另一个潜在的特性,即CNN模型量化后将产生大量重复的权值,尤其是在低比特位宽量化情况下。我们发现,在卷积操作中大量重复权值会在CNN模型计算中造成大量冗余的乘法操作,这给相应的硬件设计带来了除稀疏性外另一种潜在优化可能特性。
第二、ReLU为当前主流CNN模型中广泛采用的一种激活函数,其自身特点同样给CNN模型硬件加速带来被优化的可能。根据ReLU激活函数的特性,卷积结果若为正则激活值为输入值,保持不变;而卷积结果若为负,即无论是结果是-∞还是-0,其激活值一律都输出0。这也就意味着,如果能够使用一部分卷积计算结果来判断结果是否为负,如为负就可以直接省略掉剩余的卷积计算,从而能提高CNN的运行性能。
第三、在广泛使用的残差结构中,由于跳层结构的存在,其片外访存的次数要多于常规的卷积层。而我们都知道,片外访存操作无论在延迟还是在功耗开销方面都远大于片上常规的乘加操作。所以残差结构按照传统CNN处理器执行方法,会带来更多的功耗和延迟开销。
而实际上,我们发现,每一层卷积层的计算并不需要全部完成,下一层卷积层就可以开始工作了。也就是说,当前卷积层只需要输出一部分结果,下一层卷积层就可以使用这结果进行计算了,这就给消除或减少需要存储到片外的中间结果带来的片外访存提供了机会。
问:QNAP 主要针对三个问题做优化,我们再谈得更细一些。这些问题存在的固有原因是什么?简单谈谈分别是怎么解决的,以及解决后达成了什么样的效果?
魏少军:问题1来自于量化后有限位宽所能表示的数据范围。对于8比特量化CNN模型,卷积核权值最多只有256种情况,而一个卷积核,比如3×3×64,就有576个数值。考虑极端情况,256种数值全部出现在该卷积核,那么平均重复率也有55.5%。实验结果表明这种极端情况是没有的。另外,3×3×64是非常小的卷积核,主流CNN模型中卷积核通道数远大于64,最多可到1024,可见重复率将会有多高。
图1,基于有效权值的卷积
针对该问题,QNAP首先选取每个卷积核中独立的权值,然后为了避免独立权值数目不确定,QNAP进一步设计了基于有效权值的卷积操作,即从独立权值中选取固定数目有效权值,然后通过有效权值通过加减,移位等方式替换掉剩余的独立权值,这样就能有效消除重复权值带来的乘法操作,且不会出现由于独立权值数目不固定而导致的资源浪费。
问题2主要是由被广泛使用的ReLU激活函数造成的。根据ReLU激活函数的特性,卷积结果若为正则激活值为输入值,保持不变;而卷积结果若为负,即无论是结果是-∞还是-0,其激活值一律都输出0。即,如果可以通过一部分卷积计算就能预测出最终结果的符号,那么就可以将为负值的剩余的卷积计算给省略掉。
图2,基于误差补偿的预测
针对这个问题,QNAP将输入激活值分为高4比特与低4比特,然后通过输入值的高4比特的计算结果来预测最终结果的符号,将其结果与事先训练得到的阈值进行比较,小于阈值则认为符号为负,那么就会直接跳过接下来的低4比特卷积计算,从而提升CNN性能。
问题3出现的原因是当前主流CNN处理器采用的都是逐层计算模式,即计算完一层卷积层,然后将其结果存储到片外,然后下一层卷积层开始计算时,需要重新读入此结果,这就导致了大量的片外访存操作。尤其在广泛使用的残差结构中,由于跳层结构的存在,其片外访存的次数要多于常规的卷积层。
图3,逐层流水结构
所以,QNAP为了解决这个问题,提出了一种流水计算模式,即让当前卷积层输出一部分结果,然后停止该层计算,转为让下一层卷积开始计算,从而消耗这部分结果,避免其存储到片外。这样除了第一层输入和最后一层输出,中间层的卷积结果的片外访存操作都被消除了。
图5,QNAP芯片die shot与关键技术规格:“此处PEA(Process Element Array,处理单元阵列)是QNAP中的主要计算单元。Weight Memory(权值存储单元),用以存储读入到片上的卷积核。Output Memory,用以存储卷积计算的中间结果;Ifmap/Pipeline Memory用以存储读入到片上的输入特征值,Param/Pooling用以存储CNN中池化的结果以及其他一些模块所需要的参数。”
问:我们看到QNAP的功耗、能效是其亮点。一些基本参数提到,QNAP在100-470MHz,功耗19.4-131.6mW(图5)。“以8 bit量化的AlexNet/VGGNet/GoogLeNet/ResNet作为基准网络,QNAP在470 MHz、0.9V条件下,实现了12.1 TOPS/W的能效。”这些值大致是个什么量级呢?
魏少军:QNAP的功耗与芯片电压、工作频率、工艺都有关系,只看绝对数值的话,与当前主打低功耗的CNN加速器处在同一水平。而能效方面,QNAP与相关的最优工作相比,在470 MHz工作频率与0.9 V的工作电压下,能效实现了1.77倍到24.20倍的提升,比较的对象包括了18年,19年与20年VLSI与ISSCC上的相关工作。
问:这样一颗芯片适用于哪些具体的应用?在应用中表现出来的优势主要会有哪些?未来对芯片有没有商业化规划?
魏少军:QNAP能够支持当前主流的CNN模型,而当前绝大多数视觉应用,譬如物体识别,检测等,都使用了CNN模型。由于QNAP集中于CNN模型推理加速,而当前消费级产品中的相关应用都只需要输出CNN的推理结果,而不需要训练;同时此类产品一般对面积功耗都有严格要求,故非常适合QNAP发挥其面积小、性能高与功耗低的优势。
商业化一直是我们团队所考虑的。我们坚持的理念是,做学术不仅仅只是用来发表高水平文章,也需要将成果落地,做到产学研结合。
问:这项研究整个过程历时多久,投入了多少人力?
魏少军:我们团队的这项研究工作,由刘雷波教授具体领衔,博士生牵头莫汇宇设计,并与一位硕士同学和五位工程师通力合作完成的,从2019年2月开始设计直到2020年7月流片完成。在这过程中,大家都是日夜兼程,来回讨论,反复验证,才最终实现了QNAP芯片。
问:研究过程中主要面临的挑战是什么,目前还存在哪些问题是待解决的?未来规划如何?
魏少军:主要面临的挑战是硬件架构的设计。如上所述,我们团队虽然发现了当前CNN模型中存在的可优化点,并提出了相应的解决方案,但底层硬件结构设计不仅要高效支持此解决方案,同时也要保持高灵活性。举个例子,在QNAP中,我们团队提出使用有效权值,并采用权值分解的方案来控制有效权值的个数以避免权值数目的不确定性。但由于有效权值在卷积核中是不规律的,硬件架构如何高效支持此种不规律卷积计算而避免使用现有基于稀疏性的CNN处理器中复杂控制逻辑的方案,之前一度成为QNAP实现的一大障碍。
目前QNAP已经充分挖掘了CNN模型中重复权值的特性,然而其中还有一个性质并没有得到充分利用,即激活值的冗余性。此冗余性主要由于激活值同样是采用了量化处理,且因为ReLU激活函数的存在,激活值存在大量0值。由于时间的紧迫性,QNAP中并没有完全解决这个问题,这也是当前我们团队将研究和解决的问题。可预见地,在QNAP基础上如果能有效解决这个问题,那么将能更进一步给CNN的硬件执行带来性能与能效提升。
问:这其中的技术是否可普及到未来的所有 CNN 芯片?其发展潜力如何?还需要多久可以实现全面的应用?
魏少军: 如之前提到的,QNAP解决的三个问题在当前CNN模型中都是普遍存在的,就从当前算法方面的发展来看,未来一段时间的模型仍然会使用基本的卷积操作进行计算,变化主要集中在CNN网络结构上。故QNAP中的技术对未来一段时间内CNN芯片设计仍将有借鉴意义。例如,我们团队接下来会在QNAP基础上进一步解决QNAP仍未解决的问题,然后推出更优于QNAP的智能芯片。
在应用方面,团队已经在进一步完善编译系统中对QNAP中技术的支持,预计今明两年可进行推广。