一种搜索最小值提升查找表量化精度的方法与流程
本发明属于深度神经网络处理,特别涉及一种搜索最小值提升查找表量化精度的方法。
背景技术:
1、现有技术中,查找表(lookup table,lut)是一种用于提高查询效率的数据结构和技术方法。它通常用于通过预先计算和存储结果,避免在运行时进行重复的计算,从而显著加速程序的执行过程。查找表技术广泛应用于计算机科学中的多个领域,如数字信号处理(dsp)、图形处理、数据库优化、密码学等,在机器学习,尤其是深度学习的应用中,模型量化和查找表的结合是提高模型推理速度和减少计算资源消耗的有效手段。针对复杂激活的查找表(lookup table,lut),模型量化主要是通过减少模型中的精度(例如降低浮点数的位宽),使得硬件能够更高效地执行推理任务,特别是在资源受限的设备上。
2、查找表的作用在于,用于将复杂的计算问题转换为快速的索引查找过程。通过预先计算并存储函数或激活值的结果,查找表可以显著加速推理过程。在模型量化中,查找表常用于处理激活函数或其他非线性函数的计算(如relu、sigmoid、tanh等),这些函数通常涉及浮点数计算,但可以通过查找表来优化。
3、在深度神经网络中,激活函数通常是计算瓶颈之一,尤其是复杂的激活函数(如relu、sigmoid、tanh等)。在量化过程中,激活函数的值域通常会被压缩到较小的整数范围。为了进一步提高推理效率,常常利用查找表来代替这些激活函数的计算。
4、通过量化,激活函数的输入范围可以映射到较小的整数范围(例如8位或更小),查找表将这些输入值映射到相应的激活值。这样,激活函数的计算就变成了一个简单的数组查找,而不是复杂的数学运算。
5、例如,对于一个量化的sigmoid函数,输入值可以是一个整数索引,查找表则包含sigmoid函数的对应值,避免了每次计算sigmoid的复杂度。
6、然而,现有技术存在的缺陷在于:
7、1.量化过程中可能会出现精度损失,尤其是在复杂激活函数和非线性变换的情况下。查找表的精度需要仔细权衡,会影响模型的整体性能。通常会导致模型精度下降。
8、2.为了覆盖整个输入范围,查找表的大小可能会变得非常大,尤其是在处理多个复杂激活函数时。管理和优化查找表的存储是一个重要问题。
9、综上所述,目前在有限的次存储表项的情况下,查找表的精度不够的问题会导致结果不准确,低精度的查找表可能导致计算结果不精确,尤其在需要高精度计算的场合,误差可能积累并显著影响最终结果。同时为了弥补查找表精度不足,可能需要引入额外的计算步骤来进行误差修正或补偿,增加了负担,降低了效率。
10、此外,本领域技术术语包括:
11、查找表(lookup table,lut)是一种用于提高查询效率的数据结构和技术方法。
12、量化(quantization)是指将神经网络中的参数和激活值由浮点数转换为定点数或较低位宽的整数。这一技术可以显著减少模型的存储空间和计算量,从而使得神经网络在嵌入式设备和移动设备上的部署变得更加高效。
技术实现思路
1、为了解决上述问题,本技术的目的在于:
2、提供一种可以提升查找表量化精度的方法,可以提升基于t41/a1模型的量化精度和运行效率。
3、具体地,本发明提供一种搜索最小值提升查找表量化精度的方法,所述方法包括以下步骤:
4、s1:构建查找表表项
5、基于输入x的原始范围[min,max],生成查找表;
6、将输入范围等分,计算各分点的函数值并存储;
7、s2:计算查找表量化误差
8、对所述查找表进行量化误差评估;
9、量化误差通过比较原始值与查表值的差异计算得到;
10、s3:搜索最优最小值
11、动态调整输入范围的最小值,以缩小核心区域的切分粒度;
12、通过迭代计算不同最小值下的量化误差,选择误差最小的输入范围作为最优解,即通过迭代调整输入x的最小值,在[new_min,max]范围内搜索使量化误差最小的最优最小值new_min;
13、通过逐步调整最小值并评估量化误差,确定最优最小值new_min。
14、所述步骤s1中假设对sigmoid函数查表项构建:
15、将输入范围等距切分为若干份,计算各切分点对应的函数值并量化,生成两个表:
16、tabel_y0:存储量化后的函数值;
17、tabel_dy:存储相邻函数值的差值;
18、通过线性插值公式y=y0+dxdy计算最终结果,其中dx为输入值与切分点的相对距离比例。
19、所述步骤s1进一步包括:
20、以实验数据当模型输入激活的范围为[-30,6],最小值-30,最大值6;即,输入范围为[-30,6],等距切分为32份;函数值为sigmoid函数的输出,量化为8位定点数;
21、(1)对-30,6的输入范围进行等距切分成32份,记作x[x0,x1,x2,x3......x31];
22、(2)对所有x值求对应的sigmoid结果,记作y[y0,y1,y2,y3......y31];(3)将所有y值量化为8bit数,记作y_int[qy0,qy1,qy2,qy3......qy31];(4)将所有y_int值保存为tabel_y0表,将所有定点化后一项减去前一项,即[qy1-qy0,qy2-qy1,....qy31-qy30]记作tabel_dy。
23、所述步骤s2中,在输入范围内均匀采样多个点位,计算原始量化结果与查表量化结果的绝对误差平均值;通过误差评估查找表精度;假设采样点数量为2000个;误差计算包括对原始量化结果与查表结果的差值取绝对值并求平均;进一步包括:
24、(1).对-30,6的输入范围进行平均采样2000个点位,并通过激活函数得到其结果,之间对其原始结果进行量化处理;
25、(2).对-30,6的输入进行构建表项,并计算得到查表量化结果;
26、(3).将原始量化结果与查表量化结果做差,得到差值的绝对值,求平均偏差。
27、所述步骤s3中,迭代优化包括:
28、初始最小值为-30,每次迭代增加固定步长,直至变为正值;
29、核心区域为sigmoid函数变化显著的区间[-10,10];
30、最优最小值为使平均量化误差最小的输入范围下限。
31、所述迭代优化过程,用于寻找使查找表lut与目标激活函数之间偏差最小的输入范围下限x_min_v,进一步包括:
32、1).初始化阶段
33、初始偏差值:
34、avg_deviation_value_初始化为2^31即一个极大值,用于后续比较并存储最小偏差;
35、输入采样:
36、生成线性空间数组x_input,范围从当前min_value到max_value,共sample_num个点,不包含max_value,用于评估偏差;
37、终止条件:
38、stop_min_value=0.0,当x_min_v超过此值时循环结束;
39、初始搜索值:
40、x_min_v从min_value开始逐步调整;
41、2).迭代优化过程
42、循环条件:
43、只要x_min_v 44、关键操作: 45、生成lut: 46、调用gernerate_lut函数,根据当前x_min_v、max_value、量化参数生成查找表; 47、参数包括量化位宽quantize_bitwidth、激活函数名activate_name,可用于非线性量化或特定函数近似; 48、计算偏差: 49、调用compute_deviation计算当前lut与x_input的偏差值lut_pos_deviation_val; 50、可使用均方误差mse或最大误差作为指标; 51、更新最优值: 52、如果当前偏差≤avg_deviation_value_,则更新avg_deviation_value_和new_input_min最优下限; 53、迭代步长: 54、x_min_v每次增加固定步长,假设固定步长为1.0,直到退出循环; 55、3).输出结果 56、最优解: 57、循环结束后,new_input_min为使得lut偏差最小的输入范围下限,avg_deviation_value_为最小偏差值。 58、所述方法还包括步骤s0: 59、输入原始数据x,其原始范围为[min,max]; 60、输入目标范围[new_min,max],其中new_min为待优化的最小值。 61、所述方法还包括步骤s4: 62、基于最优最小值new_min,重新构建查找表的表项。 63、所述方法适用于激活函数的量化查表优化,包括但不限于sigmoid函数。 64、所述方法适用于图像处理、信号处理或数据压缩领域。 65、由此,本方案的优势在于: 66、提供了一种对构建查找表表项的方法,通过对最小值的重新设置,让构建的查表项在网络中的损失降低。且不增加额外的计算步骤和扩大表项来增加精度。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com