CN117973480A - 校准神经网络量化的方法、装置、设备、介质和程序产品 - Google Patents
校准神经网络量化的方法、装置、设备、介质和程序产品 Download PDFInfo
- Publication number
- CN117973480A CN117973480A CN202211275427.3A CN202211275427A CN117973480A CN 117973480 A CN117973480 A CN 117973480A CN 202211275427 A CN202211275427 A CN 202211275427A CN 117973480 A CN117973480 A CN 117973480A
- Authority
- CN
- China
- Prior art keywords
- precision
- layer
- input
- layers
- output data
- 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
- 238000013139 quantization Methods 0.000 title claims abstract description 216
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 99
- 238000000034 method Methods 0.000 title claims abstract description 74
- 238000006243 chemical reaction Methods 0.000 claims abstract description 113
- 238000004364 calculation method Methods 0.000 claims abstract description 41
- 230000007704 transition Effects 0.000 claims abstract description 20
- 238000012937 correction Methods 0.000 claims description 158
- 230000035945 sensitivity Effects 0.000 claims description 63
- 230000004913 activation Effects 0.000 claims description 21
- 238000010606 normalization Methods 0.000 claims description 19
- 238000004590 computer program Methods 0.000 claims description 12
- 230000007423 decrease Effects 0.000 claims description 9
- 230000008859 change Effects 0.000 claims description 7
- 238000013519 translation Methods 0.000 claims description 6
- 230000003213 activating effect Effects 0.000 claims description 5
- 230000000694 effects Effects 0.000 claims description 5
- 230000009466 transformation Effects 0.000 claims description 3
- 230000008569 process Effects 0.000 description 39
- 238000010586 diagram Methods 0.000 description 18
- 239000011159 matrix material Substances 0.000 description 14
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 8
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 8
- 238000012545 processing Methods 0.000 description 7
- 230000037433 frameshift Effects 0.000 description 6
- 230000002411 adverse Effects 0.000 description 4
- 230000008901 benefit Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 238000011002 quantification Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000011176 pooling Methods 0.000 description 3
- 238000013473 artificial intelligence Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000009825 accumulation Methods 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 230000001186 cumulative effect Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 238000011773 genetically engineered mouse model Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 229920006395 saturated elastomer Polymers 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
- 238000012549 training Methods 0.000 description 1
- 238000000844 transformation Methods 0.000 description 1
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
- G06N3/04—Architecture, e.g. interconnection topology
-
- 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
- G06N3/08—Learning methods
-
- 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
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
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)
- Image Analysis (AREA)
Abstract
本公开的实施例提供了用于校准神经网络量化的方法、设备、装置、介质和程序产品,涉及计算机领域。在该方法中,通过在神经网络的多个层执行第一精度与第二精度之间的转换,获取第一推理结果。神经网络以第一精度被训练,第二精度包括锥形浮点精度,并且第一精度高于第二精度。若第一推理结果不满足预定条件,在多个层执行第一精度与第二精度之间的经校准的转换,以获取第二推理结果。若第二推理结果不满足预定条件,在多个层中标识一个或多个目标层以保持第一精度或高于第二精度的其他精度。以此方式,利用经校准的转换,可以减少低精度对网络的推理结果的影响。此外,通过多轮校准来标识不适于执行量化的目标层,可以在提高计算效率的同时使得网络的推理结果能够满足预定条件。
Description
技术领域
本公开的实施例主要涉及计算机领域。更具体地,本公开的实施例涉及用于校准神经网络量化的方法、装置、设备、计算机可读存储介质以及计算机程序产品。
背景技术
目前,神经网络的混合精度推理已经被广泛应用。通过将神经网络中的一部分数据转换为比其他数据为更低的精度(也称为量化操作),可以在推理期间提高计算效率并缩短计算时间。换言之,在混合精度推理中,可以针对神经网络中的不同层使用不同的精度来进行计算,从而加速推理过程。然而,由于低精度的影响,神经网络的推理结果的准确度可能会下降。因此,需要一种校准神经网络量化的方案,从而在提高计算效率的同时减少神经网络的推理性能的下降。
发明内容
本公开的实施例提供了一种校准神经网络量化的方案。
在本公开的第一方面,提供了校准神经网络量化的方法。该方法包括:通过在神经网络的多个层执行第一精度与第二精度之间的转换,获取第一推理结果。所述神经网络以所述第一精度被训练,所述第二精度包括锥形浮点精度,所述第一精度高于所述第二精度。方法还包括:若所述第一推理结果不满足预定条件,在所述多个层执行所述第一精度与所述第二精度之间的经校准的转换,以获取第二推理结果。方法还包括:若所述第二推理结果不满足所述预定条件,在所述多个层中标识一个或多个目标层以保持第一精度或高于第二精度的其他精度。
以此方式,可以对利用锥形浮点精度的神经网络量化进行校准,从而减少低精度的使用对网络的推理结果的影响。此外,通过多轮校准来标识不适于执行量化的目标层,可以在提高计算效率的同时使得网络的推理结果能够满足预定条件。
在第一方面的一些实施例中,锥形浮点精度的有效位或尾数的位数随着阶码的绝对值的增加而减少。利用锥形浮点精度,可以在加速推理过程的同时维持较高的计算精度。
在第一方面的一些实施例中,在所述多个层执行到所述第二精度的所述转换以获取所述第一推理结果包括通过以下在所述多个层中的每个层执行所述转换:基于对所述层的所述第一精度的第一输入和第二输入的格式转换,确定所述层的所述第二精度的所述第一输入和所述第二输入;基于所述第二精度的所述第一输入和所述第二输入,确定所述层的所述第一精度的输出数据;以及基于所述层的所述第一精度的输出数据,确定所述层的下一层的第一输入或获取所述第一推理结果。通过执行高精度与低精度之间的转换,可以加速获取推理结果的过程。
在第一方面的一些实施例中,在所述多个层执行到所述第一精度与所述第二精度之间的经校准的转换包括通过以下对所述多个层中的每个层执行所述经校准的转换:基于对所述层的所述第一精度的第一输入和第二输入执行到所述第二精度的量化,确定所述层的所述第二精度的第一量化输入和所述第二精度的第二量化输入;基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第一精度的量化输出数据;基于对所述第一精度的量化输出数据执行反量化,确定所述层的所述第一精度的校准输出数据;以及基于所述层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。利用经校准的转换,可以减少量化对神经网络的推理性能的不利影响。
在第一方面的一些实施例中,对所述层的所述第一精度的第一输入和第二输入执行到所述第二精度的量化包括:对所述层的所述第一精度的第一输入和第二输入分别应用第一阶码校正值和第二阶码校正值,以确定针对所述层的所述第一精度的经缩放的第一输入和经缩放的第二输入,所述第一阶码校正值和所述第二阶码校正值用于移动数据的阶码以缩放数据值;基于对所述第一精度的所述经缩放的第一输入和所述经缩放的第二输入分别执行到所述第二精度的格式转换,确定所述第二精度的第一量化输入和所述第二精度的第二量化输入。基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第一精度的量化输出数据包括:基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第三精度的量化输出数据,所述第三精度是所述第一精度或高于所述第一精度;基于所述层的所述第三精度的量化输出数据,确定所述层的所述第一精度的量化输出数据。对所述第一精度的量化输出数据执行反量化包括:基于对所述第一精度的量化输出数据应用所述第一阶码校正值和所述第二阶码校正值以还原缩放,确定所述层的所述第一精度的校准输出数据。
以此方式,利用阶码校正值可以使得被量化的数据能够以锥形浮点精度的更高的有效精度被表示,从而减小量化对网络的推理准确度的影响。
在第一方面的一些实施例中,在所述多个层中标识所述一个或多个目标层包括:确定所述多个层的多个敏感度,每个敏感度指示针对相应层的所述经校准的转换对所述神经网络的推理准确度的影响;以及基于所述多个敏感度的排序,在所述多个层中标识所述一个或多个目标层。以此方式,可以避免在不合适的目标层执行量化,从而减少量化对神经网络的推理性能的影响。
在第一方面的一些实施例中,方法还包括:确定所述多个层的多组量化误差,每组量化误差包括相应层的所述第一输入的量化误差和所述第二输入的量化误差,或者每组量化误差包括相应层的所述校准输出数据的量化误差,所述量化误差指示由所述经校准的转换引起的数据值的变化;以及针对所述多个层中的每个层,基于对应的一组量化误差,在搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值。
在第一方面的一些实施例中,在所述搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值包括:基于所述搜索空间中的第一组候选阶码校正值,确定所述层的所述第一输入的第一组量化误差;基于所述搜索空间中的第二组候选阶码校正值,确定所述层的所述第二输入的第二组量化误差;在所述第一组候选阶码校正值中标识与所述第一组量化误差中的最小量化误差相关联的所述第一阶码校正值;以及在所述第二组候选阶码校正值中标识与所述第二组量化误差中的最小量化误差相关联的所述第二阶码校正值。
在第一方面的一些实施例中,在所述搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值包括:基于所述搜索空间中的多对候选阶码校正值,确定所述层的所述校准输出数据的多个量化误差;以及在所述多对候选阶码校正值中标识与所述多个量化误差中的最小量化误差相关联的包括所述第一阶码校正值和所述第二阶码校正值的一对候选阶码校正值。
以此方式,可以确定用于每个层的合适的阶码校正值,从而增加移码操作对于校准神经网络量化的有益效果。
在第一方面的一些实施例中,确定所述多个层的所述多个敏感度包括:基于所述多个层的所述多组量化误差,确定所述多个层的所述多个敏感度。以此方式,通过复用量化误差来确定敏感度,可以提高计算效率。
在第一方面的一些实施例中,确定所述多个层的所述多个敏感度包括:针对所述多个层中的每个层,在所述层执行所述第一精度与所述第二精度之间的所述经校准的转换,同时保持所述多个层中的其他层为所述第一精度,以获取与所述层关联的所述神经网络的推理结果;以及基于与所述多个层关联的所述神经网络的多个推理结果,确定所述多个层的所述多个敏感度。利用端到端的敏感度的评估,能够以推理结果作为指标来更准确地标识适合执行量化的目标层。
在第一方面的一些实施例中,基于所述多个敏感度的所述排序,在所述多个层中标识所述一个或多个目标层包括:基于所述多个敏感度的所述排序,在所述多个层中标识第一组目标层;通过保持所述第一组目标层为所述第一精度或高于所述第二精度的其他精度,获取中间推理结果;若所述中间推理结果不满足所述预定条件,基于所述排序向所述第一组目标层添加至少一个层,以确定第二组目标层;以及基于确定通过保持所述第二组目标层为所述第一精度或高于所述第二精度的其他精度而获取的推理结果满足所述预定条件,将所述第二组目标层标识为所述一个或多个目标层。
以此方式,可以以提高计算效率为优先条件来高效地标识目标层,使得在推理结果满足预定条件的同时计算效率能够被最大程度地提高。
在第一方面的一些实施例中,在所述多个层执行所述第一精度与所述第二精度的所述经校准的转换,以获取所述第二推理结果包括:对所述多个层中第一层执行所述经校准的转换,以确定所述第一层的所述第一精度的校准输出数据;基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中第二层的所述第一精度的第一输入;至少基于所述第二层的所述第一精度的第一输入,对所述第二层执行所述经校准的转换,以确定所述第二层的所述第一精度的校准输出数据;以及基于所述第二层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。以此方式,通过继承先前层的量化结果,可以考虑量化误差的累积效应,从而更准确地评估量化对网络的推理性能的影响。
在第一方面的一些实施例中,基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中所述第二层的所述第一精度的第一输入包括:基于对所述第一层的所述第一精度的校准输出数据进行以下操作来确定所述第二层的所述第一精度的所述第一输入:激活操作;或者激活操作和归一化操作。
在一些实施例中,所述第二输入包括权重、激活值或特征图数据。
在本公开的第二方面,提供了用于校准神经网络量化的装置。装置包括:直接转换单元,被配置为通过在神经网络的多个层执行第一精度与第二精度之间的转换,获取第一推理结果。所述神经网络以所述第一精度被训练,所述第二精度包括锥形浮点精度,所述第一精度高于所述第二精度。装置还包括:第一校准单元,被配置为若所述第一推理结果不满足预定条件,在所述多个层执行所述第一精度与所述第二精度之间的经校准的转换,以获取第二推理结果。装置还包括:第二校准单元,被配置为若所述第二推理结果不满足所述预定条件,在所述多个层中标识一个或多个目标层以保持第一精度或高于第二精度的其他精度。
在第二方面的一些实施例中,所述锥形浮点精度的有效位或尾数的位数随着阶码的绝对值的增加而减少。
在第二方面的一些实施例中,直接转换单元被配置为通过以下在所述多个层中的每个层执行所述转换:基于对所述层的所述第一精度的第一输入和第二输入的格式转换,确定所述层的所述第二精度的所述第一输入和所述第二输入;基于所述第二精度的所述第一输入和所述第二输入,确定所述层的所述第一精度的输出数据;以及基于所述层的所述第一精度的输出数据,确定所述层的下一层的第一输入或获取所述第一推理结果。
在第二方面的一些实施例中,第一校准单元被配置为通过以下对所述多个层中的每个层执行所述经校准的转换:基于对所述层的所述第一精度的第一输入和第二输入执行到所述第二精度的量化,确定所述层的所述第二精度的第一量化输入和所述第二精度的第二量化输入;基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第一精度的量化输出数据;基于对所述第一精度的量化输出数据执行反量化,确定所述层的所述第一精度的校准输出数据;以及基于所述层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。
在第二方面的一些实施例中,第一校准单元被配置为:对所述层的所述第一精度的第一输入和第二输入分别应用第一阶码校正值和第二阶码校正值,以确定针对所述层的所述第一精度的经缩放的第一输入和经缩放的第二输入,所述第一阶码校正值和所述第二阶码校正值用于移动数据的阶码以缩放数据值;基于对所述第一精度的所述经缩放的第一输入和所述经缩放的第二输入分别执行到所述第二精度的格式转换,确定所述第二精度的第一量化输入和所述第二精度的第二量化输入。第一校准单元被配置为:基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第三精度的量化输出数据,所述第三精度是所述第一精度或高于所述第一精度;基于所述层的所述第三精度的量化输出数据,确定所述层的所述第一精度的量化输出数据。第一校准单元被配置为:基于对所述第一精度的量化输出数据应用所述第一阶码校正值和所述第二阶码校正值以还原缩放,确定所述层的所述第一精度的校准输出数据。
在第二方面的一些实施例中,第二校准单元被配置为:确定所述多个层的多个敏感度,每个敏感度指示针对相应层的所述经校准的转换对所述神经网络的推理准确度的影响;以及基于所述多个敏感度的排序,在所述多个层中标识所述一个或多个目标层。
在第二方面的一些实施例中,装置还包括量化误差确定单元,被配置为:确定所述多个层的多组量化误差,每组量化误差包括相应层的所述第一输入的量化误差和所述第二输入的量化误差,或者每组量化误差包括相应层的所述校准输出数据的量化误差,所述量化误差指示由所述经校准的转换引起的数据值的变化;以及针对所述多个层中的每个层,基于对应的一组量化误差,在搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值。
在第二方面的一些实施例中,第一校准单元还被配置为:基于所述搜索空间中的第一组候选阶码校正值,确定所述层的所述第一输入的第一组量化误差;基于所述搜索空间中的第二组候选阶码校正值,确定所述层的所述第二输入的第二组量化误差;在所述第一组候选阶码校正值中标识与所述第一组量化误差中的最小量化误差相关联的所述第一阶码校正值;以及在所述第二组候选阶码校正值中标识与所述第二组量化误差中的最小量化误差相关联的所述第二阶码校正值。
在第二方面的一些实施例中,第一校准单元还被配置为:基于所述搜索空间中的多对候选阶码校正值,确定所述层的所述校准输出数据的多个量化误差;以及在所述多对候选阶码校正值中标识与所述多个量化误差中的最小量化误差相关联的包括所述第一阶码校正值和所述第二阶码校正值的一对候选阶码校正值。
在第二方面的一些实施例中,第二校准单元被配置为:基于所述多个层的所述多组量化误差,确定所述多个层的所述多个敏感度。
在第二方面的一些实施例中,第二校准单元被配置为:针对所述多个层中的每个层,在所述层执行所述第一精度与所述第二精度之间的所述经校准的转换,同时保持所述多个层中的其他层为所述第一精度,以获取与所述层关联的所述神经网络的推理结果;以及基于与所述多个层关联的所述神经网络的多个推理结果,确定所述多个层的所述多个敏感度。
在第二方面的一些实施例中,第二校准单元被配置为:基于所述多个敏感度的所述排序,在所述多个层中标识第一组目标层;通过保持所述第一组目标层为所述第一精度或高于所述第二精度的其他精度,获取中间推理结果;若所述中间推理结果不满足所述预定条件,基于所述排序向所述第一组目标层添加至少一个层,以确定第二组目标层;以及基于确定通过保持所述第二组目标层为所述第一精度或高于所述第二精度的其他精度而获取的推理结果满足所述预定条件,将所述第二组目标层标识为所述一个或多个目标层。
在第二方面的一些实施例中,第一校准单元还被配置为:对所述多个层中第一层执行所述经校准的转换,以确定所述第一层的所述第一精度的校准输出数据;基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中第二层的所述第一精度的第一输入;至少基于所述第二层的所述第一精度的第一输入,对所述第二层执行所述经校准的转换,以确定所述第二层的所述第一精度的校准输出数据;以及基于所述第二层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。
在第二方面的一些实施例中,第一校准单元还被配置为基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中所述第二层的所述第一精度的第一输入包括:基于对所述第一层的所述第一精度的校准输出数据进行以下操作来确定所述第二层的所述第一精度的所述第一输入:激活操作;或者激活操作和归一化操作。
在第二方面的一些实施例中,所述第二输入包括权重、激活值或特征图数据。
在本公开的第三方面,提供了一种芯片。芯片被配置为在神经网络的多个层执行第一精度与第二精度之间的经校准的转换以获取推理结果,所述神经网络以所述第一精度被训练,所述第二精度包括锥形浮点精度,所述第一精度高于所述第二精度,所述芯片包括:张量计算单元,被配置为:基于所述多个层中第一层的经缩放的所述第二精度的第一输入和经缩放的所述第二精度的第二输入,确定所述第一层的经缩放的第三精度的输出数据,所述经缩放的所述第二精度的第一输入基于第一阶码校正值被缩放,经缩放的所述第二精度的第二输入基于第二阶码校正值被缩放,所述第三精度是所述第一精度或高于所述第一精度;以及随路计算单元,被配置为:基于对经缩放的所述第三精度的输出数据应用所述第一阶码校正值、所述第二阶码校正值和第三阶码校正值,确定所述多个层中跟随所述第一层的第二层的经缩放的所述第一精度的第一输入;以及基于对所述第二层的经缩放的所述第一精度的第一输入的格式转换,确定所述第二层的经缩放的所述第二精度的第一输入,以用于获取所述推理结果。
以此方式,通过复用通用芯片中的计算逻辑,可以高效地执行经校准的利用锥形浮点精度的神经网络量化,以获取网络的推理结果。
在第三方面的一些实施例中,随路计算单元进一步被配置为:基于对经缩放的所述第三精度的输出数据应用所述第一阶码校正值、所述第二阶码校正值、所述第三阶码校正值和激活操作,确定所述第二层的经缩放的所述第一精度的第一输入。
在本公开的第四方面,提供了一种芯片。芯片被配置为在神经网络的多个层执行第一精度与第二精度之间的经校准的转换以获取推理结果,所述神经网络以所述第一精度被训练,所述第二精度包括锥形浮点精度,所述第一精度高于所述第二精度,所述芯片包括:张量计算单元,被配置为:基于所述多个层中第一层的经缩放的所述第二精度的第一输入和经缩放的所述第二精度的第二输入,确定所述第一层的经缩放的第三精度的输出数据,所述经缩放的所述第二精度的第一输入基于第一阶码校正值被缩放,经缩放的所述第二精度的第二输入基于第二阶码校正值被缩放,所述第三精度是所述第一精度或高于所述第一精度;随路计算单元,被配置为:基于对经缩放的所述第三精度的输出数据应用所述第一阶码校正值和所述第二阶码校正值,确定所述第一层的所述第三精度的校准输出数据;以及基于所述第一层的所述第三精度的校准输出数据,确定所述第一层的所述第一精度的校准输出数据;向量计算单元,被配置为:基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中跟随所述第一层的第二层的所述第一精度的第一输入;基于对所述第二层的所述第一精度的第一输入应用第三阶码校正值,确定所述第二层的经缩放的所述第一精度的第一输入;以及基于所述第二层的经缩放的所述第一精度的第一输入的格式转换,确定所述第二层的经缩放的所述第二精度的第一输入,以用于获取所述推理结果。
以此方式,通过复用通用芯片中的计算逻辑,可以高效地执行经校准的利用锥形浮点精度的神经网络量化,以获取网络的推理结果。
在第四方面的一些实施例中,向量计算单元进一步被配置为:针对所述第一层的所述第一精度的校准输出数据,执行归一化操作,以确定所述第二层的所述第一精度的第一输入。以此方式,该芯片可以支持归一化等向量乘法,从而提高推理效率。
在本公开的第五方面,提供了一种电子设备,包括:至少一个计算单元;至少一个存储器,至少一个存储器被耦合到至少一个计算单元并且存储用于由至少一个计算单元执行的指令,指令当由至少一个计算单元执行时,使得设备实现第一方面所提供的方法。
在本公开的第六方面,提供了一种计算机可读存储介质,其上存储有计算机程序,其中计算机程序被处理器执行实现第一方面所提供的方法。
在本公开的第七方面,提供一种计算机程序产品,包括计算机可执行指令,当指令在被处理器执行时实现第一方面的方法的部分或全部步骤。
可以理解地,上述提供的第三方面和第四方面的芯片、第五方面的电子设备、第六方面的计算机存储介质或者第七方面的计算机程序产品用于执行第一方面所提供的方法中的至少一部分。因此,关于第一方面的解释或者说明同样适用于第三方面、第四方面、第五方面、第六方面和第七方面。此外,第三方面、第四方面、第五方面、第六方面和第七方面所能达到的有益效果可参考对应方法中的有益效果,此处不再赘述。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素,其中:
图1a和1b示出了HiF8精度的示意图;
图2示出了根据本公开的一些实施例的校准神经网络量化的过程的示意图;
图3a和图3b示出了根据本公开的一些实施例的校准模式的示例的示意图;
图4示出了根据本公开的一些实施例的基于端到端的敏感度评估来标识目标层的过程的示意图;
图5示出了根据本公开的一些实施例的校准神经网络量化的过程的示意图;
图6示出了根据本公开的一些实施例的用于校准神经网络量化的装置的示意性框图;
图7a和图7b示出了根据本公开的一些实施例的示例芯片的示意图;以及
图8示出了能够实施本公开的多个实施例的计算设备的框图。
具体实施方式
下面将参照附图更详细地描述本公开的实施例。虽然附图中显示了本公开的某些实施例,然而应当理解的是,本公开可以通过各种形式来实现,而且不应该被解释为限于这里阐述的实施例,相反提供这些实施例是为了更加透彻和完整地理解本公开。应当理解的是,本公开的附图及实施例仅用于示例性作用,并非用于限制本公开的保护范围。
在本公开的实施例的描述中,术语“包括”及其类似用语应当理解为开放性包含,即“包括但不限于”。术语“基于”应当理解为“至少部分地基于”。术语“一个实施例”或“该实施例”应当理解为“至少一个实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如本文所使用的,“神经网络”能够处理输入并且提供相应输出,其通常包括多个层以用于从输入确定输出。在本文中,术语“神经网络”和“网络”可替换地使用。
如上文所简要提及的,在混合精度推理中,可以针对神经网络中的不同层使用高精度或低精度来进行计算,从而高效地获取推理结果。通常,可以使用FP32精度、FP16精度、BF16精度、INT8精度等精度的混合来加速推理过程。应理解,高精度和低精度是相对的,对于FP32精度而言,FP16精度可以是低精度的;对于INT8精度而言,FP16精度可以是高精度的。关于FP32精度、FP16精度、BF16精度、INT8精度等精度的细节在此不再赘述。
目前,已经提出了一些用于校准神经网络量化的方案,以使得在提高计算效率的同时可以维持较高的推理准确度。例如,在利用INT8精度来加速推理的场景中,可以在将数据从FP32精度量化为INT8精度时对一些数值较大但占比较小的数据进行饱和处理(例如,舍去数值特别大的数据),从而有助于在INT8精度的较窄的动态范围中对FP32精度的数据进行量化。然而,上述方案考虑的是如何校准利用动态范围较窄的低精度的神经网络量化,而不适用于校准利用锥形浮点精度的神经网络量化。
锥形浮点精度是一种通用的浮点编解码方式和数据表达方式,其位宽、数据范围和有效位可以根据场景需求伸缩延展。锥形浮点精度可以应用于通用计算、高性能计算和人工智能等多种领域。锥形浮点精度是一种具有锥形精度特征的浮点数精度格式。换言之,锥形浮点精度的有效位或尾数的位数随着阶码的绝对值的增加而减少。锥形浮点精度的示例可以包括POSIT精度和HiFloat8精度(也简称为HiF8精度)。下文将以HiF8精度为示例简要介绍锥形浮点精度。
图1a和1b示出了HiF8精度的示意图。图1a示出了HiF8精度的域定义和域位宽。在IEEE754的基础上,HiF8精度除了符号域、阶码域和尾数域以外还定义了一个点位域。如图1a所示,在HiF8精度中,符号域为1个比特,用于表示HiF8精度数据的正负号。点位域为2个比特或者3个比特,用于编码包括0、1、2、3、4的五个D值。D值显式地指示阶码域所占比特数,同时也等价指示了尾数域所占比特数。点位域采用非常规前缀码进行编码,即用3个比特的长位宽编码小数据0和1,并且用2个比特的短位宽编码大数据2、3和4。阶码域为D个比特,其中D等于点位域的编码值。尾数域为5-D个比特,其中D等于点位域的编码值。尾数域用于存储小数位数值M。HiF8精度所表达的浮点数值可以用如下公式(1)表示:
X=(-1)S×2E×(1+M) (1)
其中S为HiF8符号域数值,E为HiF8阶码域数值,M为HiF8尾数域数值。
图1b示出了HiF8精度的有效位在阶码窗口上的分布图。如图1b所示,HiF8的有效位为2~5位,并且有效位的位数随阶码的绝对值的增加而减少。HiF8精度能表示的最大正数和最小正数,即绝对值动态范围如下式(2):
Xmax_pos=215=32768
Xmin_pos=2-15×1.5=0.000045776367 (2)
因此,HiF8精度作为单一的Float8数据格式,其具有较宽的动态范围和较高的计算精度。在这种情况下,用于校准利用动态范围较窄的低精度(例如,INT8精度)的神经网络量化的方案可能不适用于校准利用锥形浮点精度的神经网络量化。因此,需要合适的方案来校准利用锥形浮点精度的神经网络量化,从而使得在提高计算效率的同时减少推理准确度的下降。
为了至少部分地解决上述问题以及其他潜在问题,本公开的各种实施例提供了一种校准神经网络量化的方案。总体而言,根据在此描述的各种实施例,通过在神经网络的多个层执行第一精度与第二精度之间的转换,获取第一推理结果。该神经网络以第一精度被训练,第二精度包括锥形浮点精度,并且第一精度高于第二精度。如果第一推理结果不满足预定条件,在所述多个层执行第一精度与第二精度之间的经校准的转换,以获取第二推理结果。如果第二推理结果不满足预定条件,在多个层中标识一个或多个目标层以保持所述第一精度或高于所述第二精度的其他精度。
以此方式,利用高精度与低精度之间的经校准的转换,可以减少低精度对网络的推理性能的影响。此外,利用多轮校准,可以标识不适合执行量化的目标层。通过保持目标层为相对高的精度,可以减少量化对推理结果的影响,从而可以在提高计算效率的同时使得网络的推理结果能够满足预定条件。
以下参考附图来描述本公开的各种示例实施例。
图2示出了根据本公开的一些实施例的校准神经网络量化的过程200的示意图。如图2所示,在框201,接收用于校准神经网络量化的输入。输入可以包括待量化的神经网络。所输入的神经网络基于第一精度被训练。相对于用于量化神经网络的第二精度而言,用于训练网络的第一精度具有更高的精度。第二精度包括锥形浮点精度,例如HiF8精度或POSIT精度。为了讨论方便,在下文中“第一精度”和“高精度”可以互换地使用,“第二精度”和“低精度”可以互换地使用。
在一些实施例中,当第二精度为锥形浮点精度HiF8时,第一精度的示例可以包括单精度FP32、半精度FP16、BF16精度等。例如,待量化的神经网络可以是基于FP32精度或FP16精度被训练的。在一些实施例中,待量化的神经网络可以是基于包括第一精度的混合精度被训练的。例如,待量化的神经网络可以是基于FP32精度和FP16精度被训练的。
在框205,在网络中的多个层执行第一精度与第二精度之间的转换(也称为直接转换)。在一些实施例中,多个层可以是网络中涉及矩阵乘法操作的所有层或一部分层。多个层的示例可以包括涉及第一输入与第二输入的矩阵乘法的层,例如卷积层、全连接层、注意力层等。换言之,可以避免对池化层、归一化层、激活层等不涉及矩阵乘法的层执行高精度与低精度之间的转换。在一些实施例中,第一输入和第二输入可以是特征图数据和权重。备选地,第一输入和第二输入可以是激活值和权重。备选地,第一输入和第二输入两者可以是相同或不同的特征图数据。备选地,第一输入和第二输入两者可以是来自不同的先前层的输出数据或激活值。
在一些实施例中,高精度与低精度之间的转换可以包括格式转换。在一些实施例中,针对网络中的多个层中的每个层,可以基于对该层的高精度的第一输入和第二输入的分别的格式转换,确定针对该层的低精度的第一输入和低精度的第二输入。可以使用任何合适的格式转换方式,例如截断、映射等。本公开的范围在此不受限制。
基于每个层的低精度的第一输入和低精度的第二输入,可以确定该层的高精度的输出数据。在一些实施例中,可以利用通用矩阵乘(general matrix multiplication,GEMM)来基于第一输入和第二输入计算输出数据。由于通用矩阵乘中通常以较高精度进行累加操作,通用矩阵乘可以基于低精度的输入数据确定更高精度的输出数据。例如,基于FP16精度的输入数据可以确定FP32精度的输出数据。取决于通用矩阵乘的设置,所获得的输出数据的较高精度(下文中也称为第三精度)可以是第一精度或高于第一精度的其他精度。在一些实施例中,可以基于格式转换将所获得的较高精度的输出数据转换为第一精度的输出数据,以供后续处理。
取决于该层在网络中的位置,该层的高精度的输出数据可以作为网络的第一推理结果,或者可以作为下一层的高精度的输入数据,例如第一输入或第二输入,以用于继续确定第一推理结果。换言之,通过迭代地对多个层中的每一层执行高精度与低精度之间的转换,可以确定网络的第一推理结果。附加地,可以对高精度的输出数据执行附加操作以用于确定下一层的高精度的输入数据或者第一推理结果。附加操作的示例可以包括激活操作、归一化操作等。激活操作的示例可以包括使用例如ReLu或Sigmoid等激活函数的操作。归一化操作的示例可以包括批处理归一化操作(batch normalization,BN)。
在框206,检查第一推理结果是否满足预定条件。可以基于网络的推理性能来确定预定条件。在一些实施例中,可以基于期望的推理准确度来设置预定条件。在一些实施例中,可以基于网络的初始推理结果来设置预定条件。网络的初始推理结果可以是指未经量化的初始网络的推理结果,也即,网络以高精度确定的推理结果。可以设置预定条件为推理结果与初始推理结果的准确度之差不低于阈值,例如5%。在一些实施例中,预定条件可以在框201处被输入。
如果确定第一推理结果满足预定条件,用于校准神经网络量化的过程200在框210完成。在这种情况下,可以直接在网络中的多个层执行高精度与低精度之间的转换,而不需要附加的校准操作。
如果确定第一推理结果不满足预定条件,则过程200行进到第一校准阶段。在第一校准阶段中,在网络的多个层执行高精度与低精度之间的经校准的转换,以获取第二推理结果。换言之,在第一校准阶段中,不同于框205处的直接转换,在网络的多个层执行经校准的转换。相比直接转换,经校准的转换还涉及格式转换以外的其他操作,以用于校准神经网络量化对推理性能的影响。
在一些实施例中,可以依次对每个层执行高精度与低精度之间的经校准的转换。高精度与低精度之间的经校准的转换可以包括量化和反量化。在一些实施例中,除了格式转换以外,量化还可以包括针对较窄动态范围的饱和操作,以用于校准利用诸如INT8精度之类具有较窄动态范围的低精度的神经网络量化。备选地,除了格式转换以外,量化还可以包括用于移动数据的阶码的缩放操作(也称为移码操作),以用于校准利用诸如HiF8精度之类的锥形浮点精度的神经网络量化,具体细节将在下文描述。
在一些实施例中,在对每个层执行高精度与低精度之间的经校准的转换时,可以基于对每个层的第一精度的第一输入和第二输入执行到第二精度的量化,确定该层的第二精度的第一量化输入和第二精度的第二量化输入。
在一些实施例中,可以对该层的第一精度的第一输入和第二输入分别应用第一阶码校正值和第二阶码校正值,以确定针对该层的第一精度的经缩放的第一输入和经缩放的第二输入。基于对第一精度的经缩放的第一输入和经缩放的第二输入分别执行到第二精度的格式转换,可以确定第二精度的第一量化输入和第二精度的第二量化输入。
第一阶码校正值和第二阶码校正值可以用于移动数据的阶码以缩放数据值。如上文参考图1所描述的,锥形浮点精度的有效精度随着阶码的绝对值的增加而减小。因此,通过应用阶码校正值来移动阶码可以使得经缩放的数据在量化之后对应于较高的有效精度。例如,可以通过应用阶码校正值来将数据的阶码移动到接近0以便获得锥形浮点精度的较高精度。以此方式,高精度的数据在被量化为低精度的锥形浮点精度的数据时可以用较高的有效精度来表示。
基于第二精度的第一量化输入和第二精度的第二量化输入,可以确定该层的第一精度的量化输出数据。与框205处的直接转换类似,基于低精度的第一量化输入和第二量化输入,可以例如使用通用矩阵乘来确定高精度的量化输出数据。在一些实施例中,类似地,基于低精度的第一量化输入和第二量化输入,可以确定该层的第三精度的量化输出数据,第三精度是第一精度或高于第一精度。基于对该层的第三精度的量化输出数据执行到第一精度的格式转换,可以确定该层的第一精度的量化输出数据。
基于对高精度的量化输出数据执行反量化,可以确定该层的高精度的校准输出数据。可以执行与所采用的量化操作对应的反量化操作。在一些实施例中,针对包括映射的量化操作,可以利用该映射来执行反量化操作。在一些实施例中,针对包括缩放的量化操作,可以基于对缩放的还原来执行反量化操作。具体地,可以基于对第一精度的量化输出数据应用第一阶码校正值和所述第二阶码校正值以还原缩放,从而确定该层的第一精度的校准输出数据。与框205处的直接转换类似,取决于每个层在网络中的位置,基于该层的第一精度的校准输出数据,可以确定该层的下一层的第一输入或获取第二推理结果。
由于量化输出数据是基于经缩放的输入数据而被确定的,应用第一阶码校正值和第二阶码校正值可以还原对数据的缩放,从而保持数据值的一致性。以HiF8精度为例,可以通过将第一输入与2-EC1相乘来获得经缩放的第一输入,通过将第二输入与2-EC2相乘来获得经缩放的第二输入,EC1和EC2分别为第一阶码校正值和第二阶码校正值。通过应用阶码校正值,可以使得经缩放的数据在量化之后对应于较高的有效精度。这样,可以减少量化对推理性能的不利影响,从而对神经网络量化进行校准。相应地,可以通过将量化输出数据与2EC1+EC2相乘来获得还原的输出数据。应理解,取决于锥形浮点精度的定义,应用阶码校正值来进行缩放的方式可能不同。
继续参考图2来描述针对每个层确定和应用阶码校正值的过程。在框211,可以确定校准模式,以用于确定针对每个层的阶码校正值并且利用对应的阶码校正值来执行经校准的转换。在校准模式中,可以基于每个层的量化误差来确定针对该层的阶码校正值。量化误差可以指示由经校准的转换引起的数据值的变化,也即高精度的数据与低精度的数据之间的数据值的变化。可以利用任何合适的指标来衡量量化误差。指标的示例包括均方误差(mean squared error,MSE)、KL散度(Kullback-Leibler divergence,KL_D)、余弦相似性(cosine similarity,COS)等。如图2所示,校准模式可以包括框212处的输入特征图回归(input feature map regression,IFMR)校准模式和框213处的输出特征图回归(outputfeature map regression,OFMR)校准模式。下文将参考图3a和图3b来描述IFMR校准模式和OFMR校准模式的细节。
图3a和图3b示出了根据本公开的一些实施例的校准模式的示例的示意图。图3a和图3b中以FP32精度作为高精度的示例,以HiF8精度作为低精度的示例,而不构成对本公开的范围的限制。
图3a示出了根据本公开的一些实施例的IFMR校准模式的示例的示意图。如图3a所示,在IFMR中,针对多个层中的每个层,可以确定该层的第一输入的量化误差和该层的第二输入的量化误差。利用使该层的第一输入的量化误差最小化的优化操作,可以在搜索空间中标识用于该层的第一输入的第一阶码校正值。利用使该层的第二输入的量化误差最小化的优化操作,可以在搜索空间中标识用于该层的第二输入的第二阶码校正值。
在一些实施中,可以基于搜索空间中的第一组候选阶码校正值来确定该层的第一输入的第一组量化误差。具体地,可以利用第一组候选阶码校正值中的每个阶码校正值来对该层的第一输入进行量化操作(例如,利用HiF8精度的量化),从而确定相应的量化误差。在第一组候选阶码校正值中,可以标识与第一组量化误差中的最小量化误差相关联的第一阶码校正值。换言之,可以标识与最小的量化误差关联的阶码校正值以作为用于第一输入的第一阶码校正值。
类似地,基于搜索空间中的第二组候选阶码校正值,可以确定该层的第二输入的第二组量化误差。在第二组候选阶码校正值中,可以标识与第二组量化误差中的最小量化误差相关联的第二阶码校正值。通过标识第二组量化误差中与最小的量化误差关联的阶码校正值,可以确定用于第二输入的第二阶码校正值。
图3b示出了根据本公开的一些实施例的OFMR校准模式的示例的示意图。如图3b所示,在OFMR中,针对多个层中的每个层,可以确定该层的校准输出数据的量化误差。利用使该层的校准输出数据的量化误差最小化的优化操作,可以在搜索空间中标识用于该层的第一输入的第一阶码校正值和用于该层的第二输入的第二阶码校正值。
在一些实施例中,可以基于搜索空间中的多对候选阶码校正值来确定该层的校准输出数据的多个量化误差。具体地,可以利用多对候选阶码校正值中的每对阶码校正值来对该层的第一输入和第二输入分别进行量化操作,以确定对应于多对候选阶码校正值的多个校准输出数据。通过比较每个校准输出数据与由未经量化的第一输入和第二输入确定的输出数据,可以确定相应的量化误差。基于多个量化误差,可以在多对候选阶码校正值中标识与最小量化误差相关联的一对候选阶码校正值,以用于该层的第一输入和第二输入。换言之,可以在多对候选阶码校正值中标识包括所述第一阶码校正值和所述第二阶码校正值的一对候选阶码校正值。
在一些实施例中,在各种校准模式中,搜索空间可以是预先设置的。搜索空间可以包括候选阶码校正值的离散值。搜索空间可以基于锥形浮点精度的定义而设置。附加地或备选地,搜索空间可以基于该层的数据的特性而设置。例如,针对HiF8精度,搜索空间可以设置为[-5,4]或者[-4,4]。针对第一输入的搜索空间和针对第二输入的搜索空间可以是相同的或者不同的。此外应理解,由于搜索空间仅包括有限数目的候选阶码校正值的离散值,在搜索空间中标识第一阶码校正值和第二阶码校正可以是非常高效的。
继续参考图2,利用框212处的IFMR校准模式或框213处的OFMR校准模式,可以针对网络的多个层依次确定合适的阶码校正值并执行经校准的转换,从而确定第二推理结果。在一些实施例中,在确定针对每层的阶码校正值时,可以继承先前层的量化结果。
例如,在针对第一层确定阶码校正值并基于该阶码校正值执行经校准的转换之后,可以基于第一层的高精度的校准输出数据确定第二层的高精度的输入数据。在一些实施例中,可以对第一层的高精度的校准输出数据执行激活操作来确定第二层的高精度的输入数据。附加地或备选地,可以对第一层的高精度的校准输出数据执行归一化操作来确定第二层的高精度的输入数据。应理解,归一化操作可能改变第一层的高精度的校准输出数据的数据值的大小和分布。在这种情况下,可以在进行归一化操作之后对第二层的高精度的输入数据执行经校准的转换,例如,确定合适的阶码校正值并执行移码操作。
在一些实施例中,可以优先使用OFMR校准模式来确定第二推理结果。附加地或备选地,可以综合考虑IFMR校准模式和OFMR校准模式两者来确定第二推理结果。
在框214,可以检查第二推理结果是否满足预定条件。如上所述,预定条件可以基于期望的推理性能而确定。如果第二推理结果满足预定条件,例如,如果推理准确度达到阈值,则过程200可以在框210处完成。在这种情况下,可以利用经校准的网络来对相同分布的其他输入数据进行推理,从而加速网络的推理过程。例如,可以使用所确定的阶码校正值来处理其他输入数据和各层的权重。
如果第二推理结果不满足预定条件,例如,如果推理准确度没有达到阈值,则过程200继续到第二校准阶段。在第二校准阶段中,在网络的多个层中标识一个或多个目标层以保持第一精度或高于第二精度的其他精度。换言之,可以将在第一校准阶段中执行了经校准的转换的多个层中的一个或多个目标层还原为第一精度(也即,不执行经校准的转换)或者在一个或多个目标层执行到高于第二精度的其他精度的转换。例如,在第一精度为FP32精度并且第二精度为HiF8精度的情况下,可以使得目标层保持在FP32精度,或者可以在目标层执行到FP16精度的转换(直接转换或经校准的转换),同时在其余层执行到HiF8精度的经校准的转换。这样,可以跳过多个层中的一个或多个层以避免在这些层执行经校准的转换,从而减少量化对推理性能的不利影响。
在一些实施例中,可以确定多个层的多个敏感度,每个敏感度指示针对相应层的经校准的转换对网络的推理准确度的影响。基于多个敏感度的排序,可以在多个层中标识一个或多个目标层。例如,可以选择敏感度较高的层来作为目标层,以避免执行到低精度的量化。
在一些实施例中,如图2中的框215所示,可以基于与每个层关联的推理结果来确定该层的敏感度(也称为端到端的敏感度评估)。针对多个层中的每个层,可以仅在该层执行高精度与低精度之间的经校准的转换,并且保持其他层为高精度,以获取与该层关联的网络的推理结果。与该层关联的推理结果的准确度可以指示该层的量化对网络的推理性能的影响。基于与多个层分别关联的多个推理结果,可以确定每个层的敏感度。例如,可以基于推理结果与初始推理结果之间的差异来确定敏感度,差异越大,则敏感度越高。
图4示出了根据本公开的一些实施例的基于端到端的敏感度评估来标识目标层的过程的示意图。图4示出了网络中的卷积层(Conv)401、卷积层402、卷积层403和卷积层404,以及对应的推理准确度得分。如图4所示,在仅对卷积层401执行量化时所获得的推理准确度得分为76.08;在仅对卷积层402执行量化时所获得的推理准确度得分为76.11;在仅对卷积层403执行量化时所获得的推理准确度得分为76.09;在仅对卷积层404执行量化时所获得的推理准确度得分为75.69。
在这种情况下,可以将具有最低的准确度得分的卷积层404确定为具有最高的敏感度。相应地,可以将卷积层404标识为不适合执行量化的目标层。如图4所示,可以在卷积层401、402和403执行利用HiF8精度的量化,并且保持卷积层404为FP16精度(在网络以高精度FP16或FP32被训练时),从而减小低精度对网络的推理性能的不利影响。
继续参考图2,附加地或备选地,如图2中的框216所示,可以基于每个层的量化误差来确定该层的敏感度(也称为基于量化误差的敏感度评估)。如上所述,在第一校准阶段中,可以通过使量化误差最小化来确定针对每个层的合适的阶码校正值。在第二校准阶段中,可以复用所确定的最小量化误差,以确定该层的敏感度。在一些实施例中,可以对多个层的对应的多个最小量化误差进行归一化操作,以确定每个层的敏感度。
在一些实施例中,过程200可以优先执行框216处基于量化误差的敏感度评估。备选地,可以综合端到端的敏感度评估和基于量化误差的敏感度评估两者来确定敏感度。
在框217,可以确定多个层的多个敏感度的排序。在框218,可以基于多个敏感度的排序来标识一个或多个目标层。在一些实施例中,基于排序,可以在多个层中标识第一组目标层。例如,可以在多个层中选择预定数目的敏感度较高的层,以作为第一组目标层。通过保持第一组目标层为第一精度或高于第二精度的其他精度,并且在其余层执行第一精度与第二精度之间的经校准的转换,可以获取中间推理结果。
在框219,可以检查中间推理结果是否满足预定条件。如果确定中间推理结果不满足预定条件,则过程200可以返回到框218以重新标识目标层。通过基于排序向第一组目标层中添加至少一个层,可以确定第二组目标层。例如,可以通过添加预定数目(例如,1或2)的层来标识第二组目标层。然后,可以通过保持第二组目标层为第一精度或高于第二精度的其他精度,并且在其余层执行第一精度与第二精度之间的经校准的转换而获取新的推理结果。
如果在框219确定新的推理结果满足预定条件,则过程200可以在框210处完成,并且可以将第二组目标层标识为不适合执行量化的目标层。基于第二轮校准的结果,可以利用经校准的网络来对相同分布的其他输入数据进行推理,从而加速推理过程并保持较高的推理准确度。例如,可以保持所标识的目标层为高精度,并且可以使用所确定的阶码校正值来在其余层执行第一精度与第二精度之间的经校准的转换。
如果在框219确定通过跳过在第二组目标层执行经校准的转换而获取的推理结果不满足预定条件,则过程200可以返回到框218以重新标识目标层,并执行后续步骤。在一些实施例中,可能需要跳过多个层中的所有层来使得推理结果满足预定条件。在这种情况下,可以使用未经量化的网络来进行推理,或者可以在网络的多个层执行到高于第二精度但低于第一精度的其他精度的转换。
以此方式,利用过程200,可以通过多轮校准来确定网络中适合不执行量化的目标层,从而可以在提高计算效率的同时维持较高的推理准确度。
图5示出了根据本公开的一些实施例的校准神经网络量化的过程500的流程图。过程500可以由任意合适的计算设备实现。在框502,通过在神经网络的多个层执行第一精度与第二精度之间的转换,获取第一推理结果,神经网络以第一精度被训练,第二精度包括锥形浮点精度,第一精度高于第二精度。
在一些实施例中,锥形浮点精度的有效位或尾数的位数随着阶码的绝对值的增加而减少。
在一些实施例中,在所述多个层执行到所述第二精度的所述转换以获取所述第一推理结果包括通过以下在所述多个层中的每个层执行所述转换:基于对所述层的所述第一精度的第一输入和第二输入的格式转换,确定所述层的所述第二精度的所述第一输入和所述第二输入;基于所述第二精度的所述第一输入和所述第二输入,确定所述层的所述第一精度的输出数据;以及基于所述层的所述第一精度的输出数据,确定所述层的下一层的第一输入或获取所述第一推理结果。
在框504,若第一推理结果不满足预定条件,在多个层执行第一精度与第二精度之间的经校准的转换,以获取第二推理结果。在一些实施例中,在所述多个层执行到所述第一精度与所述第二精度之间的经校准的转换包括通过以下对所述多个层中的每个层执行所述经校准的转换:基于对所述层的所述第一精度的第一输入和第二输入执行到所述第二精度的量化,确定所述层的所述第二精度的第一量化输入和所述第二精度的第二量化输入;基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第一精度的量化输出数据;基于对所述第一精度的量化输出数据执行反量化,确定所述层的所述第一精度的校准输出数据;以及基于所述层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。
在一些实施例中,对所述层的所述第一精度的第一输入和第二输入执行到所述第二精度的量化包括:对所述层的所述第一精度的第一输入和第二输入分别应用第一阶码校正值和第二阶码校正值,以确定针对所述层的所述第一精度的经缩放的第一输入和经缩放的第二输入,所述第一阶码校正值和所述第二阶码校正值用于移动数据的阶码以缩放数据值;基于对所述第一精度的所述经缩放的第一输入和所述经缩放的第二输入分别执行到所述第二精度的格式转换,确定所述第二精度的第一量化输入和所述第二精度的第二量化输入。基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第一精度的量化输出数据包括:基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第三精度的量化输出数据,所述第三精度是所述第一精度或高于所述第一精度;基于所述层的所述第三精度的量化输出数据,确定所述层的所述第一精度的量化输出数据。对所述第一精度的量化输出数据执行反量化包括:基于对所述第一精度的量化输出数据应用所述第一阶码校正值和所述第二阶码校正值以还原缩放,确定所述层的所述第一精度的校准输出数据。
在框506,若第二推理结果不满足预定条件,在多个层中标识一个或多个目标层以保持第一精度或高于第二精度的其他精度。
在一些实施例中,在所述多个层中标识所述一个或多个目标层包括:确定所述多个层的多个敏感度,每个敏感度指示针对相应层的所述经校准的转换对所述神经网络的推理准确度的影响;以及基于所述多个敏感度的排序,在所述多个层中标识所述一个或多个目标层。
在一些实施例中,过程500还包括:确定所述多个层的多组量化误差,每组量化误差包括相应层的所述第一输入的量化误差和所述第二输入的量化误差,或者每组量化误差包括相应层的所述校准输出数据的量化误差,所述量化误差指示由所述经校准的转换引起的数据值的变化;以及针对所述多个层中的每个层,基于对应的一组量化误差,在搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值。
在一些实施例中,在所述搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值包括:基于所述搜索空间中的第一组候选阶码校正值,确定所述层的所述第一输入的第一组量化误差;基于所述搜索空间中的第二组候选阶码校正值,确定所述层的所述第二输入的第二组量化误差;在所述第一组候选阶码校正值中标识与所述第一组量化误差中的最小量化误差相关联的所述第一阶码校正值;以及在所述第二组候选阶码校正值中标识与所述第二组量化误差中的最小量化误差相关联的所述第二阶码校正值。
在一些实施例中,在所述搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值包括:基于所述搜索空间中的多对候选阶码校正值,确定所述层的所述校准输出数据的多个量化误差;以及在所述多对候选阶码校正值中标识与所述多个量化误差中的最小量化误差相关联的包括所述第一阶码校正值和所述第二阶码校正值的一对候选阶码校正值。
在一些实施例中,确定所述多个层的所述多个敏感度包括:基于所述多个层的所述多组量化误差,确定所述多个层的所述多个敏感度。
在一些实施例中,确定所述多个层的所述多个敏感度包括:针对所述多个层中的每个层,在所述层执行所述第一精度与所述第二精度之间的所述经校准的转换,同时保持所述多个层中的其他层为所述第一精度,以获取与所述层关联的所述神经网络的推理结果;以及基于与所述多个层关联的所述神经网络的多个推理结果,确定所述多个层的所述多个敏感度。
在一些实施例中,基于所述多个敏感度的所述排序,在所述多个层中标识所述一个或多个目标层包括:基于所述多个敏感度的所述排序,在所述多个层中标识第一组目标层;通过保持所述第一组目标层为所述第一精度或高于所述第二精度的其他精度,获取中间推理结果;若所述中间推理结果不满足所述预定条件,基于所述排序向所述第一组目标层添加至少一个层,以确定第二组目标层;以及基于确定通过保持所述第二组目标层为所述第一精度或高于所述第二精度的其他精度而获取的推理结果满足所述预定条件,将所述第二组目标层标识为所述一个或多个目标层。
在一些实施例中,在所述多个层执行所述第一精度与所述第二精度的所述经校准的转换,以获取所述第二推理结果包括:对所述多个层中第一层执行所述经校准的转换,以确定所述第一层的所述第一精度的校准输出数据;基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中第二层的所述第一精度的第一输入;至少基于所述第二层的所述第一精度的第一输入,对所述第二层执行所述经校准的转换,以确定所述第二层的所述第一精度的校准输出数据;以及基于所述第二层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。
在一些实施例中,基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中所述第二层的所述第一精度的第一输入包括:基于对所述第一层的所述第一精度的校准输出数据进行以下操作来确定所述第二层的所述第一精度的所述第一输入:激活操作;或者激活操作和归一化操作。
在一些实施例中,所述第二输入包括权重、激活值或特征图数据。
上文参考图1至图5描述了校准神经网络量化的原理和细节。应理解,上述过程200和500仅是示例性的而不构成对本公开的范围的限制。根据本公开的实施例的校准神经网络量化的方案可以应用于各种领域,诸如图像识别、智能驾驶、语音识别等。待校准的神经网络可以是用于各种领域的网络,诸如计算机视觉领域的ResNet网络、自然语言处理领域的Bert网络等。例如,利用本公开的校准神经网络量化的方案,可以校准对于ResNet网络的量化。例如,可以加速ResNet网络对输入图像进行分类的推理过程,并且维持较好的分类准确度。
示例装置和设备
图6示出了根据本公开实施例的用于校准神经网络的装置600的框图,装置600可以包括多个模块,以用于执行如图2和图5中所讨论的过程200和500中的对应步骤。如图6所示,装置600包括:直接转换单元610,被配置为通过在神经网络的多个层执行第一精度与第二精度之间的转换,获取第一推理结果。所述神经网络以所述第一精度被训练,所述第二精度包括锥形浮点精度,所述第一精度高于所述第二精度。装置600还包括:第一校准单元620,被配置为:若所述第一推理结果不满足预定条件,在所述多个层执行所述第一精度与所述第二精度之间的经校准的转换,以获取第二推理结果。装置600还包括:第二校准单元630,被配置为:若所述第二推理结果不满足所述预定条件,在所述多个层中标识一个或多个目标层以保持所述第一精度或高于所述第二精度的其他精度。
在一些实施例中,锥形浮点精度的有效位或尾数的位数随着阶码的绝对值的增加而减少。
在一些实施例中,直接转换单元610被配置为通过以下在所述多个层中的每个层执行所述转换:基于对所述层的所述第一精度的第一输入和第二输入的格式转换,确定所述层的所述第二精度的所述第一输入和所述第二输入;基于所述第二精度的所述第一输入和所述第二输入,确定所述层的所述第一精度的输出数据;以及基于所述层的所述第一精度的输出数据,确定所述层的下一层的第一输入或获取所述第一推理结果。
在一些实施例中,第一校准单元620被配置为通过以下对所述多个层中的每个层执行所述经校准的转换:基于对所述层的所述第一精度的第一输入和第二输入执行到所述第二精度的量化,确定所述层的所述第二精度的第一量化输入和所述第二精度的第二量化输入;基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第一精度的量化输出数据;基于对所述第一精度的量化输出数据执行反量化,确定所述层的所述第一精度的校准输出数据;以及基于所述层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。
在一些实施例中,第一校准单元620被配置为:对所述层的所述第一精度的第一输入和第二输入分别应用第一阶码校正值和第二阶码校正值,以确定针对所述层的所述第一精度的经缩放的第一输入和经缩放的第二输入,所述第一阶码校正值和所述第二阶码校正值用于移动数据的阶码以缩放数据值;基于对所述第一精度的所述经缩放的第一输入和所述经缩放的第二输入分别执行到所述第二精度的格式转换,确定所述第二精度的第一量化输入和所述第二精度的第二量化输入。第一校准单元620被配置为:基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第三精度的量化输出数据,所述第三精度是所述第一精度或高于所述第一精度;基于所述层的所述第三精度的量化输出数据,确定所述层的所述第一精度的量化输出数据。第一校准单元620被配置为:基于对所述第一精度的量化输出数据应用所述第一阶码校正值和所述第二阶码校正值以还原缩放,确定所述层的所述第一精度的校准输出数据。
在一些实施例中,第二校准单元630被配置为:确定所述多个层的多个敏感度,每个敏感度指示针对相应层的所述经校准的转换对所述神经网络的推理准确度的影响;以及基于所述多个敏感度的排序,在所述多个层中标识所述一个或多个目标层。
在一些实施例中,装置600还包括量化误差确定单元,被配置为:确定所述多个层的多组量化误差,每组量化误差包括相应层的所述第一输入的量化误差和所述第二输入的量化误差,或者每组量化误差包括相应层的所述校准输出数据的量化误差,所述量化误差指示由所述经校准的转换引起的数据值的变化;以及针对所述多个层中的每个层,基于对应的一组量化误差,在搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值。
在一些实施例中,第一校准单元620还被配置为:基于所述搜索空间中的第一组候选阶码校正值,确定所述层的所述第一输入的第一组量化误差;基于所述搜索空间中的第二组候选阶码校正值,确定所述层的所述第二输入的第二组量化误差;在所述第一组候选阶码校正值中标识与所述第一组量化误差中的最小量化误差相关联的所述第一阶码校正值;以及在所述第二组候选阶码校正值中标识与所述第二组量化误差中的最小量化误差相关联的所述第二阶码校正值。
在一些实施例中,第一校准单元620还被配置为:基于所述搜索空间中的多对候选阶码校正值,确定所述层的所述校准输出数据的多个量化误差;以及在所述多对候选阶码校正值中标识与所述多个量化误差中的最小量化误差相关联的包括所述第一阶码校正值和所述第二阶码校正值的一对候选阶码校正值。
在一些实施例中,第二校准单元630被配置为:基于所述多个层的所述多组量化误差,确定所述多个层的所述多个敏感度。
在一些实施例中,第二校准单元630被配置为:针对所述多个层中的每个层,在所述层执行所述第一精度与所述第二精度之间的所述经校准的转换,同时保持所述多个层中的其他层为所述第一精度,以获取与所述层关联的所述神经网络的推理结果;以及基于与所述多个层关联的所述神经网络的多个推理结果,确定所述多个层的所述多个敏感度。
在一些实施例中,第二校准单元630被配置为:基于所述多个敏感度的所述排序,在所述多个层中标识第一组目标层;通过保持所述第一组目标层为所述第一精度或高于所述第二精度的其他精度,获取中间推理结果;若所述中间推理结果不满足所述预定条件,基于所述排序向所述第一组目标层添加至少一个层,以确定第二组目标层;以及基于确定通过保持所述第二组目标层为所述第一精度或高于所述第二精度的其他精度而获取的推理结果满足所述预定条件,将所述第二组目标层标识为所述一个或多个目标层。
在一些实施例中,第一校准单元620还被配置为:对所述多个层中第一层执行所述经校准的转换,以确定所述第一层的所述第一精度的校准输出数据;基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中第二层的所述第一精度的第一输入;至少基于所述第二层的所述第一精度的第一输入,对所述第二层执行所述经校准的转换,以确定所述第二层的所述第一精度的校准输出数据;以及基于所述第二层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。
在一些实施例中,第一校准单元620还被配置为基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中所述第二层的所述第一精度的第一输入包括:基于对所述第一层的所述第一精度的校准输出数据进行以下操作来确定所述第二层的所述第一精度的所述第一输入:激活操作;或者激活操作和归一化操作。
在一些实施例中,所述第二输入包括权重、激活值或特征图数据。
根据本公开的实施例还提供了一种芯片,该芯片被配置为在神经网络的多个层执行第一精度与第二精度之间的经校准的转换以获取推理结果,该神经网络以第一精度被训练,第二精度包括锥形浮点精度,第一精度高于第二精度。应理解,该芯片可以是用于执行神经网络推理的芯片的一部分,并且可以与其他芯片通信。该芯片可以支持对神经网络量化的校准。备选地或附加地,该芯片可以支持经校准的量化神经网络的推理。换言之,该芯片可以用于校准过程或推理过程。应理解,在本文中所使用的术语“芯片”也可以指代“硬件加速器”、“硬件电路”等。
根据本公开的实施例的芯片可以实现上文中参考图1至图6所描述的经校准的转换。换言之,取决于具体实现,芯片可以执行上述矩阵乘法操作、移码操作、格式转换操作、激活操作、归一化操作等。在一些实施例中,矩阵乘法操作可以由芯片中的张量计算单元实现。量化操作和反量化操作可以由芯片中的随路计算单元实现。归一化操作可以由芯片中的向量计算单元来实现。
图7a和图7b示出了根据本公开的一些实施例的示例芯片的示意图。应理解,图7a和图7b中以FP32精度作为第一精度的示例,HiF8作为第二精度的示例,而不构成对本公开的范围的限制。
如上所述,芯片被配置为在神经网络的多个层执行经校准的转换。参考图7a和图7b,芯片可以依次在第L-1层、第L层和第L+1层执行经校准的转换。基于对第L-1层的输出数据的量化操作,例如包括移码操作(例如,与2-N_l相乘)和格式转换操作,可以得到第L层的经缩放的第二精度的第一输入,即以“A HiF8”示出的输入数据。类似地,第L层的经缩放的第二精度的第二输入可以通过与2-K_l相乘而被缩放。第L层的经缩放的第二精度的第二输入可以是权重,例如被示出为“W HiF8”的权重。备选地,尽管未示出,第L层的经缩放的第二精度的第二输入可以是其他层的输出数据、激活值、或特征图数据。N_l是第一阶码校正值而K_l是第二阶码校正值。
如图7a和图7b所示,芯片包括张量计算单元710、725。张量计算单元710和725可以是实现矩阵乘法操作的同一单元或不同单元。张量计算单元710、725被配置为:基于神经网络的多个层中第一层的经缩放的第二精度的第一输入(也即,第一量化输入,例如“AHiF8”)和经缩放的第二精度的第二输入(也即,第二量化输入,例如“W HiF8”),确定该层的经缩放的第三精度的输出数据(未示出)。如上所述,取决于具体实现,第三精度可以与第一精度相同或高于第一精度。经缩放的第二精度的第一输入基于第一阶码校正值被缩放,经缩放的第二精度的第二输入基于第二阶码校正值被缩放。
如图7a和图7b所示,芯片还包括随路计算单元721。随路计算单元721可以是能够执行非矩阵乘法和非向量乘法的简单操作的任何合适的计算单元。取决于不同实现,随路计算单元721可以被配置为实现不同功能。
在一些示例芯片中,如图7a所示,随路计算单元721被配置为对张量计算单元710输出的数据进行反量化。换言之,随路计算单元721被配置为基于对经缩放的第三精度的输出数据应用第一阶码校正值和第二阶码校正值,确定第L层的第三精度的校准输出数据。如图7a所示,随路计算单元721通过将经缩放的第三精度的输出数据与2N_l+K_l相乘来还原缩放,从而确定第L层的第三精度的校准输出数据(示出为A×2N_l+K_l FP32)。
随路计算单元721还基于第L层的第三精度的校准输出数据来确定第L层的第一精度的校准输出数据。在第三精度与第一精度相同的情况下,可以直接确定第L层的第一精度的校准输出数据。在第三精度高于第一精度的情况下,可以基于对第L层的第三精度的校准输出数据的格式转换来确定第L层的第一精度的校准输出数据。
第L层的第一精度的校准输出数据被进一步处理以供输入到后续的第L+1层,以用于获取推理结果。如图7a所示,芯片还包括向量计算单元722,向量计算单元722被配置为基于第L层的第一精度的校准输出数据,确定第L+1层的第一精度的输入数据,例如第一输入。在一些实施例中,可以将第L层的第一精度的校准输出数据直接确定为第L+1层的第一精度的输入数据。备选地,可以对第L层的第一精度的校准输出数据执行一个或多个附加操作来确定第L+1层的第一精度的输入数据。附加操作的示例可以包括激活操作、归一化操作、池化操作等。
向量计算单元722还被配置为对第L+1层的第一精度的输入数据进行量化。换言之,向量计算单元722基于对第L+1层的第一精度的输入数据应用第三阶码校正值,例如与2-N_(l+1)相乘,来确定第L+1层的经缩放的第一精度的输入数据。向量计算单元722还基于对第L+1层经缩放的第一精度的输入数据的格式转换,来确定第L+1层的经缩放的第二精度的输入数据(例如,被示出为A HiF8的第一输入)。在一些实施例中,在校准过程中,可以基于其他层的输出数据类似地确定第L+1层的经缩放的第二精度的第二输入。备选地,在推理过程中,可以使用所确定的权重作为第L+1层的经缩放的第二精度的第二输入。应理解,上述操作中不涉及向量乘法的简单操作也可以由随路计算单元721或附加的随路计算单元来执行。
与张量计算单元710类似,张量计算单元725可以基于第L+1层的经缩放的第二精度的第一输入和第二输入,确定第L+1层的经缩放的第三精度的输出数据。应理解,尽管图7a中未示出,随路计算单元可以继续对第L+1层的经缩放的第三精度的输出数据执行反量化操作,并且向量计算单元可以继续执行归一化操作以及量化操作,以用于迭代地获取推理结果。
在另一些示例芯片中,如图7b所示,随路计算单元721被配置为对第L层的经缩放的输出数据执行反量化以及对第L+1层的输入数据进行量化。
如图7b所示,通过与2N_l+K_l-N_(l+1)相乘,随路计算单元721对由张量计算单元710输出的第L层的经缩放的第三精度的输出数据应用第一阶码校正值、第二阶码校正值、第三阶码阶码值,从而确定第L+1层的经缩放的第一精度的输入数据(例如,第一输入,示出为A×2N_l+K_l-N_(l+1)FP32)。在一些实施例中,可以利用单个移码操作来同时应用第一阶码校正值、第二阶码校正值和第三阶码阶码值。随路计算单元721还被配置为基于对第L+1层的经缩放的第一精度的输入数据的格式转换,确定第L+1层的经缩放的第二精度的输入数据,以用于获取推理结果。
在一些实施例中,随路计算单元721可以基于对经缩放的第三精度的输出数据应用第一阶码校正值、第二阶码校正值、第三阶码校正值和附加操作,确定第L+1层的经缩放的第一精度的输入数据。附加操作的示例可以包括不涉及矩阵乘法和向量乘法的简单操作,例如激活操作、池化操作等。
在一些实施例中,随路计算单元721可以基于对经缩放的第三精度的输出数据应用第一阶码校正值、第二阶码校正值、第三阶码校正值,确定第L+1层的经缩放的第三精度的中间输入。基于该第三精度的中间输入,随路计算单元721可以利用诸如格式转换或量化操作等来确定第一精度的中间输入。针对第L+1层的经缩放的第一精度的中间输入,随路计算单元721可以执行附加操作,以确定第L+1层的经缩放的第一精度的第一输入。备选地,随路计算单元721可以对第三精度或第二精度的中间输入执行附加操作以确定第L+1层的经缩放的第一精度的第一输入。
如参考图7a所讨论的,张量计算单元725可以基于第L+1层的经缩放的第二精度的第一输入和第二输入(也即,第一量化输入和第二量化输入),确定第L+1层的经缩放的第三精度的输出数据。尽管图7b中未示出,随路计算单元可以继续对第L+1层的输出数据执行反量化操作以及用于下一层的量化操作,以用于迭代地获取推理结果。
图8示出了可以用来实施本公开的实施例的示例设备800的示意性框图。如图所示,设备800包括计算单元801,其可以根据存储在随机存取存储器(RAM)803和/或只读存储器(ROM)802的计算机程序指令或者从存储单元808加载到RAM 803和/或ROM 802中的计算机程序指令,来执行各种适当的动作和处理。在RAM 803和/或ROM 802中,还可存储设备800操作所需的各种程序和数据。计算单元801和RAM 803和/或ROM 802通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
设备800中的多个部件连接至I/O接口805,包括:输入单元806,例如键盘、鼠标等;输出单元807,例如各种类型的显示器、扬声器等;存储单元808,例如磁盘、光盘等;以及通信单元809,例如网卡、调制解调器、无线通信收发机等。通信单元809允许设备800通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
计算单元801可以是各种具有处理和计算能力的通用和/或专用处理组件。计算单元801的一些示例包括但不限于中央处理单元(CPU)、图形处理单元(GPU)、各种专用的人工智能(AI)计算芯片、各种运行机器学习模型算法的计算单元、数字信号处理器(DSP)、以及任何适当的处理器、控制器、微控制器等。计算单元801执行上文所描述的各个方法和处理,例如过程200和500。例如,在一些实施例中,过程200和过程500可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元808。在一些实施例中,计算机程序的部分或者全部可以经由RAM和/或ROM和/或通信单元809而被载入和/或安装到设备800上。当计算机程序加载到RAM和/或ROM并由计算单元801执行时,可以执行上文描述的过程200和过程500的一个或多个步骤。备选地,在其他实施例中,计算单元801可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行过程200和500。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现,当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令,在服务器或终端上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴光缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是服务器或终端能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(如软盘、硬盘和磁带等),也可以是光介质(如数字视盘(digital video disk,DVD)等),或者半导体介质(如固态硬盘等)。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本公开的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (23)
1.一种校准神经网络量化的方法,其特征在于,包括:
通过在神经网络的多个层执行第一精度与第二精度之间的转换,获取第一推理结果,所述神经网络以所述第一精度被训练,所述第二精度包括锥形浮点精度,所述第一精度高于所述第二精度;
若所述第一推理结果不满足预定条件,在所述多个层执行所述第一精度与所述第二精度之间的经校准的转换,以获取第二推理结果;以及
若所述第二推理结果不满足所述预定条件,在所述多个层中标识一个或多个目标层,以保持所述第一精度或高于所述第二精度的其他精度。
2.根据权利要求1所述的方法,其中所述锥形浮点精度的有效位或尾数的位数随着阶码的绝对值的增加而减少。
3.根据权利要求1或2所述的方法,其中在所述多个层执行到所述第二精度的所述转换以获取所述第一推理结果包括通过以下在所述多个层中的每个层执行所述转换:
基于对所述层的所述第一精度的第一输入和第二输入的格式转换,确定所述层的所述第二精度的所述第一输入和所述第二输入;
基于所述第二精度的所述第一输入和所述第二输入,确定所述层的所述第一精度的输出数据;以及
基于所述层的所述第一精度的输出数据,确定所述层的下一层的第一输入或获取所述第一推理结果。
4.根据权利要求1至3中任一项所述的方法,其中在所述多个层执行到所述第一精度与所述第二精度之间的经校准的转换包括通过以下对所述多个层中的每个层执行所述经校准的转换:
基于对所述层的所述第一精度的第一输入和第二输入执行到所述第二精度的量化,确定所述层的所述第二精度的第一量化输入和所述第二精度的第二量化输入;
基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第一精度的量化输出数据;
基于对所述第一精度的量化输出数据执行反量化,确定所述层的所述第一精度的校准输出数据;以及
基于所述层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。
5.根据权利要求4所述的方法,
其中对所述层的所述第一精度的第一输入和第二输入执行到所述第二精度的量化包括:
对所述层的所述第一精度的第一输入和第二输入分别应用第一阶码校正值和第二阶码校正值,以确定针对所述层的所述第一精度的经缩放的第一输入和经缩放的第二输入,所述第一阶码校正值和所述第二阶码校正值用于移动数据的阶码以缩放数据值;
基于对所述第一精度的所述经缩放的第一输入和所述经缩放的第二输入分别执行到所述第二精度的格式转换,确定所述第二精度的第一量化输入和所述第二精度的第二量化输入;
其中基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第一精度的量化输出数据包括:
基于所述第二精度的第一量化输入和所述第二精度的第二量化输入,确定所述层的第三精度的量化输出数据,所述第三精度是所述第一精度或高于所述第一精度;
基于所述层的所述第三精度的量化输出数据,确定所述层的所述第一精度的量化输出数据;并且
其中对所述第一精度的量化输出数据执行反量化包括:
基于对所述第一精度的量化输出数据应用所述第一阶码校正值和所述第二阶码校正值以还原缩放,确定所述层的所述第一精度的校准输出数据。
6.根据权利要求4或5所述的方法,其中在所述多个层中标识所述一个或多个目标层包括:
确定所述多个层的多个敏感度,每个敏感度指示针对相应层的所述经校准的转换对所述神经网络的推理准确度的影响;以及
基于所述多个敏感度的排序,在所述多个层中标识所述一个或多个目标层。
7.根据权利要求6所述的方法,还包括:
确定所述多个层的多组量化误差,每组量化误差包括相应层的所述第一输入的量化误差和所述第二输入的量化误差,或者每组量化误差包括相应层的所述校准输出数据的量化误差,所述量化误差指示由所述经校准的转换引起的数据值的变化;以及
针对所述多个层中的每个层,基于对应的一组量化误差,在搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值。
8.根据权利要求7所述的方法,其中在所述搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值包括:
基于所述搜索空间中的第一组候选阶码校正值,确定所述层的所述第一输入的第一组量化误差;
基于所述搜索空间中的第二组候选阶码校正值,确定所述层的所述第二输入的第二组量化误差;
在所述第一组候选阶码校正值中标识与所述第一组量化误差中的最小量化误差相关联的所述第一阶码校正值;以及
在所述第二组候选阶码校正值中标识与所述第二组量化误差中的最小量化误差相关联的所述第二阶码校正值。
9.根据权利要求7所述的方法,其中在所述搜索空间中标识针对所述层的所述第一阶码校正值和所述第二阶码校正值包括:
基于所述搜索空间中的多对候选阶码校正值,确定所述层的所述校准输出数据的多个量化误差;以及
在所述多对候选阶码校正值中标识与所述多个量化误差中的最小量化误差相关联的包括所述第一阶码校正值和所述第二阶码校正值的一对候选阶码校正值。
10.根据权利要求7至9中任一项所述的方法,其中确定所述多个层的所述多个敏感度包括:
基于所述多个层的所述多组量化误差,确定所述多个层的所述多个敏感度。
11.根据权利要求6至10中任一项所述的方法,其中确定所述多个层的所述多个敏感度包括:
针对所述多个层中的每个层,在所述层执行所述第一精度与所述第二精度之间的所述经校准的转换,同时保持所述多个层中的其他层为所述第一精度,以获取与所述层关联的所述神经网络的推理结果;以及
基于与所述多个层关联的所述神经网络的多个推理结果,确定所述多个层的所述多个敏感度。
12.根据权利要求6至11中任一项所述的方法,其中基于所述多个敏感度的所述排序,在所述多个层中标识所述一个或多个目标层包括:
基于所述多个敏感度的所述排序,在所述多个层中标识第一组目标层;
通过保持所述第一组目标层为所述第一精度或高于所述第二精度的其他精度,获取中间推理结果;
若所述中间推理结果不满足所述预定条件,基于所述排序向所述第一组目标层添加至少一个层,以确定第二组目标层;以及
基于确定通过保持所述第二组目标层为所述第一精度或高于所述第二精度的其他精度而获取的推理结果满足所述预定条件,将所述第二组目标层标识为所述一个或多个目标层。
13.根据权利要求4至12中任一项所述的方法,其中在所述多个层执行所述第一精度与所述第二精度的所述经校准的转换,以获取所述第二推理结果包括:
对所述多个层中第一层执行所述经校准的转换,以确定所述第一层的所述第一精度的校准输出数据;
基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中第二层的所述第一精度的第一输入;
至少基于所述第二层的所述第一精度的第一输入,对所述第二层执行所述经校准的转换,以确定所述第二层的所述第一精度的校准输出数据;以及
基于所述第二层的所述第一精度的校准输出数据,确定所述层的下一层的第一输入或获取所述第二推理结果。
14.根据权利要求13所述的方法,其中基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中所述第二层的所述第一精度的第一输入包括:
基于对所述第一层的所述第一精度的校准输出数据进行以下操作来确定所述第二层的所述第一精度的所述第一输入:
激活操作;或者
激活操作和归一化操作。
15.根据权利要求3至14中任一项所述的方法,其中所述第二输入包括权重、激活值或特征图数据。
16.一种用于校准神经网络量化的装置,包括:
直接转换单元,被配置为通过在神经网络的多个层执行第一精度与第二精度之间的转换,获取第一推理结果,所述神经网络以所述第一精度被训练,所述第二精度包括锥形浮点精度,所述第一精度高于所述第二精度;
第一校准单元,被配置为:若所述第一推理结果不满足预定条件,在所述多个层执行所述第一精度与所述第二精度之间的经校准的转换,以获取第二推理结果;以及
第二校准单元,被配置为:若所述第二推理结果不满足所述预定条件,在所述多个层中标识一个或多个目标层,以保持所述第一精度或高于所述第二精度的其他精度。
17.一种芯片,被配置为在神经网络的多个层执行第一精度与第二精度之间的经校准的转换以获取推理结果,所述神经网络以所述第一精度被训练,所述第二精度包括锥形浮点精度,所述第一精度高于所述第二精度,所述芯片包括:
张量计算单元,被配置为:基于所述多个层中第一层的经缩放的所述第二精度的第一输入和经缩放的所述第二精度的第二输入,确定所述第一层的经缩放的第三精度的输出数据,所述经缩放的所述第二精度的第一输入基于第一阶码校正值被缩放,经缩放的所述第二精度的第二输入基于第二阶码校正值被缩放,所述第三精度是所述第一精度或高于所述第一精度;以及
随路计算单元,被配置为:
基于对经缩放的所述第三精度的输出数据应用所述第一阶码校正值、所述第二阶码校正值和第三阶码校正值,确定所述多个层中跟随所述第一层的第二层的经缩放的所述第一精度的第一输入;以及
基于对所述第二层的经缩放的所述第一精度的第一输入的格式转换,确定所述第二层的经缩放的所述第二精度的第一输入,以用于获取所述推理结果。
18.根据权利要求17所述的芯片,其中所述随路计算单元进一步被配置为:
基于对经缩放的所述第三精度的输出数据应用所述第一阶码校正值、所述第二阶码校正值、所述第三阶码校正值和激活操作,确定所述第二层的经缩放的所述第一精度的第一输入。
19.一种芯片,被配置为在神经网络的多个层执行第一精度与第二精度之间的经校准的转换以获取推理结果,所述神经网络以所述第一精度被训练,所述第二精度包括锥形浮点精度,所述第一精度高于所述第二精度,所述芯片包括:
张量计算单元,被配置为:基于所述多个层中第一层的经缩放的所述第二精度的第一输入和经缩放的所述第二精度的第二输入,确定所述第一层的经缩放的第三精度的输出数据,所述经缩放的所述第二精度的第一输入基于第一阶码校正值被缩放,经缩放的所述第二精度的第二输入基于第二阶码校正值被缩放,所述第三精度是所述第一精度或高于所述第一精度;
随路计算单元,被配置为:
基于对经缩放的所述第三精度的输出数据应用所述第一阶码校正值和所述第二阶码校正值,确定所述第一层的所述第三精度的校准输出数据;以及
基于所述第一层的所述第三精度的校准输出数据,确定所述第一层的所述第一精度的校准输出数据;
向量计算单元,被配置为:
基于所述第一层的所述第一精度的校准输出数据,确定所述多个层中跟随所述第一层的第二层的所述第一精度的第一输入;
基于对所述第二层的所述第一精度的第一输入应用第三阶码校正值,确定所述第二层的经缩放的所述第一精度的第一输入;以及
基于所述第二层的经缩放的所述第一精度的第一输入的格式转换,确定所述第二层的经缩放的所述第二精度的第一输入,以用于获取所述推理结果。
20.根据权利要求19所述的芯片,其中所述向量计算单元进一步被配置为:
针对所述第一层的所述第一精度的校准输出数据,执行归一化操作,以确定所述第二层的所述第一精度的第一输入。
21.一种电子设备,包括:
至少一个计算单元;
至少一个存储器,所述至少一个存储器被耦合到所述至少一个计算单元并且存储用于由所述至少一个计算单元执行的指令,所述指令当由所述至少一个计算单元执行时,使所述电子设备执行根据权利要求1-15中任一项所述的方法。
22.一种计算机可读存储介质,其上存储有计算机程序,所述程序被处理器执行时实现根据权利要求1-15中任一项所述的方法。
23.一种计算机程序产品,包括计算机可执行指令,其中所述计算机可执行指令在被处理器执行时实现根据权利要求1-15中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275427.3A CN117973480A (zh) | 2022-10-18 | 2022-10-18 | 校准神经网络量化的方法、装置、设备、介质和程序产品 |
PCT/CN2023/121225 WO2024082932A1 (zh) | 2022-10-18 | 2023-09-25 | 校准神经网络量化的方法、装置、设备、介质和程序产品 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211275427.3A CN117973480A (zh) | 2022-10-18 | 2022-10-18 | 校准神经网络量化的方法、装置、设备、介质和程序产品 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117973480A true CN117973480A (zh) | 2024-05-03 |
Family
ID=90736936
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211275427.3A Pending CN117973480A (zh) | 2022-10-18 | 2022-10-18 | 校准神经网络量化的方法、装置、设备、介质和程序产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN117973480A (zh) |
WO (1) | WO2024082932A1 (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118133924A (zh) * | 2024-05-08 | 2024-06-04 | 深圳鲲云信息科技有限公司 | 用于卷积网络均衡量化的方法及计算设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11676003B2 (en) * | 2018-12-18 | 2023-06-13 | Microsoft Technology Licensing, Llc | Training neural network accelerators using mixed precision data formats |
US20200210840A1 (en) * | 2018-12-31 | 2020-07-02 | Microsoft Technology Licensing, Llc | Adjusting precision and topology parameters for neural network training based on a performance metric |
CN111831355B (zh) * | 2020-07-09 | 2023-05-16 | 北京灵汐科技有限公司 | 权重精度配置方法、装置、设备及存储介质 |
CN113971457B (zh) * | 2021-10-29 | 2024-02-02 | 苏州浪潮智能科技有限公司 | 一种神经网络的计算性能优化方法及系统 |
-
2022
- 2022-10-18 CN CN202211275427.3A patent/CN117973480A/zh active Pending
-
2023
- 2023-09-25 WO PCT/CN2023/121225 patent/WO2024082932A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2024082932A1 (zh) | 2024-04-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110413255B (zh) | 人工神经网络调整方法和装置 | |
JP7231731B2 (ja) | 適応量子化方法及び装置、デバイス、媒体 | |
CN112149797B (zh) | 神经网络结构优化方法和装置、电子设备 | |
US11704556B2 (en) | Optimization methods for quantization of neural network models | |
CN110874625A (zh) | 一种深度神经网络量化方法及装置 | |
WO2024082932A1 (zh) | 校准神经网络量化的方法、装置、设备、介质和程序产品 | |
US11531884B2 (en) | Separate quantization method of forming combination of 4-bit and 8-bit data of neural network | |
CN110955405B (zh) | 一种输入数据的处理及指数值获取方法、装置及电子设备 | |
CN113642711B (zh) | 一种网络模型的处理方法、装置、设备和存储介质 | |
US20230133337A1 (en) | Quantization calibration method, computing device and computer readable storage medium | |
US11514320B2 (en) | Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program | |
CN112561050B (zh) | 一种神经网络模型训练方法及装置 | |
CN114830137A (zh) | 用于生成预测模型的方法和系统 | |
CN114169513B (zh) | 神经网络的量化方法、装置、存储介质及电子设备 | |
JP2021043906A (ja) | 情報処理装置、情報処理方法および情報処理プログラム | |
CN113177627B (zh) | 优化系统、重新训练系统及其方法及处理器和可读介质 | |
CN117348837A (zh) | 浮点精度模型的量化方法、装置、电子设备以及存储介质 | |
US11410036B2 (en) | Arithmetic processing apparatus, control method, and non-transitory computer-readable recording medium having stored therein control program | |
CN114139678A (zh) | 卷积神经网络量化方法、装置、电子设备和存储介质 | |
CN114444667A (zh) | 训练神经网络的方法及装置、电子设备 | |
CN114065913A (zh) | 模型量化方法、装置及终端设备 | |
CN116472538A (zh) | 用于量化神经网络的方法和系统 | |
US20220261619A1 (en) | Data block processing method and apparatus, device, and storage medium | |
US20230385600A1 (en) | Optimizing method and computing apparatus for deep learning network and computer-readable storage medium | |
WO2024046183A1 (zh) | 模型压缩方法、装置以及相关设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |