CN113688988A - 精度调整方法及装置、存储介质 - Google Patents
精度调整方法及装置、存储介质 Download PDFInfo
- Publication number
- CN113688988A CN113688988A CN202111007332.9A CN202111007332A CN113688988A CN 113688988 A CN113688988 A CN 113688988A CN 202111007332 A CN202111007332 A CN 202111007332A CN 113688988 A CN113688988 A CN 113688988A
- Authority
- CN
- China
- Prior art keywords
- precision
- target
- weight parameter
- neuron
- determining
- 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
Images
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/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
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Feedback Control In General (AREA)
- Image Analysis (AREA)
Abstract
本公开提供了一种精度调整方法及装置、存储介质。其中,该方法包括:确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,所述目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差;基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度;基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整。本公开实现了灵活配置神经元权重参数的精度的目的,既可以确保人工智能芯片的较高识别率,又可以降低神经网络模型的大小。
Description
技术领域
本公开涉及深度学习领域,尤其涉及一种精度调整方法及装置、存储介质。
背景技术
深度学习算法可以工作在不同的数据精度下,高精度可以获得更好的性能,但存储代价和计算代价都比较高昂,而低精度可以用一定程度的性能损失换取对存储资源和计算资源的显著节省,从而让芯片具有很高的功耗效用。
目前常见的芯片中,由于计算精度的需求不同,处理芯片也需要提供多种数据精度的存储支持,如int8(8位整型),fp16(Float16,16位浮点),fp32,fp64等。
发明内容
有鉴于此,本申请公开了一种精度调整方法及装置、存储介质,可以灵活调整神经元权重参数的精度,从而既可以确保人工智能芯片的较高识别率,又可以降低神经网络模型的模型大小。
根据本公开实施例的第一方面,提供一种精度调整方法,所述方法包括:
确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,所述目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差;
基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度;
基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整。
在一些可选实施例中,所述神经网络模型的输入值为多组样本数据,则所述目标函数的数目为多个;
所述确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,包括:
确定多个所述目标函数分别对所述每个神经元权重参数的偏导数,得到所述每个神经元权重参数对应的多个第一备选偏导数;
基于所述多个第一备选偏导数,确定所述每个神经元权重参数对应的所述目标偏导数。
在一些可选实施例中,所述基于所述多个第一备选偏导数,确定所述每个神经元权重参数对应的所述目标偏导数,包括以下任一项:
基于所述多个第一备选偏导数的平均值,确定所述每个神经元权重参数对应的所述目标偏导数;或,
基于所述多个第一备选偏导数中的最大值和/或最小值,确定所述每个神经元权重参数对应的所述目标偏导数。
在一些可选实施例中,所述确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,包括:
确定所述目标函数分别对属于所述神经网络模型同一层的多个神经元权重参数的偏导数,得到多个第二备选偏导数;
基于所述多个第二备选偏导数,确定属于所述同一层的所述每个神经元权重参数对应的所述目标偏导数。
在一些可选实施例中,所述基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度,包括:
响应于确定任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第一精度;
响应于确定任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第二精度;
其中,所述第一精度大于所述第二精度。
在一些可选实施例中,所述基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度,包括:
响应于确定任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第三精度;
响应于确定任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第四精度;
其中,所述第三精度小于所述第四精度。
在一些可选实施例中,属于所述同一层的所述每个神经元权重参数对应的所述目标权重精度为同一精度或属于同一精度范围。
在一些可选实施例中,在所述基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整之前,所述方法还包括以下任一项:
确定任一神经元权重参数的精度与所述神经元权重参数对应的所述目标权重精度为不同精度或属于不同的精度范围;或,
确定任一神经元权重参数的精度与所述神经元权重参数对应的所述目标权重精度为不同精度或属于不同的精度范围,且所述神经元权重参数对应的所述目标偏导数小于预设阈值。
在一些可选实施例中,所述基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整,包括以下任一项:
将所述至少一个神经元权重参数的精度调整为所述目标权重精度;或,
将所述至少一个神经元权重参数的精度调整到与所述目标权重精度属于同一精度范围。
在一些可选实施例中,所述方法还包括:
基于所述目标偏导数,确定所述神经网络模型中每个神经元输入数据对应的目标数据精度;
基于所述每个神经元输入数据对应的所述目标数据精度,对所述神经网络模型中的至少一个神经元输入数据的精度进行调整。
根据本公开实施例的第二方面,提供一种精度调整装置,所述装置包括:
偏导数确定模块,用于确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,所述目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差;
权重精度确定模块,用于基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度;
权重精度调整模块,用于基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整。
在一些可选实施例中,所述神经网络模型的输入值为多组样本数据,则所述目标函数的数目为多个;
所述偏导数确定模块还用于:
确定多个所述目标函数分别对所述每个神经元权重参数的偏导数,得到所述每个神经元权重参数对应的多个第一备选偏导数;
基于所述多个第一备选偏导数,确定所述每个神经元权重参数对应的所述目标偏导数。
在一些可选实施例中,所述偏导数确定模块还用于:
基于所述多个第一备选偏导数的平均值,确定所述每个神经元权重参数对应的所述目标偏导数;或,
基于所述多个第一备选偏导数中的最大值和/或最小值,确定所述每个神经元权重参数对应的所述目标偏导数。
在一些可选实施例中,所述偏导数确定模块还用于:
确定所述目标函数分别对属于所述神经网络模型同一层的多个神经元权重参数的偏导数,得到多个第二备选偏导数;
基于所述多个第二备选偏导数,确定属于所述同一层的所述每个神经元权重参数对应的所述目标偏导数。
在一些可选实施例中,所述权重精度确定模块还用于:
响应于确定任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第一精度;
响应于确定任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第二精度;
其中,所述第一精度大于所述第二精度。
在一些可选实施例中,所述权重精度确定模块还用于:
响应于确定任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第三精度;
响应于确定任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第四精度;
其中,所述第三精度小于所述第四精度。
在一些可选实施例中,属于所述同一层的所述每个神经元权重参数对应的所述目标权重精度为同一精度或属于同一精度范围。
在一些可选实施例中,所述装置还包括以下任一项:
第一确定模块,用于确定任一神经元权重参数的精度与所述神经元权重参数对应的所述目标权重精度为不同精度或属于不同的精度范围;或,
第二确定模块,用于确定任一神经元权重参数的精度与所述神经元权重参数对应的所述目标权重精度为不同精度或属于不同的精度范围,且所述神经元权重参数对应的所述目标偏导数小于预设阈值。
在一些可选实施例中,所述权重精度调整模块还用于:
将所述至少一个神经元权重参数的精度调整为所述目标权重精度;或,
将所述至少一个神经元权重参数的精度调整到与所述目标权重精度属于同一精度范围。
在一些可选实施例中,所述装置还包括:
数据精度确定模块,用于基于所述目标偏导数,确定所述神经网络模型中每个神经元输入数据对应的目标数据精度;
数据精度调整模块,用于基于所述每个神经元输入数据对应的所述目标数据精度,对所述神经网络模型中的至少一个神经元输入数据的精度进行调整。
根据本公开实施例的第三方面,提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述任一项所述的精度调整方法的步骤。
根据本公开实施例的第四方面,提供一种精度调整装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述可执行指令实现上述任一项所述的精度调整方法的步骤。
本公开的实施例提供的技术方案可以包括以下有益效果:
本公开实施例中,可以在对神经网络模型训练完成后,在误差反向传播阶段,确定目标函数对每个神经元权重参数的目标偏导数,其中,目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差。进一步地,可以基于该目标偏导数,确定每个神经元权重参数对应的目标权重精度。实现了灵活调整神经元权重参数的精度的目的。再通过对至少一个神经元权重参数的精度的调整,从而既可以确保人工智能芯片的较高识别率,又可以降低神经网络模型的大小。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本公开。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1A是本申请一示例性实施例示出的一种神经网络模型结构示意图;
图1B是本申请一示例性实施例示出的一种权重参数精度示意图;
图2是本申请一示例性实施例示出的一种精度调整方法的流程图;
图3是本申请一示例性实施例示出的另一种精度调整方法的流程图;
图4是根据一示例性实施例示出的一种权重精度调整装置的框图;
图5是根据一示例性实施例示出的一种权重精度调整装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本发明相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本发明的一些方面相一致的装置和方法的例子。
在介绍本公开实施例之前,先介绍一下误差反向传播过程。
以图1A所示神经网络模型为例,该神经网络模型包括输入层、隐含层、输出层。其中,所有除了输入层和输出层之外的其他层均可以称为隐含层。图1A中以隐含层的数目为一层为例进行说明,实际应用中隐含层的数目也可以为多层,本公开对此不作限定。
在本公开实施例中,需要先利用样本数据对神经网络模型进行训练,达到预设的训练结束条件后,确定对神经网络模型训练完成。在完成神经网络模型的训练后,可以进入误差反向传播过程。
其中,误差反向传播算法的学习过程由正向传播过程和反向传播过程组成。在正向传播过程中,输入的数据通过输入层经过隐含层,逐层处理并传给输出层。如果在输出层得不到期望的输出值,即神经网络模型的期望值,那么进入反向传播过程。先确定神经网络模型的输出值与期望值之间的误差,从而得到目标函数,转入反向传播,反向逐层确定目标函数对各神经元权重参数的偏导数,将其作为目标函数对权重参数向量的梯度,从而作为调整权重参数的依据。神经网络模型的学习在权重参数修改过程中完成,误差达到预期误差时,结束神经网络模型的学习过程。
上述的反向传播阶段中,在求出各神经元权重参数的偏导数后,可以进一步根据偏导数更新权重值,经过多次迭代更新得到各神经元的最优权重参数。
相关技术中,需要确保各神经元权重参数的精度始终不变,对神经元权重参数的精度调整缺乏灵活性。如果对神经网络模型所有层配置的权重参数精度均为int8,这种情况下,不仅会造成神经网络模型的网络参数调整困难,训练时间大幅增加,而且还往往导致较大的精度损失。如果将所有层的权重参数精度都配置为fp32(或更高),例如图1B所示,其中Ln是指神经网络模型中的第n层。运算精度虽然能够满足需求,且识别率高,但是消耗的功耗也高,神经网络的模型较大,资源利用率低。
为了解决上述技术问题,本公开提供了一种精度调整方案。
图2是本申请一示例性实施例示出的一种精度调整方法的流程图,该方法可以应用但不限于人工智能芯片,人工智能芯片是指可以运行神经网络模型,用于处理人工智能应用中的大量计算任务的芯片,该方法如图2所示,包括以下步骤:
在步骤201中,确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数。
在本公开实施例中,可以在误差反向传播阶段,先确定目标函数,目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差。进一步地,确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数。
在步骤202中,基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度。
其中,目标权重精度可以是以下任一项:binary(二进制)、int4、int8、fp16、fp32、fp64。
在步骤203中,基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整。
上述实施例中,可以在对神经网络模型训练完成后,在误差反向传播阶段,确定目标函数对每个神经元权重参数的目标偏导数,其中,目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差。进一步地,可以基于该目标偏导数,确定每个神经元权重参数对应的目标权重精度。实现了灵活配置神经元权重参数的精度的目的。再通过对至少一个神经元权重参数的精度的调整,从而既可以确保人工智能芯片的较高识别率,又可以降低神经网络模型的大小。
在一些可选实施例中,神经网络模型的输入值为一组样本数据或多组样本数据,在输入值为多组样本数据的情况下,所述目标函数的数目相应为多个。
针对上述步骤201,可以确定多个目标函数中的每个目标函数分别对每个神经元权重参数的偏导数,从而可以得到与每个神经元权重参数对应的多个第一备选偏导数。进一步地,可以基于多个第一备选偏导数,确定所述每个神经元权重参数对应的所述目标偏导数。
在一个可能的实现方式中,可以确定多个第一备选偏导数的平均值,从而将该平均值确定为所述每个神经元权重参数对应的所述目标偏导数。
在另一个可能的实现方式中,可以将多个第一备选偏导数中的最大值或最小值,确定为所述每个神经元权重参数对应的所述目标偏导数。
在另一个可能的实现方式中,可以将多个第一备选偏导数中的最大值和最小值的平均值确定为所述每个神经元权重参数对应的所述目标偏导数。
上述实施例中,可以基于多组输入值灵活确定每个神经元权重参数对应的所述目标偏导数。从而基于每个神经元权重参数对应的所述目标偏导数,灵活配置神经元权重参数的精度,可用性高。
在一些可选实施例中,针对上述步骤201,可以以层为单位,确定属于该层的每个神经元权重参数对应的所述目标偏导数。
在本公开实施例中,可以确定同一目标函数分布对属于同一层的多个神经元权重参数的偏导数,从而得到多个第二备选偏导数。其中,属于同一层是指多个神经元权重参数均属于输入层,或均属于输出层,或均属于隐含层中的同一层。进一步地,可以基于多个第二备选偏导数,确定属于同一层的所述每个神经元权重参数对应的所述目标偏导数。
在一个可能的实现方式中,可以确定多个第二备选偏导数的平均值,从而将该平均值确定为属于同一层的每个神经元权重参数对应的所述目标偏导数。
在另一个可能的实现方式中,可以将多个第二备选偏导数中的最大值或最小值,确定为属于同一层的每个神经元权重参数对应的所述目标偏导数。
在另一个可能的实现方式中,可以将多个第一备选偏导数中的最大值和最小值的平均值确定为属于同一层的每个神经元权重参数对应的所述目标偏导数。
上述实施例中,可以以层为单位,灵活确定属于同一层的每个神经元权重参数对应的所述目标偏导数。从而基于每个神经元权重参数对应的所述目标偏导数,灵活配置神经元权重参数的精度,可用性高。
在一些可选实施例中,针对上述步骤202,可以根据每个神经元权重参数对应的目标偏导数与预设阈值进行比较,确定该神经元权重参数对应的目标权重精度。
在一个可能的实现方式中,神经网络模型中任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,那么可以确定该神经元权重参数对应的所述目标权重精度为第一精度。
任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第二精度。
其中,所述第一精度大于所述第二精度。
在本公开实施例中,第一精度与第二精度可以属于同一精度范围或不同精度范围,本公开对此不作限定。
例如,某个神经元权重参数对应的所述目标偏导数大于或等于预设阈值,那么可以确定该神经元权重参数对应的所述目标权重精度为较高的第一精度,假设为fp64,反之,确定该神经元权重参数对应的所述目标权重精度为较低的第二精度,假设为fp32。其中,fp64与fp32均属于相同的高精度范围。
再例如,某个神经元权重参数对应的所述目标偏导数大于或等于预设阈值,那么可以确定该神经元权重参数对应的所述目标权重精度为第一精度范围内的任一精度,反之,即某个神经元权重参数对应的所述目标偏导数小于预设阈值,确定该神经元权重参数对应的所述目标权重精度为第二精度范围内的任一精度。假设第一精度范围包括:fp32、fp64,第二精度范围包括:binary、int4、int8,其中第二精度范围中的最大精度为int8小于第一精度范围中的最小精度fp32。
在另一个可能的实现方式中,神经网络模型中任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,那么可以确定该神经元权重参数对应的所述目标权重精度为第三精度。任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第四精度。其中,所述第三精度小于所述第四精度。
也就是说,某个神经元权重参数对应的所述目标偏导数较大,对应的目标权重精度越低,后续对该神经元权重参数的精度进行调整时,调整后的精度也越低。反之,某个神经元权重参数对应的所述目标偏导数较小,对应的目标权重精度越高,后续对该神经元权重参数的精度进行调整时,调整后的精度也越高。
以上仅为示例性说明,其他基于目标偏导数,确定每个神经元权重参数对应的目标权重精度的方案均应属于本公开的保护范围。
另外,在本公开实施例中,如果以层为单位确定属于同一层的所述每个神经元权重参数对应的目标偏导数,那么属于同一层的每个神经元权重参数对应的所述目标权重精度可以为同一精度,或,属于同一精度范围。
例如,同一层的每个神经元权重参数对应的所述目标权重精度均为fp32,或者同一层的每个神经元权重参数对应的所述目标权重精度属于同一精度范围,可以为fp32或fp64,本公开对此不作限定。
上述实施例中,可以基于目标偏导数,确定所述每个神经元权重参数对应的目标权重精度,以便后续灵活调整目标权重精度,可用性高。
在一些可选实施例中,在执行步骤203之前,可以先确定是否需要调整神经元权重参数的精度。
第一种方式,根据任一神经元权重参数的精度、该神经元权重参数对应的目标权重精度,确定是否需要执行步骤203,即确定是否需要对该神经元权重参数的精度进行调整。
在一个可能的实现方式中,可以在某个神经元权重参数的精度与对应的目标权重精度为不同精度的情况下,确定需要对该神经元权重参数的精度进行调整。某个神经元权重参数的精度与对应的目标权重精度为同一精度的情况下,确定不需要对该神经元权重参数的精度进行调整。
在另一个可能的实现方式中,某个神经元权重参数的精度与对应的目标权重精度虽然为不同精度,且不属于同一精度范围,确定需要对该神经元权重参数的精度进行调整。某个神经元权重参数的精度与对应的目标权重精度为不同精度,但属于同一精度范围,确定不需要对该神经元权重参数的精度进行调整。
第二种方式,根据任一神经元权重参数的精度、该神经元权重参数对应的目标权重精度、以及该神经元权重参数对应的所述目标偏导数,共同确定是否需要执行步骤203。
在一个可能的实现方式中,某一神经元权重参数的精度与对应的目标权重精度为同一精度,确定不需要对该神经元权重参数的精度进行调整。
在一个可能的实现方式中,某一神经元权重参数的精度与对应的目标权重精度为不同精度,且该神经元权重参数对应的所述目标偏导数小于预设阈值,考虑到偏导数小于预设阈值的情况下,即使调整了神经元权重参数的精度,对最终的输出结果的影响也会较小,此时可以确定需要对该神经元权重参数的精度进行调整。
某一神经元权重参数的精度与对应的目标权重精度为不同精度,但该神经元权重参数对应的所述目标偏导数大于或等于预设阈值,考虑到偏导数较大的情况下,如果调整了神经元权重参数的精度,对最终的输出结果的影响也会较大,此时可以确定不需要对该神经元权重参数的精度进行调整。
在另一个可能的实现方式中,某一神经元权重参数的精度与对应的目标权重精度为不同精度但属于同一精度范围,此时可以确定不需要对该神经元权重参数的精度进行调整。
在另一个可能的实现方式中,某一神经元权重参数的精度与对应的目标权重精度为不同精度,且属于不同的精度范围,该神经元权重参数对应的所述目标偏导数小于预设阈值的情况下,此时可以确定需要对该神经元权重参数的精度进行调整。
某一神经元权重参数的精度与对应的目标权重精度为不同精度,且属于不同的精度范围,该神经元权重参数对应的所述目标偏导数大于或等于预设阈值的情况下,此时可以确定不需要对该神经元权重参数的精度进行调整。
上述实施例中,可以在对神经网络模型中的至少一个神经元权重参数的精度进行调整之前,先确定是否需要对该神经元权重参数的精度进行调整,避免对神经网络模型的最终结果产生较大影响,在调整权重精度的同时,确定神经网络模型输出结果的准确性。
在一些可选实施例中,针对上述步骤203,在一个可能的实现方式中,可以将需要调整权重参数精度的至少一个神经元权重参数的精度,直接调整为所述目标权重精度。例如某个神经元权重参数的目标权重精度为int8,可以将该神经元权重参数的精度调整为由原来的fp32调整为int8。
在另一个可能的实现方式中,可以将需要调整权重参数精度的至少一个神经元权重参数的精度,调整到与所述目标权重精度属于同一精度范围。
例如,低精度范围包括:binary、int4、int8,高精度范围包括:fp32、fp64。某个神经元权重参数的目标权重精度为int8,属于低精度范围,可以将该神经元权重参数的精度调整为由原来的fp32调整为低精度范围中的一个,即可以调整为binary、int4或int8中的任一个。
上述实施例中,实现了灵活配置神经元权重参数的精度的目的。在运算精度和训练时间长达到平衡,既可以确保人工智能芯片的较高识别率,又可以降低神经网络模型的大小。
对上述精度调整方法进一步举例说明如下。
在本公开实施例中,可以在神经元权重参数对应的目标偏导数足够大的情况下,保持该神经元权重参数原来的高精度,在对应的目标偏导数足够小的情况下,对该神经元权重参数的精度进行调整,由原来的高精度降低为中精度,在对应的目标偏导数如果更小的情况下,可以将神经元权重参数的精度由中精度再次降低为低精度。
或者,神经元权重参数对应的目标偏导数较大的情况下,可以保持该神经元权重参数原来的高精度,目标偏导值更大或更小的情况下,可以对该神经元权重参数的精度进行调整,由高精度调整到次高精度或低精度,本公开对此不作限定。
以上仅为示例性说明,任何根据目标偏导数,对神经元权重参数的精度进行调整的方案均应属于本公开的保护范围。
在本公开实施例中,如果神经元权重参数的精度降低,则对应的神经网络模型的大小也会相应变小,从而实现了既可以确保人工智能芯片的较高识别率,又可以降低神经网络模型的模型大小的目的。
在一些可选实施例中,图3是本申请图2所示实施例基础上示出的另一种精度调整方法的流程图,该方法可以应用但不限于人工智能芯片,人工智能芯片是指可以运行神经网络模型,用于处理人工智能应用中的大量计算任务的芯片,该方法如图3所示,该方法还可以包括以下步骤:
在步骤204中,基于所述目标偏导数,确定所述神经网络模型中每个神经元输入数据对应的目标数据精度。
在本公开实施例中,确定目标数据精度的过程与步骤202中确定每个神经元权重参数对应的目标权重精度的过程类似,在此不再赘述。
在步骤205中,基于所述每个神经元输入数据对应的所述目标数据精度,对所述神经网络模型中的至少一个神经元输入数据的精度进行调整。
在本公开实施例中,对所述神经网络模型中的至少一个神经元输入数据的精度进行调整的过程与步骤203中对所述神经网络模型中的至少一个神经元权重参数的精度进行调整的过程类似,在此不再赘述。
上述实施例中,不仅可以调整神经元权重参数的精度,还可以基于目标偏导数,对至少一个神经元输入数据的精度进行调整。同样达到了确保人工智能芯片的较高识别率,又可以降低神经网络模型的大小的目的。
下面再结合图1A对本公开的方案进一步举例说明。
输入层包括i1、i2,隐含层包括h1、h2,输出层包括o1、o2,对应的输出值与预期值之间的误差分别为Eo1、Eo2,最终的总误差为Etotal=Eo1+Eo2。每个神经元权重参数用wi表示,i为1、2、3、……8。
相关技术中,可以采用以下公式1确定更新后的w1:
其中,η为神经网络模型的学习率,取值范围一般为(0,1)。
采用本公开提供的精度调整方案,可以根据目标偏导数确定每个神经元权重参数的目标权重精度,基于目标偏导数可以确定是否需要对权重参数的精度进行调整,以及调整后的精度。具体调整方式与上述过程的调整方式类似,在此不再赘述。即本公开可以根据推导出w1的目标权重精度,以此类推,可以得到wi的目标权重精度,从而基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整。
此外,采用本公开提供的精度调整方案,还可以根据目标偏导数确定每个神经元输入数据的目标数据精度,从而对输入数据的精度进行调整。即可以根据推导出与w1进行乘加运算的i1的输入数据的目标数据精度。其中,前一层的输出数据可以作为后一层的输入数据。
上述实施例中,可以在对神经网络模型训练完成后,在误差反向传播阶段,确定目标函数对每个神经元权重参数的目标偏导数,其中,目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差。进一步地,可以基于该目标偏导数,确定每个神经元权重参数对应的目标权重精度。实现了灵活调整神经元权重参数的精度的目的。再通过对至少一个神经元权重参数的精度的调整,从而既可以确保人工智能芯片的较高识别率,又可以降低神经网络模型的大小。
与前述应用功能实现方法实施例相对应,本公开还提供了应用功能实现装置的实施例。
参照图4,图4是根据一示例性实施例示出的一种精度调整,所述装置包括:
偏导数确定模块401,用于确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,所述目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差;
权重精度确定模块402,用于基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度;
权重精度调整模块403,用于基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整。
在一些可选实施例中,所述神经网络模型的输入值为多组样本数据,则所述目标函数的数目为多个;
所述偏导数确定模块还用于:
确定多个所述目标函数分别对所述每个神经元权重参数的偏导数,得到所述每个神经元权重参数对应的多个第一备选偏导数;
基于所述多个第一备选偏导数,确定所述每个神经元权重参数对应的所述目标偏导数。
在一些可选实施例中,所述偏导数确定模块还用于:
基于所述多个第一备选偏导数的平均值,确定所述每个神经元权重参数对应的所述目标偏导数;或,
基于所述多个第一备选偏导数中的最大值和/或最小值,确定所述每个神经元权重参数对应的所述目标偏导数。
在一些可选实施例中,所述偏导数确定模块还用于:
确定所述目标函数分别对属于所述神经网络模型同一层的多个神经元权重参数的偏导数,得到多个第二备选偏导数;
基于所述多个第二备选偏导数,确定属于所述同一层的所述每个神经元权重参数对应的所述目标偏导数。
在一些可选实施例中,所述权重精度确定模块还用于:
响应于确定任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第一精度;
响应于确定任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第二精度;
其中,所述第一精度大于所述第二精度。
在一些可选实施例中,所述权重精度确定模块还用于:
响应于确定任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第三精度;
响应于确定任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第四精度;
其中,所述第三精度小于所述第四精度。
在一些可选实施例中,属于所述同一层的所述每个神经元权重参数对应的所述目标权重精度为同一精度或属于同一精度范围。
在一些可选实施例中,所述装置还包括以下任一项:
第一确定模块,用于确定任一神经元权重参数的精度与所述神经元权重参数对应的所述目标权重精度为不同精度或属于不同的精度范围;或,
第二确定模块,用于确定任一神经元权重参数的精度与所述神经元权重参数对应的所述目标权重精度为不同精度或属于不同的精度范围,且所述神经元权重参数对应的所述目标偏导数小于预设阈值。
在一些可选实施例中,所述权重精度调整模块还用于:
将所述至少一个神经元权重参数的精度调整为所述目标权重精度;或,
将所述至少一个神经元权重参数的精度调整到与所述目标权重精度属于同一精度范围。
在一些可选实施例中,所述装置还包括:
数据精度确定模块,用于基于所述目标偏导数,确定所述神经网络模型中每个神经元输入数据对应的目标数据精度;
数据精度调整模块,用于基于所述每个神经元输入数据对应的所述目标数据精度,对所述神经网络模型中的至少一个神经元输入数据的精度进行调整。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中上述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本公开方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应地,本公开还提供了一种计算机可读存储介质,用于存储有计算机程序,所述计算机程序被处理器执行时用于实现上述任一项所述的精度调整方法的步骤。
相应地,本公开还提供了一种精度调整装置,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述可执行指令实现上述任一项所述的精度调整方法的步骤。
图5为本公开实施例提供的一种精度调整装置的硬件结构示意图。该精度调整装置510包括处理器511,还可以包括输入装置512、输出装置513和存储器514。该输入装置512、输出装置513、存储器514和处理器511之间通过总线相互连接。
存储器包括但不限于是随机存储记忆体(random access memory,RAM)、只读存储器(read-only memory,ROM)、可擦除可编程只读存储器(erasable programmable readonly memory,EPROM)、或便携式只读存储器(compact disc read-only memory,CD-ROM),该存储器用于相关指令及数据。
输入装置用于输入数据和/或信号,以及输出装置用于输出数据和/或信号。输出装置和输入装置可以是独立的器件,也可以是一个整体的器件。
处理器可以包括是一个或多个处理器,例如包括一个或多个中央处理器(centralprocessing unit,CPU),在处理器是一个CPU的情况下,该CPU可以是单核CPU,也可以是多核CPU。
存储器用于存储网络设备的程序代码和数据。
处理器用于调用该存储器中的程序代码和数据,执行上述方法实施例中的步骤。具体可参见方法实施例中的描述,在此不再赘述。
可以理解的是,图5仅仅示出了一种精度调整装置的简化设计。在实际应用中,精度调整装置还可以分别包含必要的其他元件,包含但不限于任意数量的输入/输出装置、处理器、控制器、存储器等,而所有可以实现本公开实施例的精度调整装置都在本公开的保护范围之内。
本领域技术人员在考虑说明书及实践这里公开的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的真正范围和精神由下面的权利要求指出。
应当理解的是,本公开并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本公开的范围仅由所附的权利要求来限制。
Claims (13)
1.一种精度调整方法,其特征在于,所述方法包括:
确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,所述目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差;
基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度;
基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整。
2.根据权利要求1所述的方法,其特征在于,所述神经网络模型的输入值为多组样本数据,则所述目标函数的数目为多个;
所述确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,包括:
确定多个所述目标函数分别对所述每个神经元权重参数的偏导数,得到所述每个神经元权重参数对应的多个第一备选偏导数;
基于所述多个第一备选偏导数,确定所述每个神经元权重参数对应的所述目标偏导数。
3.根据权利要求2所述的方法,其特征在于,所述基于所述多个第一备选偏导数,确定所述每个神经元权重参数对应的所述目标偏导数,包括以下任一项:
基于所述多个第一备选偏导数的平均值,确定所述每个神经元权重参数对应的所述目标偏导数;或,
基于所述多个第一备选偏导数中的最大值和/或最小值,确定所述每个神经元权重参数对应的所述目标偏导数。
4.根据权利要求1所述的方法,其特征在于,所述确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,包括:
确定所述目标函数分别对属于所述神经网络模型同一层的多个神经元权重参数的偏导数,得到多个第二备选偏导数;
基于所述多个第二备选偏导数,确定属于所述同一层的所述每个神经元权重参数对应的所述目标偏导数。
5.根据权利要求1-4任一项所述的方法,其特征在于,所述基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度,包括:
响应于确定任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第一精度;
响应于确定任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第二精度;
其中,所述第一精度大于所述第二精度。
6.根据权利要求1-4任一项所述的方法,其特征在于,所述基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度,包括:
响应于确定任一神经元权重参数对应的所述目标偏导数大于或等于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第三精度;
响应于确定任一神经元权重参数对应的所述目标偏导数小于预设阈值,确定所述神经元权重参数对应的所述目标权重精度为第四精度;
其中,所述第三精度小于所述第四精度。
7.根据权利要求4所述的方法,其特征在于,属于所述同一层的所述每个神经元权重参数对应的所述目标权重精度为同一精度或属于同一精度范围。
8.根据权利要求1-4任一项所述的方法,其特征在于,在所述基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整之前,所述方法还包括以下任一项:
确定任一神经元权重参数的精度与所述神经元权重参数对应的所述目标权重精度为不同精度或属于不同的精度范围;或,
确定任一神经元权重参数的精度与所述神经元权重参数对应的所述目标权重精度为不同精度或属于不同的精度范围,且所述神经元权重参数对应的所述目标偏导数小于预设阈值。
9.根据权利要求8所述的方法,其特征在于,所述基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整,包括以下任一项:
将所述至少一个神经元权重参数的精度调整为所述目标权重精度;或,
将所述至少一个神经元权重参数的精度调整到与所述目标权重精度属于同一精度范围。
10.根据权利要求1-4任一项所述的方法,其特征在于,所述方法还包括:
基于所述目标偏导数,确定所述神经网络模型中每个神经元输入数据对应的目标数据精度;
基于所述每个神经元输入数据对应的所述目标数据精度,对所述神经网络模型中的至少一个神经元输入数据的精度进行调整。
11.一种精度调整装置,其特征在于,所述装置包括:
偏导数确定模块,用于确定目标函数对神经网络模型中每个神经元权重参数的目标偏导数,所述目标函数用于指示训练完成后的所述神经网络模型的输出值与所述神经网络模型的期望值之间的误差;
权重精度确定模块,用于基于所述目标偏导数,确定所述每个神经元权重参数对应的目标权重精度;
权重精度调整模块,用于基于所述每个神经元权重参数对应的所述目标权重精度,对所述神经网络模型中的至少一个神经元权重参数的精度进行调整。
12.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1-10任一项所述的精度调整方法的步骤。
13.一种精度调整装置,其特征在于,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为执行所述可执行指令实现权利要求1-10任一项所述的精度调整方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111007332.9A CN113688988A (zh) | 2021-08-30 | 2021-08-30 | 精度调整方法及装置、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111007332.9A CN113688988A (zh) | 2021-08-30 | 2021-08-30 | 精度调整方法及装置、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113688988A true CN113688988A (zh) | 2021-11-23 |
Family
ID=78584087
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111007332.9A Pending CN113688988A (zh) | 2021-08-30 | 2021-08-30 | 精度调整方法及装置、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113688988A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023193190A1 (en) * | 2022-04-07 | 2023-10-12 | Nvidia Corporation | Adjusting precision of neural network weight parameters |
WO2023208178A1 (zh) * | 2022-04-29 | 2023-11-02 | 北京灵汐科技有限公司 | 信息处理方法及处理单元、芯片、设备、介质、产品 |
-
2021
- 2021-08-30 CN CN202111007332.9A patent/CN113688988A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2023193190A1 (en) * | 2022-04-07 | 2023-10-12 | Nvidia Corporation | Adjusting precision of neural network weight parameters |
WO2023208178A1 (zh) * | 2022-04-29 | 2023-11-02 | 北京灵汐科技有限公司 | 信息处理方法及处理单元、芯片、设备、介质、产品 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112101530B (zh) | 神经网络训练方法、装置、设备及存储介质 | |
US11568258B2 (en) | Operation method | |
US20180260710A1 (en) | Calculating device and method for a sparsely connected artificial neural network | |
US20200111007A1 (en) | Apparatus and methods for training in convolutional neural networks | |
JP6528893B1 (ja) | 学習プログラム、学習方法、情報処理装置 | |
CN113688988A (zh) | 精度调整方法及装置、存储介质 | |
US9939792B2 (en) | Systems and methods to adaptively select execution modes | |
Lin et al. | Libmtl: A python library for deep multi-task learning | |
CN111831355B (zh) | 权重精度配置方法、装置、设备及存储介质 | |
CN116644804B (zh) | 分布式训练系统、神经网络模型训练方法、设备和介质 | |
CN111831358B (zh) | 权重精度配置方法、装置、设备及存储介质 | |
CN111831359B (zh) | 权重精度配置方法、装置、设备及存储介质 | |
CN111831354A (zh) | 数据精度配置方法、装置、芯片、芯片阵列、设备及介质 | |
CN111831356B (zh) | 权重精度配置方法、装置、设备及存储介质 | |
US20230342626A1 (en) | Model processing method and related apparatus | |
CN109272112B (zh) | 一种面向神经网络的数据重用指令映射方法、系统及装置 | |
CN111898752A (zh) | 执行lstm神经网络运算的装置和方法 | |
CN115496181A (zh) | 深度学习模型的芯片适配方法、装置、芯片及介质 | |
CN114298291A (zh) | 一种模型量化处理系统及一种模型量化处理方法 | |
EP3742283A1 (en) | Arithmetic processing device, method for controlling arithmetic processing device, and program for controlling arithmetic processing device | |
CN113705929A (zh) | 一种基于负荷特征曲线及典型特征值融合的春节假期负荷预测方法 | |
CN114444681A (zh) | 神经网络稀疏化的设备、方法及相应产品 | |
US20200134434A1 (en) | Arithmetic processing device, learning program, and learning method | |
Zlateski et al. | A Deeper Look at FFT and Winograd Convolutions | |
CN112614197A (zh) | 图像生成方法、装置、计算机设备和存储介质 |
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 |