技术领域
[0001] 本发明涉及一种动态量化神经网络的推理方法,属于神经网络量化技术领域,应用于FPGA/ASIC神经网络专用硬件。
相关背景技术
[0002] 模型量化是一种广泛使用的压缩和加速深度神经网络推理的技术,量化模型减少存储和计算需求。在神经网络专用硬件中,模型推理性能瓶颈在于访存,提高计算密度对加速有显著的优化效果。
[0003] 动态定点数是通过对张量中的整数值使用共同的指数,可以自由改变每个张量的指数。与浮点数相比,动态定点数降低了硬件中的内存和带宽要求,指数的存储和计算被整个张量分摊。
[0004] 谷歌在2018年《Quantization and Training of Neural Networks for Efficient Integer Arithmetic Only Inference》文章中,提出了量化感知训练,在前向传播中加入伪量化,提升网络量化后的精度。
[0005] 中国专利公开号CN110363281A,公开日为2019年10月22日,名称为“一种卷积神经网络量化方法、装置、计算机和存储介质”中公开了一种卷积神经网络量化方法,该方法对卷积神经网络进行量化,重训练量化后的网络,确定最佳的比例因子。但上述专利没有涉及量化神经网络推理中比例因子的计算方法,在模型推理时,输出张量的比例因子计算需要遍历整个输出张量找出最大绝对值。因此,上述专利不能减少量化模型的推理计算复杂度,不能达到推理加速的效果。
具体实施方式
[0043] 为了更好的理解上述技术方案,下面通过附图以及具体实施例对本申请技术方案做详细的说明,应当理解本申请实施例以及实施例中的具体特征是对本申请技术方案的详细的说明,而不是对本申请技术方案的限定,在不冲突的情况下,本申请实施例以及实施例中的技术特征可以相互组合。
[0044] 以下结合说明书附图对本申请实施例所提供的一种动态量化神经网络的推理方法做进一步详细的说明,具体实现方式可以包括(如图1~3所示):
[0045] 对量化前神经网络模型使用测试集进行浮点数推理,记录每层输入及输出张量的最大最小值、均值标准差;
[0046] 通过数据统计模型来估计同一张量数值范围的趋势,利用它来预测溢出,并预先增加指数来防止溢出,同样如果数值范围的趋势下降,可以缩小指数以更好的利用可用范围,减小量化噪声;
[0047] 根据统计数据对神经网络中每个张量预测出一个最佳的比例因子,如果同一张量在网络中的不同计算中被重复使用,分别跟踪每次使用该张量的统计值;
[0048] 使用软件仿真,模拟硬件加速器量化推理过程,并验证网络输出结果的准确性;
[0049] 对预测的比例因子进行相邻层间等效放缩优化,对于相邻两层中权重张量对应比例因子相差较大且均为线性函数,对上下层权重进行相反放缩;
[0050] 在量化神经网络模型部署时,输入量化后的模型和比例因子集合,该比例因子为2的整数次幂,在硬件运算中使用移位运算代替比例因子的乘法运算;
[0051] 模型推理时各层算子的输入和输出张量对应的比例因子直接作为计算单元的输入和输出定点数张量的指数。
[0052] 在本申请实施例所提供的方案中,图1为本发明具体步骤实例提供的动态量化神经网络队里方法流程图。
[0053] 步骤1,已训练的浮点网络推理。
[0054] 对量化前神经网络模型使用测试集进行浮点数推理。本发明从互联网下载一个预训练好的YOLOv3‑416网络模型,该网络中共有75个卷积层,使用了特征金字塔结构融合多尺度特征,是一个深度目标检测神经网络。
[0055] 步骤2,权重及激活值统计。
[0056] 记录每层输入及输出张量的最大最小值、均值标准差。使用队列来跟踪浮点推理中每个张量的统计值,存储这些值的历史数据。这些张量包括了原始网络中的权重等参数,还包括了推理过程中各层输出的激活值。
[0057] 步骤3,各张量比例因子预测。
[0058] 在动态量化的深度神经网络模型中,数值的范围变化足够缓慢,可以根据历史趋势高精度地预测指数。如果输入张量是独立同分布的,网络中每层的数值,如权重和激活值将具有接近的指数,根据历史统计数据直接使用指数是可行的。通过数据统计模型来估计同一张量数值范围的趋势,利用它来预测溢出,并预先增加指数来防止溢出,同样如果数值范围的趋势下降,可以缩小指数以更好的利用可用范围,减小量化噪声。
[0059] 步骤4,量化推理通路分析。
[0060] 使用软件仿真,模拟硬件加速器量化推理过程,并验证网络输出结果的准确性。在本发明的实例中,YOLOv3网络使用8比特动态量化后,与原始网络相比,平均精度损失为5.54%。
[0061] 步骤5,比例因子优化。
[0062] 对预测的比例因子进行相邻层间等效放缩优化,对于相邻两层中权重张量对应比例因子相差较大且均为线性函数,对上下层权重进行相反放缩。
[0063] 图2是相邻两层间单通道等效放缩,YOLOv3中每个残差块内有两个卷积层可以进行比例因子优化,对网络中每个残差块使用一次均衡算法即可。假设这两层卷积层中权重某通道的量化范围为r1和r2,使用几何平均值来均衡二者,比例因子s为:
[0064]
[0065] 使用此公式对整个网络中所有残差块进行迭代,优化后第一个卷积层量化范围缩小了4倍,对应量化精度提升4倍,网络中各卷积层权重分布范围更为均衡。
[0066] 经过优化后的8比特动态量化YOLOv3网络平均精度损失下降至0.46%。
[0067] 步骤6,量化模型硬件推理。
[0068] 图3为本发明一实例中支持位运算的神经网络加速硬件结构,在量化神经网络模型部署时,输入量化后的模型和比例因子集合,该比例因子为2的整数次幂,在硬件运算中使用移位运算代替比例因子的乘法运算。模型推理时各层算子的输入和输出张量对应的比例因子直接作为计算单元的输入和输出定点数张量的指数。
[0069] 本申请提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机上运行时,使得计算机执行图1所述的方法。
[0070] 本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储器等)上实施的计算机程序产品的形式。
[0071] 本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
[0072] 这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
[0073] 这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
[0074] 显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
[0075] 本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。