CN113971457B - 一种神经网络的计算性能优化方法及系统 - Google Patents
一种神经网络的计算性能优化方法及系统 Download PDFInfo
- Publication number
- CN113971457B CN113971457B CN202111274322.1A CN202111274322A CN113971457B CN 113971457 B CN113971457 B CN 113971457B CN 202111274322 A CN202111274322 A CN 202111274322A CN 113971457 B CN113971457 B CN 113971457B
- Authority
- CN
- China
- Prior art keywords
- value
- training
- neural network
- layer
- activation
- 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.)
- Active
Links
- 238000013528 artificial neural network Methods 0.000 title claims abstract description 115
- 238000000034 method Methods 0.000 title claims abstract description 88
- 238000005457 optimization Methods 0.000 title claims description 6
- 238000012549 training Methods 0.000 claims abstract description 129
- 230000004913 activation Effects 0.000 claims abstract description 117
- 238000013139 quantization Methods 0.000 claims abstract description 94
- 238000006243 chemical reaction Methods 0.000 claims description 10
- 238000012545 processing Methods 0.000 claims description 10
- 238000004364 calculation method Methods 0.000 abstract description 33
- 102100030148 Integrator complex subunit 8 Human genes 0.000 description 12
- 101710092891 Integrator complex subunit 8 Proteins 0.000 description 12
- 230000006870 function Effects 0.000 description 11
- 238000004422 calculation algorithm Methods 0.000 description 9
- 230000008569 process Effects 0.000 description 9
- 101710092887 Integrator complex subunit 4 Proteins 0.000 description 5
- 102100037075 Proto-oncogene Wnt-3 Human genes 0.000 description 5
- 238000013527 convolutional neural network Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 102100028043 Fibroblast growth factor 3 Human genes 0.000 description 3
- 101710092857 Integrator complex subunit 1 Proteins 0.000 description 3
- 102100024061 Integrator complex subunit 1 Human genes 0.000 description 3
- 108050002021 Integrator complex subunit 2 Proteins 0.000 description 3
- 101710092886 Integrator complex subunit 3 Proteins 0.000 description 3
- 102100025254 Neurogenic locus notch homolog protein 4 Human genes 0.000 description 3
- 238000004590 computer program Methods 0.000 description 3
- 230000014509 gene expression Effects 0.000 description 3
- 102000008016 Eukaryotic Initiation Factor-3 Human genes 0.000 description 2
- 108010089790 Eukaryotic Initiation Factor-3 Proteins 0.000 description 2
- 238000007405 data analysis Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000003287 optical effect Effects 0.000 description 2
- 238000011160 research Methods 0.000 description 2
- 102100039131 Integrator complex subunit 5 Human genes 0.000 description 1
- 101710092888 Integrator complex subunit 5 Proteins 0.000 description 1
- 102100030147 Integrator complex subunit 7 Human genes 0.000 description 1
- 101710092890 Integrator complex subunit 7 Proteins 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000001788 irregular Effects 0.000 description 1
- 238000010801 machine learning Methods 0.000 description 1
- 238000010295 mobile communication Methods 0.000 description 1
- 230000001537 neural effect Effects 0.000 description 1
- 102000004169 proteins and genes Human genes 0.000 description 1
- 108090000623 proteins and genes Proteins 0.000 description 1
- 238000013138 pruning Methods 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000013519 translation 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
- G06N3/048—Activation functions
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/21—Design or setup of recognition systems or techniques; Extraction of features in feature space; Blind source separation
- G06F18/214—Generating training patterns; Bootstrap methods, e.g. bagging or boosting
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F18/00—Pattern recognition
- G06F18/20—Analysing
- G06F18/23—Clustering techniques
-
- 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/084—Backpropagation, e.g. using gradient descent
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
Abstract
本发明公开了一种神经网络的计算性能优化方法及系统,方法包括:定义激活值阈值训练方法及权重训练方法;确定神经网络的初始比特位,基于初始比特位对神经网络进行量化训练直到神经网络的推理精度满足预设要求则停止训练;随机抽取预设数量张训练图片进行推理,并在推理结束后获取神经网络每层的激活值,并基于激活值计算得到每层激活值的标准差;获取基于神经网络训练得到的每层的激活值阈值,基于每层激活值的标准差和每层的激活值阈值确定每层分布的集中性,并将各个层的集中性划分为不同的阶梯;计算每一段阶梯的集中性的值,并基于集中性的值,确定对应阶梯的量化比特位。本发明提高了神经网络的计算效率,降低了占用的存储空间。
Description
技术领域
本发明涉及神经网络技术领域,尤其涉及一种神经网络的计算性能优化方法及系统。
背景技术
人工智能越来越走进人们的日常生活中,比如人脸识别,自动驾驶,同步翻译,语音助手,AI换脸与语音合成等。在专业的科研领域,也越来越发挥着重要且不可替代的作用,比如依靠AI算法进行大数据分析,天气预测,物理数据分析,蛋白质结构解析与预测等等。而这些所有的应用都不离开AI算法,这些AI算法都是由不同种类与结构的神经网络构成。神经网络是一种需要大量计算的应用算法,神经网络越深,所需要的计算量越大,对目标设备的计算性能需求就越高。为了追求在科研或者应用上的极致表现,神经网络被设计得越来越深,越来越大。但是随着神经网络结构变得庞大,计算量也是呈现几何级的上升,而这对目标计算设备的计算性能需求进一步提升,这就使得很多应用很难以部署在嵌入式的小型设备或者移动设备上。为了给神经网络瘦身,减少神经网络的计算量,一般有两种做法,第一种是在不改变神经网络结构的基础上,对神经网络的计算中所使用的数据类型进行低比特化或者量化,这样整个神经网络的计算性能会随着低比特化的程度而呈现较为线性的提高,目标计算设备对中间结果和相关计算参数所需的存储空间也会随着低比特化的程度呈现较为线性的较低。实现计算和存储性能的双重提升。第二种是对神经网络结构进行裁剪,在神经网络训练的过程中,将那些对最终计算结果和精度没有影响的神经网络参数和计算层去掉,同样也可以实现计算量大幅减少,且对最终的神经网络计算结果几乎没有影响。但是这种方法因为存在对神经网络的修剪,使得整个神经网络的结构变得不够规整,在目标设备的部署上存在一定的困难。本申请主要是实现了一种可以大幅提高计算效率的第一种做法,即将神经网络中的计算进行低比特化或者量化。
对于一般的神经网络来说,从数学计算的角度讲,它的计算主体就是一层紧接一层的卷积计算。在不同层之间可能存在一些其他的数学操作,但是这些操作只占整个神经网络计算的极少部分。所以对神经网络的量化和相关的量化方法的描述,都是针对卷积计算来展开的。数据类型粗粒度地可分为三种,分别是双精度(double),单精度(float),整型(int)三种。这三种数据类型分别占据64位、32位和32位的计算资源。且从计算的复杂性上来说double>float>int。那么可以说,double占据了最多的计算资源,且耗费了最多的计算时间。int占据了最少的计算资源和耗费了最少的计算时间。这里的int通常指的是INT32,即32位整型,占据32位的计算资源。这里的float也称为FP32,即32位浮点。如果计算硬件支持更低比特的计算,比如INT16(16位整型),FP16(16位浮点),INT8(8位整型),INT4(4位整型),INT3,INT2甚至是INT1。那么就可以使用这些低比特的数据类型来进行计算。比如使用INT16或者FP16相较于INT32,FP32来说相当于增加了一倍的计算资源或者提升了一倍的算力,同理,使用INT8、INT4分别相当于INT32 4倍、8倍的算力。卷积神经网络通常使用float进行计算,那么在保证数学结果或者最后的计算精度的前提下,计算上完全可以使用FP16,INT16,INT8这样低比特甚至是INT4,INT3,INT2,INT1这样超低比特的数据来代替FP32完成计算。
由浮点数据计算转为整型数据计算的过程可以称之为量化,比如FP32转化为较低比特的整型数据的过程,目前卷积神经网络的量化已经成为非常热门的一个领域,量化算法层出不穷。最典型的就是INT8的量化,即将FP32的数据转换化为INT8的数据,用INT8(-128~127)范围内的整数来表示FP32的数据(一般位于-1.0~1.0之间)并进行卷积计算。这类算法的基本原理就是找到卷积网络中的每一层FP32数据的最佳阈值作为量化的边界,假设卷积神经网络某一层中阈值为a,那么本层的量化系数为scale=128/a,本层中所有的元素都要乘以该系数并四舍五入为整数,并将大于127的数据强制等于127,小于-128的数据强制等于-128。这样就保证了所有的数据转化为-128~127之间的整数,并当进行卷积计算的时候,使用转化好的INT8数据进行计算。这个过程中最关键的就是卷积网络中每一层量化阈值的寻找,有的是使用交叉熵的方式,找到最合理的阈值,有的是直接使用每一层网络中FP32数据绝对值的最大值作为阈值。每一种方法都能满足最后计算精度的需求。INT8的量化比较典型的原因是,INT8量化方法简单,且量化后的精度通常能够满足对最终计算结果精度的需求。但是INT8的量化不能满足对计算效率的极致追求,在能够满足最终计算精度的基础上,能尽量使用较低比特数据进行计算。因为前面提到,计算过程中数据使用的比特位越低,存储和计算相应的效能都会呈现较为线性的提升。
在量化的过程中还有一个概念就是训练时量化和训练后量化。对于部署一款AI应用来说,首先要对AI应用进行训练,就是需要大量的数据以及数据标签来对AI模型或者AI卷积神经网络进行训练,直到AI应用的效果满足要求为止。当网络训练完成之后便可以使用训练好的AI应用去进行应用的部署。从目前的文献以及实际的量化效果来看,对于INT8,INT16的量化来说,训练后的量化就能完全满足精度的需求,最后的计算结果与FP32计算结果基本一致或者损失很小,不需要参与前期训练的过程。而对于更低比特的量化比如INT4,INT3,INT2甚至INT1的量化,则需要在训练的过程中量化,每层的量化阈值作为训练的一个参数,当最终训练完成之后,训练的参数也就固定了下来。
传统的低比特量化方法,指的是设定固定的量化精度,比如INT6的量化,就将整个网络的量化精度设定为6比特,要进行INT4的量化,就将整个网络的量化设定为4比特。
一般的,可以将卷积计算表达为:y=∑kx,其中k为神经网络的weight(权重)或者kernel(卷积核),x是卷积网络中当前层的输入或者上一层的输出,称为上一层的feature(特征值),y为当前层的卷积计算结果或者当前层的feature(特征值)。卷积计算过程中会对权重进行量化,并且当经过以上的卷积计算之后有一般会有Relu层(激活层),现有技术的算法直接将Relu之后的激活值限定到[0,1],大部分的激活值都是位于该区间之内,但不可避免地损失了部分数据,对于低比特,比如4bit甚至更低的3bit、2bit的量化来说,会有不小的精度损失;同时量化只能对整个网络设定固定的比特位量化,比如要进行4比特的量化,则对整个网络进行了4比特的量化。同样要进行3比特甚至2比特的量化,则只能对整个网络进行对应比特的量化,这种单一的量化方法并不能充分利用低比特量化带来的优势。
发明内容
有鉴于此,本发明提出了一种神经网络的计算性能优化方法及系统,解决了激活值阈值确定及激活值阈值带来的精度损失问题,解决了固定的低比特量化精度不够的问题,提高了计算效率,降低了占用的存储空间。
基于上述目的,本发明实施例的一方面提供了一种神经网络的计算性能优化方法,具体包括如下步骤:
定义激活值阈值训练方法及权重训练方法;
确定神经网络的初始比特位,基于初始比特位并利用所述激活值阈值训练方法及所述权重训练方法对所述神经网络进行量化训练直到所述神经网络的推理精度满足预设要求则停止训练;
随机抽取预设数量张训练图片进行推理,并在推理结束后获取神经网络每层的激活值,并基于所述激活值计算得到每层激活值的标准差;
获取基于所述神经网络训练得到的每层的激活值阈值,基于所述每层激活值的标准差和所述每层的激活值阈值确定每层分布的集中性,并将各个层的集中性划分为不同的阶梯;
计算每一段阶梯的集中性的值,并基于所述集中性的值,确定对应阶梯的量化比特位。
在一些实施方式中,定义激活值阈值训练方法,包括:
将激活值的范围限定在0到激活值阈值之间;
对激活值进行前向定点量化;
对激活值阈值进行反向更新。
在一些实施方式中,定义权重训练方法,包括:
对所述权重进行值域转换;
对值域转换后的权重进行前向定点量化;
对量化后的权值进行反向更新。
在一些实施方式中,将各个层的集中性划分为不同的阶梯,包括:
基于均值漂移聚类,将神经网络中所有层的激活值按照分布的集中性划分为不同的阶梯。
在一些实施方式中,计算每一段阶梯的集中性的值,包括:
基于以下公式计算每一段阶梯的集中性的值;
其中,CTDn表示每一段阶梯的集中性的值,n表示阶梯序号0,1,……,n;σstgn_mean表示本段阶梯内的标准差均值;σstgn_mean表示本段阶梯内的激活值阈值均值。
在一些实施方式中,基于所述集中性的值,确定对应阶梯的量化比特位,包括:
按照所述集中性的值越大,量化比特位越小的策略,确定所述对应阶梯的量化比特位。
在一些实施方式中,方法进一步包括:
基于各个层对应的量化比特位对所述神经网络进行训练,并基于新一轮神经网络训练的推理精度判断是否返回随机抽取预设数量张训练图片进行推理的步骤。
在一些实施方式中,基于新一轮神经网络训练的推理精度判断是否返回随机抽取预设数量张训练图片进行推理的步骤,包括:
响应于所述新一轮神经网络的推理精度不满足所述预设要求,获取上一轮训练得到的各个层的量化比特位为最优量化比特位。
在一些实施方式中,基于新一轮神经网络训练的推理精度判断是否返回随机抽取预设数量张训练图片进行推理的步骤,包括:
响应于所述新一轮神经网络的推理精度满足所述预设要求,返回随机抽取预设数量张训练图片进行推理的步骤,直至新一轮训练的推理精度满足不了所述预设要求;
获取上一轮训练得到的各个层的量化比特位为最优量化比特位。
本发明实施例的另一方面,还提供了一种神经网络的计算性能优化系统,包括:
配置模块,所述配置模块配置为定义激活值阈值训练方法及权重训练方法;
训练模块,所述训练模块配置为确定神经网络的初始比特位,基于初始比特位并利用所述激活值阈值训练方法及所述权重训练方法对所述神经网络进行量化训练直到所述神经网络的推理精度满足预设要求则停止训练;
处理模块,所述处理模块配置为随机抽取预设数量张训练图片进行推理,并在推理结束后获取神经网络每层的激活值,并基于所述激活值计算得到每层激活值的标准差;
所述处理模块还配置为获取基于所述神经网络训练得到的每层的激活值阈值,基于所述每层激活值的标准差和所述每层的激活值阈值确定每层分布的集中性,并将各个层的集中性划分为不同的阶梯;
所述处理模块还配置为计算每一段阶梯的集中性的值,并基于所述集中性的值,确定对应阶梯的量化比特位。
本发明具有以下有益技术效果:通过定义新的激活值阈值训练方法及新的权重训练方法,基于新的激活值阈值训练方法及新的权重训练方法和设置的初始比特位对神经网络进行训练,可以得到各个层的激活值阈值;训练结束后,抽取的一定数量的训练图片进行推理,获取神经网络每层的激活值分布,并计算得到每层激活值直方图分布的标准差,根据标准差和激活阈值确定激活值分布的集中性;基于每层的集中性将神经网络中所有层的集中性数据根据阶梯划分不同的阶梯,计算每一段阶梯的集中性的值,以确定每段阶梯的量化比特位,通过上述方法解决了激活值阈值确定及激活值阈值带来的精度损失问题,解决了固定的低比特量化精度不够的问题,提高了计算效率,降低了占用的存储空间,提高了神经网络计算效率,降低了占用的存储空间。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的实施例。
图1为本发明提供的神经网络的计算性能优化方法的一实施例的框图;
图2为本发明提供的神经网络的计算性能优化系统的一实施例的示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,以下结合具体实施例,并参照附图,对本发明实施例进一步详细说明。
需要说明的是,本发明实施例中所有使用“第一”和“第二”的表述均是为了区分两个相同名称非相同的实体或者非相同的参量,可见“第一”“第二”仅为了表述的方便,不应理解为对本发明实施例的限定,后续实施例对此不再一一说明。
基于上述目的,本发明实施例的第一个方面,提出了一种神经网络的计算性能优化方法的实施例。如图1所示,其包括如下步骤:
步骤S101、定义激活值阈值训练方法及权重训练方法;
步骤S103、确定神经网络的初始比特位,基于初始比特位并利用所述激活值阈值训练方法及所述权重训练方法对所述神经网络进行量化训练直到所述神经网络的推理精度满足预设要求则停止训练;
步骤S105、随机抽取预设数量张训练图片进行推理,并在推理结束后获取神经网络每层的激活值,并基于所述激活值计算得到每层激活值的标准差;
步骤S107、获取基于所述神经网络训练得到的每层的激活值阈值,基于所述每层激活值的标准差和所述每层的激活值阈值确定每层分布的集中性,并将各个层的集中性划分为不同的阶梯;
步骤S109、计算每一段阶梯的集中性的值,并基于所述集中性的值,确定对应阶梯的量化比特位。
本实施例通过定义新的激活值阈值训练方法及新的权重训练方法,基于新的激活值阈值训练方法及新的权重训练方法和设置的初始比特位对神经网络进行训练;训练结束后,抽取的一定数量的训练图片进行推理,获取神经网络每层的激活值分布,并计算得到每层激活值直方图分布的标准差σl,根据标准差σl和上一训练中确定的每层的激活阈值βl确定激活值分布的集中程度Pl(σl,βl),其中l表征神经网络的层数,Pl(σl,βl)确定该层激活值分布的集中性,且Pl(σl,βl)=(σl,βl),因此某一层的激活值分布的集中性可以表达为包含标准差和阈值两个元素的数组;根据上一步骤中得到的每层的集中性,将神经网络中所有层的集中性数据根据阶梯划分不同的阶梯;计算每一段阶梯的集中性的值,并基于每段集中性的值与量化比特位的关系和初始量化比特位,确定每段阶梯的量化比特位,即确定了各个层的量化比特位。
通过上述方法,提高了神经网络计算效率,降低了占用的存储空间。
在一些实施方式中,定义激活值阈值训练方法,包括:
将激活值的范围限定在0到激活值阈值之间;
对激活值进行前向定点量化;
对激活值阈值进行反向更新。
具体的,激活值的激活范围不再限定于传统的[0,1]之间,而是将该限定范围作为训练过程中损失函数的一个变量,随着训练的进行而实时更新变化,最终达到最佳的阈值范围。
对于卷积神经网络的每一层来说,经过激活之后,例如将激活值阈值设为β,那么有:
其中,yclip为激活值,y为每一个卷积计算的输出,经过以上限定之后yclip∈[0,β]。
之后根据定点量化函数quantizen,将限定范围后的激活值y量化为n比特的定点数据,即:
其中n为我们要量化的bit数,比如我们要将激活值量化为4比特定点数据,那么n就设置为4。yq作为网络当前层的输出或者作为下一层网络的输入参与下一层的卷积计算。
因为激活值阈值β为要训练的参数,需要进行更新,假设卷积网络的损失函数为L,那么基于损失函数得到更新后的激活值阈值为:
其中,η为学习率。
由偏导的可传递性可以得到:
另外由STE(直通估计)可以得到:
因此,当时,Clip函数与普通的ReLU效果相同,β不更新;当时,由以上推导得:/>
在一些实施方式中,定义权重训练方法,包括:
对所述权重进行值域转换;
对值域转换后的权重进行前向定点量化;
对量化后的权值进行反向更新。
具体的,首先定义权重值域转换函数f,输入为没有界限限定的权值kf,输出为[0,1]的数据f(kf),具体为:
然后利用量化函数将权值量化为:
kq=2quantizen(f(kf))-1
因此kq的值域为[-1,1]。
综上,卷积计算的前向过程可以表达为:y=∑kqxq,其中xq为神经网络当前层的输入或者作为上一层网络的输出;kq作为神经网络当前层的输出或者作为下一层网络的输入。
最后对权值进行反向更新,具体更新表达式如下:
在一些实施方式中,将各个层的集中性划分为不同的阶梯,包括:
基于均值漂移聚类,将神经网络中所有层的激活值按照分布的集中性划分为不同的阶梯。
具体的,将神经网络中所有层的集中性数据表示为(P1,P2,P3,...,Pl-1,Pl)根据阶梯划分函数fSTG划分为不同的阶梯段。
假设神经网络的层数为l=10,fSTG(P1,P2,P3,P4,P5,P6,P7,P8,P9,P10)=(P1,P6,P10),(P2,P3,P7),(P4,P5,P8,P9)。
经过分段划分函数fSTG之后,10层的网络,根据激活值分布的集中性数据划分为了3个阶梯。
fSTG属于经典机器学习中的一种聚类算法,称为均值漂移聚类。通过均值漂移聚类将神经网络中所有层的激活值按照分布的集中性进行聚类划分。通过该聚类算法,将10层网络阶梯地划分成了三类,其中每一类包含层的激活值分布具有相同的集中性。
在一些实施方式中,计算每一段阶梯的集中性的值,包括:
基于以下公式计算每一段阶梯的集中性的值;
其中,CTDn表示每一段阶梯的集中性的值,n表示阶梯序号0,1,……,n;σstgn_mean表示本段阶梯内的标准差均值;σstgn_mean表示本段阶梯内的激活值阈值均值。
具体的,划分集中性之后,计算每一类的集中性大小。将不同阶梯的集中性大小表示为其自身阶梯内的标准差均值与激活阈值均值乘积的倒数。可见标准差均值越大,激活阈值均值越高,阶梯的集中性越小或者越差;标准差均值越小,激活阈值均值越低,阶梯的集中性越大或越好。
例如,10层的神经网络被划分为了三个阶梯,分别为:
STG1=(P1,P6,P10)=((σ1,β1),(σ6,β6),(σ10,β10)),
STG2=(P2,P3,P7)=((σ2,β2),(σ3,β3),(σ7,β7)),
STG3=(P4,P5,P8,P9)=((σ4,β4),(σ5,β5),(σ8,β8),(σ9,β9))。
将集中性大小表示为CTD,三个阶梯的集中性大小分别表示为:
在一些实施方式中,基于所述集中性的值,确定对应阶梯的量化比特位,包括:
按照所述集中性的值越大,量化比特位越小的策略,确定所述对应阶梯的量化比特位。
具体的,基于得到的不同阶梯的集中性的值,确定不同阶梯内对应的神经网络层使用什么样的量化比特位。假设我们原始的量化比特位为INT8,以上面三个阶梯的例子为例,假设CTD1<CTD2<CTD3,那么在接下来的一轮训练中,在对集中性的值进行由小到大的排列后,将它们对应的量化比特位逐级递减的原则,设置STG1内的神经网络量化位为INT7,STG2内的神经网络量化位为INT6,STG3内的神经网络量化位为INT5。
在一些实施方式中,方法进一步包括:
基于各个层对应的量化比特位对所述神经网络进行训练,并基于新一轮神经网络训练的推理精度判断是否返回随机抽取预设数量张训练图片进行推理的步骤。
在一些实施方式中,基于新一轮神经网络训练的推理精度判断是否返回随机抽取预设数量张训练图片进行推理的步骤,包括:
响应于所述新一轮神经网络的推理精度不满足所述预设要求,获取上一轮训练得到的各个层的量化比特位为最优量化比特位。
在一些实施方式中,基于新一轮神经网络训练的推理精度判断是否返回随机抽取预设数量张训练图片进行推理的步骤,包括:
响应于所述新一轮神经网络的推理精度满足所述预设要求,返回随机抽取预设数量张训练图片进行推理的步骤,直至新一轮训练的推理精度满足不了所述预设要求;
获取上一轮训练得到的各个层的量化比特位为最优量化比特位。
具体的,基于新确定的各个层的量化比特位对神经网络进行训练,直至网络的推理精度满足需求;然后再次重复抽取一定数量张图片进行推理,直到得到各个阶梯对应的量化比特位的步骤,再次基于新确定的各个层的量化比特位对神经网络进行训练,如此循环,直至最后训练的精度不能满足要求时截止。
基于同一发明构思,根据本发明的另一个方面,如图2所示,本发明的实施例还提供了一种神经网络的计算性能优化系统,包括:
配置模块110,所述配置模块110配置为定义激活值阈值训练方法及权重训练方法;
训练模块120,所述训练模块120配置为确定神经网络的初始比特位,基于初始比特位并利用所述激活值阈值训练方法及所述权重训练方法对所述神经网络进行量化训练直到所述神经网络的推理精度满足预设要求则停止训练;
处理模块130,所述处理模块130配置为随机抽取预设数量张训练图片进行推理,并在推理结束后获取神经网络每层的激活值,并基于所述激活值计算得到每层激活值的标准差;
所述处理模块130还配置为获取基于所述神经网络训练得到的每层的激活值阈值,基于所述每层激活值的标准差和所述每层的激活值阈值确定每层分布的集中性,并将各个层的集中性划分为不同的阶梯;
所述处理模块130还配置为计算每一段阶梯的集中性的值,并基于所述集中性的值,确定对应阶梯的量化比特位。
本发明实施例还可以包括相应的计算机设备。计算机设备包括存储器、至少一个处理器以及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时执行上述任意一种方法。
其中,存储器作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的所述神经网络的计算性能优化方法对应的程序指令/模块。处理器通过运行存储在存储器中的非易失性软件程序、指令以及模块,从而执行装置的各种功能应用以及数据处理,即实现上述方法实施例的神经网络的计算性能优化方法。
存储器可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据装置的使用所创建的数据等。此外,存储器可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器可选包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至本地模块。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
最后需要说明的是,本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关硬件来完成,程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,程序的存储介质可为磁碟、光盘、只读存储记忆体(ROM)或随机存储记忆体(RAM)等。上述计算机程序的实施例,可以达到与之对应的前述任意方法实施例相同或者相类似的效果。
本领域技术人员还将明白的是,结合这里的公开所描述的各种示例性逻辑块、模块、电路和算法步骤可以被实现为电子硬件、计算机软件或两者的组合。为了清楚地说明硬件和软件的这种可互换性,已经就各种示意性组件、方块、模块、电路和步骤的功能对其进行了一般性的描述。这种功能是被实现为软件还是被实现为硬件取决于具体应用以及施加给整个系统的设计约束。本领域技术人员可以针对每种具体应用以各种方式来实现的功能,但是这种实现决定不应被解释为导致脱离本发明实施例公开的范围。
以上是本发明公开的示例性实施例,但是应当注意,在不背离权利要求限定的本发明实施例公开的范围的前提下,可以进行多种改变和修改。根据这里描述的公开实施例的方法权利要求的功能、步骤和/或动作不需以任何特定顺序执行。此外,尽管本发明实施例公开的元素可以以个体形式描述或要求,但除非明确限制为单数,也可以理解为多个。
应当理解的是,在本文中使用的,除非上下文清楚地支持例外情况,单数形式“一个”旨在也包括复数形式。还应当理解的是,在本文中使用的“和/或”是指包括一个或者一个以上相关联地列出的项目的任意和所有可能组合。
上述本发明实施例公开实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
所属领域的普通技术人员应当理解:以上任何实施例的讨论仅为示例性的,并非旨在暗示本发明实施例公开的范围(包括权利要求)被限于这些例子;在本发明实施例的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,并存在如上的本发明实施例的不同方面的许多其它变化,为了简明它们没有在细节中提供。因此,凡在本发明实施例的精神和原则之内,所做的任何省略、修改、等同替换、改进等,均应包含在本发明实施例的保护范围之内。
Claims (6)
1.一种神经网络的计算性能优化方法,其特征在于,包括:
定义激活值阈值训练方法及权重训练方法;
确定神经网络的初始比特位,基于初始比特位并利用所述激活值阈值训练方法及所述权重训练方法对所述神经网络进行量化训练直到所述神经网络的推理精度满足预设要求则停止训练;
随机抽取预设数量张训练图片进行推理,并在推理结束后获取神经网络每层的激活值,并基于所述激活值计算得到每层激活值的标准差;
获取基于所述神经网络训练得到的每层的激活值阈值,基于所述每层激活值的标准差和所述每层的激活值阈值确定每层分布的集中性,并将各个层的集中性划分为不同的阶梯;
计算每一段阶梯的集中性的值,并基于所述集中性的值,确定对应阶梯的量化比特位;
其中,定义激活值阈值训练方法,包括:将激活值的范围限定在0到激活值阈值之间;对激活值进行前向定点量化;对激活值阈值进行反向更新;
定义权重训练方法,包括:对所述权重进行值域转换;对值域转换后的权重进行前向定点量化;对量化后的权值进行反向更新;
将各个层的集中性划分为不同的阶梯,包括:基于均值漂移聚类,将神经网络中所有层的激活值按照分布的集中性划分为不同的阶梯;
计算每一段阶梯的集中性的值,包括:基于以下公式计算每一段阶梯的集中性的值;
其中,表示每一段阶梯的集中性的值,n表示阶梯序号0,1,……,n;/>表示本段阶梯内的标准差均值;/>表示本段阶梯内的激活值阈值均值。
2.根据权利要求1所述的方法,其特征在于,基于所述集中性的值,确定对应阶梯的量化比特位,包括:
按照所述集中性的值越大,量化比特位越小的策略,确定所述对应阶梯的量化比特位。
3.根据权利要求1所述的方法,其特征在于,进一步包括:
基于各个层对应的量化比特位对所述神经网络进行训练,并基于新一轮神经网络训练的推理精度判断是否返回随机抽取预设数量张训练图片进行推理的步骤。
4.根据权利要求3所述的方法,其特征在于,基于新一轮神经网络训练的推理精度判断是否返回随机抽取预设数量张训练图片进行推理的步骤,包括:
响应于所述新一轮神经网络的推理精度不满足所述预设要求,获取上一轮训练得到的各个层的量化比特位为最优量化比特位。
5.根据权利要求3所述的方法,其特征在于,基于新一轮神经网络训练的推理精度判断是否返回随机抽取预设数量张训练图片进行推理的步骤,包括:
响应于所述新一轮神经网络的推理精度满足所述预设要求,返回随机抽取预设数量张训练图片进行推理的步骤,直至新一轮训练的推理精度满足不了所述预设要求;
获取上一轮训练得到的各个层的量化比特位为最优量化比特位。
6.一种神经网络的计算性能优化系统,其特征在于,包括:
配置模块,所述配置模块配置为定义激活值阈值训练方法及权重训练方法;
训练模块,所述训练模块配置为确定神经网络的初始比特位,基于初始比特位并利用所述激活值阈值训练方法及所述权重训练方法对所述神经网络进行量化训练直到所述神经网络的推理精度满足预设要求则停止训练;
处理模块,所述处理模块配置为随机抽取预设数量张训练图片进行推理,并在推理结束后获取神经网络每层的激活值,并基于所述激活值计算得到每层激活值的标准差;
所述处理模块还配置为获取基于所述神经网络训练得到的每层的激活值阈值,基于所述每层激活值的标准差和所述每层的激活值阈值确定每层分布的集中性,并将各个层的集中性划分为不同的阶梯;
所述处理模块还配置为计算每一段阶梯的集中性的值,并基于所述集中性的值,确定对应阶梯的量化比特位;
其中,定义激活值阈值训练方法,包括:将激活值的范围限定在0到激活值阈值之间;对激活值进行前向定点量化;对激活值阈值进行反向更新;
定义权重训练方法,包括:对所述权重进行值域转换;对值域转换后的权重进行前向定点量化;对量化后的权值进行反向更新;
将各个层的集中性划分为不同的阶梯,包括:基于均值漂移聚类,将神经网络中所有层的激活值按照分布的集中性划分为不同的阶梯;
计算每一段阶梯的集中性的值,包括:基于以下公式计算每一段阶梯的集中性的值;
其中,表示每一段阶梯的集中性的值,n表示阶梯序号0,1,……,n;/>表示本段阶梯内的标准差均值;/>表示本段阶梯内的激活值阈值均值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111274322.1A CN113971457B (zh) | 2021-10-29 | 2021-10-29 | 一种神经网络的计算性能优化方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111274322.1A CN113971457B (zh) | 2021-10-29 | 2021-10-29 | 一种神经网络的计算性能优化方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113971457A CN113971457A (zh) | 2022-01-25 |
CN113971457B true CN113971457B (zh) | 2024-02-02 |
Family
ID=79589021
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111274322.1A Active CN113971457B (zh) | 2021-10-29 | 2021-10-29 | 一种神经网络的计算性能优化方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113971457B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114386588B (zh) * | 2022-03-23 | 2022-07-29 | 杭州雄迈集成电路技术股份有限公司 | 神经网络推理方法和系统 |
CN117973480A (zh) * | 2022-10-18 | 2024-05-03 | 华为技术有限公司 | 校准神经网络量化的方法、装置、设备、介质和程序产品 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110555508A (zh) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | 人工神经网络调整方法和装置 |
CN111178258A (zh) * | 2019-12-29 | 2020-05-19 | 浪潮(北京)电子信息产业有限公司 | 一种图像识别的方法、系统、设备及可读存储介质 |
CN111260022A (zh) * | 2019-11-22 | 2020-06-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络全int8定点量化的方法 |
CN111882058A (zh) * | 2020-06-24 | 2020-11-03 | 苏州浪潮智能科技有限公司 | 一种神经网络的4比特量化方法及系统 |
CN112668714A (zh) * | 2020-12-24 | 2021-04-16 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络低比特量化方法、系统及介质 |
-
2021
- 2021-10-29 CN CN202111274322.1A patent/CN113971457B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110555508A (zh) * | 2018-05-31 | 2019-12-10 | 北京深鉴智能科技有限公司 | 人工神经网络调整方法和装置 |
CN111260022A (zh) * | 2019-11-22 | 2020-06-09 | 中国电子科技集团公司第五十二研究所 | 一种卷积神经网络全int8定点量化的方法 |
CN111178258A (zh) * | 2019-12-29 | 2020-05-19 | 浪潮(北京)电子信息产业有限公司 | 一种图像识别的方法、系统、设备及可读存储介质 |
CN111882058A (zh) * | 2020-06-24 | 2020-11-03 | 苏州浪潮智能科技有限公司 | 一种神经网络的4比特量化方法及系统 |
CN112668714A (zh) * | 2020-12-24 | 2021-04-16 | 苏州浪潮智能科技有限公司 | 一种卷积神经网络低比特量化方法、系统及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113971457A (zh) | 2022-01-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113971457B (zh) | 一种神经网络的计算性能优化方法及系统 | |
Sung et al. | Resiliency of deep neural networks under quantization | |
US20210182666A1 (en) | Weight data storage method and neural network processor based on the method | |
CN110956222B (zh) | 用于水下目标检测的检测网络的方法 | |
CN112949896B (zh) | 一种基于融合序列分解与时空卷积的时序预测方法 | |
CN110689113A (zh) | 一种基于大脑共识主动性的深度神经网络压缩方法 | |
CN111950715A (zh) | 基于自适应动态移位的8位整型全量化推理方法及装置 | |
CN112906747A (zh) | 一种基于知识蒸馏的图像分类方法 | |
CN110188877A (zh) | 一种神经网络压缩方法与装置 | |
Lee et al. | The sparsity and activation analysis of compressed CNN networks in a HW CNN accelerator model | |
CN110110852B (zh) | 一种深度学习网络移植到fpag平台的方法 | |
CN114943335A (zh) | 一种三值神经网络逐层优化方法 | |
CN114925823A (zh) | 一种卷积神经网络压缩方法及边缘侧fpga加速器 | |
CN117668563A (zh) | 文本识别方法、装置、电子设备及可读存储介质 | |
CN116757260B (zh) | 一种大型预训练模型的训练方法和系统 | |
CN117521752A (zh) | 一种基于fpga的神经网络加速方法及系统 | |
Adel et al. | Accelerating deep neural networks using FPGA | |
Liu et al. | Improvement of pruning method for convolution neural network compression | |
Guo et al. | A high-efficiency fpga-based accelerator for binarized neural network | |
Jin et al. | Sparse ternary connect: Convolutional neural networks using ternarized weights with enhanced sparsity | |
CN112183762A (zh) | 一种基于混合行为空间的强化学习方法 | |
Kiyama et al. | A quantized neural network library for proper implementation of hardware emulation | |
CN115511077A (zh) | 面向强化学习的深度神经网络生成方法 | |
Liu et al. | SuperPruner: automatic neural network pruning via super network | |
Choi et al. | CNN inference simulator for accurate and efficient accelerator design |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |