CN108021537B - 一种基于硬件平台的softmax函数计算方法 - Google Patents
一种基于硬件平台的softmax函数计算方法 Download PDFInfo
- Publication number
- CN108021537B CN108021537B CN201810016954.XA CN201810016954A CN108021537B CN 108021537 B CN108021537 B CN 108021537B CN 201810016954 A CN201810016954 A CN 201810016954A CN 108021537 B CN108021537 B CN 108021537B
- Authority
- CN
- China
- Prior art keywords
- calculation
- look
- index
- value
- reciprocal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/15—Correlation function computation including computation of convolution operations
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种基于各种硬件平台(CPLD、FPGA、专用芯片等)的softmax函数计算方法。softmax函数广泛应用于深度学习的多分类任务及注意力模型等,其中涉及到的e指数及除法计算需要消耗较大的硬件资源。设计方法通过对函数进行简单变换,将其中的e指数计算简化为一次常数乘法、一个输入范围固定的2的指数次运算、一次移位运算;将n次除法运算的简化为一次“最高位1检测运算”,一次输入范围固定的倒数运算,一次移位运算及n次乘法运算。其中2指数及倒数运算以特殊设计的查找表实现,使得更小的存储空间可实现同样精度。将本发明用在深度学习注意力模型等中,可以在精度几乎不受损的前提下大大提高计算速度,减少计算资源的消耗。
Description
技术领域
本发明涉及集成电路技术领域,具体涉及一种基于硬件平台的softmax函数计算方法及其架构设计。
背景技术
softmax函数广泛应用于深度学习的多分类任务及注意力模型等。它可将多个神经元的输出映射到(0,1)区间内,且所有项的和为1,可被看做概率,常应用于机器学习中需要计算多个输出占比或多输入各自权值的场合中。
Softmax中涉及到的e指数计算以及除法计算需要消耗的硬件资源较大,深度学习在硬件平台的实现效率和资源消耗会被这一函数的计算速度和资源需求影响。经过对函数的简单变换,将其中的指数计算以移位计算替代,并将除法以查找表方式实现,可以在精度几乎不受损的前提下大大提高计算速度,减少计算资源的消耗。
发明内容
本发明为了解决各种硬件平台(包括CPLD、FPGA、专用芯片等)上用定点数计算Softmax函数不易于实现的问题,提出了一种softmax计算架构的设计方法,可减小硬件硬件面积、降低查找表存储参数的值域范围,从而使得在的计算相同精度下存储参数所需要的资源减少,或者在消耗相同的存储空间的情况下存储精度更高的参数,达到更高的计算精度。
本发明的理论分析如下:
1.Softmax函数的表达式为
其基本运算步骤为:
步骤一:输入n个变量xi,(1≤i≤n)对每个变量,计算出:
步骤二:对于计算得到的yi,求其和:
步骤三:对每个yi,除以F,得到f(xi):
2.其中基本的数字电路中的逻辑单元无法直接进行运算的步骤是步骤一的指数运算和步骤三的除法运算。以下将从三个步骤对该运算进行简化。
2.1第一步优化考虑指数运算的简化。这里我们把输入为负无穷到正无穷的e指数的计算,简化为一次常数乘法、一个输入范围为[0,1)的2的指数次运算、一次移位运算。
按照一般的计算流程,以自然对数为底数的指数运算,无法用数字电路的组合逻辑直接表示,一般采用泰勒展开逼近的方法或直接查表得结果。如果采用泰勒展开逼近的办法,需要做大量的乘除法运算,硬件面积将变得非常大。如果采用直接查表的办法,输入变量的范围从负无穷到正无穷,存储量太大。对e指数做如下变换:
再对xi′进行整数和小数的拆分,使得xi′=x1i′+x2i′,其中x1i′为xi′的整数部分,x2i′为xi′的小数部分且0≤x2i′≤1,如5.75=5+0.75,-6.25=-7+0.75,yi的计算可表示为
2.2第二步优化考虑除法运算的优化。这里我们把n次除法运算,简化为一次求一个定点二进制数除符号位以外从左往右第一个1的位置的运算、一次输入值域为[0.5,1)的倒数运算、一次移位运算、n次乘法运算。
由于n次除法运算的除数都是相同的,可以先求出F的倒数,然后每次再求yi和这个倒数的乘积。借鉴简化e指数的思路,对倒数运算进行如下考虑:
由分数计算的性质可知,|F|=2w·k,其中w为整数,0.5≤k<1。如,6.25=8×0.7815,-3.5=-4×0.875,-0.43=-0.5×0.86。如果k可以取[0.5,1)中的任意实数,理论上所有非0实数都可以用这种方法来表示,本身这也与浮点数的表示方法类似。对于二进制定点数来说,只要找到除符号位以外从左往右第一个不是0的比特位,就可以快速计算得到w和k。比如用十进制表示的0.09375=8×0.75,用二进制表示就是0.00011,从左往右第一个为1的比特位是小数点后第四位,那么w=4-1=3,k用二进制表示就是0.11,用十进制表示就是0.75。
对比e指数的计算,F的倒数的计算也完全类似:由于F>0所以不需要符号位;先查表得到的值,再根据w的值对该值进行左移或右移处理。这里的查表的输入值的范围是[0.5,1),输出值的范围是(1,2],同样,输入值和输出值的范围都大大减小了。
2.3第三步优化对查表的输出值的范围,采用一种改进的查找表策略进行进一步优化。
在定点数表示范围不变的情况下,提高精度就会需要更大的位宽带来更大的存储空间,而要减少存储就要牺牲精度;而如果能够缩减定点数的表示范围,相同的精度可以占用更少的存储空间,占用相同的空间可以表示更高的精度。
定义查找表一存储函数y1=2x,查找表二存储函数y2=1/x。前两步优化已经大大减小了查表的输出值的范围,这一步对其范围进行进一步的缩减:在存储查找表y=g(x)的过程中,常用的办法是把x的值对应到存储器的地址,把g(x)作为该地址所存储的数据;借鉴线性拟合的思想,这里我们不存储g(x),改为存储g(x)-(kx+b),每次访问时得到数据后再加上kx+b,就是g(x)的值。很明显,如果直线y=kx+b和曲线y=g(x)很接近,查找表的输出值值域会大大缩减,代价是返回后的数据要进一步处理;而相对于直接采用拟合的思想进行计算,这种办法可以灵活的提高精度,代价是需要更多的存储空间。
这里由于查找表对应函数的特殊性,采用这种策略计算有很大好处:需要查表计算的是函数y1=2x,0<x<1和函数y2=1/x,0.5≤x<1。从图线中可以看出,曲线y1和直线y=x+1非常接近,曲线y2和直线y=-2x+3也非常接近,而这两条直线的表达式非常简单,返回值后都不需要进行k乘以x的运算,所以在本方案中这种运算非常简便。
所以,查找表一存储的函数可改为y1=2x-x-1,其值域为[0,0.08607],对应到二进制是[0,0.001);查找表二存储的函数可改为y2=1/x+2x-3,其值域为[-0.17157,0],对应到二进制是(-0.01,0]。也就是说,如果采取相同的精度进行存储和运算,用这种方案,查找表一存储数据的位宽降低了3位,查找表二存储的数据位宽降低了1位。
进一步降低数据位宽,可以通过修改查找表的存储内容来解决:由于函数y2=1/x+2x-3在0.5≤x<1时是先单调减再单调增,所以可以直接将存储的内容的第一位去掉,具体的细节会在具体实施方法中阐明。
附图说明
图1为整个系统的设计框图;
图2为输入数据的格式;
图4为倒数(1/F)的计算方法;
图5为计算xi′=xi log2e的常数乘法器。
具体实施方法
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他的实施例,都属于本发明保护的范围。
图1示出了本发明一实施例提供的硬件平台上用原码表示的定点数计算Softmax函数的系统框图,本实施例的用16位宽的定点数(最高位表示符号位,4位整数,7位小数,精度为0.0078125,表示范围-15.9921875~15.9921875)如图2所示,计算Softmax函数的硬件设计方法或实施方案如下所述。
步骤1、输入n个定点数x1,x2,…,xn,数据格式如图2所示。
步骤2、如图3所示,对xi做一次常数乘法,乘以的常数是log2e,得到xi′=xi log2e,按照本实施例所采用的精度,将其转换为1.0111001。那么这一常数乘法相当于做一系列的移位和加法运算,如图5所示。得到的xi′的数据格式是13位位宽,其中1位符号位,5位整数,7位小数。
步骤3、如图3所示,首先判断xi′的正负,再对x1i′和x2i′赋值。若xi′≥0,x1i′等于xi′的整数部分(保留符号位,并包括5位整数),x2i′等于xi′的小数部分(无符号,7位小数);若xi′<0,x1i′等于xi′的整数部分-1(保留符号位并包括5位整数),x2i′等于1减去xi′的小数部分(无符号,7位小数)。
步骤4、如图3所示,计算要用到一张查找表,查找表存储的函数是y1i=2x-x-1,值域是[0,0.08607],对应到二进制是[0,0.001),在表中存储的是因变量用二进制表示的从小数点后第四位开始的数,如果输出和输入采用一样的精度,那么在查找表中存储的数据就是四位,0000~1011。根据xi′的精度和范围,查找表一的地址表示为xi′的小数部分,即0000000~1111111;内容如下:
将xi′的值输入查找表后,得到输出D1(四位二进制数)。为方便后面运算,D都取正数,不需要符号位,得到12位的D,范围是000000000000~000000001011。
步骤5、如图3所示,计算yi,yi≥0,位宽28位,其格式为21位整数,7位小数。y1i=D+x+1,再根据x1i′的正负,对y1i进行移位操作:若x1i′>0,yi=y1i<<x1i′;若x1i′<0,yi=y1i>>|x1i′|。
步骤6、如图1所示,对步骤5得到的y1,y2,…,yn,全部相加,得到F,F>0。
步骤7、如图4所示,根据F从左往右第一位不是0的比特位的位置,计算得到w。若该位置在小数点之前第n位,w=n;若该位置在小数点之后第n位,w=n-1。
步骤8、如图4所示,从步骤7所取位置的后一位开始截取6位有效数字,赋给k。k的范围是000000~111111。
步骤9、如图4所示,用查找表二计算1/k。根据k的精度,以及发明内容中所述的公式y2=1/x+2x-3,其值域为[-0.17157,0],对应到二进制是(-0.01,0],查找表不存储y2的符号位,并且从y2的二进制表示的小数点后第三位符号位开始存储,也就是舍去小数点后的第二位,设计得到的查找表二的内容如下:
输入k,返回值为D2(四位二进制数)。
步骤10、k与两个常数比较,确定它是否在[001100,101110]区间;若在区间[001100,101110],D2′是D2前面加一个1,否则D(k)是D2前面加一个0。1/k=D(k)-2k+3。
步骤11、如图4所示,将1/k赋值给1/F。再根据w的正负,对1/F进行移位操作:若w>0,1/F=1/F<<w;若w<0,1/F=1/F>>|w|。
Claims (3)
1.一种基于硬件平台的softmax函数计算方法,包括如下步骤:S1,通过e指数计算模块计算输入向量x各个分量xi对应的e指数计算结果;S2,通过累加器模块将x各个分量xi对应的e指数计算结果进行累加;S3,通过存储模块将x各个分量xi对应的e指数计算结果进行存储;S4,通过倒数运算模块计算x各个分量xi对应的e指数计算结果的累加结果的倒数;S5,通过乘法模块将所存储的e指数各个计算结果与计算所得的倒数进行相乘;
其中,S1还包括:
通过常数系数log2e乘法模块将xi变换为xi′=xilog2e;
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810016954.XA CN108021537B (zh) | 2018-01-05 | 2018-01-05 | 一种基于硬件平台的softmax函数计算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810016954.XA CN108021537B (zh) | 2018-01-05 | 2018-01-05 | 一种基于硬件平台的softmax函数计算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108021537A CN108021537A (zh) | 2018-05-11 |
CN108021537B true CN108021537B (zh) | 2022-09-16 |
Family
ID=62072566
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810016954.XA Active CN108021537B (zh) | 2018-01-05 | 2018-01-05 | 一种基于硬件平台的softmax函数计算方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108021537B (zh) |
Families Citing this family (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109165006B (zh) * | 2018-08-07 | 2021-08-06 | 上海交通大学 | Softmax函数的设计优化及硬件实现方法及系统 |
CN109308520B (zh) * | 2018-09-26 | 2022-05-13 | 创新先进技术有限公司 | 实现softmax函数计算的FPGA电路及方法 |
CN110009021B (zh) * | 2019-03-26 | 2021-06-15 | 深兰科技(上海)有限公司 | 一种目标识别方法及设备 |
CN110135086B (zh) * | 2019-05-20 | 2022-09-13 | 合肥工业大学 | 计算精度可变的softmax函数硬件电路及其实现方法 |
CN110288087B (zh) * | 2019-06-20 | 2020-11-20 | 湖南长城银河科技有限公司 | 一种实现tanh函数计算的方法、电路、芯片及系统 |
CN113296732B (zh) * | 2020-06-16 | 2024-03-01 | 阿里巴巴集团控股有限公司 | 数据处理方法和装置,处理器及数据搜索方法和装置 |
CN112036561B (zh) * | 2020-09-30 | 2024-01-19 | 北京百度网讯科技有限公司 | 数据处理方法、装置、电子设备及存储介质 |
CN112685693B (zh) * | 2020-12-31 | 2022-08-02 | 南方电网科学研究院有限责任公司 | 一种实现Softmax函数的设备 |
EP4092578A1 (en) * | 2021-05-18 | 2022-11-23 | Aptiv Technologies Limited | Computer-implemented method of executing softmax |
CN113377332B (zh) * | 2021-05-28 | 2023-08-22 | 南京大学 | 一种基于线性分段的softmax硬件实现方法 |
CN113407793A (zh) * | 2021-07-13 | 2021-09-17 | 南京宁麒智能计算芯片研究院有限公司 | 一种softmax函数的硬件实现方法、模块、芯片和系统 |
CN114610267A (zh) * | 2022-03-22 | 2022-06-10 | 奥比中光科技集团股份有限公司 | 一种基于指数函数和softmax函数的优化方法、硬件系统及芯片 |
CN114528989B (zh) * | 2022-04-24 | 2022-09-09 | 深圳比特微电子科技有限公司 | 注意力机制电路 |
CN114648101B (zh) * | 2022-05-13 | 2022-08-12 | 杭州研极微电子有限公司 | 基于transformer结构的softmax函数量化实现方法和装置 |
CN114626489A (zh) * | 2022-05-17 | 2022-06-14 | 深圳比特微电子科技有限公司 | 一种softmax函数定点化实现方法和装置 |
CN115062768A (zh) * | 2022-07-05 | 2022-09-16 | 东南大学 | 一种逻辑资源受限平台的Softmax硬件实现方法及系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101527010A (zh) * | 2008-03-06 | 2009-09-09 | 上海理工大学 | 人工神经网络算法的硬件实现方法及其系统 |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
CN106355246A (zh) * | 2015-10-08 | 2017-01-25 | 上海兆芯集成电路有限公司 | 三配置神经网络单元 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20160180214A1 (en) * | 2014-12-19 | 2016-06-23 | Google Inc. | Sharp discrepancy learning |
-
2018
- 2018-01-05 CN CN201810016954.XA patent/CN108021537B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101527010A (zh) * | 2008-03-06 | 2009-09-09 | 上海理工大学 | 人工神经网络算法的硬件实现方法及其系统 |
CN106355246A (zh) * | 2015-10-08 | 2017-01-25 | 上海兆芯集成电路有限公司 | 三配置神经网络单元 |
CN105512723A (zh) * | 2016-01-20 | 2016-04-20 | 南京艾溪信息科技有限公司 | 一种用于稀疏连接的人工神经网络计算装置和方法 |
Non-Patent Citations (3)
Title |
---|
A High-Speed and Low-Complexity Architecture for Softmax Function in Deep Learning;Meiqi Wang;《2018 IEEE Asia Pacific Conference on Circuits and Systems》;20181030;第223-226页 * |
Efficient hardware architecture of softmax layer in deep neural network;Bo Yuan;《2016 29th IEEE International System-on-Chip Conference (SOCC)》;20160909;第323-326页 * |
基于FPGA的卷积神经网络Softmax层实现;李理 等;《现代计算机(专业版)》;20170915(第26期);第21-24页 * |
Also Published As
Publication number | Publication date |
---|---|
CN108021537A (zh) | 2018-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108021537B (zh) | 一种基于硬件平台的softmax函数计算方法 | |
JP2599545B2 (ja) | 対数を計算するコンピュータ・システム及びコンピュータシステムを動作させる方法 | |
CN107305484B (zh) | 一种非线性函数运算装置及方法 | |
CN109308520B (zh) | 实现softmax函数计算的FPGA电路及方法 | |
CN110852434B (zh) | 基于低精度浮点数的cnn量化方法、前向计算方法及硬件装置 | |
CN112651496A (zh) | 一种处理激活函数的硬件电路及芯片 | |
CN109165006B (zh) | Softmax函数的设计优化及硬件实现方法及系统 | |
CN112651497A (zh) | 一种基于硬件芯片的激活函数处理方法、装置及集成电路 | |
WO2018196750A1 (zh) | 处理乘加运算的装置和处理乘加运算的方法 | |
US20060106905A1 (en) | Method for reducing memory size in logarithmic number system arithmetic units | |
CN114860193A (zh) | 一种用于计算Power函数的硬件运算电路及数据处理方法 | |
JP3551113B2 (ja) | 除算器 | |
Patankar et al. | Division algorithms-from past to present chance to improve area time and complexity for digital applications | |
CN112200299A (zh) | 神经网络计算装置、数据处理方法及装置 | |
US6898615B2 (en) | Signal processing unit and signal processing method including using an exponent part and a mantissa part for power generation | |
JP3660075B2 (ja) | 除算装置 | |
WO2021039164A1 (ja) | 情報処理装置、情報処理システム及び情報処理方法 | |
CN113504892A (zh) | 一种设计乘法器查找表的方法、系统、设备及介质 | |
US5715187A (en) | Method and apparatus for integer multiplication | |
JP2645422B2 (ja) | 浮動小数点演算処理装置 | |
KR20010067226A (ko) | 인터폴레이션 방법 및 장치 | |
WO2023004799A1 (zh) | 电子设备及神经网络量化方法 | |
Nguyen | An efficient hardware logarithm generator with modified quasi-symmetrical approach for digital signal processing | |
KR20220102824A (ko) | 룩업 테이블을 이용하여 비선형 함수를 연산하는 반도체 장치 | |
CN118302744A (zh) | 用于机器学习的浮点对数系统缩放系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |