文章译自Embedded Computing Design
作者:Abhishek Jadhav 自由职业者技术作家
2022年1月11日
神经网络是一种流行的机器学习模型,但它要求更高的能源消耗和更复杂的硬件设计。随机计算是平衡硬件效率和计算性能之间权衡的有效方法。然而,由于算术单元的低数据精度和不精确性,随机计算见证了低精度的ML工作负载。
为了解决与传统随机计算方法有关的问题,并通过更高的精度和更低的功耗来提高性能,正在进行的研究提出了一种改进的基于块的随机计算架构。随着输入层中块的引入,通过利用高数据并行性可以减少延迟。更重要的是要确定所需的块的数量,全局优化方法负责处理这个问题。
现有的方法包括增加比特流的长度以提高数据精度,甚至使用指数级比特来获得精确的结果。然而,这引入了较长的计算延迟,这对TinyML应用来说是不合理的。因此,为了处理这个不断上升的计算延迟,比特流被分成了几个块,然后并行地执行。结合块内算术单元和输出修订(OUR)方案,缓解了块间不准确的问题,提供了高计算效率。
基于块的随机计算架构
研究提供了一个新颖的架构,其中输入被划分为块,并使用优化的块内算术单元并行执行乘法和加法。此外,当涉及到TinyML应用的延迟-功率权衡时,所提出的模型是一个无可挑剔的架构。
[图片来源:研究论文]
该架构分为以下几个部分:
区块划分
如上图所示,输入的比特流被划分为 "k "值块。提出的想法是,为比特流选择一个好的块数并不保证是最优的,但可以采用近似的方式。如果选择块的数量有误,就会矛盾地产生大的错误。在确定来自输入比特流的正负部分的两个平均值的概率时,存在复杂的计算。查看研究论文 "BSC:基于块的随机计算以实现准确和高效的TinyML",以了解更多关于块划分的启发式策略的细节。
区块内计算
缓解传统加法器所面临的问题,在OR加法器中遭遇相关问题,在分离加法器中遭遇溢出问题。新的修改后的架构设计在输入之间带有XNOR+AND门,以消除双极计算的相关性。下图说明了块内计算的情况。
[图片来源:研究论文]
每个输入位都在并行计数器(PC)中,对正负部分(Ap, An)进行单独处理。有两个专门的累加器用于处理有符号的位。在输入位被取走后,在累加器之间发生减法,如正负部分所说明的那样。目标是得到所有输入的累积1的数量。此外,通过比较取暂时输出的一位(Sop, Son),在多个'n'周期后,计算符号位,并根据签名位Ap和An选择Sop和Son的输出结果。
这种新的基于累加器的符号-幅度格式的加法器利用uNSADD加法器的优势,比较输出以及输入中的真实累加1,以确定输出位。这种方法消除了相关性和快速溢出问题的影响。
区块间输出修正方案
即使块内加法器解决了相关和溢出问题,但块内除法引入了一个新的块间不准确误差。这种情况不会发生在乘法器上,因为输入是XNOR和AND的。但是对于加法器来说,输出中的1的数量会偏离产生的不准确度。输出修正方案在并行的块内计算阶段后添加或删除1,而不引入任何额外的延迟来解决这些块间不准确的错误。
基于块的新型随机计算架构旨在提高随机计算算术电路的准确性,同时降低计算延迟和能源效率。根据研究结果,该方法实现了比现有方法高10%以上的精度,并节省了6倍以上的功率。
