CN110717585B - 神经网络模型的训练方法、数据处理方法和相关产品 - Google Patents

神经网络模型的训练方法、数据处理方法和相关产品 Download PDF

Info

Publication number
CN110717585B
CN110717585B CN201910945734.XA CN201910945734A CN110717585B CN 110717585 B CN110717585 B CN 110717585B CN 201910945734 A CN201910945734 A CN 201910945734A CN 110717585 B CN110717585 B CN 110717585B
Authority
CN
China
Prior art keywords
data
bit width
layer
data bit
network model
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
Application number
CN201910945734.XA
Other languages
English (en)
Other versions
CN110717585A (zh
Inventor
不公告发明人
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Cambricon Information Technology Co Ltd
Original Assignee
Shanghai Cambricon Information Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Cambricon Information Technology Co Ltd filed Critical Shanghai Cambricon Information Technology Co Ltd
Priority to CN201910945734.XA priority Critical patent/CN110717585B/zh
Publication of CN110717585A publication Critical patent/CN110717585A/zh
Application granted granted Critical
Publication of CN110717585B publication Critical patent/CN110717585B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F18/00Pattern recognition
    • G06F18/20Analysing
    • G06F18/24Classification techniques
    • G06F18/241Classification techniques relating to the classification model, e.g. parametric or non-parametric approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Artificial Intelligence (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Evolutionary Computation (AREA)
  • Biophysics (AREA)
  • Computational Linguistics (AREA)
  • Software Systems (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Biomedical Technology (AREA)
  • Computing Systems (AREA)
  • Molecular Biology (AREA)
  • General Health & Medical Sciences (AREA)
  • Evolutionary Biology (AREA)
  • Bioinformatics & Cheminformatics (AREA)
  • Bioinformatics & Computational Biology (AREA)
  • Computer Vision & Pattern Recognition (AREA)
  • Image Analysis (AREA)

Abstract

本申请涉及一种神经网络模型的训练方法、数据处理方法和相关产品。该方法包括:获取初始网络模型;其中,所述初始网络模型中包括多个网络层;宽对初始训练输入数据进行逐层处理,得到各所述网络层对应的处理后的数据;根据处理后的数据,对所述初始网络模型进行训练,得到训练好的所述神经网络模型。采用本方法能够降低处理器的运算开销。

Description

神经网络模型的训练方法、数据处理方法和相关产品
技术领域
本申请涉及计算机应用技术领域,特别是涉及一种神经网络模型的训练方法、数据处理方法和相关产品。
背景技术
随着神经网络技术的发展,深度学习框架(Caffe)已经广泛的得到应用。
基于Caffe的神经网络模型经过训练,能够对图像、语音和文本等数据进行处理,从而的到需要的识别结果,例如对图像进行识别从而得到图像特征,对语音进行识别从而得到控制指令等。
传统的神经网络模型中是采用浮点数据的形式进行数据处理,然而由于浮点数据的运算量大,造成处理器的能效开销大。
发明内容
基于此,有必要针对上述技术问题,提供一种能够降低运算开销的神经网络模型的训练方法、数据处理方法、装置、处理器、芯片、板卡和电子设备。
第一方面,本申请实施例提供一种神经网络模型的训练方法,所述方法包括:
获取初始网络模型;其中,所述初始网络模型中包括多个网络层;
按照各所述网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各所述网络层对应的量化后的量化数据;其中,所述目标数据位宽为根据每个所述网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽,所述初始训练输入数据包括语音数据、文本数据和图像数据中的至少一种;
根据各所述网络层的所述量化数据,对所述初始网络模型进行训练,得到训练好的所述神经网络模型。
在其中一个实施例中,所述按照各所述网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各所述网络层对应的量化后的量化数据之前,包括:
获取各所述网络层对应的初始数据位宽;
将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,并逐层执行数据位宽调整操作,得到每个所述网络层对应的目标数据位宽;其中,所述数据位宽调整操作为基于数据量化前后的量化误差调整数据位宽的操作。
在其中一个实施例中,所述数据位宽调整操作包括:获取当前网络层的当前数据位宽;采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据;获取所述未处理数据和所述已处理数据之间的量化误差;判断所述未处理数据和所述已处理数据之间的量化误差是否大于预设的误差阈值;若否,则将所述当前数据位宽作为所述当前网络层的所述目标数据位宽;若是,则根据所述当前数据位宽和预设的位宽调整步进,确定所述目标数据位宽。
在其中一个实施例中,所述根据所述当前数据位宽和预设的位宽调整步进确定所述目标数据位宽,包括:
将所述当前数据位宽和所述位宽调整步进之和,作为新的当前数据位宽,并采用所述新的当前数据位宽继续执行所述采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据的步骤,直至得到的新的已处理数据和所述未处理数据之间的量化误差小于或等于所述误差阈值为止,并将新的当前数据位宽作为所述目标数据位宽。
在其中一个实施例中,所述获取所述未处理数据和所述已处理数据之间的量化误差,包括:
采用公式
Figure BDA0002224069470000021
确定所述未处理数据和所述已处理数据的当前量化误差diffbit
其中,所述未处理数据的表达式为Z=[z1,z2,...,zm-1,zm,],已处理数据的表达式为
Figure BDA0002224069470000022
所述当前数据位宽为n,m和n为自然数。
在其中一个实施例中,所述将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,并逐层执行数据位宽调整操作,得到每个所述网络层对应的所述目标数据位宽,包括:
获取所述目标数据位宽调试操作执行的迭代间隔次数;
将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,按照所述迭代间隔次数,逐层执行所述数据位宽调整操作,得到每个所述网络层对应的所述目标数据位宽。
在其中一个实施例中,所述获取所述目标数据位宽调试操作执行的迭代间隔次数,包括:
根据所述初始训练输入数据输入至各所述网络层的量化前后的平均值确定所述迭代间隔次数。
在其中一个实施例中,所述根据所述初始训练输入数据输入至各所述网络层的量化前后的平均值确定所述迭代间隔次数,包括:
采用公式
Figure BDA0002224069470000031
确定所述迭代间隔次数I,其中,β和γ为训练超参数。
在其中一个实施例中,所述获取预设的初始网络模型,包括:
获取预设的原始网络模型;
将所述原始网络模型的各网络层的原始数据位宽进行低位宽初始化,得到所述初始网络模型。
在其中一个实施例中,所述将所述原始网络模型的各网络层的原始数据位宽进行低位宽初始化,得到所述初始网络模型,包括:
将所述原始网络模型的各网络层的原始数据位宽和权值参数的数据位宽均进行低位宽初始化,得到所述初始网络模型。
第二方面,本申请实施例提供一种数据处理方法,所述方法包括:
获取待处理数据;其中,所述待处理数据包括语音数据、文本数据和图像数据中的至少一种;
采用如上述任一实施例所述的神经网络模型对所述待处理数据进行处理,得到识别结果。
第三方面,本申请实施例提供一种神经网络模型的训练装置,所述装置包括:
获取模块,用于获取初始网络模型;其中,所述初始网络模型中包括多个网络层;
量化模块,用于按照各所述网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各所述网络层对应的量化后的量化数据;其中,所述目标数据位宽为根据每个所述网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽,所述初始训练输入数据包括语音数据、文本数据和图像数据中的至少一种;
训练模块,用于根据各所述网络层的所述量化数据,对所述初始网络模型进行训练,得到训练好的所述网络模型。
第四方面,本申请实施例提供一种数据处理装置,所述装置包括:
获取待处理数据;所述待处理数据包括语音数据、文本数据和图像数据中的至少一种;
采用如上述任一实施例所述的神经网络模型对所述待处理数据进行处理,得到识别结果。
第五方面,本申请实施例提供一种处理器,所述处理器用于实现上述任一实施例中的神经网络模型的训练方法地步骤,或如用于实现上述实施例中的数据处理方法的步骤。
第六方面,本申请实施例提供一种神经网络芯片,所述芯片包括上述实施例中的处理器。
第七方面,本申请实施例提供一种电子设备,所述电子设备包括上述实施例中的处理器或芯片。
第八方面,本申请实施例提供一种板卡,所述板卡包括:存储器件、接收装置和控制器件以及如上述实施例所述的芯片;
其中,所述神经网络芯片与所述存储器件、所述控制器件以及所述接收装置分别连接;
所述存储器件,用于存储数据;
所述接收装置,用于实现所述芯片与外部设备之间的数据传输;
所述控制器件,用于对所述芯片的状态进行监控。
在其中一个实施例中,
所述存储器件包括:多组存储单元,每一组所述存储单元与所述芯片通过总线连接,所述存储单元为:DDR SDRAM;
所述芯片包括:DDR控制器,用于对每个所述存储单元的数据传输与数据存储的控制;
所述接收装置为:标准PCIE接口。
上述神经网络模型的训练方法、数据处理方法、装置、处理器、芯片、板卡和电子设备,通过处理器获取初始网络模型,由于初始网络模型中包括多个网络层,处理器按照各网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各网络层对应的量化后的量化数据,之后处理器根据各网络层的量化数据,对初始网络模型进行训练,得到训练好的神经网络模型。由于数据位宽为根据每个网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽,初始训练输入数据包括语音数据、文本数据和图像数据中的至少一种,因此,该神经网络模型在每一网络层中,能够对语音数据、文本数据或者图像数据采用其对应的数据位宽进行处理,从而实现了将浮点数转化为定点数的数据处理,使得运算量大大减少,数据处理的效率大大提高,极大的提高了处理器的性能;同时由于目标数据位宽为根据每个网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽,每个网络层的目标数据位宽能够确保量化后的数据与未量化之前的数据之间的量化误差满足要求,在提高处理器的性能的情况下,确保了语音数据、文本数据或者图像数据的处理准确性。该方法能够在神经网络模型中不同的网络层,分别采用匹配的数据位宽对数据进行量化,从而实现了多个网络层的可变位宽的数据处理,在确保语音数据、文本数据或者图像数据的处理准确性的同时,能够在每个网络层根据实际的情况灵活的调整数据位宽,使得处理器数据处理效率得到充分的提高。
附图说明
图1为一个实施例中计算机设备的内部结构图;
图2为一个实施例提供的神经网络模型的训练方法的流程示意图;
图3为另一个实施例提供的神经网络模型的训练方法的流程示意图;
图4为又一个实施例提供的神经网络模型的训练方法的流程示意图;
图5为又一个实施例提供的神经网络模型的训练方法的流程示意图;
图6为又一个实施例提供的神经网络模型的训练方法的流程示意图;
图7为又一个实施例提供的数据处理方法的流程示意图;
图8为一个实施例提供的神经网络模型的训练装置的结构示意图;
图9为一个实施例提供的数据处理装置的结构示意图;
图10为一个实施例提供的芯片的结构示意图。
具体实施方式
下面将结合本披露实施例中的附图,对本披露实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本披露一部分实施例,而不是全部的实施例。基于本披露中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本披露保护的范围。
应当理解,本披露的说明书及附图中的术语“第一”、“第二”、“第三”和“第四”等是用于区别不同对象,而不是用于描述特定顺序。本披露的说明书和权利要求书中使用的术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本披露说明书中所使用的术语仅仅是出于描述特定实施例的目的,而并不意在限定本披露。如在本披露说明书和权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。还应当进一步理解,在本披露说明书和权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”。类似地,短语“如果确定”或“如果检测到[所描述条件或事件]”可以依据上下文被解释为意指“一旦确定”或“响应于确定”或“一旦检测到[所描述条件或事件]”或“响应于检测到[所描述条件或事件]”。
为了更清楚的表述本披露,现将本披露中所使用的部分技术术语统一描述如下:
浮点数:IEEE浮点标准用V=(-1)∧sign*mantissa*2∧E的形式表示一个数。其中,sign为符号位,0表示正数,1代表负数;E表示阶码,通常为整数;mantissa表示尾数,mantissa是一个二进制小数。
定点数:由共享指数(exponent)、符号位(sign)、尾数(mantissa)三部分构成。其中,共享指数是说指数在需要量化的一个浮点数集合内共享;符号位标志了定点数的正负。尾数决定了定点数的有效数字位数,即精度。
量化:将占用较多内存空间的浮点数转换成占用较少内存空间的定点数的过程,高精度数转换为定点数的过程就会在精度上引起一定的损失。
由于深度学习应用的性能受到处理器的计算性能、存储器带宽和存储器容量的制约。同时,使用近年来最常用的深度学习应用在进行物体检测时,每帧输入图像需要GPU处理0.15秒,无法满足自动驾驶等应用的实时需求。在现有的通用中央处理器(CentralProcessing Unit,简称CPU)和图形处理器(Graphics Processing Unit,简称GPU)上,深度学习应用使用单精度浮点数据进行运算。在GPU上,可以釆用16位浮点运算来进一步提升性能。此外,还使用较窄的定点数据进行运算也是一种很有效的提升深度学习处理器性能的方法。在深度学习处理器中,釆用低精度数据位宽表示有以下几点好处:节省存储器和数据总线功耗:数据位宽更窄时,深度学习权值模型和神经元数据的尺寸更小,需要的存储器访问次数更少,存储器和数据总线功耗开销更低;带宽利用率更高:数据位宽更窄时,处理器搬运相同大小的数据块包含的神经元或权值数据更多,在存储带宽受限的处理器中具有更高的带宽利用率;运算器开销更低:当数据位宽更窄时,处理器的运算器位宽也可以相应的减小,可大大降低处理器运算器开销,尤其是乘法器开销;在存储容量首先的网络中,可以在片上存储更大的网络模型,避免数据的反复搬运。本申请涉及一种多精度深度学习处理器来实现深度学习数据精度需求差异来提升性能,同时根据深度学习算法中的不同数据精度需求差异型大的特性,提出了一种训练分层多精度深度学习网络模型,该网络模型训练过程的具体描述如下。
高精度的浮点数据量化为低位宽的定点数据的过程中,数据的精度将受损,有可能导致应用的最终准确度下降。为了避免这个问题,通常会对量化后网络模型进行重训练来找回应用的准确度。重训练过程中,训练平台在每次迭代结束后微调网络权值模型。同时,每隔一定迭代次数,训练平台将评估模型在验证集的准确度。当量化后的模型相对量化前的初始模型识别准确率误差小于0.1%时,平台将结束微调,保存最终的量化后的权值模型以及量化参数。在进行深度学习数据量化时,网络每一层的权值和神经元数据使用不同的position和scale参数。数据量化的过程便是让未经量化的浮点数据值Fx和量化后定点二进制数据Ix的尽可能满足公式Fx≈Ix×2position×scale,其中position=floor(log2(alpha×maxabs)-width+1),
Figure BDA0002224069470000081
其中,maxabs是量化前的数据集内最大的绝对值数值。alpha为训练超参数,作用是防止神经元数据由于样批样本的波动性而低估了maxabs导致的实际数值溢出现象;width为量化后定点数据位宽。在重训练过程中,position或者scale这两组参数的值根据算法进行更新,重训练结束后网络每一个层的权值和神经元数据的position和scale都确定下来。在网络正向推理时,即对神经元数据进行处理过程中,处理器将根据这两组参数进行数据格式的转换。
重训练开始时,可以先将每一层的权值和输入数据的数据位宽初始化为一个较小值,然后随着训练的进行自适应地调整。假设待量化的数据集为Z=[z1,z2,...,zm-1,zm,],量化为n比特数据后对应的数值为
Figure BDA0002224069470000091
量化误差
Figure BDA0002224069470000092
当diffbit大于预设的阈值th时,数据位宽增加t位,新的数据位宽
Figure BDA0002224069470000094
其中,th和t均为可变超参数,该可变超参数可以根据具体情况进行调整。
在重训练微调的过程中,如果在每个训练迭代结束后都统计数据量化的误差,需要处理器进行大量的计算。考虑到深度学习训练时数值变化存在连续性,在一定时间间隔内数据的position、scale和width不会剧烈变化,因此可以每间隔一定的训练迭代次数统计一次当前浮点数据量化误差,然后重新计算position或scale。同时,由于训练时每次迭代数据数值变化速度是均匀的,而随着数据量化位宽的增加定点数据可表示范围呈指数增长,因此统计间隔的迭代次数可以随着数据位宽的变化而动态变化。例如在重训练时可以根据量化前后数据平均值决定下次统计间隔的迭代次数I,例如采用公式
Figure BDA0002224069470000093
或该公式的变形计算迭代次数I,其中,β和γ为训练超参数。其中,训练超参数是预先设定的,可以根据具体情况进行调整。这种自适应的位宽调整方法需要在确保每次数据位宽调整都经过较多样本训练后趋于稳定后进行,可防止位宽、position或scale的快速变化造成训练过程振荡抖动的情况出现。由于训练过程中,神经元和权值釆用不同的数据位宽、position和scale参数。重训练后得到的不同网络模型的不同层、不同数据类型的量化位宽不同,如表1.1所示。
表1.1
Figure BDA0002224069470000101
本申请实施例提供的神经网络模型的训练方法,可以应用于如图1所示的计算机设备,该计算机设备可以包括处理器。可选地,该处理器可以为人工智能处理器,本申请实施例对处理器的类型并不做限定。需要说明的是,本申请实施例提供的网络模型的获取方法,其执行主体可以包含处理器的主板,也可以是包含上述主板的电子设备。下述方法实施例中,均以执行主体是处理器为例来进行说明。
本领域技术人员可以理解,图1中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
下面以具体的实施例对本申请的技术方案以及本申请的技术方案如何解决上述技术问题进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例中不再赘述。下面将结合附图,对本申请的实施例进行描述。
图2为一个实施例提供的神经网络模型的训练方法,该方法可以应用于包括处理器的计算平台中。该方法包括:
S11、获取初始网络模型;其中,所述初始网络模型中包括多个网络层。
具体的,处理器获取初始网络模型,可选的,可以是从数据库中下载预先建立好的神经网络的模型,或者是接收其他设备发送的初始网络模型,还可以是将下载的模型进行初始化,得到所述初始网络模型。其中,上述初始网络模型为神经网络模型,包括多个网络层,例如卷积层、归一化层、池化层、全连接层等多个网络层中的任意组合。
S12、按照各所述网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各所述网络层对应的量化后的量化数据;其中,所述目标数据位宽为根据每个所述网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽,所述初始训练输入数据包括语音数据、文本数据和图像数据中的至少一种。
具体的,在模型训练之前,每个网络层均对应各自的数据位宽,并以各自的数据位宽将输入该网络层的输入数据,即输入的浮点数进行量化,得到该网络层对应的数据位宽的量化数据。需要说明的是,每个网络层的数据位宽是根据各自层的输入数据和量化后的数据之间的量化误差所确定的数据位宽。例如,处理器在每个网络层均对输入的浮点数进行量化,量化后的定点数和未量化的浮点数存在量化误差,因此,每个网络层对应的数据位宽要使得量化后的定点数和未量化前的浮点数之间的量化误差满足要求,例如小于一定的阈值,以此确保模型训练的准确性。其中,上述初始训练输入数据可以包括语音数据、文本数据和图像数据中的至少一种,例如照片、一段语音或者一段视频等。
S13、根据各所述网络层的所述量化数据,对所述初始网络模型进行训练,得到训练好的所述神经网络模型。
具体的,处理器根据各个网络层的量化数据,对初始网络模型进行训练,即向初始网络模型输入多组初始训练输入数据的量化后的量化数据,并通过初始网络模型的输出的结果,计算损失函数,经过多次迭代,直至损失函数满足要求,则将得到的新的权值数据更新至初始网络模型中,从而得到训练好的所述神经网络模型。
本实施例中,处理器获取初始网络模型,由于初始网络模型中包括多个网络层,处理器按照各网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各网络层对应的量化后的量化数据,之后处理器根据各网络层的量化数据,对初始网络模型进行训练,得到训练好的神经网络模型。由于数据位宽为根据每个网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽,初始训练输入数据包括语音数据、文本数据和图像数据中的至少一种,因此,该神经网络模型在每一网络层中,能够对语音数据、文本数据或者图像数据采用其对应的数据位宽进行处理,从而实现了将浮点数转化为定点数的数据处理,使得运算量大大减少,数据处理的效率大大提高,极大的提高了处理器的性能;同时由于目标数据位宽为根据每个网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽,每个网络层的目标数据位宽能够确保量化后的数据与未量化之前的数据之间的量化误差满足要求,在提高处理器的性能的情况下,确保了语音数据、文本数据或者图像数据的处理准确性。该方法能够在神经网络模型中不同的网络层,分别采用匹配的数据位宽对数据进行量化,从而实现了多个网络层的可变位宽的数据处理,在确保语音数据、文本数据或者图像数据的处理准确性的同时,能够在每个网络层根据实际的情况灵活的调整数据位宽,使得处理器数据处理效率得到充分的提高。
可选的,上述步骤S11的一种可能的实现方式还可以如图3所示,包括:
S111、获取预设的原始网络模型。
具体的,处理器获取预设的原始网络模型,可选的,可以是从数据库中下载预先建立好的神经网络的模型作为原始网络模型,或者是接收其他设备发送的原始网络模型。其中,上述原始网络模型为神经网络模型,包括多个网络层,例如卷积层、归一化层、池化层、全连接层等多个网络层中的任意组合。
S112、将所述原始网络模型的各网络层的原始数据位宽进行低位宽初始化,得到所述初始网络模型。
具体的,处理器将上述原始网络模型的各网络层的原始数据位宽进行低位宽初始化,即将网络层的数据位宽设置为一个较低的数据位宽。例如原始网络模型的卷积层的原始数据位宽为8比特,则处理器可以将原始网络模型的卷积层的数据位宽初始化为2比特或者4比特。
可选地,处理器还可以将原始网络模型的各网络层的原始数据位宽和权值参数的数据位宽均进行低位宽初始化,得到初始网络模型,即将各网络层的原始数据位宽和权值参数的数据位宽均设置为较低的数据位宽;可选地,处理器还可以仅将权值参数的数据位宽均进行低位宽初始化,对此本实施例不做限定。处理器可以根据需求选择将哪些数据位宽进行低位宽初始化,当然,每个网络层的低位宽初始化所得到的数据位宽并不一定相同,其可以根据经验值进行设定,当然每个网络层的低位宽初始化所得到的数据位宽也可以相同,或者按照允许的最小值进行设置,本实施例对此均不限定。本实施中,处理器将原始网络模型的各网络层的原始数据位宽和权值参数的数据位宽均进行低位宽初始化,得到初始网络模型,因此待处理的数据位宽和权值参数的数据位宽均能够基于更低的数据位宽进行重训练,进而实现由低到高数据位宽的遍历训练,能够使得最终得到的数据位宽在确保数据准确性的前提下,尽可能的保持更低的数据位宽,实现最大化的减小神经元数据的数据位宽和权值参数的数据位宽以提高数据处理的效率,进而最大化的提高处理器的性能。
本实施例中,处理器获取预设的原始网络模型,将原始网络模型的各网络层的原始数据位宽进行低位宽初始化,得到初始网络模型,因此待处理的数据位宽能够基于更低的数据位宽进行重训练,进而实现由低到高数据位宽遍历训练,能够使得最终得到的数据位宽在确保数据准确性的前提下,尽可能的采用更低的数据位宽进行量化,实现最大化的减小神经元数据的数据位宽以提高数据处理的效率,进而最大化的提高处理器的性能。
可选地,在上述各个实施例的基础上,步骤S12之前,还可以如图4所示,包括:
S121、获取各所述网络层对应的初始数据位宽。
S122、将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,并逐层执行数据位宽调整操作,得到每个所述网络层对应的所述目标数据位宽;其中,所述数据位宽调整操作为基于数据量化前后的量化误差调整数据位宽的操作。
具体的,处理器可以读取每个网络层对应的初始数据位宽,该初始数据位宽为预先设置的,然后处理器将输入初始网络模型的初始训练输入数据逐层数据位宽调整操作,即将初始训练输入数据逐层输入每个网络层,并在每个网络层对输入的数据进行量化,然后根据量化后的数据和未量化之前的数据之间的误差,对当前网络层的数据位宽进行调整,从而得到能够使得量化后的数据和未量化之前的数据之间的误差满足数据精度的要求的目标数据位宽。例如第一个网络层接收到初始训练输入数据,首先按照第一个网络层的初始数据位宽进行数据的量化,然后根据第一个网络层量化后的数据的未量化的数据之间的误差确定第一个网络层的目标数据位宽,并将第一个网络层中量化后的数据输入第一个网络层,然后将第一个网络层的输出数据作为第二个网络层的输入数据,按照第二个网络层的初始数据位宽进行数据的量化,进一步根据第二个网络层量化后的数据的未量化的数据之间的误差确定第二个网络层的数据位宽,并将第二个网络层中量化后的数据继续输入再下一个网络层,直至输入最后一个网络层。
本实施例中,处理器能够对各个网络层的数据位宽,基于各个网络层中数据量化前后的误差进行调整,从而得到可变位宽的神经网络模型,因此在神经网络模型的不同的网络层中分别采用匹配的目标数据位宽对数据进行量化,从而实现了多个网络层的可变位宽的数据处理,在确保语音数据、文本数据或者图像数据的处理准确性的同时,能够在每个网络层根据实际的情况灵活的调整数据位宽,使得处理器数据处理效率得到充分的提高。
可选地,在上述实施例的基础上,所述数据位宽调整操作可以如图5所示,包括:
S21、获取当前网络层的当前数据位宽。
S22、采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据。
S23、获取所述未处理数据和所述已处理数据之间的量化误差。
具体的,处理器可以获取当前网络层的当前数据位宽,其中,当前网络层可以是神经网络模型中的任一各网络层,此处不做限定。处理器在当前网络层采用当前数据位宽对输入的未处理数据进行量化,得到了量化后的已处理数据,然后,处理器将未处理数据和已处理数据进行误差计算,得到二者的量化误差diffbit
可选的,该步骤S23的一种可能的实现方式可以是采用公式
Figure BDA0002224069470000151
或者该公式的变形,来确定未处理数据和已处理数据的量化误差;其中,未处理数据的表达式为Z=[z1,z2,...,zm-1,zm,],已处理数据的表达式为
Figure BDA0002224069470000152
当前数据位宽为n,m和n为自然数。采用公式
Figure BDA0002224069470000153
所确定的量化误差能够准确地反应两组数据的差异,进而使得后续的数据处理更为精确,数据处理的结果更为准确。
S24、判断所述未处理数据和所述已处理数据之间的量化误差是否大于预设的误差阈值;若否,则将所述当前数据位宽作为所述当前网络层的所述目标数据位宽;若是,则根据所述当前数据位宽和预设的位宽调整步进,确定所述目标数据位宽。
具体的,处理器判断未处理数据和所述已处理数据之间的量化误差是否大于预设的误差阈值,如果未处理数据和已处理数据之间的量化误差大于误差阈值,则处理器确定采用当前数据位宽进行量化能够满足精度的需求,因此将当前数据位宽作为所述当前网络层的所述目标数据位宽,后续可以按照该目标数据位宽进行数据的量化;如果未处理数据和已处理数据之间的量化误差小于或等于误差阈值,则处理器可以根据预设的位宽调试步进对当前数据位宽进行调整,例如将当前数据位宽和至少一个位宽调试步进的和作为新的当前数据位宽,可选地,还可以进一步确定新的当前数据位宽是否能够满足量化误差的要求。
可选地,本步骤中“根据所述当前数据位宽和预设的位宽调整步进,确定所述目标数据位宽”的一种可能的实现方式还可以包括:将所述当前数据位宽和所述位宽调整步进之和,作为新的当前数据位宽,并采用所述新的当前数据位宽继续执行所述采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据的步骤,直至得到的新的已处理数据和所述未处理数据之间的量化误差小于或等于所述误差阈值为止,并将新的当前数据位宽作为所述目标数据位宽。具体的,处理器将当前数据位宽和预设的位宽调整步进的和,作为新的当前数据位宽,并采用新的当前数据位宽继续执行所述采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据的步骤,如果采用新的当前数据位宽进行数据量化所得到的量化前后的量化误差小于或等于误差阈值,则将这个新的当前数据位宽作为目标数据位宽;如果采用新的当前数据位宽进行数据量化所得到的量化前后的量化误差大于误差阈值,则继续在新的当前数据位宽上叠加位宽调试步进,得到另一个新的当前数据位宽,并继续采用另一个新的当前数据位宽迭代执行上述步骤,直至得到的量化误差小于或等于所述误差阈值为止,并将最终得到的新的当前数据位宽作为所述数据位宽。采用该方法,能够使得每个网络层的数据位宽在满足数据精度要求的情况下,数据位宽更低,因此确保数据处理准确性的同时,能够以最低数据位宽进行运算,最大化的提高了数据处理的效率,因此最大化的提高了处理器的性能。
具体的,处理器判断未处理数据和所述已处理数据之间的量化误差是否大于预设的误差阈值,其中误差阈值可以是预先设置的数据,例如可以用th来表示,该th为可变超参数。如果未处理数据和已处理数据之间的量化误差小于或者等于误差阈值,则处理器能够确定采用当前数据位宽进行量化后的数据满足精度要求,因此,将当前数据位宽作为所述当前网络层的所述目标数据位宽,即不再调整数据位宽。如果未处理数据和已处理数据之间的量化误差大于误差阈值,则处理器确定量化后的数据不满足精度要求,因此,处理器对当前数据位宽进行调整,例如对当前数据位宽增加一定的位数,即将当前数据位宽增加一个或者多个位宽调整步进,作为新的当前数据位宽。然后处理器继续按照新的当前数据位宽对输入的数据进行量化,并计算得到的已处理数据与未处理数据之间的量化误差,即继续执行采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据的步骤,如此迭代执行,直至得到的新的已处理数据和所述未处理数据之间的量化误差小于或等于所述误差阈值为止,处理器能够确定此时的当前数据位宽能够满足量化精度的要求,因此将新的当前数据位宽作为所述目标数据位宽,从而得到低位宽且满足数据精度要求的目标数据位宽。本实施例所提供的数据位宽调整操作,能够使得每个网络层的数据位宽在满足数据精度要求的情况下,数据位宽更低,因此确保数据处理准确性的同时,能够以最低数据位宽进行运算,最大化的提高了数据处理的效率,因此最大化的提高了处理器的性能。
可选的,上述步骤S122的一种可能的实现方式还可以如图6所示,包括:
S1221、获取所述数据位宽调试操作执行的迭代间隔次数。
具体的,处理器可以获取数据位宽调试操作执行的迭代间隔次数,可以是读取预先设置的迭代间隔次数,也可以是根据网络层量化前后的数据所确定的迭代间隔次数。由于训练过程中,每次迭代数据数值变化速度是匀速的,而随着数据量化位宽的增加顶点数据可表示的范围呈指数增长,所以统计的迭代间隔次数可随着数据位宽的变化而动态变化。
可选地,本步骤S1221的一种可能的实现方式包括:根据所述初始训练输入数据输入至各所述网络层的量化前后的平均值确定所述迭代间隔次数I。具体的,处理器可以采用公式
Figure BDA0002224069470000171
或者该公式的变形,确定所述迭代间隔次数I,其中,β和γ为训练超参数,该训练超参数为预先设置的数值。其中,量化前后的数据分别表征为Z=[z1,z2,...,zm-1,zm,]和
Figure BDA0002224069470000172
其中,n位当前网络层的数据位宽,m为数据集中的数据个数。m和n均为自然数。采用该公式确定迭代间隔次数I,能够基于各网络层的量化前后的平均值确定迭代间隔次数,能够随着数据位宽的变化而动态变化,既避免了多次频繁低效率的调整,还能够在数据变化较大的时候及时更新迭代间隔次数,进而使得数据位宽的调整频率能够更为合理,兼顾了数据处理的准确性和计算效率的平衡。
S1222、将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,按照所述迭代间隔次数,逐层执行所述数据位宽调整操作,得到每个所述网络层对应的所述目标数据位宽。
具体的,处理器将初始训练输入数据逐层输入初始网络模型的各网络层,按照迭代间隔次数,逐层执行数据位宽调整操作,即并非每次都执行数据位宽调整操作,而是记录数据位宽调整操作的次数和网络迭代的次数,当网络迭代的次数累积到迭代间隔次数的时候,则执行一次数据位宽调试操作,从而得到每个网络层对应的目标数据位宽。
本实施例所提供的方法,处理器按照迭代间隔次数,逐层执行数据位宽调整操作,得到每个网络层对应的目标数据位宽,进而使得数据位宽调整操作可随着数据位宽的变化而动态变化,既避免了多次频繁低效率的调整,还能够在数据变化较大的时候及时的进行数据位宽的调整,进而使得数据位宽的调整能够更合理,兼顾了数据处理的准确性和计算效率的平衡。
本申请实施例还提供了一种数据处理方法,应用于包括处理器的计算平台中,可以参见图7所示的过程,该方法包括:
S31、获取待处理数据;其中,所述待处理数据包括语音数据、文本数据中的至少一种。
S32、采用如上述任一实施例中所述的神经网络模型对所述待处理数据进行处理,得到识别结果。
本实施例所提供的数据处理方法,其技术原理和实现效果可以参见上述实施例中的描述。由于采用了上述实施例中所述的神经网络模型对所述待处理数据进行处理,得到识别结果,因此实现了将浮点数转化为定点数的数据处理,使得运算量大大减少,数据处理的效率大大提高,极大的提高了处理器的性能;同时由于数据位宽为根据每个网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽,每各网络层的数据位宽能够确保量化后的数据与未量化之前的数据之间的量化误差满足要求,在提高处理器的性能的情况下,确保了语音数据、文本数据或者图像数据的处理准确性。该方法能够在神经网络模型的不同的网络层分别采用匹配的数据位宽对数据进行量化,从而实现了多个网络层的可变位宽的数据处理,在确保语音数据、文本数据或者图像数据的处理准确性的同时,能够在每个网络层根据实际的情况灵活的调整数据位宽,使得处理器数据处理效率得到充分的提高。
应该理解的是,虽然图2-7的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图2-7中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
图8为一个实施例提供的神经网络模型的获取装置,如图8所示,所述装置包括:
获取模块110,用于获取初始网络模型;其中,所述初始网络模型中包括多个网络层;
量化模块120,用于按照各所述网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各所述网络层对应的量化后的量化数据;其中,所述目标数据位宽为根据每个所述网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽;
训练模块130,用于根据各所述网络层的所述量化数据,对所述初始网络模型进行训练,得到训练好的所述神经网络模型。
在一个实施例中,量化模块120,具体用于获取各所述网络层对应的初始数据位宽;将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,并逐层执行数据位宽调整操作,得到每个所述网络层对应的所述目标数据位宽;其中,所述数据位宽调整操作为基于数据量化前后的量化误差调整数据位宽的操作。
在一个实施例中,所述数据位宽调整操作包括:获取当前网络层的当前数据位宽;采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据;获取所述未处理数据和所述已处理数据之间的量化误差;判断所述未处理数据和所述已处理数据之间的量化误差是否大于预设的误差阈值;若否,则将所述当前数据位宽作为所述当前网络层的所述数据位宽;若是,则根据所述当前数据位宽和预设的位宽调整步进,确定所述目标数据位宽。
在一个实施例中,量化模块120,具体用于将所述当前数据位宽和所述位宽调整步进之和,作为新的当前数据位宽,并采用所述新的当前数据位宽继续执行所述采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据的步骤,直至得到的新的已处理数据和所述未处理数据之间的量化误差小于或等于所述误差阈值为止,并将新的当前数据位宽作为所述目标数据位宽。
在一个实施例中,量化模块120,具体用于所述获取所述未处理数据和所述已处理数据之间的量化误差,包括:采用公式
Figure BDA0002224069470000201
确定所述未处理数据和所述已处理数据的当前量化误差diffbit;其中,所述未处理数据的表达式为Z=[z1,z2,...,zm-1,zm,],已处理数据的表达式为
Figure BDA0002224069470000202
所述当前数据位宽为n,m和n为自然数。
在一个实施例中,量化模块120,具体用于获取所述数据位宽调试操作执行的迭代间隔次数;
将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,按照所述迭代间隔次数,逐层执行所述数据位宽调整操作,得到每个所述网络层对应的所述目标数据位宽。
在一个实施例中,量化模块120,具体用于根据所述初始训练输入数据输入至各所述网络层的量化前后的平均值确定所述迭代间隔次数。
在一个实施例中,量化模块120,具体用于采用公式
Figure BDA0002224069470000211
确定所述迭代间隔次数I,其中,β和γ为训练超参数。
在一个实施例中,获取模块110,具体用于获取预设的原始网络模型;将所述原始网络模型的各网络层的原始数据位宽进行低位宽初始化,得到所述初始网络模型。
在一个实施例中,获取模块110,具体用于将所述原始网络模型的各网络层的原始数据位宽和权值参数的数据位宽均进行低位宽初始化,得到所述初始网络模型。
上述网络模型的获取装置,可以执行上述网络模型的获取方法的实施例,其实现原理和技术效果类似,在此不再赘述。
图9为一个实施例提供的数据处理装置,如图9所示,所述装置包括:
获取模块210、用于获取待处理数据;所述待处理数据包括语音数据、文本数据中的至少一种;
处理模块220、用于采用上述任一实施例所提供的所述的神经网络模型对所述待处理数据进行处理,得到识别结果。
上述数据处理装置,可以执行上述数据处理方法的实施例,其实现原理和技术效果类似,在此不再赘述。
本申请实施例还提供了一种处理器,所述处理器用于实现如下步骤:获取初始网络模型;其中,所述初始网络模型中包括多个网络层;按照各所述网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各所述网络层对应的量化后的量化数据;其中,所述目标数据位宽为根据每个所述网络层的输入数据和量化后的数据之间的量化误差所确定的数据位宽,所述初始训练输入数据包括语音数据、文本数据和图像数据中的至少一种;根据各所述网络层的所述量化数据,对所述初始网络模型进行训练,得到训练好的所述神经网络模型。
在一个实施例中,所述处理器还用于实现如下步骤:获取各所述网络层对应的初始数据位宽;将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,并逐层执行数据位宽调整操作,得到每个所述网络层对应的目标数据位宽;其中,所述数据位宽调整操作为基于数据量化前后的量化误差调整数据位宽的操作。
在一个实施例中,所述处理器还用于实现如下步骤:获取当前网络层的当前数据位宽;采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据;获取所述未处理数据和所述已处理数据之间的量化误差;判断所述未处理数据和所述已处理数据之间的量化误差是否大于预设的误差阈值;若否,则将所述当前数据位宽作为所述当前网络层的所述目标数据位宽;若是,则根据所述当前数据位宽和预设的位宽调整步进,确定所述目标数据位宽。
在一个实施例中,所述处理器还用于实现如下步骤:将所述当前数据位宽和所述位宽调整步进之和,作为新的当前数据位宽,并采用所述新的当前数据位宽继续执行所述采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据的步骤,直至得到的新的已处理数据和所述未处理数据之间的量化误差小于或等于所述误差阈值为止,并将新的当前数据位宽作为所述目标数据位宽。
在一个实施例中,所述处理器还用于实现如下步骤:采用公式
Figure BDA0002224069470000221
确定所述未处理数据和所述已处理数据的当前量化误差diffbit;其中,所述未处理数据的表达式为Z=[z1,z2,...,zm-1,zm,],已处理数据的表达式为
Figure BDA0002224069470000222
所述当前数据位宽为n,m和n为自然数。
在一个实施例中,所述处理器还用于实现如下步骤:获取所述目标数据位宽调试操作执行的迭代间隔次数;将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,按照所述迭代间隔次数,逐层执行所述数据位宽调整操作,得到每个所述网络层对应的所述目标数据位宽。
在一个实施例中,所述处理器还用于实现如下步骤:根据所述初始训练输入数据输入至各所述网络层的量化前后的平均值确定所述迭代间隔次数。
在一个实施例中,所述处理器还用于实现如下步骤:采用公式
Figure BDA0002224069470000231
确定所述迭代间隔次数I,其中,β和γ为训练超参数。
在一个实施例中,所述处理器还用于实现如下步骤:获取预设的原始网络模型;将所述原始网络模型的各网络层的原始数据位宽进行低位宽初始化,得到所述初始网络模型。
在一个实施例中,所述处理器还用于实现如下步骤:将所述原始网络模型的各网络层的原始数据位宽和权值参数的数据位宽均进行低位宽初始化,得到所述初始网络模型。
本申请实施例还提供了一种处理器,所述处理器用于实现如下步骤:获取待处理数据;其中,所述待处理数据包括语音数据、文本数据和图像数据中的至少一种;采用上述任一实施例所述的神经网络模型对所述待处理数据进行处理,得到识别结果。
本申请实施例还提供了一种神经网络芯片,所述芯片包括上述实施例中的处理器。
图10为一个实施例提供的板卡的结构示意图。该板卡可以应用于电子设备,所述板卡除了包括上述人工智能处理器389以外,还可以包括其它的配套部件,该配套部件包括但不限于:存储器件390、接收装置391和控制器件392;
所述存储器件390与所述人工智能处理器通过总线连接,用于存储数据。所述存储器件可以包括多组存储单元393。每一组所述存储单元与所述人工智能处理器通过总线连接。可以理解,每一组所述存储单元可以是DDR SDRAM(英文:Double Data Rate SDRAM,双倍速率同步动态随机存储器)。DDR不需要提高时钟频率就能加倍提高SDRAM的速度。DDR允许在时钟脉冲的上升沿和下降沿读出数据。DDR的速度是标准SDRAM的两倍。在一个实施例中,所述存储装置可以包括4组所述存储单元。每一组所述存储单元可以包括多个DDR4颗粒(芯片)。
在一个实施例中,每一组所述存储单元包括多个并联设置的双倍速率同步动态随机存储器。DDR在一个时钟周期内可以传输两次数据。在所述人工智能处理器中设置控制DDR的控制器,用于对每个所述存储单元的数据传输与数据存储的控制。
所述接收装置与人工智能处理器电连接。所述接收装置用于实现所述人工智能处理器与外部设备(例如服务器或计算机)之间的数据传输。例如在一个实施例中,所述接收装置可以为标准PCIE接口。比如,待处理的数据由服务器通过标准PCIE接口传递至所述人工智能处理器,实现数据转移。优选的,当采用PCIE 3.0X 16接口传输时,理论带宽可达到16000MB/s。在另一个实施例中,所述接收装置还可以是其它的接口,本申请并不限制上述其它的接口的具体表现形式,所述接口单元能够实现转接功能即可。另外,所述人工智能处理器的计算结果仍由所述接收装置传送回外部设备(例如服务器)。
所述控制器件与所述人工智能处理器电连接。所述控制器件用于对所述人工智能处理器的状态进行监控。具体的,所述人工智能处理器与所述控制器件可以通过SPI接口电连接。所述控制器件可以包括单片机(Micro Controller Unit,MCU)。如所述人工智能处理器可以包括多个处理芯片、多个处理核或多个处理电路,可以带动多个负载。因此,所述人工智能处理器可以处于多负载和轻负载等不同的工作状态。通过所述控制装置可以实现对所述人工智能处理器中多个处理芯片、多个处理和或多个处理电路的工作状态的调控。
在一个实施例中,提供了一种电子设备,该电子设备包括上述处理器、芯片或板卡。电子设备可以为数据处理器、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、手机、行车记录仪、导航仪、传感器、摄像头、服务器、云端服务器、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过电子设备程序来指令相关的硬件来完成,所述的电子设备程序可存储于一非易失性电子设备可读取存储介质中,该电子设备程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (15)

1.一种神经网络模型的训练方法,其特征在于,应用于包括处理器的计算平台中,所述方法包括:
获取初始网络模型;其中,所述初始网络模型中包括多个网络层;
按照各所述网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各所述网络层对应的量化后的量化数据;其中,所述目标数据位宽为根据每个所述网络层的输入数据和量化后的数据之间的量化误差大于预设阈值时,按照预设步长进行递增得到的数据位宽,且所述量化误差为每间隔预设迭代次数统计的量化误差,所述初始训练输入数据包括语音数据、文本数据和图像数据中的至少一种;
根据各所述网络层的所述量化数据,对所述初始网络模型进行训练,得到训练好的所述神经网络模型。
2.根据权利要求1所述的方法,其特征在于,所述按照各所述网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各所述网络层对应的量化后的量化数据之前,包括:
获取各所述网络层对应的初始数据位宽;
将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,并逐层执行数据位宽调整操作,得到每个所述网络层对应的目标数据位宽;其中,所述数据位宽调整操作为基于数据量化前后的量化误差调整数据位宽的操作。
3.根据权利要求2所述的方法,其特征在于,所述数据位宽调整操作包括:
获取当前网络层的当前数据位宽;
采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据;
获取所述未处理数据和所述已处理数据之间的量化误差;
判断所述未处理数据和所述已处理数据之间的量化误差是否大于预设的误差阈值;
若否,则将所述当前数据位宽作为所述当前网络层的所述目标数据位宽;
若是,则根据所述当前数据位宽和预设的位宽调整步进,确定所述目标数据位宽。
4.根据权利要求3所述的方法,其特征在于,所述根据所述当前数据位宽和预设的位宽调整步进确定所述目标数据位宽,包括:
将所述当前数据位宽和所述位宽调整步进之和,作为新的当前数据位宽,并采用所述新的当前数据位宽继续执行所述采用所述当前网络层的所述当前数据位宽对未处理数据进行量化,得到量化后的已处理数据的步骤,直至得到的新的已处理数据和所述未处理数据之间的量化误差小于或等于所述误差阈值为止,并将新的当前数据位宽作为所述目标数据位宽。
5.根据权利要求3或4所述的方法,其特征在于,所述获取所述未处理数据和所述已处理数据之间的量化误差,包括:
采用公式
Figure FDA0002525893180000021
确定所述未处理数据和所述已处理数据的当前量化误差diffbit
其中,所述未处理数据的表达式为Z=[z1,z2,...,zm-1,zm,],已处理数据的表达式为
Figure FDA0002525893180000022
所述当前数据位宽为n,m和n为自然数。
6.根据权利要求2所述的方法,其特征在于,所述将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,并逐层执行数据位宽调整操作,得到每个所述网络层对应的所述目标数据位宽,包括:
获取所述目标数据位宽调试操作执行的迭代间隔次数;
将所述初始训练输入数据逐层输入所述初始网络模型的各网络层,按照所述迭代间隔次数,逐层执行所述数据位宽调整操作,得到每个所述网络层对应的所述目标数据位宽。
7.根据权利要求6所述的方法,其特征在于,所述获取所述目标数据位宽调试操作执行的迭代间隔次数,包括:
根据所述初始训练输入数据输入至各所述网络层的量化前后的平均值确定所述迭代间隔次数。
8.根据权利要求7所述的方法,其特征在于,所述根据所述初始训练输入数据输入至各所述网络层的量化前后的平均值确定所述迭代间隔次数,包括:
采用公式
Figure FDA0002525893180000031
确定所述迭代间隔次数I,其中,β和γ为训练超参数。
9.根据权利要求1所述的方法,其特征在于,所述获取预设的初始网络模型,包括:
获取预设的原始网络模型;
将所述原始网络模型的各网络层的原始数据位宽进行低位宽初始化,得到所述初始网络模型。
10.根据权利要求9所述的方法,其特征在于,所述将所述原始网络模型的各网络层的原始数据位宽进行低位宽初始化,得到所述初始网络模型,包括:
将所述原始网络模型的各网络层的原始数据位宽和权值参数的数据位宽均进行低位宽初始化,得到所述初始网络模型。
11.一种数据处理方法,其特征在于,应用于包括处理器的计算平台中,包括:
获取待处理数据;其中,所述待处理数据包括语音数据、文本数据和图像数据中的至少一种;
采用如权利要求1至10中任一项所述的神经网络模型对所述待处理数据进行处理,得到识别结果。
12.一种神经网络模型的训练装置,其特征在于,所述装置包括:
获取模块,用于获取初始网络模型;其中,所述初始网络模型中包括多个网络层;
量化模块,用于按照各所述网络层对应的目标数据位宽对初始训练输入数据进行逐层量化,得到各所述网络层对应的量化后的量化数据;其中,所述目标数据位宽为根据每个所述网络层的输入数据和量化后的数据之间的量化误差大于预设阈值时,按照预设步长进行递增得到的数据位宽,且所述量化误差为每间隔预设迭代次数统计的量化误差,所述初始训练输入数据包括语音数据、文本数据和图像数据中的至少一种;
训练模块,用于根据各所述网络层的所述量化数据,对所述初始网络模型进行训练,得到训练好的所述网络模型。
13.一种数据处理装置,其特征在于,包括:
获取待处理数据;所述待处理数据包括语音数据、文本数据和图像数据中的至少一种;
采用如权利要求1至10中任一项所述的神经网络模型对所述待处理数据进行处理,得到识别结果。
14.一种处理器,其特征在于,所述处理器用于实现如权利要求1-10任一项所述的神经网络模型的训练方法或如权利要求11所述的数据处理方法的步骤。
15.一种电子设备,其特征在于,所述电子设备包括如权利要求14所述的处理器。
CN201910945734.XA 2019-09-30 2019-09-30 神经网络模型的训练方法、数据处理方法和相关产品 Active CN110717585B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910945734.XA CN110717585B (zh) 2019-09-30 2019-09-30 神经网络模型的训练方法、数据处理方法和相关产品

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910945734.XA CN110717585B (zh) 2019-09-30 2019-09-30 神经网络模型的训练方法、数据处理方法和相关产品

Publications (2)

Publication Number Publication Date
CN110717585A CN110717585A (zh) 2020-01-21
CN110717585B true CN110717585B (zh) 2020-08-25

Family

ID=69212155

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910945734.XA Active CN110717585B (zh) 2019-09-30 2019-09-30 神经网络模型的训练方法、数据处理方法和相关产品

Country Status (1)

Country Link
CN (1) CN110717585B (zh)

Families Citing this family (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111401546B (zh) * 2020-02-11 2023-12-08 华为技术有限公司 神经网络模型的训练方法及其介质和电子设备
CN113298843B (zh) * 2020-02-24 2024-05-14 中科寒武纪科技股份有限公司 数据量化处理方法、装置、电子设备和存储介质
CN111563593B (zh) * 2020-05-08 2023-09-15 北京百度网讯科技有限公司 神经网络模型的训练方法和装置
CN111898751B (zh) * 2020-07-29 2022-11-25 苏州浪潮智能科技有限公司 一种数据处理的方法、系统、设备及可读存储介质
CN112052916B (zh) * 2020-10-10 2024-03-01 腾讯科技(深圳)有限公司 基于神经网络的数据处理方法、装置以及可读存储介质
CN113065638A (zh) * 2021-02-27 2021-07-02 华为技术有限公司 一种神经网络压缩方法及其相关设备
CN117540778A (zh) * 2022-07-29 2024-02-09 抖音视界有限公司 用于量化神经网络模型的方法、装置、计算设备和介质
CN116167431B (zh) * 2023-04-25 2023-08-04 之江实验室 一种基于混合精度模型加速的业务处理方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108491926A (zh) * 2018-03-05 2018-09-04 东南大学 一种基于对数量化的低比特高效深度卷积神经网络硬件加速设计方法、模块及系统
CN108510067A (zh) * 2018-04-11 2018-09-07 西安电子科技大学 基于工程化实现的卷积神经网络量化方法
CN109558945A (zh) * 2017-09-25 2019-04-02 三星电子株式会社 对人工神经网络及浮点神经网络进行量化的方法及装置
CN109754066A (zh) * 2017-11-02 2019-05-14 三星电子株式会社 用于生成定点型神经网络的方法和装置
CN109784470A (zh) * 2017-11-13 2019-05-21 三星电子株式会社 神经网络量化方法及装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20160328645A1 (en) * 2015-05-08 2016-11-10 Qualcomm Incorporated Reduced computational complexity for fixed point neural network

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109558945A (zh) * 2017-09-25 2019-04-02 三星电子株式会社 对人工神经网络及浮点神经网络进行量化的方法及装置
CN109754066A (zh) * 2017-11-02 2019-05-14 三星电子株式会社 用于生成定点型神经网络的方法和装置
CN109784470A (zh) * 2017-11-13 2019-05-21 三星电子株式会社 神经网络量化方法及装置
CN108491926A (zh) * 2018-03-05 2018-09-04 东南大学 一种基于对数量化的低比特高效深度卷积神经网络硬件加速设计方法、模块及系统
CN108510067A (zh) * 2018-04-11 2018-09-07 西安电子科技大学 基于工程化实现的卷积神经网络量化方法

Also Published As

Publication number Publication date
CN110717585A (zh) 2020-01-21

Similar Documents

Publication Publication Date Title
CN110717585B (zh) 神经网络模型的训练方法、数据处理方法和相关产品
CN111652368B (zh) 一种数据处理方法及相关产品
WO2021036908A1 (zh) 数据处理方法、装置、计算机设备和存储介质
JP7146952B2 (ja) データ処理方法、装置、コンピュータデバイス、及び記憶媒体
WO2021036905A1 (zh) 数据处理方法、装置、计算机设备和存储介质
CN108337000B (zh) 用于转换到较低精度数据格式的自动方法
JP7146954B2 (ja) データ処理方法、装置、コンピュータデバイス、及び記憶媒体
US20190164043A1 (en) Low-power hardware acceleration method and system for convolution neural network computation
US10491239B1 (en) Large-scale computations using an adaptive numerical format
US11704556B2 (en) Optimization methods for quantization of neural network models
CN111126600A (zh) 神经网络模型的训练方法、数据处理方法和相关产品
CN114677548A (zh) 基于阻变存储器的神经网络图像分类系统及方法
CN110874627A (zh) 数据处理方法、数据处理装置及计算机可读介质
CN112085175B (zh) 基于神经网络计算的数据处理方法和装置
CN114239799A (zh) 一种高效目标检测方法、设备、介质和系统
CN110955405A (zh) 一种输入数据的处理及指数值获取方法、装置及电子设备
CN112085176B (zh) 数据处理方法、装置、计算机设备和存储介质
CN113705929B (zh) 一种基于负荷特征曲线及典型特征值融合的春节假期负荷预测方法
CN114065913A (zh) 模型量化方法、装置及终端设备
CN112085187A (zh) 数据处理方法、装置、计算机设备和存储介质
CN110764696B (zh) 向量信息存储及更新的方法、装置、电子设备及存储介质
WO2021036412A1 (zh) 数据处理方法、装置、计算机设备和存储介质
CN117391145A (zh) 一种卷积神经网络量化推理优化方法及系统
CN112085177A (zh) 数据处理方法、装置、计算机设备和存储介质
CN115577764A (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
GR01 Patent grant
GR01 Patent grant