CN114004327A - 一种适配于运行在fpga上的神经网络加速器的自适应量化方法 - Google Patents
一种适配于运行在fpga上的神经网络加速器的自适应量化方法 Download PDFInfo
- Publication number
- CN114004327A CN114004327A CN202110057445.3A CN202110057445A CN114004327A CN 114004327 A CN114004327 A CN 114004327A CN 202110057445 A CN202110057445 A CN 202110057445A CN 114004327 A CN114004327 A CN 114004327A
- Authority
- CN
- China
- Prior art keywords
- neural network
- data
- fpga
- network accelerator
- distribution
- 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.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Complex Calculations (AREA)
Abstract
本发明公开了一种适配于运行在FPGA上的神经网络加速器的自适应量化方法,属于神经网络领域。本发明根据神经网络加速器计算过程的实际位宽自动预判神经网络加速器计算时的溢出程度,并针对溢出的程度自适应的调整量化参数,避免神经网络算法在FPGA上计算过程中数据溢出问题的发生,从而保证神经网络模型结果的正确性。本发明的自适应量化方法,将量化操作与神经网络加速器硬件的资源规划相结合,保证了在神经网络加速器部署算法时结果的正确性,在不损失模型精度和执行效率的前提下,能够有效压缩模型规模,使之在资源受限的情况下易于部署实施,节省存储空间和计算资源,具有重要的研究意义和应用价值。
Description
技术领域
本发明属于神经网络领域,尤其是一种适配于运行在FPGA上的神经网络加速器的自适应量化方法。
背景技术
神经网络加速器为实现高速低功耗运算,一般支持低数值精度,如8位或6 位定点数的运算,而神经网络模型原始的数值精度一般为32位浮点数。因此,在神经网络加速器部署神经网络算法时,需要通过量化操作将神经网络模型自动化压缩为8位或6位整型网络。
国外巨头公司英伟达基于其完备的GPU+CUDA生态主导神经网络加速器市场,将浮点型数据映射为整型数据,但其产品售价高昂,不具备自主可控性,GPU 计算效能及功耗不如FPGA及ASIC芯片。国内神经网络加速器主流方案为具有可扩展性的CPU+FPGA的国产化方案,神经网络模型运行在FPGA上完成计算,与CPU相对独立,CPU主要功能为初始化模型以及读取模型结果。针对该架构,为了提高计算的有效性,FPGA需要自主完成整个神经网络模型每一层数据量化后的计算过程。现有的量化方法是由量化软件预先分析神经网络模型各层输入、权重以及输出数据的分布和范围,计算出量化参数,生成神经网络加速器将浮点型数据映射成整型数据的指导文件,该过程并未考虑在FPGA上部署时整数型数据运算过程中可能产生的溢出问题,无法确保计算结果的正确性,尤其是对精度要求较高的神经网络模型算法,将导致结果的巨大偏差。
发明内容
本发明的目的在于克服现有的量化方法并未考虑在FPGA上部署时整数型数据运算过程中可能产生的溢出问题,无法确保计算结果的正确性的缺点,提供一种适配于运行在FPGA上的神经网络加速器的自适应量化方法。
为达到上述目的,本发明采用以下技术方案予以实现:
一种适配于运行在FPGA上的神经网络加速器的自适应量化方法,根据卷积层的输入和权重值、FPGA计算过程中的数据位宽,预判中间计算过程数据的范围和分布;
基于FPGA计算过程中的实际计算位宽和所述中间计算过程数据的范围和分布,计算溢出程度;
基于溢出程度,采用KL-divergence的方法,自适应地调整量化参数,直至调整量化参数后数据的分布与原始数据分布的差异在预设范围内。
进一步的,根据KL-divergence方法调整量化参数,采用相对熵的方式衡量调整量化参数后数据分布与原始数据分布的差异程度,寻找最优阈值作为量化参数。
进一步的,设置用于构造新样本的循环计数i,不断构造参考样本P和新样本Q,计算两者的相对熵,得到最小的相对熵,此时,对应的阈值即为最优阈值。
进一步的,具体步骤为:
(1)不断地截断参考样本P,将截断区外的值全部求和;
(2)将截断区外的值加到截断样本的最后一个值之上;
(3)求得参考样本P的概率分布;
(4)创建新样本Q,其元素的值为截断样本P;
(5)将新样本Q的长度拓展到i,使得样本Q和参考样本P具有相同长度;
(6)求得新样本Q的概率分布;
(7)求参考样本P、新样本Q的KL散度值。
进一步的,当卷积层的输入和权重值均为8位整型数,若FPGA计算过程中的数据位宽为20位,则其能够表示的数据范围为-524288~524287,超出此范围的数据将被截断;
基于FPGA计算过程中的实际计算位宽,预判中间计算过程数据的范围和分布,针对溢出的程度,采用KL-divergence的方法,自适应地调整量化参数,直至调整量化参数后数据的分布与原始真实的数据分布最为相近。
与现有技术相比,本发明具有以下有益效果:
本发明的适配于运行在FPGA上的神经网络加速器的自适应量化方法,根据神经网络加速器计算过程的实际位宽自动预判神经网络加速器计算时的溢出程度,并针对溢出的程度自适应的调整量化参数,避免神经网络算法在FPGA上计算过程中数据溢出问题的发生,从而保证神经网络模型结果的正确性。本发明的自适应量化方法,将量化操作与神经网络加速器硬件的资源规划相结合,保证了在神经网络加速器部署算法时结果的正确性,在不损失模型精度和执行效率的前提下,能够有效压缩模型规模,使之在资源受限的情况下易于部署实施,节省存储空间和计算资源,具有重要的研究意义和应用价值。
附图说明
图1为本发明的FPGA计算神经网络卷积层的过程示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
现有量化方法并未考虑在神经网络加速器部署时整数型数据运算过程中可能产生的溢出问题,本发明提出了一种适配于运行在FPGA上的神经网络加速器的自适应量化方法,可根据神经网络加速器计算过程的实际位宽自动预判神经网络加速器计算时的溢出状况,并针对溢出的程度自适应的调整量化参数,避免神经网络算法在FPGA上计算过程中数据溢出问题的发生,从而保证神经网络模型结果的正确性。本发明的自适应量化方法,将量化操作与神经网络加速器硬件的资源规划相结合,保证了在神经网络加速器部署算法时结果的正确性,在不损失模型精度和执行效率的前提下,能够有效压缩模型规模,使之在资源受限的情况下易于部署实施,节省存储空间和计算资源,具有重要的研究意义和应用价值。
下面结合附图对本发明做进一步详细描述:
参见图1,图1为FPGA计算神经网络卷积层的过程示意图,卷积层的输入和权重值均为8位整型数,若FPGA计算过程中的数据位宽为20位,则其能够表示的数据范围为-524288~524287,超出此范围的数据将被截断。考虑FPGA计算过程中的实际计算位宽限制,预判中间计算过程数据的范围和分布,针对溢出的程度,采用KL-divergence的方法,自适应地调整量化参数,使调整量化参数后数据的分布与原始真实的数据分布最为相近。
实施例
以只有一个Convolution层的神经网络模型为例,对本发明做进一步详细说明。
(1)不采用该发明,即不考虑在FPGA上部署时整数型数据运算过程中可能产生的溢出问题,则计算过程和结果推导如下:
该神经网络模型中的Convolution层参数pad=0,stride=1,输入尺寸为1×3 ×3,其值为滤波器尺寸为2×2,其值为bias为1.213093。将该神经网络模型部署在神经网络加速器的过程如下:
(a)由量化软件预先计算出量化系数
以量化位宽为8进行举例。由量化软件得到量化参数thin=11.32375,thw=8.134685,thiout=153.37865。输入、权重、输出的量化系数分别为:
(b)将输入和权重预先量化为整数
(c)预先计算在FPGA上部署时需要的乘、加、移位参数
移位参数n、乘参数、加参数分别为:
(d)FPGA计算过程
FPGA计算卷积层的输入数据和输出数据位宽为8位。中间计算过程的位宽假设为20位,能够表示的数据范围为-524288~524287,超出此范围的数据将被截断。
量化后神经网络加速器整型输入数据为权重为二者乘累加结果为乘以乘参数76,得到超出了 20位位宽能够表示的数据范围-524288~524287,被截断为加上加参数16039再截断得到以二进制方式右移14位得到
(e)神经网络加速器推理计算结果正确性验证
量化后神经网络加速器计算Convolution层的输出结果为由 out_float=out_Integer·scaling可得对应的真实值为以浮点型数据格式计算Convolution层的真实结果为计算结果导致了极大的误差。
(2)采用该发明,即考虑在FPGA上部署时整数型数据运算过程中可能产生的溢出问题,自适应的调整量化参数。计算过程和结果推导如下:
该神经网络模型中的Convolution层参数pad=0,stride=1,输入尺寸为 1×3×3,其值为滤波器尺寸为2×2,其值为bias为1.213093。将该神经网络模型部署在神经网络加速器的过程如下:
(a)由量化软件预先计算出量化系数
以量化位宽为8进行举例。由量化软件得到量化参数thin=11.32375,thw=8.134685,thiout=153.37865。根据神经网络加速器计算过程的实际位宽自动预判出神经网络加速器计算时的溢出状况,针对溢出的程度,根据数据分布采用 KL-divergence的方法,自适应地调整量化参数为thin=22.6475,thw=16.26937,thiout=153.37865,输入、权重、输出的量化系数分别为:
(b)将输入和权重预先量化为整数
(c)预先计算在FPGA上部署时需要的乘、加、移位参数
移位参数n、乘参数、加参数分别为:
(d)FPGA计算过程
FPGA计算卷积层的输入数据和输出数据位宽为8位。中间计算过程的位宽假设为20位,能够表示的数据范围为-524288~524287,超出此范围的数据将被截断。
(e)神经网络加速器推理计算结果正确性验证
量化后神经网络加速器计算Convolution层的输出结果为由 out_float=out_Integer·scaling可得对应的真实值为以浮点型数据格式计算Convolution层的真实结果为二者对比可得量化造成的数据误差为平均误差为0.83%。证明该发明可以有效地避免在FPGA计算神经网络模型时产生的溢出问题,确保计算结果的正确性。
以上内容仅为说明本发明的技术思想,不能以此限定本发明的保护范围,凡是按照本发明提出的技术思想,在技术方案基础上所做的任何改动,均落入本发明权利要求书的保护范围之内。
Claims (5)
1.一种适配于运行在FPGA上的神经网络加速器的自适应量化方法,其特征在于,根据卷积层的输入和权重值、FPGA计算过程中的数据位宽,预判中间计算过程数据的范围和分布;
基于FPGA计算过程中的实际计算位宽和所述中间计算过程数据的范围和分布,计算溢出程度;
基于溢出程度,采用KL-divergence的方法,自适应地调整量化参数,直至调整量化参数后数据的分布与原始数据分布的差异在预设范围内。
2.根据权利要求1所述的适配于运行在FPGA上的神经网络加速器的自适应量化方法,其特征在于,根据KL-divergence方法调整量化参数,采用相对熵的方式衡量调整量化参数后数据分布与原始数据分布的差异程度,寻找最优阈值作为量化参数。
3.根据权利要求2所述的适配于运行在FPGA上的神经网络加速器的自适应量化方法,其特征在于,设置用于构造新样本的循环计数i,不断构造参考样本P和新样本Q,计算两者的相对熵,得到最小的相对熵,此时,对应的阈值即为最优阈值。
4.根据权利要求3所述的适配于运行在FPGA上的神经网络加速器的自适应量化方法,其特征在于,具体步骤为:
(1)不断地截断参考样本P,将截断区外的值全部求和;
(2)将截断区外的值加到截断样本的最后一个值之上;
(3)求得参考样本P的概率分布;
(4)创建新样本Q,其元素的值为截断样本P;
(5)将新样本Q的长度拓展到i,使得样本Q和参考样本P具有相同长度;
(6)求得新样本Q的概率分布;
(7)求参考样本P、新样本Q的KL散度值。
5.根据权利要求1所述的适配于运行在FPGA上的神经网络加速器的自适应量化方法,其特征在于,当卷积层的输入和权重值均为8位整型数,若FPGA计算过程中的数据位宽为20位,则其能够表示的数据范围为-524288~524287,超出此范围的数据将被截断;
基于FPGA计算过程中的实际计算位宽,预判中间计算过程数据的范围和分布,针对溢出的程度,采用KL-divergence的方法,自适应地调整量化参数,直至调整量化参数后数据的分布与原始真实的数据分布最为相近。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110057445.3A CN114004327A (zh) | 2021-01-15 | 2021-01-15 | 一种适配于运行在fpga上的神经网络加速器的自适应量化方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110057445.3A CN114004327A (zh) | 2021-01-15 | 2021-01-15 | 一种适配于运行在fpga上的神经网络加速器的自适应量化方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114004327A true CN114004327A (zh) | 2022-02-01 |
Family
ID=79920867
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110057445.3A Pending CN114004327A (zh) | 2021-01-15 | 2021-01-15 | 一种适配于运行在fpga上的神经网络加速器的自适应量化方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114004327A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114169513A (zh) * | 2022-02-11 | 2022-03-11 | 深圳比特微电子科技有限公司 | 神经网络的量化方法、装置、存储介质及电子设备 |
CN114548392A (zh) * | 2022-03-29 | 2022-05-27 | 北京地平线机器人技术研发有限公司 | 神经网络模型的编译方法、装置、电子设备和存储介质 |
-
2021
- 2021-01-15 CN CN202110057445.3A patent/CN114004327A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114169513A (zh) * | 2022-02-11 | 2022-03-11 | 深圳比特微电子科技有限公司 | 神经网络的量化方法、装置、存储介质及电子设备 |
CN114548392A (zh) * | 2022-03-29 | 2022-05-27 | 北京地平线机器人技术研发有限公司 | 神经网络模型的编译方法、装置、电子设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110378468B (zh) | 一种基于结构化剪枝和低比特量化的神经网络加速器 | |
CN114004327A (zh) | 一种适配于运行在fpga上的神经网络加速器的自适应量化方法 | |
CN109472353A (zh) | 一种卷积神经网络量化电路及量化方法 | |
CN102270309A (zh) | 一种基于集成学习的短期电力负荷预测方法 | |
CN109002358A (zh) | 基于深度强化学习的移动终端软件自适应优化调度方法 | |
Jayawardena et al. | A comparative study of fuzzy logic systems approach for river discharge prediction | |
CN103455716B (zh) | 一种基于超短期风电功率预测的电力系统电压稳定裕度计算方法 | |
CN107358294A (zh) | 一种基于Elman神经网络的需水预测方法 | |
Nguyen et al. | Forecasting time series water levels on Mekong river using machine learning models | |
CN112288193A (zh) | 基于注意力机制的gru深度学习的海洋站表层盐度预测方法 | |
CN113610227B (zh) | 一种用于图像分类的深度卷积神经网络剪枝方法 | |
CN106251242A (zh) | 一种风电出力区间组合预测方法 | |
US20200380371A1 (en) | Flexible, lightweight quantized deep neural networks | |
CN111915079B (zh) | 一种混合knn风电功率预测方法及系统 | |
CN112016839B (zh) | 一种基于qr-bc-elm的洪涝灾害预测预警方法 | |
CN117521763A (zh) | 一种融合组正则化剪枝和重要性剪枝的人工智能模型压缩方法 | |
CN111626404A (zh) | 基于生成对抗神经网络的深度网络模型压缩训练方法 | |
Qian et al. | Learning to optimize resource assignment for task offloading in mobile edge computing | |
CN106503386A (zh) | 评估光功率预测算法性能优劣的方法及装置 | |
CN113918882A (zh) | 可硬件实现的动态稀疏注意力机制的数据处理加速方法 | |
CN104239689B (zh) | 基于优化相关向量机的短期风速预测方法 | |
CN112686384A (zh) | 一种自适应比特位宽的神经网络量化方法及其装置 | |
CN115392467B (zh) | 面向海量数据实时处理的云边协同自适应深度推理方法 | |
Nguyen | An L1-regression random forests method for forecasting of Hoa Binh reservoir's incoming flow | |
CN115511052A (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 |