一种基于Sobol随机数的随机计算器
【技术领域】
本发明涉及高能效AI计算技术领域,具体涉及一种基于Sobol随机数的随机计算器。
【背景技术】
传统二进制定点计算方法可以在较高的精度下完成AI的训练和推理任务,但是随着AI任务的计算规模越来越大,二进制定点计算的硬件开销越来越大,这成为了一个重要瓶颈。在解决该问题的方法中,随机计算(Stochastic Computing,SC)的“低计算开销,精度少量损失”的特点与AI的“高计算密集度,高误差容忍度”的特点十分吻合,因此其吸引了诸多研究。
随机计算(Stochastic computing):是用随机位流(bit stream)来表示连续值,SC通过一串由“0”和“1”组成的随机序列来编码数值,其中一般用“1”的概率表征目标数值,然后复杂的运算可以用简单的位运算实现,所以SC计算单元的开销低,例如其乘法可以由一个与门实现。一个简单的例子就是:比如有p,q∈[0,1],要计算p×q。随机计算使用概率而不是算术来执行此操作。假如有两个随机且相互独立的位流,一个出现1的概率是p,另一个出现1的概率是q,那么对两个流的结果进行AND运算之后新的位流出现1的概率就是p×q。
图1是传统随机计算器示意图。如图1所示,随机计算器一般包括前向转换单元(Binary to Stochastic,B2S),SC计算单元,后向转换单元(Stochastic to Binary,S2B)。前向转换单元将二进制数转换为随机序列,通常包括随机数产生器和比较器;SC计算单元包括随机域的乘法,加法等单元;后向转换单元则一般通过并行计数器(ParallelCounter,PC)得到序列中“1”的个数,从而将随机序列转换回二进制数。然而,传统SC的串行运算导致运算延迟提高,难以满足自动驾驶处理器的实时处理需求;基于随机数生成的随机序列引入了较大的精度损失,对自动驾驶安全性造成了影响。
目前已有一些技术针对随机计算的应用提出了优化方法。对于运算延迟问题,并行SC架构被采用以降低计算延迟,即在同一个时钟周期内计算序列的多个比特。但是更高的并行度也使得硬件开销成倍提升。对于精度问题,许多工作采用了高精度,低差异的Sobol随机数来代替传统的随机数生成SC序列,这种基于Sobol随机数的SC序列有效的提高了随机计算的精度。Sobol序列原理的基本思想是通过一种特殊的算法生成一系列高质量的随机数。但是,基于Sobol随机数的前向转换单元硬件开销过大,这给电路设计带来了额外的负担。
利用关键词Stochastic Computing进行检索,检索到以下相关文献。
相关检索结果1:论文《Liu S,Han J.Toward energy-efficient stochasticcircuits using parallel Sobol sequences[J].IEEE Transactions on Very LargeScale Integration(VLSI)Systems,2018,26(7):1326-1339.》。这篇文章提出了一种基于方向向量的Sobol随机数产生单元。但是其工作的缺点在于,要存储很多的方向向量,并需要计数器进行驱动,对于序列长度不是非常长的随机序列而言开销太大。
相关检索结果2:论文《Asadi S,Najafi M H,Imani M.A low-cost fsm-basedbit-stream generator for low-discrepancy stochastic computing[C]//2021Design,Automation&Test in Europe Conference&Exhibition(DATE).IEEE,2021:908-913.》这篇文章提出了一种基于FSM的Sobol序列产生器,其不需要生成Sobol随机数,只需要存储Sobol随机数的one-hot编码。但是其工作的缺点在于,状态机的状态数目过多,当时硬件开销仍然过大;没有利用Sobol随机数之前的联系,存储one-hot编码丢掉了Sobol随机数之间的内在关系。
相关检索结果3:论文《Faraji S R,Najafi M H,Li B,et al.Energy-efficientconvolutional neural networks with deterministic bit-stream processing[C]//2019Design,Automation&Test in Europe Conference&Exhibition(DATE).IEEE,2019:1757-1762.》这篇文章提出利用Sobol随机数产生Sobol序列,并将其用于神经网络推理当中,其使用了串行计算。但是其工作缺点是,串行计算导致硬件延迟很高,如果通过高并行设计来降低延迟,那么硬件开销就会大幅度提高,高能效和低延迟无法同时保证。
本发明针对基于Sobol随机数的前向转换单元硬件开销过大、采用并行SC架构降低计算延迟使得硬件开销成倍提升的技术问题,对随机计算器进行了技术改进。
【发明内容】
本发明的目的是,提供一种硬件开销小、计算能效高的随机计算器。
为实现上述目的,本发明采取的技术方案是一种基于Sobol随机数的随机计算器,包括前向转换单元、SC计算单元和后向转换单元,所述前向转换单元用于将第一乘数二进制数转换为第一随机计算序列、将第二乘数二进制数转换为第二随机计算序列,所述SC计算单元用于对第一随机计算序列和第二随机计算序列进行随机域的乘法计算,所述后向转换单元用于将所述SC计算单元输出的乘积随机计算序列转换回二进制数,所述二进制数∈[0,1];
所述前向转换单元包括Sobol1随机数产生器、以及Sobol2随机数产生器,所述Sobol1随机数、Sobol2随机数是∈[0,1]、组数为偶数n的新型Sobol随机数组,Sobol1[m]-Sobol1[m-1]=0.5,Sobol2[m]-Sobol2[m-1]=0.5,m∈[2,4,6…n-2,n];所述Sobol1随机数产生器将Sobol1随机数二进制形式第一个‘1’的位置保留、其余位置置“0”转换为Sobol1随机数one-hot编码形式,所述Sobol2随机数产生器将Sobol2随机数二进制形式第一个‘1’的位置保留、其余位置置“0”转换为Sobol2随机数one-hot编码形式;
所述前向转换单元基于Sobol1随机数one-hot编码形式用“1”的概率表征第一乘数二进制数生成第一随机计算序列,基于Sobol2随机数one-hot编码形式用“1”的概率表征第二乘数二进制数生成第二随机计算序列;
所述SC计算单元对第一随机计算序列和第二随机计算序列进行随机域的乘法计算时,将来源于相同Sobol1随机数one-hot编码形式的对应第二随机计算序列比特进行加法计算,再用相乘的第一随机计算序列比特选择输出计算结果是“0”或者加法计算结果,用加法和选择器代替大量与门。
优选地,上述的一种基于Sobol随机数的随机计算器,所述SC计算单元用加法和选择器代替大量与门时执行以下步骤:
S1、找到第一随机计算序列比特值相同的比特,将第一随机计算序列比特值相同的比特所在的第一随机计算序列、第二随机计算序列比特对提到随机计算序列前端;
S2、将第一随机计算序列比特值相同的比特所在的第一随机计算序列、第二随机计算序列比特对中、来源于相同Sobol1随机数one-hot编码形式的第二随机计算序列比特进行加法计算,然后,通过第一随机计算序列比特值相同的比特选择输出计算结果是“0”或者加法计算结果;
S3、重复执行步骤S1、S2,最后,没有参与过计算的第一随机计算序列、第二随机计算序列比特对使用与门完成计算。
优选地,上述的一种基于Sobol随机数的随机计算器,所述Sobol1随机数产生器、Sobol2随机数产生器基于新型Sobol随机数产生单元;所述新型Sobol随机数产生单元包括状态机,所述状态机用于存储所述Sobol1随机数、Sobol2随机数。
优选地,所述状态机存储n/2个所述Sobol1随机数或者Sobol2随机数,Sobol1[m-1],Sobol2[m-1],m∈[2,4,6…n-2,n];所述新型Sobol随机数产生单元还包括选择器和非门,所述状态机输出所述Sobol1随机数或者Sobol2随机数的最高位连接选择器第一输入,所述选择器输出经过所述非门后连接所述选择器第二输入;所述状态机输出所述Sobol1随机数或者Sobol2随机数低位比特不变,所述选择器通过CLK翻转实现所述选择器输出的所述Sobol1随机数或者Sobol2随机数的最高位比特不断翻转,生成全部的Sobol1随机数或者Sobol2随机数。
优选地,所述选择器通过二分频CLK翻转实现所述选择器输出的所述Sobol1随机数或者Sobol2随机数的最高位比特不断翻转,CLK为高,所述Sobol1随机数或者Sobol2随机数的最高位比特不变,CLK为低,所述Sobol1随机数或者Sobol2随机数的最高位比特取反。
本发明一种基于Sobol随机数的随机计算器有益效果如下:1、提出了硬件开销更小的基于Sobol随机数的前向转换单元,解决高精度场景下SC计算能效下降的问题;2、提出了高能效,低延迟的新型SC计算单元,解决低延迟下SC计算能效降低的问题。
【附图说明】
图1是传统随机计算器示意图,其中,图1(a)是随机计算器整体架构图,图1(b)是前向转换单元结构图,图1(c)是SC计算单元结构图,图1(d)是后向转换单元结构图。
图2是新型Sobol随机数产生单元结构示意图。
图3是新型Sobol随机数之间的规律性示意图。
图4是新型SC计算单元高并行工作方法示意图,其中,图4(a)是前向转换单元将二进制转换为新型随机序列示意图,图4(b)是新型随机序列相乘示意图。
【具体实施方式】
下面将详细描述本发明的各个方面的特征和示例性实施例。在下面的详细描述中,提出了许多具体细节,以便提供对本发明的全面理解。但是对于本领域技术人员来说很明显的是,本发明可以在不需要这些具体细节中的一些细节的情况下实施。下面对实施例的描述仅仅是为了通过示出本发明的示例来提供对本发明的更好的理解。本发明决不限于下面所提出的任何具体配置和算法,而是在不脱离本发明构思的前提下覆盖了元素、部件和算法的任何修改、替换和改进。在附图和下面的描述中,没有示出公知的结构和技术,以便避免对本发明造成不必要的模糊。
实施例
本实施例实现一种基于Sobol随机数的随机计算器。
本实施例针对AI高能效计算单元,利用随机计算(Stochastic Computing,SC)对传统基于二进制的乘累加操作进行优化,并减小SC(计算单元)应用过程中的硬件开销。
本实施例随机计算器包括前向转换单元、新型SC计算单元和后向转换单元,所述前向转换单元包括新型Sobol随机数产生单元。本实施例随机计算器针对现有随机计算器工作中存在的不足,提出了一种开销更小的基于Sobol随机数的新型Sobol随机数产生单元,解决高精度场景下SC计算能效下降的问题;并对基于Sobol的SC序列的高并行计算提出了高能效,低延迟的新型SC计算单元以提升计算能效,解决低延迟下SC计算能效降低的问题。
本实施例随机计算器,适用于AI处理器,应用于对于精度和延迟要求较高的自动驾驶感知场景。
图2是新型Sobol随机数产生单元结构示意图。如图1所示,本实施例提出的新型开销更小的基于Sobol随机数产生单元,具有以下结构特点。
1、利用相邻的Sobol随机数(二进制形式)之间的相关性,可以将存储Sobol随机数的状态机数目减少一半,即只存储一半的Sobol随机数。
2、图3是新型Sobol随机数之间的规律性示意图。如图3所示,每一对深、浅色Sobol随机数之间只翻转最高位比特(二进制形式),即每对深色和浅色之间相差0.5,如0与0.5,0.25与0.75,0.125与0.625……。图3中Diff=1000表示两行之间相差0.5,0.5的二进制表示是0.10000。要强调的是,Sobol随机数的排布规律:Sobol随机数是无限长的,组数也有无穷多,数值是[0,1]之间,组数相同,不一定是以0.0625步进的,本实施例新型Sobol随机数之间不考虑步进规律,只要排布上1-2,3-4,5-6,以此类推,这样的两行相差0.5的新型Sobol随机数组。
3、状态机中可以只存储深色的Sobol值,或者浅色的Sobol值,再通过CLK翻转Sobol值的最高比特,即可生成全部的Sobol随机数。通过这种方式,减少状态机的开销。
4、通过one-hot编码从二进制值中选取即可产生基于Sobol的随机序列。独热编码即one-hot编码,又称一位有效编码,其方法是使用N位状态寄存器来对N个状态进行编码,每个状态都有它独立的寄存器位,并且在任意时候,其中只有一位有效。
本实施例新型Sobol随机数产生单元状态机输出的n个比特中,低位的(n-1)个比特不变,最高位比特会根据CLK(二分频)不断翻转(即CLK为高,MSB不变;CLK为低,MSB取反)。本实施例如果每个cycle都需要3个不同的随机数,则需要三个新型Sobol随机数产生单元。
图4是新型SC计算单元高并行工作示意图。如图4所示,本实施提出的高能效、低延迟的SC计算单元,具有如下优化细节。
1、图4(a)是前向转换单元将二进制转换为新型随机序列示意图。如图4(a)所示,本实施例通过将Sobol随机数的二进制形式进行one-hot编码,产生新的基于Sobol的SC序列,其编码方式为“第一个‘1’的位置”。one-hot编码形式只体现二进制最高位“1”出现的位置,并不能涵盖所有二进制形式的信息;one-hot编码本质上就是一种有效信息的提取。
根据Sobol随机数的one-hot编码,本实施例取二进制输入的相应比特作为SC序列的比特。以图4(a)中二进制输入样例-1为例,观察Sobol-1的one-hot编码:对于00000,本实施例直接得到SC比特为0;对于10000,本实施例取样例-1“0110”的第一个比特“0”作为SC比特;对于01000,本实施例取样例-1的第二个比特“1”作为SC比特;对于00100,本实施例取样例-1第三个比特“1”作为SC比特。SC域的乘法至少需要两组不相关的随机序列,因此本实施例至少需要两个Sobol随机数发生器。相对应的,本实施例前向转换单元至少包括两个Sobol随机数发生器。
2、图4(b)是新型随机序列相乘示意图。如图4(b)所示,当两个SC序列相乘时,可以预测部分SC比特来源于相同的二进制比特,因此可以将这些比特相加,再用与他们相乘的SC比特来选择其计算结果是0还是它们本身。具体而言,随机计算中,两个序列的相乘本质上是一对一对的比特相乘,就如图1(c)中所示,调换不同比特对的计算顺序不会影响结果。因此本实施例把满足描述规律的比特集中在一起计算,并用加法和选择器代替大量的与门开销(很多个比特对一起计算,需要很多与门)。图4(b)中第一和第二步已经描述了优化方法,第三第四步是重复第一和第二步。
3、这些提前执行加法的SC比特可以被直接用于后续加法或转化为二进制。
4、通过使用二路选择器代替大量传统的与门,本实施例大大减少了乘法中与门的使用数量,降低了高并行下SC计算单元的开销,实现高能效低延迟的SC计算。
实施举例1:
针对新型Sobol随机数产生单元。
以Sobol-1随机数举例,本实施例新型Sobol随机数状态机可以只存储第1,3,5……等奇数Sobol随机数,而第2,4,6……等偶数Sobol随机数与奇数Sobol随机数之间的差值均为0.5。
因此,本实施例状态机可以每两个周期变换一次,即第1,2个周期,状态机均输出第1个Sobol随机数;第3,4个周期,状态机均输出第3个Sobol随机数,其余周期以此类推。在状态机外部,通过二分频的时钟和MUX门来翻转输出值的最高位比特。例如,第1个周期,状态机输出第一个Sobol值,“0”。其四位二进制表示形式为0000,第1个周期,二分频CLK值为1,最高位保持不变;第2个周期,状态机仍然输出第一个Sobol值,“0”,二分频CLK值为0,因此最高位取反变为1000,其值为0.5,为第二个Sobol值。之后的周期以此类推。
通过这种方式,本实施例可以大大减少需要存储的Sobol值的数目,降低硬件开销。
实施举例2:
针对新型SC计算单元:
本实施例使用one-hot编码来生成SC序列,即Sobol随机数二进制形式中第一个“1”出现的位置。本实施例用one-hot编码从二进制输出中选出对应的比特作为SC序列。如图4(a)所示,对于Sobol值0.75,其二进制形式是1100……,第一个1出现的位置是第一个比特,因此其one-hot编码为1000……。one-hot编码形式只体现1100……二进制最高位“1”出现的位置,并不能涵盖所有Sobol值二进制形式的信息;one-hot编码本质上就是一种有效信息的提取。
通过这个one-hot编码,本实施例选择二进制输入中第一个比特作为其SC序列的比特,在样例1中的“0”,样例2中为“1”。SC序列中其他的比特也按此规律生成。以图4(a)中二进制输入样例-1为例,观察Sobol-1的one-hot编码:对于00000,本实施例直接得到SC比特为0;对于10000,本实施例取样例-1“0110”的第一个比特“0”作为SC比特;对于01000,本实施例取样例-1的第二个比特“1”作为SC比特;对于00100,本实施例取样例-1第三个比特“1”作为SC比特。SC域的乘法至少需要两组不相关的随机序列,因此本实施例至少需要两个Sobol随机数发生器。相对应的,本实施例前向转换单元至少包括两个Sobol随机数发生器。
如图4(b)所示,Sobol随机数中,有很多值的one-hot编码是相同的,这意味着它们对应的SC比特也一定相同。当两个SC序列相乘时,例如一个SC序列是基于Sobol-1生成的SC序列1,另一个SC序列是基于Sobol-2生成的SC序列2(为了保证两个序列不相关以提高精度)。第一步,本实施例找到SC序列1中相同SC比特(图中是“0”),将这些相同SC比特所在的SC序列1、SC序列2的SC比特对(虚线框内)提到序列前端(调整比特对顺序不影响精度);第二步,将这些SC序列1中相同SC比特对中SC序列2的对应SC比特相加,然后通过SC序列1中的“相同SC比特”来选择结果是“0”或者SC序列2的对应SC比特的加法结果;第三步,类似第一步,将SC序列2没有参与过计算的“相同SC比特”挑出来,将其所在的SC序列1、SC序列2的SC比特对调整到序列前端;第四步,使用第二步同样的方法通过MUX门来选择计算结果。最后,SC序列1、SC序列2仍然没有参与过计算的比特,通过传统的SC计算方法完成计算(每一对比特使用一个与门)。本实施例把满足描述规律的比特集中在一起计算,并用加法和选择器代替大量的与门开销(很多个比特对一起计算,需要很多与门)。图4(b)中第一和第二步已经描述了优化方法,第三第四步是重复第一和第二步。
通过上述方法,高并行SC计算的庞大的与门数量可以被大大减少,在使用了Sobol序列,高并行架构的情况下,仍然保持高能效。
本领域普通技术人员可以理解,实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random Access Memory,RAM)等。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明原理的前提下,还可以做出若干改进和补充,这些改进和补充也应视为本发明的保护范围。