神经网络量化方法和装置、神经网络加速器、设备和介质与流程
- 国知局
- 2024-09-14 14:24:32
本公开涉及神经网络技术、量化技术和存算一体技术,尤其是一种神经网络量化方法和装置、神经网络加速器、设备和介质。
背景技术:
1、当前,由于冯诺依曼架构的限制,在边缘设备计算芯片中,存储单元和处理单元分离带来的数据搬运的代价已经不可忽视。因此,存算一体结构逐渐受到越来越多的关注。存算一体结构的设计能够解决冯诺依曼结构存在的问题,在做到大算力的同时,保持较低的功耗。
2、在存算一体结构中,存算单元阵列是存算一体神经网络加速器的基本结构,每个存算单元阵列可以执行固定大小的矩阵乘法计算y=xw。神经网络中每个网络层的计算几乎都可以转换到矩阵乘法计算的操作,因此,神经网络可以被映射到存算单元阵列中执行。在模拟电路的存算一体神经网络加速器中,数字-模拟转换(dac)单元将矩阵乘法的输入x转换为模拟域的电流输入到存算单元阵列中,将神经网络中的权重w编码为存算单元阵列中的电导值,存算单元阵列输出的电压值经模拟-数字转换(adc)单元从模拟域转换为数字域的数字信号输出。
3、在将神经网络部署到存算一体加速器的落地部署中,需要对adc单元的输出进行量化,将adc单元连续的输出电压值转换为一定范围内的离散的数字信号,该离散的数字信号通常为几个比特的整型数值,其电压分辨率(即可分辨的电压范围)等于其总的电压测量范围(即adc单元的量程)除以离散的电压值之间的间隔数,电压分辨率越高(即可分辨的电压范围越小),adc单元的性能越高,同时设计的代价和复杂度也越高。
4、目前,对神经网络进行量化的方法主要有两种:量化感知训练(qat)和后训练量化(ptq)。其中,qat通常需要较多的带标签训练集数据,神经网络量化后的测试精度较高。而ptq仅需要少量无标签数据集数据即可,但是神经网络量化后的测试精度偏低。针对浮点型神经网络,现有对神经网络进行量化的方法没有考虑硬件,直接为神经网络中的每一网络层计算出一套量化参数,将初始的浮点型网络权重和浮点型激活值转换为整型数值。由于直接对神经网络进行量化,得到的量化参数分布范围较广,并且神经网络中的不同网络层的量化参数都不同,导致在对量化参数进行从模拟域到数字域转换时,对adc单元的电压分辨率需求较高,从而导致硬件成本较高。
技术实现思路
1、本公开实施例提供一种神经网络量化方法和装置、神经网络加速器、设备和介质,以降低对adc单元的电压分辨率要求,降低硬件成本。
2、本公开实施例的一个方面,提供一种神经网络量化方法,包括:
3、利用校准数据集对初始神经网络进行量化参数的初始化,得到第一神经网络;
4、利用训练数据集对所述第一神经网络进行训练,直至满足第一预设条件,得到第二神经网络;
5、以量化参数候选列表作为量化参数约束条件,利用所述训练数据集对所述第二神经网络进行训练,直至满足第二预设条件,得到量化后神经网络;其中,所述量化参数候选列表包括多个整型数值,所述量化参数候选列表基于待部署所述量化后神经网络的硬件平台的硬件开销参数和所述第一神经网络的量化参数确定。
6、可选地,在本公开上述任一方法实施例中,利用校准数据集对初始神经网络进行量化参数的初始化,得到第一神经网络之后,还包括:
7、基于所述硬件平台的硬件开销参数和所述第一神经网络的量化参数取值分布,得到所述量化参数候选列表。
8、可选地,在本公开上述任一方法实施例中,基于所述硬件平台的硬件开销参数和所述第一神经网络的量化参数取值分布,得到所述量化参数候选列表,包括:
9、基于所述硬件平台中的模拟-数字转换单元的硬件开销参数,确定所述模拟-数字转换单元的电压分辨率,所述模拟-数字转换单元的硬件开销参数包括功耗、面积;基于所述模拟-数字转换单元的电压分辨率和电压测量范围,确定对应的量化参数取值分布,得到第一量化参数列表,所述第一量化参数列表包括m个整型数值,m为大于1的整数;
10、基于所述第一神经网络的量化参数的初始值,得到第二量化参数列表,所述第二量化参数列表包括n个整型数值,n为大于1的整数;
11、基于所述第一量化参数列表和所述第二量化参数列表,得到所述量化参数候选列表。
12、可选地,在本公开上述任一方法实施例中,基于所述第一神经网络的量化参数的取值,得到第二量化参数列表,包括:
13、基于所述第一神经网络的量化参数的初始值,获取所述第一神经网络的量化参数的约束值;
14、统计所述第一神经网络的量化参数的约束值分布;
15、对所述第一神经网络的量化参数的约束值分布进行聚类,得到所述n个整型数值。
16、可选地,在本公开上述任一方法实施例中,以量化参数候选列表作为量化参数约束条件,利用所述训练数据集对所述第二神经网络进行训练,直至满足第二预设条件,包括:
17、以量化参数候选列表作为量化参数约束条件,依次对所述第二神经网络中预设网络层中的各网络层的量化参数的初始值进行约束,并利用所述训练数据集对约束后的第二神经网络进行训练,直至满足第二预设条件。
18、可选地,在本公开上述任一方法实施例中,以量化参数候选列表作为量化参数约束条件,依次对所述第二神经网络中预设网络层中的各网络层的量化参数的初始值进行约束,并利用所述训练数据集对约束后的第二神经网络进行训练,直至满足第二预设条件,包括:
19、获取初始设定的损失阈值;
20、依次以所述预设网络层中的各网络层作为当前网络层,执行以下量化约束操作:获取当前网络层的量化参数的约束值作为初始约束值;依次以所述量化参数候选列表中的一个整型数值作为候选约束值,将所述量化参数的初始约束值替换为所述候选约束值,根据所述候选约束值更新所述当前网络层的量化参数,并计算所述当前网络层的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值;获取所述量化参数候选列表中多个整型数值对应的所述损失值中的最小损失值;响应于所述最小损失值小于所述损失阈值,以所述最小损失值对应的候选约束值作为目标约束值,对所述当前网络层的量化参数加入所述目标约束值,将所述当前网络层的量化参数更新为所述最小损失值对应的量化参数取值;
21、利用所述训练数据集对约束后的第二神经网络进行训练,直至满足第二预设条件,得到第三神经网络。
22、可选地,在本公开上述任一方法实施例中,根据所述候选约束值更新所述当前网络层的量化参数,并计算所述当前网络层的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值,包括:
23、根据所述候选约束值更新所述当前网络层中网络参数的量化参数,计算所述网络参数的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值;或者,
24、根据所述候选约束值更新所述当前网络层的激活输出的量化参数,计算所述激活输出的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值;或者,
25、根据所述候选约束值分别更新所述当前网络层中网络参数的量化参数和所述当前网络层的激活输出的量化参数,计算所述网络参数的量化参数和所述激活输出的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值。
26、可选地,在本公开上述任一方法实施例中,得到第三神经网络之后,还包括:
27、依次以所述第三神经网络中所述预设网络层中的各网络层作为当前网络层,执行所述量化约束操作。
28、可选地,在本公开上述任一方法实施例中,依次以所述预设网络层中的各网络层作为当前网络层,执行以下量化约束操作之后,还包括:
29、确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值;
30、响应于存在未加入对应的目标约束值的网络层,按照预设规则更新所述损失阈值,使更新后的损失阈值增大;
31、依次以所述未加入对应的目标约束值的网络层中的各网络层作为当前网络层,执行所述量化约束操作;
32、迭代执行所述确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值的操作;
33、响应于对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值,执行所述利用所述训练数据集对约束后的第二神经网络进行训练,直至满足第二预设条件的操作。
34、可选地,在本公开上述任一方法实施例中,利用所述训练数据集对约束后的第二神经网络进行训练,直至满足第二预设条件,得到第三神经网络之后,还包括:
35、确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值;
36、响应于存在未加入对应的目标约束值的网络层,按照预设规则更新所述损失阈值,使更新后的损失阈值增大;
37、依次以所述未加入对应的目标约束值的网络层中的各网络层作为当前网络层,执行所述量化约束操作;
38、迭代执行所述确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值的操作;
39、响应于对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值,依次以所述第三神经网络中所述预设网络层中的各网络层作为当前网络层,执行所述量化约束操作。
40、可选地,在本公开上述任一方法实施例中,依次以所述第三神经网络中所述预设网络层中的各网络层作为当前网络层,执行所述量化约束操作之后,还包括:
41、确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值;
42、响应于存在未加入对应的目标约束值的网络层,按照预设规则更新所述损失阈值,使更新后的损失阈值增大;
43、依次以所述未加入对应的目标约束值的网络层中的各网络层作为当前网络层,执行所述量化约束操作;
44、迭代执行所述确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值的操作;
45、响应于对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值,得到量化后神经网络。
46、本公开实施例的另一个方面,提供一种神经网络量化装置,包括:
47、初始化模块,用于利用校准数据集对初始神经网络进行量化参数的初始化,得到第一神经网络;
48、第一训练模块,用于利用训练数据集对所述第一神经网络进行训练,直至满足第一预设条件,得到第二神经网络;
49、第二训练模块,用于以量化参数候选列表作为量化参数约束条件,利用所述训练数据集对所述第二神经网络进行训练,直至满足第二预设条件,得到量化后神经网络;其中,所述量化参数候选列表包括多个整型数值,所述量化参数候选列表基于待部署所述量化后神经网络的硬件平台硬件开销参数和所述第一神经网络的量化参数确定。
50、可选地,在本公开上述任一装置实施例中,还包括:
51、第一获取模块,用于基于所述硬件平台的硬件开销参数和所述第一神经网络的量化参数取值分布,得到所述量化参数候选列表。
52、可选地,在本公开上述任一装置实施例中,所述第一获取模块包括:
53、第一确定单元,用于基于所述硬件平台中的模拟-数字转换单元的硬件开销参数,确定所述模拟-数字转换单元的电压分辨率,所述模拟-数字转换单元的硬件开销参数包括功耗、面积;基于所述模拟-数字转换单元的电压分辨率和电压测量范围,确定对应的量化参数取值分布,得到第一量化参数列表,所述第一量化参数列表包括m个整型数值,m为大于1的整数;
54、第二确定单元,用于基于所述第一神经网络的量化参数取值分布,得到第二量化参数列表,所述第二量化参数列表包括n个整型数值,n为大于1的整数;
55、第三确定单元,用于基于所述第一量化参数列表和所述第二量化参数列表,得到所述量化参数候选列表。
56、可选地,在本公开上述任一装置实施例中,所述第二确定单元具体用于:
57、统计所述第一神经网络的量化参数的取值,得到所述第一神经网络的量化参数取值分布;
58、对所述第一神经网络的量化参数取值分布进行聚类,得到所述n个整型数值。
59、可选地,在本公开上述任一装置实施例中,所述第二训练模块具体用于:
60、以量化参数候选列表作为量化参数约束条件,依次对所述第二神经网络中预设网络层中的各网络层的量化参数的初始值进行约束,并利用所述训练数据集对约束后的第二神经网络进行训练,直至满足第二预设条件,得到量化后神经网络。
61、可选地,在本公开上述任一装置实施例中,所述第二训练模块包括:
62、第一获取单元,用于获取初始设定的损失阈值;
63、量化约束单元,用于依次以所述预设网络层中的各网络层作为当前网络层,执行以下量化约束操作:获取当前网络层的量化参数约束值作为初始约束值;依次以所述量化参数候选列表中的一个整型数值作为候选约束值,将所述量化参数的初始约束值替换为所述候选约束值,根据所述候选约束值更新所述当前网络层的量化参数,并计算所述当前网络层的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值;获取所述量化参数候选列表中多个整型数值对应的所述损失值中的最小损失值;响应于所述最小损失值小于所述损失阈值,以所述最小损失值对应的候选约束值作为目标约束值,对所述当前网络层的量化参数加入所述目标约束值,将所述当前网络层的量化参数更新为所述最小损失值对应的量化参数取值;
64、训练单元,用于利用所述训练数据集对约束后的第二神经网络进行训练,直至满足第二预设条件,得到第三神经网络。
65、可选地,在本公开上述任一装置实施例中,所述量化约束单元,根据所述候选约束值更新所述当前网络层的量化参数,并计算所述当前网络层的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值时,具体用于:
66、根据所述候选约束值更新所述当前网络层中网络参数的量化参数,计算所述网络参数的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值;或者,
67、根据所述候选约束值更新所述当前网络层的激活输出的量化参数,计算所述激活输出的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值;或者,
68、根据所述候选约束值分别更新所述当前网络层中网络参数的量化参数和所述当前网络层的激活输出的量化参数,计算所述网络参数的量化参数和所述激活输出的量化参数更新前、后所述当前网络层对同一输入数据进行处理得到的输出结果之间的损失值。
69、可选地,在本公开上述任一装置实施例中,所述量化约束单元,还用于依次以所述第三神经网络中所述预设网络层中的各网络层作为当前网络层,执行所述量化约束操作。
70、可选地,在本公开上述任一装置实施例中,所述第二训练模块还包括:
71、第一确定单元,用于在所述量化约束单元依次以所述预设网络层中的各网络层作为当前网络层,执行以下量化约束操作之后,确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值;
72、第一更新单元,用于根据所述第一确定单元的确定结果,响应于存在未加入对应的目标约束值的网络层,按照预设规则更新所述损失阈值,使更新后的损失阈值增大;
73、所述量化约束单元,还用于依次以所述未加入对应的目标约束值的网络层中的各网络层作为当前网络层,执行所述量化约束操作;
74、所述第一确定单元,用于迭代执行所述确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值的操作;
75、所述训练单元,具体用于根据所述第一确定单元的确定结果,响应于对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值,执行所述利用所述训练数据集对约束后的第二神经网络进行训练,直至满足第二预设条件的操作。
76、可选地,在本公开上述任一装置实施例中,所述第二训练模块还包括:
77、第二确定单元,用于在得到第三神经网络之后,确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值;
78、第一更新单元,用于根据所述第二确定单元的确定结果,响应于存在未加入对应的目标约束值的网络层,按照预设规则更新所述损失阈值,使更新后的损失阈值增大;
79、所述量化约束单元,还用于依次以所述未加入对应的目标约束值的网络层中的各网络层作为当前网络层,执行所述量化约束操作;
80、所述第二确定单元,还用于迭代执行所述确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值的操作;
81、所述量化约束单元,具体用于根据所述第一确定单元的确定结果,响应于对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值,依次以所述第三神经网络中所述预设网络层中的各网络层作为当前网络层,执行所述量化约束操作。
82、可选地,在本公开上述任一装置实施例中,所述第二训练模块还包括:
83、第三确定单元,用于在所述量化约束单元依次以所述第三神经网络中所述预设网络层中的各网络层作为当前网络层,执行所述量化约束操作之后,确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值;
84、第三更新单元,用于根据所述第三确定单元的确定结果,响应于存在未加入对应的目标约束值的网络层,按照预设规则更新所述损失阈值,使更新后的损失阈值增大;
85、所述量化约束单元,还用于依次以所述未加入对应的目标约束值的网络层中的各网络层作为当前网络层,执行所述量化约束操作;
86、所述第三确定单元,还用于迭代执行所述确定是否对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值的操作;以及响应于对所述预设网络层中所有网络层的量化参数均已加入对应的目标约束值,确定得到量化后神经网络。
87、本公开实施例的又一个方面,提供一种神经网络加速器,包括依次连接的数字-模拟转换单元、存算单元阵列和模拟-数字转换单元,所述存算单元阵列部署有量化后神经网络,所述量化后神经网络基于本公开上述任一实施例所述的方法或者装置得到。
88、本公开实施例的又一个方面,提供一种电子设备,包括:
89、存储器,用于存储计算机程序产品;
90、处理器,用于执行所述存储器中存储的计算机程序产品,且所述计算机程序产品被执行时,实现本公开上述任一实施例所述的方法。
91、本公开实施例的又一个方面,提供一种计算机可读存储介质,其上存储有计算机程序指令,该计算机程序指令被处理器执行时,实现本公开上述任一实施例所述的方法。
92、基于本公开上述实施例提供的神经网络量化方法和装置、神经网络加速器、设备和介质,利用校准数据集对初始神经网络进行量化参数的初始化后,基于待部署量化后神经网络的目标硬件平台的硬件开销参数和初始化得到的第一神经网络的量化参数确定量化参数候选列表,其中包括包括多个整型数值,并利用训练数据集对初始化得到的第一神经网络进行训练直至满足第一预设条件,得到第二神经网络,之后,以量化参数候选列表作为量化参数约束条件,利用训练数据集对第二神经网络进行训练直至满足第二预设条件,得到量化后神经网络,由于在对第二神经网络进行训练的过程中,引入第一神经网络的量化参数和目标硬件平台的硬件开销参数对第二神经网络的量化参数加入约束限制,将目标硬件平台的硬件开销代价引入到网络训练过程中,根据目标硬件平台的硬件开销代价调整神经网络的量化参数,能够获得适合部署在目标硬件平台的量化后神经网络,最终得到满足网络测试精度要求和目标硬件平台硬件开销限制的量化后神经网络,能够大幅度减少对adc单元的电压分辨率需求,降低硬件成本。
93、下面通过附图和实施例,对本公开的技术方案做进一步的详细描述。
本文地址:https://www.jishuxx.com/zhuanli/20240914/293910.html
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 YYfuon@163.com 举报,一经查实,本站将立刻删除。