CN114692825A - 一种神经网络模型的量化训练方法、装置及设备 - Google Patents
一种神经网络模型的量化训练方法、装置及设备 Download PDFInfo
- Publication number
- CN114692825A CN114692825A CN202011645237.7A CN202011645237A CN114692825A CN 114692825 A CN114692825 A CN 114692825A CN 202011645237 A CN202011645237 A CN 202011645237A CN 114692825 A CN114692825 A CN 114692825A
- Authority
- CN
- China
- Prior art keywords
- quantized
- layer
- input data
- parameter
- neural network
- 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/04—Architecture, e.g. interconnection topology
- G06N3/045—Combinations of networks
-
- 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
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
技术领域
本申请涉及计算机技术领域,尤其涉及一种神经网络模型的量化训练方法、装置及设备。
背景技术
神经网络模型需要经过多次的迭代训练才能收敛,在每一次的迭代训练中,都需要经过正向传播、反向传播和参数更新三个过程,首先,神经网络中的各个层对样本数据进行处理,获得网络损失函数;然后基于网络损失函数计算各个层的梯度;其次,基于各个层的梯度对各个层的参数进行更新。
随着神经网络模型的深度越来越深,神经网络模型中的参数(权重、偏置等)的数量也随之增长,神经网络模型的训练对硬件设备的计算和存储能力要求也越来越高。在神经网络模型中,存在大量的数值运算,产生的大量数据非常消耗内存,尤其对于内存较小的硬件设备来说,甚至很难完成神经网络模型的训练。
发明内容
本申请实施例提供了一种神经网络模型的量化训练方法、装置及设备,所述方法有助于减少在神经网络模型的训练过程中产生的数据对内存的消耗量,增大可用内存空间。
第一方面,本申请实施例公开了一种神经网络模型的量化训练方法,其特征在于,所述神经网络模型包括多个层,所述方法包括:在正向传播过程中,获取待量化层的第一输入数据和参数;分别对所述第一输入数据和所述参数进行量化,获得量化的第一输入数据和量化的第一参数;对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据;判断所述待量化层的前一层在反向传播时是否依赖所述第一输入数据;若是,保存所述第一输入数据。
可以看到,在神经网络模型的训练过程中,对待量化层的第一输入数据和参数进行量化,然后对量化的数据进行计算,获得第一输出数据,量化的第一输入数据、量化的参数是定点整型,第一输入数据、参数是浮点数据,对量化的数据进行运算减小了运算量。通过判断待量化层的前一层在反向传播时是否依赖第一输入数据,若是,保存第一输入数据,释放掉量化的第一输入数据和量化的参数,减少了数据量对内存的消耗。
基于第一方面,在可能的实施方式中,所述对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据,包括:对所述量化的第一输入数据和所述量化的第一参数进行运算,获得量化的第一输出数据;对所述量化的第一输出数据进行反量化,获得所述第一输出数据。
基于第一方面,在可能的实施方式中,在所述保存所述第一输入数据之后,所述方法还包括:在反向传播过程中,分别对所述待量化层的第二输入数据和所述参数进行量化,获得量化的第二输入数据和量化的第二参数;所述待量化层的第二输入数据包括所述第一输入数据;对所述量化的第二输入数据和所述量化的第二参数进行运算,获得量化的第二输出数据和量化的第二参数的梯度;对所述量化的第二输出数据和所述量化的第二参数的梯度进行反量化运算,获得第二输出数据和第二参数的梯度;将所述量化的第二输入数据和所述量化的第二参数从内存中释放掉。
可以理解,反向传播至待量化层时,同样对第二输入数据和参数进行量化,然后对量化的数据进行运算,减少了运算量;在待量化层反向传播结束后,将不需要的量化的第二输入数据和量化的第二参数从内存中释放,即删除掉,节省内存空间。
基于第一方面,在可能的实施方式中,在所述将所述量化的第二输入数据和所述量化的第二参数从内存中释放掉之后,所述方法还包括:将所述第二输出数据和所述第一输入数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
可以理解,因为待量化层的前一层在反向传播时依赖第一输入数据,所以需要将第一输入数据输入至待量化层的前一层。
基于第一方面,在可能的实施方式中,所述方法还包括:当所述待量化层的前一层在反向传播时不依赖所述第一输入数据时,保存所述量化的第一输入数据和所述量化的第一参数。
可以理解,在待量化层的前一层在反向传播时不依赖第一输入数据时,因为浮点数据所占内存小于定点数据的内存,因此,将第一输入数据释放掉,仅仅保存量化的第一输入数据和所述量化的第一参数,便于后续反向传播时需要,且无需再次进行量化,节省运算时间。
基于第一方面,在可能的实施方式中,所述方法还包括:在反向传播过程中,对第三输出数据进行量化运算,获得量化的第三输出数据;所述第三输出数据为反向传播过程中所述待量化层的后一层的输出数据;将所述量化的第一输入数据、所述量化的第一参数和所述量化的第三输出数据输入所述待量化层,进行运算,获得量化的第二输出数据和量化的第一参数的梯度;对所述量化的第二输出数据和所述量化的第一参数的梯度进行反量化运算,获得第二输出数据和第一参数的梯度;将所述量化的第二输入数据和所述量化的第一参数从内存中释放掉。
基于第一方面,在可能的实施方式中,在将所述量化的第二输入数据和所述量化的第一参数从内存中释放掉之后,所述方法还包括:将所述第二输出数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
可以理解,待量化层的前一层可以是包含参数(例如权重、偏置)的层,也可以是不包含参数(例如权重、偏置)仅仅包含算子的层。
基于第一方面,在可能的实施方式中,在所述神经网络模型反向传播结束后,所述方法还包括:基于所述神经网络模型中各个层的参数和参数的梯度对所述各个层进行参数更新。
基于第一方面,在可能的实施方式中,所述方法适用于所述神经网络模型中的至少一层。
可以理解,上述的量化训练方法可以适用于神经网络模型的某一个层或多个层,例如可以适用于神经网络模型中运算量比较大的层,比如卷积层、反卷积层、全连接层等或具有矩阵乘运算的层等。
第二方面,本申请实施例提供了一种神经网络模型的测试方法,其特征在于,包括:获取测试数据;使用经训练的神经网络模型对所述测试数据进行测试;所述神经网络模型是通过上述第一方面的方法或第一方面的任一实施方式中所述的方法训练得到的。
第三方面,本申请实施例提供了一种神经网络模型的量化训练装置的示意图,所述神经网络模型包括多个层,所述装置包括:
获取单元,用于在正向传播过程中,获取待量化层的第一输入数据和参数;
量化单元,用于分别对所述第一输入数据和所述参数进行量化,获得量化的第一输入数据和量化的第一参数;
运算单元,用于对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据;
判断单元,用于判断所述待量化层的前一层在反向传播时是否依赖所述第一输入数据;
存储单元,用于在所述待量化层的前一层在反向传播时依赖所述第一输入数据的情况下,保存所述第一输入数据。
基于第三方面,在可能的实施方式中,所述运算单元用于:对所述量化的第一输入数据和所述量化的第一参数进行运算,获得量化的第一输出数据;对所述量化的第一输出数据进行反量化,获得所述第一输出数据。
基于第三方面,在可能的实施方式中,量化单元还用于,在反向传播过程中,分别对所述待量化层的第二输入数据和所述参数进行量化,获得量化的第二输入数据和量化的第二参数;所述待量化层的第二输入数据包括所述第一输入数据;运算单元还用于,对所述量化的第二输入数据和所述量化的第二参数进行运算,获得量化的第二输出数据和量化的第二参数的梯度;运算单元还用于,对所述量化的第二输出数据和所述量化的第二参数的梯度进行反量化运算,获得第二输出数据和第二参数的梯度;装置还包括:释放单元,用于将所述量化的第二输入数据和所述量化的第二参数从内存中释放掉。
基于第三方面,在可能的实施方式中,获取单元还用于,将所述第二输出数据和所述第一输入数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
基于第三方面,在可能的实施方式中,存储单元还用于,当所述待量化层的前一层在反向传播时不依赖所述第一输入数据时,保存所述量化的第一输入数据和所述量化的第一参数。
基于第三方面,在可能的实施方式中,所述量化单元还用于,在反向传播过程中,对第三输出数据进行量化运算,获得量化的第三输出数据;所述第三输出数据为反向传播过程中所述待量化层的后一层的输出数据;所述运算单元还用于,将所述量化的第一输入数据、所述量化的第一参数和所述量化的第三输出数据输入所述待量化层,进行运算,获得量化的第二输出数据和量化的第一参数的梯度;运算单元还用于,对所述量化的第二输出数据和所述量化的第一参数的梯度进行反量化运算,获得第二输出数据和第一参数的梯度;释放单元还用于,将所述量化的第二输入数据和所述量化的第一参数从内存中释放掉。
基于第三方面,在可能的实施方式中,获取单元还用于,将所述第二输出数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
基于第三方面,在可能的实施方式中,装置还包括:参数更新单元,用于基于所述神经网络模型中各个层的参数和参数的梯度对所述各个层进行参数更新。
第四方面,本申请实施例提供了一种神经网络模型的测试装置,包括:
获取测试数据;
使用经训练的神经网络模型对所述测试数据进行测试;所述神经网络模型是通过上述第一方面的方法或第一方面的任一实施方式中所述的方法训练得到的。
第五方面,本申请实施例提供了一种神经网络模型的量化训练设备,包括存储器和处理器,所述存储器用于存储指令,所述处理器用于调用所述指令执行上述第一方面的方法或第一方面的任一实施方式中所述的方法。
第六方面,本申请实施例提供了一种神经网络模型的测试设备,包括存储器和处理器,所述存储器用于存储指令,所述处理器用于调用所述指令执行上述第二方面所述的方法。
第七方面,本申请实施例提供了一种非易失性存储介质,用于存储程序指令,当该程序指令应用于神经网络模型的训练设备时,可用于实现第一方面或第一方面的任可能实施方式中所述的方法。
第八方面,本申请实施例提供了一种非易失性存储介质,用于存储程序指令,当该程序指令应用于神经网络模型的测试设备时,可用于实现第二方面或第二方面的任可能实施方式中所述的方法。
第九方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括程序指令,当该计算机程序产品被神经网络模型的量化训练设备执行时,该神经网络模型的量化测试设备执行前述第一方面所述方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第一方面的任一种可能的设计提供的方法的情况下,可以下载该计算机程序产品并在神经网络模型的量化训练设备上执行该计算机程序产品,以实现第一方面或第一方面的任一可能实施方式中所述的方法。
第十方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括程序指令,当该计算机程序产品被神经网络模型的测试设备执行时,该神经网络模型的测试设备执行前述第二方面所述方法。该计算机程序产品可以为一个软件安装包,在需要使用前述第二方面的任一种可能的设计提供的方法的情况下,可以下载该计算机程序产品并在神经网络模型的测试设备上执行该计算机程序产品,以实现第二方面或第二方面的任一可能实施方式中所述的方法。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种神经网络模型的量化训练装置示意图;
图2为本申请实施例提供的一种组合装置的结构示意图;
图3为本申请实施例提供的一种板卡结构示意图;
图4中的(a)和(b)分别为一种正向传播和反向传播的示例示意图;
图5中的(a)和(b)分别为另一种正向传播和反向传播的示例示意图;
图6为本申请实施例提供的一种正向传播和反向传播的融合示例示意图;
图7为本申请实施例提供的一种神经网络模型的量化训练方法的流程示意图;
图8为本申请实施例提供的一种正向传播示意图;
图9为本申请实施例提供的一种神经网络模型的量化训练方法的流程示意图;
图10为本申请实施例提供的一种反向传播的示例示意图;
图11为本申请实施例提供的另一种反向传播的示例示意图;
图12为本申请实施例提供的一种神经网络模型的测试方法的流程示意图;
图13为本申请实施例提供的一种神经网络模型的测试装置示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
需要说明的是,在本申请实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
需要说明的是,当在本说明书和所附权利要求书中使用时,术语“包括”以及它们的任何变形,意图在于覆盖不排他的包含。例如包含了一系列单元/器件的系统、产品或者装置没有限定于已列出的单元/器件,而是可选地还包括没有列出的单元/器件,或者还可选地包括这些产品或者装置固有的其他单元/器件。
还应当理解,术语“如果”可以依据上下文被解释为“当...时”或“一旦”或“响应于确定”或“响应于检测到”或“在…的情况下”。
需要说明的是,本申请中的第一、第二只是为了区分正向传播过程和反向传播过程中的对象,而并非用于描述特定的顺序。第一输入数据、第一输出数据分别对应的是正向传播时的输入数据、输出数据,第二输入数据、第二输出数据分别对应的是反向传播时的输入数据、输出数据。
参见图1,图1为本申请实施例提供的一种神经网络模型的量化训练装置100的示意图,所述神经网络模型包括多个层,所述装置100包括:
获取单元101,用于在正向传播过程中,获取待量化层的第一输入数据和参数;
量化单元102,用于分别对所述第一输入数据和所述参数进行量化,获得量化的第一输入数据和量化的第一参数;
运算单元103,用于对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据;
判断单元104,用于判断所述待量化层的前一层在反向传播时是否依赖所述第一输入数据;
存储单元105,用于在所述待量化层的前一层在反向传播时依赖所述第一输入数据的情况下,保存所述第一输入数据。
在可能的实施方式中,所述运算单元103用于:对所述量化的第一输入数据和所述量化的第一参数进行运算,获得量化的第一输出数据;对所述量化的第一输出数据进行反量化,获得所述第一输出数据。
在可能的实施方式中,量化单元102还用于,在反向传播过程中,分别对所述待量化层的第二输入数据和所述参数进行量化,获得量化的第二输入数据和量化的第二参数;所述待量化层的第二输入数据包括所述第一输入数据;运算单元103还用于,对所述量化的第二输入数据和所述量化的第二参数进行运算,获得量化的第二输出数据和量化的第二参数的梯度;运算单元103还用于,对所述量化的第二输出数据和所述量化的第二参数的梯度进行反量化运算,获得第二输出数据和第二参数的梯度;装置100还包括:释放单元106,用于将所述量化的第二输入数据和所述量化的第二参数从内存中释放掉。
在可能的实施方式中,获取单元101还用于,将所述第二输出数据和所述第一输入数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
在可能的实施方式中,存储单元105还用于,当所述待量化层的前一层在反向传播时不依赖所述第一输入数据时,保存所述量化的第一输入数据和所述量化的第一参数。
在可能的实施方式中,所述量化单元102还用于,在反向传播过程中,对第三输出数据进行量化运算,获得量化的第三输出数据;所述第三输出数据为反向传播过程中所述待量化层的后一层的输出数据;所述运算单元103还用于,将所述量化的第一输入数据、所述量化的第一参数和所述量化的第三输出数据输入所述待量化层,进行运算,获得量化的第二输出数据和量化的第一参数的梯度;运算单元103还用于,对所述量化的第二输出数据和所述量化的第一参数的梯度进行反量化运算,获得第二输出数据和第一参数的梯度;释放单元106还用于,将所述量化的第二输入数据和所述量化的第一参数从内存中释放掉。
在可能的实施方式中,获取单元101还用于,将所述第二输出数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
在可能的实施方式中,装置100还包括:参数更新单元107,用于基于所述神经网络模型中各个层的参数和参数的梯度对所述各个层进行参数更新。
上述装置100的各功能单元可用于实现下述图7或图9实施例所描述的方法,具体内容可参考图7或图9实施例的相关内容中的描述。
图2是示出根据本披露实施例的一种组合处理装置200的结构图,该组合处理装置200可以用于神经网络模型的量化训练,或者也可以用于神经网络模型的测试。如图2中所示,该组合处理装置200包括计算处理装置202、接口装置204、其他处理装置206和存储装置208。根据不同的应用场景,计算处理装置中可以包括一个或多个计算装置210,该计算装置可以配置用于执行本文附图7或附图9所描述的操作。
在不同的实施例中,本披露的计算处理装置可以配置成执行用户指定的操作。在示例性的应用中,该计算处理装置可以实现为单核人工智能处理器或者多核人工智能处理器。类似地,包括在计算处理装置内的一个或多个计算装置可以实现为人工智能处理器核或者人工智能处理器核的部分硬件结构。当多个计算装置实现为人工智能处理器核或人工智能处理器核的部分硬件结构时,就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。
在示例性的操作中,本披露的计算处理装置可以通过接口装置与其他处理装置进行交互,以共同完成用户指定的操作。根据实现方式的不同,本披露的其他处理装置可以包括中央处理器(Central Processing Unit,CPU)、图形处理器(Graphics ProcessingUnit,GPU)、人工智能处理器等通用和/或专用处理器中的一种或多种类型的处理器。这些处理器可以包括但不限于数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,并且其数目可以根据实际需要来确定。如前所述,仅就本披露的计算处理装置而言,其可以视为具有单核结构或者同构多核结构。然而,当将计算处理装置和其他处理装置共同考虑时,二者可以视为形成异构多核结构。
在一个或多个实施例中,该其他处理装置可以作为本披露的计算处理装置(其可以具体化为人工智能例如神经网络运算的相关运算装置)与外部数据和控制的接口,执行包括但不限于数据搬运、对计算装置的开启和/或停止等基本控制。在另外的实施例中,其他处理装置也可以和该计算处理装置协作以共同完成运算任务。
在一个或多个实施例中,该接口装置可以用于在计算处理装置与其他处理装置间传输数据和控制指令。例如,该计算处理装置可以经由所述接口装置从其他处理装置中获取输入数据,写入该计算处理装置片上的存储装置(或称存储器)。进一步,该计算处理装置可以经由所述接口装置从其他处理装置中获取控制指令,写入计算处理装置片上的控制缓存中。替代地或可选地,接口装置也可以读取计算处理装置的存储装置中的数据并传输给其他处理装置。
附加地或可选地,本披露的组合处理装置还可以包括存储装置。如图中所示,该存储装置分别与所述计算处理装置和所述其他处理装置连接。在一个或多个实施例中,存储装置可以用于保存所述计算处理装置和/或所述其他处理装置的数据。例如,该数据可以是在计算处理装置或其他处理装置的内部或片上存储装置中无法全部保存的数据。
在一些实施例里,本披露还公开了一种芯片,例如图3中示出的芯片1302。在一种实现中,该芯片是一种系统级芯片(System on Chip,SoC),并且集成有一个或多个如图2中所示的组合处理装置。该芯片可以通过对外接口装置(如图3中示出的对外接口装置306)与其他相关部件相连接。该相关部件可以例如是摄像头、显示器、鼠标、键盘、网卡或wifi接口。在一些应用场景中,该芯片上可以集成有其他处理单元(例如视频编解码器)和/或接口模块(例如DRAM接口)等。在一些实施例中,本披露还公开了一种芯片封装结构,其包括了上述芯片。在一些实施例里,本披露还公开了一种板卡,其包括上述的芯片封装结构。下面将结合图3对该板卡进行详细地描述。
图3是示出根据本披露实施例的一种板卡300的结构示意图。如图3中所示,该板卡包括用于存储数据的存储器件304,其包括一个或多个存储单元310。该存储器件可以通过例如总线等方式与控制器件308和上文所述的芯片302进行连接和数据传输。进一步,该板卡还包括对外接口装置306,其配置用于芯片(或芯片封装结构中的芯片)与外部设备312(例如服务器或计算机等)之间的数据中继或转接功能。例如,待处理的数据可以由外部设备通过对外接口装置传递至芯片。又例如,所述芯片的计算结果可以经由所述对外接口装置传送回外部设备。根据不同的应用场景,所述对外接口装置可以具有不同的接口形式,例如其可以采用标准PCIE接口等。
在一个或多个实施例中,本披露板卡中的控制器件可以配置用于对所述芯片的状态进行调控。为此,在一个应用场景中,该控制器件可以包括单片机(Micro ControllerUnit,MCU),以用于对所述芯片的工作状态进行调控。
根据上述结合图2和图3的描述,本领域技术人员可以理解本披露也公开了一种电子设备或装置,其可以包括一个或多个上述板卡、一个或多个上述芯片和/或一个或多个上述组合处理装置。
根据不同的应用场景,本披露的电子设备或装置可以包括服务器、云端服务器、服务器集群、数据处理装置、机器人、电脑、打印机、扫描仪、平板电脑、智能终端、PC设备、物联网终端、移动终端、手机、行车记录仪、导航仪、传感器、摄像头、相机、摄像机、投影仪、手表、耳机、移动存储、可穿戴设备、视觉终端、自动驾驶终端、交通工具、家用电器、和/或医疗设备。所述交通工具包括飞机、轮船和/或车辆;所述家用电器包括电视、空调、微波炉、冰箱、电饭煲、加湿器、洗衣机、电灯、燃气灶、油烟机;所述医疗设备包括核磁共振仪、B超仪和/或心电图仪。本披露的电子设备或装置还可以被应用于互联网、物联网、数据中心、能源、交通、公共管理、制造、教育、电网、电信、金融、零售、工地、医疗等领域。进一步,本披露的电子设备或装置还可以用于云端、边缘端、终端等与人工智能、大数据和/或云计算相关的应用场景中。在一个或多个实施例中,根据本披露方案的算力高的电子设备或装置可以应用于云端设备(例如云端服务器),而功耗小的电子设备或装置可以应用于终端设备和/或边缘端设备(例如智能手机或摄像头)。在一个或多个实施例中,云端设备的硬件信息和终端设备和/或边缘端设备的硬件信息相互兼容,从而可以根据终端设备和/或边缘端设备的硬件信息,从云端设备的硬件资源中匹配出合适的硬件资源来模拟终端设备和/或边缘端设备的硬件资源,以便完成端云一体或云边端一体的统一管理、调度和协同工作。
在描述本申请实施例之前,先对神经网络模型的训练过程进行介绍。
在对神经网络模型训练的每一轮迭代中,都需要经过正向传播、反向传播和参数更新过程。其中,正向传播是由神经网络模型的第一层向最后一层传播的过程,反向传播是由神经网络模型的最后一层向第一层传播的过程。正向传播计算网络的损失函数,反向传播是基于损失函数计算网络中各层的梯度,参数更新是根据各层的梯度更新网络中各层的参数。经过多次迭代训练,最终使神经网络模型收敛,获得训练好的神经网络模型。该训练好的神经网络模型可以用于图像处理、语音识别、视频等领域。
不同的应用场景建立的神经网络模型不同,当然神经网络模型的训练过程也不同。下面以两种常见的神经网络模型为例,介绍其训练过程。该训练过程应用于处理器。
一种示例中,参见图4中的(a)所示,图4中的(a)为本申请提供的神经网络模型的正向传播过程的结构示意图。该正向传播的过程应用于上述装置100或组合装置200或板卡300。图中,在正向传播至待量化层时,处理器将数据X和W输入待量化层,其中,X表示该层的输入数据,W表示该层对应的参数(权重、偏置等),待量化层中的运算单元对X、W进行计算,获得输出数据Y,其中,待量化层的输入数据X也是待量化层的前一层的输出数据。数据Y再作为待量化层的后一层的输入数据,待量化层的后一层中的运算单元根据Y和待量化层的后一层的参数进行计算,又获得输出数据…,直至正向传播至神经网络模型的最后一层,获得损失函数。
参见图4中的(b)所示,图4中的(b)为本申请提供的神经网络模型的反向传播过程的结构示意图。图中,在反向传播至待量化层时,将X和Y的梯度输入待量化层中,其中,X和Y的梯度表示输入数据,W表示该层对应的参数(权重、偏置等),待量化层中的运算单元对X、W、Y的梯度进行计算,获得输出数据X的梯度。另外,待量化层的输出数据还包括W的梯度,W的梯度用于参数更新过程。X的梯度作为待量化层的前一层的输入数据输入待量化层的前一层中,待量化层的前一层的运算单元对X的梯度及参数进行计算,获得输出数据…,直至反向传播至第一层。经过反向传播,计算出了网络的各个层中的梯度。
在正向传播和反向传播过程中,每层神经网络得到的输出数据作为中间数据存储在存储装置208或存储单元310中,当计算装置202进行计算时,从该存储装置208或存储单元310中获取所需要的的数据。
在神经网络模型每一轮迭代反向传播结束后,基于各个层中的梯度,对网络中的各个层进行参数更新。
该示例中,神经网络模型具有如下特点。对于待量化层来说,反向传播过程输入数据除了包括后一层的输出数据外,还包括正常传播过程中该层的输入数据。例如,对于待量化层来说,反向传播时,待量化层的输入数据包括待量化层的后一层的输出数据Y的梯度,还包括正向传播过程中待量化层的输入数据X;对于待量化层的前一层来说,反向传播时,待量化层的前一层的输入数据包括待量化层的输出数据X的梯度,还包括正向传播过程中待量化层的前一层的输入数据。上述输入数据存储在存储装置208或存储单元310中。
又一种示例中,参见图5所示,图5中的(a)为本申请提供的神经网络模型的正向传播过程的结构示意图,图5中的(b)为本申请提供的神经网络模型的反向传播过程的结构示意图。其中,与上述图4中的神经网络模型所不同的是,本示例的神经网络模型中,待量化层的前一层的反向传播过程依赖待量化层正向传播时的输入数据X,也就是说,在反向传播至待量化层的前一层时,输入数据包括待量化层正向传播时的输入数据X。正向传播过程与图4中的(a)中描述的正向传播过程相似,这里不再赘述。
本示例中,神经网络模型除了具有图4所示神经网络模型的特点外,还具有如下特点:对于待量化层的前一层来说,反向传播的求导过程需要依赖正向传播时待量化层的输入数据,也就是说,反向传播至待量化层的前一层时,该层的输入数据包括正向传播时待量化层的输入数据。
为了更直观地体现本示例中神经网络模型的特点,本申请提供了一种神经网络模型训练的示意图,参考图6,从图6可以看到,1)X、W不仅用于待量化层的正向传播过程,还用于待量化层的反向传播过程;2)待量化层的输入数据X,还用于待量化层的前一层的反向传播(求导)过程。其中,这里的待量化层的前一层为神经网络模型中包含算子的层,该层可以是神经网络模型中包括权重、偏置等参数的层,也可以是不包括权重、偏置等参数,只包括算子的层。
需要说明的是,上述图4中的(a)和(b)和图5中的(a)和(b)只是示例性地描述神经网络模型训练过程中的一轮迭代过程,神经网络模型要达到收敛需要经过很多轮的迭代训练,为了说明书的简洁,不再展开描述。
在神经网络模型的训练过程中,数据都是以浮点型的形式存在的,在对浮点型数据进行大量运算的过程中会占用较大的内存,造成设备的内存开销大的问题,尤其对于内存较小的硬件设备来说,训练神经网络模型更是具有挑战的事情。
为了解决上述问题,本申请实施例提供了一种神经网络模型的量化训练方法,参见图7,图7为一种神经网络模型的量化训练方法的流程示意图,该方法可以应用于计算设备或处理器,例如,计算设备可以是服务器、终端设备、芯片等,下面结合图8对本申请实施例进行描述,图8为本申请实施例提供的神经网络模型训练过程的正向传播示意图,本方法实施例包括但不限于以下内容的描述。
S701、在正向传播过程中,获取待量化层的第一输入数据和参数。
参见图8所示的示意图,在正向传播过程中,获取待量化层的第一输入数据X和参数W,其中参数W包括权重,也可以包括偏置。若待量化层为神经网络模型中的首层,则第一输入数据即为输入神经网络模型的样本数据;若待量化层不是神经网络模型的首层,则第一输入数据为待量化层的前一层的第一输出数据。例如,图8中待量化层的第一输入数据X可以为待量化层的前一层的第一输出数据。
需要说明的是,当前迭代可以是神经网络模型训练中的任意一次迭代过程,比如可以是第一次迭代,可以是中间的某一次迭代,也可以是最后一次迭代。
S702、分别对第一输入数据和参数进行量化,获得量化的第一输入数据和量化的第一参数。
分别对第一输入数据X和参数W进行量化得到量化的第一输入数据X1和量化的W1。一般来说,第一输入数据和参数为浮点型数据,量化的第一输入数据和量化的参数为定点整型数据。比如,常用的浮点型数据类型为float32,常用的定点型数据类型为int8和int16。本申请对具体量化方式不做限定。
S703、对量化的第一输入数据和量化的第一参数进行运算,获得第一输出数据。
可选的,根据量化的第一输入数据和量化的参数,获得待量化层的第一输出数据,包括:首先根据量化的第一输入数据和量化的参数计算出量化的第一输出数据,再对量化的第一输出数据进行反量化,获得待量化层的第一输出数据。
参考图8所示,根据量化的第一输入数据X1以及量化的参数W1进行计算,获得量化的第一输出数据Y1,其中Y1为定点整型数据;再对定点型数据Y1进行反量化,获得第一输出数据Y,Y为浮点型数据。本申请对具体反量化方式不做限定。
通过量化处理,能够将运算量较大的数据变换成运算量较小的数据。在进行计算时,能够减少运算量,提高运算速度。例如,浮点型数据在小数点后存在很多位的小数,而定点整型数据为整数,因此在对定点整型数据进行运算,相对于对浮点型数据进行运算来说,能够提高运算速度,且数据的内存占用量相对较小。
可选的,在获得待量化层的第一输出数据之后,将量化的第一输入数据和量化的参数从内存中释放,即删除掉。参考图8所示,获得待量化层的第一输出数据Y后,将量化的第一输入数据X1和量化的参数W1(量化的权重、量化的偏置等)从内存中释放掉。
该层正向传播结束后,将该层量化的第一输入数据和量化的参数释放掉,是为了增加可用内存,尤其是在硬件设备内存一定的情况下,防止神经网络模型训练过程中产生的很多中间数据占用较多的内存,影响神经网络模型的训练。
S704、判断待量化层的前一层在反向传播时是否依赖第一输入数据。
由前述可知,图4中神经网络模型对应的应用场景中,待量化层的前一层在反向传播时不依赖第一输入数据X,而图5中神经网络模型对应的应用场景中,待量化层的前一层在反向传播时是依赖第一输入数据X的。
在正向传播至待量化层时,需要判断待量化层的前一层在反向传播时是否依赖第一输入数据,判断方法如下。在获取待量化层的第一输入数据X时,第一输入数据X中携带了待量化层的前一层的运算逻辑,根据携带的待量化层的前一层的运算逻辑,可以判断出待量化层的前一层在反向传播时是否依赖第一输入数据。举例来说,待量化层的前一层的运算逻辑为:A+B+3X,其中A、B可以为常数,也可以为参数,则反向传播对该运算逻辑进行求导时,需要对第一输入数据X求导,由此可知待量化层的前一层在反向传播时是依赖第一输入数据的。再举例来说,待量化层的前一层的运算逻辑为:ABC,其中ABC可以为常数,也可以为参数,则反向传播对该运算逻辑进行求导时,不会涉及第一输入数据X,由此可知待量化层的前一层在反向传播时是不依赖第一输入数据的。需要说明的是,这里仅仅是通过举例来解释说明待量化层的前一层在反向传播时是否依赖第一输入数据,该举例对本申请并不构成限定。
需要说明的是,该步骤可以位于步骤S701之前,也可以位于步骤S701至S703之间的任一步骤之前或之后。
S705、若是,保存第一输入数据。
经判断,若待量化层的前一层在反向传播时依赖第一输入数据,则说明,在进行反向传播时,需要将第一输入数据X输入待量化层的前一层,因此这里需要保存第一输入数据X,为了减小中间数据对内存的消耗,可以释放掉量化的第一输入数据和量化的第一参数。
需要说明的是,步骤S701至S705描述的是正向传播至待量化层时的处理过程,在这之后,继续进行正向传播,即待量化层的输出数据Y输入待量化层的后一层,待量化层的后一层根据输入数据和参数进行处理,…,直至正向传播至神经网络模型的最后一层,计算出损失函数,正向传播结束。
可以看到,在正向传播时,对待量化层的第一输入数据和参数进行量化,然后对量化的数据进行处理,相比于对浮点型数据进行运算,减少了运算量,节省运算时间;在待量化层正向传播结束后,根据待量化层的前一层在反向传播时是否依赖第一输入数据,从而选择对应的量化训练方式,将第一输入数据或者量化的数据(量化的第一输入数据和量化的参数)释放掉,减小了数据对内存的消耗量,尤其对于内存一定的设备来说,增大可用内存空间,可以保证神经网络模型的正常训练。
本申请实施例还提供了又一种神经网络模型的量化训练方法,参见图9所示,图9为一种神经网络模型的量化训练方法的流程示意图,下面结合图10和图11对本实施例进行描述,图10和图11均是本申请实施例提供的神经网络模型训练过程的反向传播示意图,其中,图10示出的是第一种训练方法,图11示出的是第二种训练方法。该方法包括但不限于以下步骤,其中关于步骤S901至步骤S905可参考上述图7中步骤S701至步骤S705内容的描述,为了说明书的简洁,在此不再赘述。
S901、在正向传播过程中,获取待量化层的第一输入数据和参数。
S902、分别第一输入数据和参数进行量化,获得量化的第一输入数据和量化的第一参数。
S903、对量化的第一输入数据和量化的第一参数进行运算,获得第一输出数据。
S904、判断待量化层的前一层在反向传播时是否依赖第一输入数据。
判断待量化层的前一层在反向传播时是否依赖第一输入数据,在判断待量化层的前一层在反向传播时依赖第一输入数据的情况下,执行步骤S905a~步骤S908a,在判断待量化层的前一层在反向传播时不依赖第一输入数据的情况下,执行步骤S905b~步骤S908b。需要说明的是,步骤S905a与步骤S905b、步骤S906a与步骤S906b、步骤S907a与步骤S907b、步骤S908a与步骤S908b之间不存在逻辑上的先后顺序。
下面先介绍当待量化层的前一层在反向传播时依赖第一输入数据的情况,即其中一个分支。
S905a、当待量化层的前一层在反向传播时依赖第一输入数据时,保存第一输入数据。
S906a、在反向传播过程中,分别对待量化层的第二输入数据和参数进行量化,获得量化的第二输入数据和量化的第二参数。
反向传播是从神经网络模型的最后一层向前传播,最后一层根据正常传播时的第一输入数据及损失函数进行计算,获得输出数据,…,继续向前传播,直至反向传播至待量化层。
在反向传播至待量化层时,分别对待量化层的第二输入数据和参数进行量化,获得量化的第二输入数据和量化的第二参数,其中待量化层的第二输入数据包括第一输入数据。参见图10所示,待量化层的第二输入数据包括X和Y的梯度,其中,X为正向传播时待量化层的第一输入数据,W为正向传播时待量化层的参数,Y的梯度为待量化层的后一层的输出数据,同时也是正向传播时待量化层的第一输出数据的梯度。量化的第二输入数据包括X1和Y2,其中,X1为X的量化结果,Y2为Y的梯度的量化结果,量化的第二参数W1包括量化的权重,还可以包括量化的偏置等。
需要说明的是,一般情况下量化的第二参数(反向传播过程中)与量化的第一参数(正向传播过程)是相同的,但是上述步骤中,为了节省内存空间,将量化的第一参数释放掉了,内存中不存在量化的第一参数,本步骤(反向传播过程)再次对参数进行量化,所以称为量化的第二参数。
S907a、对量化的第二输入数据和量化的第二参数进行运算,获得第二输出数据和第二参数的梯度。
可选的,根据量化的第二输入数据和量化的第二参数,获得待量化层的第二输出数据和第二参数的梯度,包括:根据量化的第二输入数据和量化的第二参数进行计算,获得待量化层的量化的第二输出数据和量化的第二参数的梯度,再对量化的第二输出数据和量化的第二参数的梯度进行反量化,获得待量化层的第二输出数据和第二参数的梯度。
参见图10所示,根据量化的第二输入数据X1、Y2和待量化层量化的参数W1进行计算,获得量化的第二输出数据X2和量化的第二参数的梯度W2,再对X2和W2进行反量化计算,获得X的梯度和W的梯度。其中,X的梯度可以作为待量化层的前一层的输入数据,继续进行反向传播,W的梯度用于参数更新过程中计算优化器,优化器中为参数更新的方法。
可选的,在获得该层的第二输出数据和第二参数的梯度之后,将量化的第二输入数据和量化的第二参数从内存中释放掉,减小中间数据内存占用量,以增加内存的可用空间。例如,图10,在计算出待量化层的第二输出数据X的梯度和第二参数W的梯度之后,将量化的第二输入数据X1、Y2和量化的第二参数W1(量化的权重、量化的偏置等)从内存中释放掉。
S908a、将第二输出数据和第一输入数据输入待量化层的前一层。
待量化层反向传播结束后,反向传播至待量化层的前一层,因为待量化层的前一层反向传播依赖第一输入数据,所以将第二输出数据和第一输入数据输入待量化层的前一层,进行处理。参见图10所示,将第二输出数据X的梯度以及第一输入数据X输入待量化层的前一层。另外,输入待量化层的前一层的输入数据还包括其他数据,比如待量化层的前一层的第一输入数据(正向传播时的输入数据)等。
需要说明的是,在本步骤结束后,反向传播继续进行,直至反向传播至神经网络模型的首层,反向传播结束。
下面介绍当待量化层的前一层在反向传播时不依赖第一输入数据的情况,即另一个分支。
S905b、当待量化层的前一层在反向传播时不依赖第一输入数据时,保存量化的第一输入数据和量化的第一参数。
经判断,若待量化层的前一层在反向传播时不依赖第一输入数据,则可以选择保存量化的第一输入数据X1和量化的第一参数W1,为了减小中间数据对内存的消耗,可以释放掉第一输入数据X(通常为浮点型数据)。需要说明的是,因为整个反向传播过程不再依赖第一输入数据X,所以将第一输入数据X释放掉;量化的第一输入数据X1和量化的第一参数W1,在待量化层的反向传播时是需要的,所以保存量化的第一输入数据X1和量化的第一参数W1,当反向传播至待量化层时,便于直接使用内存中保存的X1和W1,无需再对X和W进行量化操作,且量化的第一输入数据X1和量化的第一参数W1是定点数据,而第一输入数据为浮点数据,定点数据所占内存空间小于浮点数据所占的内存空间,因此不仅减少了运算量,节省了运算时间,而且节省了内存空间。
在这之后,继续进行正向传播,即待量化层的输出数据Y输入待量化层的后一层,待量化层的后一层根据输入数据和参数进行处理,…,直至正向传播至神经网络模型的最后一层,计算出损失函数,正向传播结束。
S906b、在反向传播过程中,对第三输出数据进行量化运算,获得量化的第三输出数据。
第三输出数据为反向传播过程中待量化层的后一层的输出数据。参见图11所示,第三输出数据指的是Y的梯度。
参见图11所示,在反向传播至待量化层时,待量化层的第二输入数据包括第三输出数据Y的梯度、X1和W1。其中,X1和W1均为量化后的数据,所以需要对第三输出数据Y的梯度进行量化,获得量化的第三输出数据Y2。
S907b、将量化的第一输入数据、量化的第一参数和量化的第三输出数据输入待量化层,进行运算,获得第二输出数据和第一参数的梯度。
可选的,将量化的第一输入数据、量化的第一参数和量化的第三输出数据输入待量化层,进行运算,获得第二输出数据和第一参数的梯度,包括:将量化的第一输入数据、量化的第一参数和量化的第三输出数据输入待量化层,进行运算,获得量化的第二输出数据和量化的第一参数的梯度,再对量化的第二输出数据和量化的第一参数的梯度进行反量化运算,获得第二输出数据和第一参数的梯度。
参见图11所示,根据量化的第一输入数据X1、量化的第三输出数据Y2和量化的参数W1进行计算,获得量化的第二输出数据X2和量化的第一参数的梯度W2,再对X2和W1进行反量化计算,获得X的梯度和W的梯度。其中,X的梯度可以作为待量化层的前一层的输入数据,继续进行反向传播,W的梯度用于参数更新过程中计算优化器,优化器中为参数更新的方法。
可选的,可以将量化的第二输入数据X2和量化的第一参数W2从内存中释放掉,减小中间数据内存占用量,以增加内存的可用空间。
S908b、将第二输出数据输入待量化层的前一层。
待量化层的前一层为包含算子的层,也就是说,待量化层的前一层可以为包含参数(权重、偏置等)的层,也可以是不包含参数(权重、偏置等)仅包含单纯的算子或公式的层。
待量化层反向传播结束后,反向传播至待量化层的前一层,直接将第二输出数据X的梯度输入带量化层的前一层,当然还可以有其他数据作为输入数据,比如,待量化层的前一层的第一输入数据(正向传播时的输入数据)。
需要说明的是,在本步骤结束后,反向传播继续进行,直至反向传播至神经网络模型的首层,反向传播结束。
S909、基于所述神经网络模型中各个层的参数和参数的梯度对所述各个层进行参数更新。
在上述S905a~S908a的反向传播过程结束后或S905b~S908b的反向传播过程结束后,获得了神经网络模型中各层参数(权重、偏置等)的梯度。基于参数、参数的梯度及优化器对神经网络模型中各层的参数进行更新,例如,对于神经网络模型中的某一层来说,根据该层中的权重、权重的梯度及优化器(反向传播过程计算出的)进行计算,获得新的权重,用新的权重代替原来的权重,实现权重的更新。
需要说明的是,本实施例中的步骤描述的是神经网络模型训练过程中某一次迭代的过程,实际进行训练时,需要经过很多次的迭代训练神经网络模型才能收敛。
还需要说明的是,本申请描述的神经网络模型的量化训练方法可以应用于神经网络模型中的一个层或多个层,本申请不做限定。一般来说,可以应用于运算量比较大的层,比如涉及卷积运算、矩阵乘运算的层,例如卷积层、反卷积层、深度卷积层等,又例如全连接层等。
可以看到,在待量化层的前一层在反向传播时依赖第一输入数据的情况下,保存第一输入数据,释放掉中间数据量化的第一输入数据和量化的参数,减小中间数据对内存的消耗,增大可用内存空间;在待量化层的前一层在反向传播时不依赖第一输入数据的情况下,将第一输入数据释放掉,保存量化的第一输入数据和量化的参数,当反向传播至待量化层的前一层时,便于直接使用内存中保存的量化的第一输入数据和量化的参数,无需再次量化,减小运算量,同时也减少了运算产生的中间数据对内存的消耗量,从而保证神经网络模型训练正常进行。
本申请实施例提供了一种神经网络模型的测试方法,参考图12所示的神经网络模型的测试方法的流程示意图,该方法包括但不限于以下内容的描述。
S1201、获取测试数据。
获取测试数据,例如,测试数据可以为图像或图像帧,也可以为语音等。
S1202、使用经训练的神经网络模型对测试数据进行测试。
使用图7或图9方法实施例中训练好的神经网络模型对测试数据进行测试,获得测试结果。其中,神经网络模型是采用量化训练方式获得的,且在训练过程中,可以根据待量化层的前一层在反向传播时是否依赖待量化层的第一输入数据而选择不同的量化方法。其中待量化层一般指的是运算量较大的层,例如卷积层、反卷积层、全连接层等。
本申请实施例还提供了一种神经网络模型的测试装置,参见图13所示的示意图,神经网络模型的测试装置1300包括:
获取单元1301,用于获取测试数据;
测试单元1302,用于使用经训练的神经网络模型对测试数据进行测试。其中,神经网络模型是通过图7或图9所示的实施例方法训练得到的。
需要说明的是,为了简明的目的,本披露将一些方法及其实施例表述为一系列的动作及其组合,但是本领域技术人员可以理解本披露的方案并不受所描述的动作的顺序限制。因此,依据本披露的公开或教导,本领域技术人员可以理解其中的某些步骤可以采用其他顺序来执行或者同时执行。进一步,本领域技术人员可以理解本披露所描述的实施例可以视为可选实施例,即其中所涉及的动作或模块对于本披露某个或某些方案的实现并不一定是必需的。另外,根据方案的不同,本披露对一些实施例的描述也各有侧重。鉴于此,本领域技术人员可以理解本披露某个实施例中没有详述的部分,也可以参见其他实施例的相关描述。
在具体实现方面,基于本披露的公开和教导,本领域技术人员可以理解本披露所公开的若干实施例也可以通过本文未公开的其他方式来实现。例如,就前文所述的电子设备或装置实施例中的各个单元来说,本文在考虑了逻辑功能的基础上对其进行划分,而实际实现时也可以有另外的划分方式。又例如,可以将多个单元或组件结合或者集成到另一个系统,或者对单元或组件中的一些特征或功能进行选择性地禁用。就不同单元或组件之间的连接关系而言,前文结合附图所讨论的连接可以是单元或组件之间的直接或间接耦合。在一些场景中,前述的直接或间接耦合涉及利用接口的通信连接,其中通信接口可以支持电性、光学、声学、磁性或其它形式的信号传输。
在本披露中,作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元示出的部件可以是或者也可以不是物理单元。前述部件或单元可以位于同一位置或者分布到多个网络单元上。另外,根据实际的需要,可以选择其中的部分或者全部单元来实现本披露实施例所述方案的目的。另外,在一些场景中,本披露实施例中的多个单元可以集成于一个单元中或者各个单元物理上单独存在。
在一些实现场景中,上述集成的单元可以采用软件程序模块的形式来实现。如果以软件程序模块的形式实现并作为独立的产品销售或使用时,所述集成的单元可以存储在计算机可读取存储器中。基于此,当本披露的方案以软件产品(例如计算机可读存储介质)的形式体现时,该软件产品可以存储在存储器中,其可以包括若干指令用以使得计算机设备(例如个人计算机、服务器或者网络设备等)执行本披露实施例所述方法的部分或全部步骤。前述的存储器可以包括但不限于U盘、闪存盘、只读存储器(Read Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
在另外一些实现场景中,上述集成的单元也可以采用硬件的形式实现,即为具体的硬件电路,其可以包括数字电路和/或模拟电路等。电路的硬件结构的物理实现可以包括但不限于物理器件,而物理器件可以包括但不限于晶体管或忆阻器等器件。鉴于此,本文所述的各类装置(例如计算装置或其他处理装置)可以通过适当的硬件处理器来实现,例如CPU、GPU、FPGA、DSP和ASIC等。进一步,前述的所述存储单元或存储装置可以是任意适当的存储介质(包括磁存储介质或磁光存储介质等),其例如可以是可变电阻式存储器(Resistive Random Access Memory,RRAM)、动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)、静态随机存取存储器(Static Random Access Memory,SRAM)、增强动态随机存取存储器(Enhanced Dynamic Random Access Memory,EDRAM)、高带宽存储器(High Bandwidth Memory,HBM)、混合存储器立方体(Hybrid Memory Cube,HMC)、ROM和RAM等。
依据以下条款可更好地理解前述内容:
条款A1、一种神经网络模型的量化训练方法,所述神经网络模型包括多个层,所述方法包括:在正向传播过程中,获取待量化层的第一输入数据和参数;分别对所述第一输入数据和所述参数进行量化,获得量化的第一输入数据和量化的第一参数;对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据;判断所述待量化层的前一层在反向传播时是否依赖所述第一输入数据;若是,保存所述第一输入数据。
条款A2、根据条款A1所述方法,所述对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据,包括:对所述量化的第一输入数据和所述量化的第一参数进行运算,获得量化的第一输出数据;对所述量化的第一输出数据进行反量化,获得所述第一输出数据。
条款A3、根据条款A1或条款A2所述方法,在所述保存所述第一输入数据之后,所述方法还包括:在反向传播过程中,分别对所述待量化层的第二输入数据和所述参数进行量化,获得量化的第二输入数据和量化的第二参数;所述待量化层的第二输入数据包括所述第一输入数据;对所述量化的第二输入数据和所述量化的第二参数进行运算,获得量化的第二输出数据和量化的第二参数的梯度;对所述量化的第二输出数据和所述量化的第二参数的梯度进行反量化运算,获得第二输出数据和第二参数的梯度;将所述量化的第二输入数据和所述量化的第二参数从内存中释放掉。
条款A4、根据条款A3所述方法,在所述将所述量化的第二输入数据和所述量化的第二参数从内存中释放掉之后,所述方法还包括:将所述第二输出数据和所述第一输入数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
条款A5、根据条款A1所述方法,所述方法还包括:当所述待量化层的前一层在反向传播时不依赖所述第一输入数据时,保存所述量化的第一输入数据和所述量化的第一参数。
条款A6、根据条款A5所述方法,所述方法还包括:在反向传播过程中,对第三输出数据进行量化运算,获得量化的第三输出数据;所述第三输出数据为反向传播过程中所述待量化层的后一层的输出数据;将所述量化的第一输入数据、所述量化的第一参数和所述量化的第三输出数据输入所述待量化层,进行运算,获得量化的第二输出数据和量化的第一参数的梯度;对所述量化的第二输出数据和所述量化的第一参数的梯度进行反量化运算,获得第二输出数据和第一参数的梯度;将所述量化的第二输入数据和所述量化的第一参数从内存中释放掉。
条款A7、根据条款A6所述方法,在将所述量化的第二输入数据和所述量化的第一参数从内存中释放掉之后,所述方法还包括:将所述第二输出数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
条款A8、根据条款A3或条款A6所述方法,在所述神经网络模型反向传播结束后,所述方法还包括:基于所述神经网络模型中各个层的参数和参数的梯度对所述各个层进行参数更新。
条款A9、根据条款A1-A8任一项所述方法,其特征在于,所述方法适用于所述神经网络模型中的至少一层。
条款A10、一种神经网络模型的测试方法,包括:获取测试数据;使用经训练的神经网络模型对所述测试数据进行测试;所述神经网络模型是通过条款A1-A9任一项所述的方法训练得到的。
条款A11、一种神经网络模型的量化训练装置,所述神经网络模型包括多个层,所述装置包括:获取单元,用于在正向传播过程中,获取待量化层的第一输入数据和参数;量化单元,用于分别对所述第一输入数据和所述参数进行量化,获得量化的第一输入数据和量化的第一参数;运算单元,用于对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据;判断单元,用于判断所述待量化层的前一层在反向传播时是否依赖所述第一输入数据;存储单元,用于在所述待量化层的前一层在反向传播时依赖第一输入数据的情况下,保存所述第一输入数据。
条款A12、一种神经网络模型量化训练设备,其特征在于,包括存储器和处理器,所述存储器用于存储指令,所述处理器用于调用所述指令执行条款A1-A9任一项所述的方法。
条款A13、一种计算机存储介质,其特征在于,包括程序指令,当所述程序指令在计算机上运行时,使得计算机执行如条款A1-A9任一项所述的方法。
虽然本文已经示出和描述了本披露的多个实施例,但对于本领域技术人员显而易见的是,这样的实施例只是以示例的方式来提供。本领域技术人员可以在不偏离本披露思想和精神的情况下想到许多更改、改变和替代的方式。应当理解的是在实践本披露的过程中,可以采用对本文所描述的本披露实施例的各种替代方案。所附权利要求书旨在限定本披露的保护范围,并因此覆盖这些权利要求范围内的等同或替代方案。
Claims (13)
1.一种神经网络模型的量化训练方法,其特征在于,所述神经网络模型包括多个层,所述方法包括:
在正向传播过程中,获取待量化层的第一输入数据和参数;
分别对所述第一输入数据和所述参数进行量化,获得量化的第一输入数据和量化的第一参数;
对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据;
判断所述待量化层的前一层在反向传播时是否依赖所述第一输入数据;
若是,保存所述第一输入数据。
2.根据权利要求1所述方法,其特征在于,所述对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据,包括:
对所述量化的第一输入数据和所述量化的第一参数进行运算,获得量化的第一输出数据;对所述量化的第一输出数据进行反量化,获得所述第一输出数据。
3.根据权利要求1或2所述方法,其特征在于,在所述保存所述第一输入数据之后,所述方法还包括:
在反向传播过程中,分别对所述待量化层的第二输入数据和所述参数进行量化,获得量化的第二输入数据和量化的第二参数;所述待量化层的第二输入数据包括所述第一输入数据;
对所述量化的第二输入数据和所述量化的第二参数进行运算,获得量化的第二输出数据和量化的第二参数的梯度;
对所述量化的第二输出数据和所述量化的第二参数的梯度进行反量化运算,获得第二输出数据和第二参数的梯度;
将所述量化的第二输入数据和所述量化的第二参数从内存中释放掉。
4.根据权利要求3所述方法,其特征在于,在所述将所述量化的第二输入数据和所述量化的第二参数从内存中释放掉之后,所述方法还包括:
将所述第二输出数据和所述第一输入数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
5.根据权利要求1所述方法,其特征在于,所述方法还包括:
当所述待量化层的前一层在反向传播时不依赖所述第一输入数据时,保存所述量化的第一输入数据和所述量化的第一参数。
6.根据权利要求5所述方法,其特征在于,所述方法还包括:
在反向传播过程中,对第三输出数据进行量化运算,获得量化的第三输出数据;所述第三输出数据为反向传播过程中所述待量化层的后一层的输出数据;
将所述量化的第一输入数据、所述量化的第一参数和所述量化的第三输出数据输入所述待量化层,进行运算,获得量化的第二输出数据和量化的第一参数的梯度;
对所述量化的第二输出数据和所述量化的第一参数的梯度进行反量化运算,获得第二输出数据和第一参数的梯度;
将所述量化的第二输入数据和所述量化的第一参数从内存中释放掉。
7.根据权利要求6所述方法,其特征在于,在将所述量化的第二输入数据和所述量化的第一参数从内存中释放掉之后,所述方法还包括:
将所述第二输出数据输入所述待量化层的前一层;所述待量化层的前一层为包含算子的层。
8.根据权利要求3或6所述方法,其特征在于,在所述神经网络模型反向传播结束后,所述方法还包括:基于所述神经网络模型中各个层的参数和参数的梯度对所述各个层进行参数更新。
9.根据权利要求1-8任一项所述方法,其特征在于,所述方法适用于所述神经网络模型中的至少一层。
10.一种神经网络模型的测试方法,其特征在于,包括:
获取测试数据;
使用经训练的神经网络模型对所述测试数据进行测试;所述神经网络模型是通过权利要求1-9任一项所述的方法训练得到的。
11.一种神经网络模型的量化训练装置,其特征在于,所述神经网络模型包括多个层,所述装置包括:
获取单元,用于在正向传播过程中,获取待量化层的第一输入数据和参数;
量化单元,用于分别对所述第一输入数据和所述参数进行量化,获得量化的第一输入数据和量化的第一参数;
运算单元,用于对所述量化的第一输入数据和所述量化的第一参数进行运算,获得第一输出数据;
判断单元,用于判断所述待量化层的前一层在反向传播时是否依赖所述第一输入数据;
存储单元,用于在所述待量化层的前一层在反向传播时依赖所述第一输入数据的情况下,保存所述第一输入数据。
12.一种神经网络模型量化训练设备,其特征在于,包括存储器和处理器,所述存储器用于存储指令,所述处理器用于调用所述指令执行权利要求1-9任一项所述的方法。
13.一种计算机存储介质,其特征在于,包括程序指令,当所述程序指令在计算机上运行时,使得计算机执行如权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011645237.7A CN114692825A (zh) | 2020-12-31 | 2020-12-31 | 一种神经网络模型的量化训练方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011645237.7A CN114692825A (zh) | 2020-12-31 | 2020-12-31 | 一种神经网络模型的量化训练方法、装置及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114692825A true CN114692825A (zh) | 2022-07-01 |
Family
ID=82136112
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011645237.7A Pending CN114692825A (zh) | 2020-12-31 | 2020-12-31 | 一种神经网络模型的量化训练方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114692825A (zh) |
-
2020
- 2020-12-31 CN CN202011645237.7A patent/CN114692825A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109062611B (zh) | 神经网络处理装置及其执行向量缩放指令的方法 | |
CN110298443B (zh) | 神经网络运算装置及方法 | |
US11651198B2 (en) | Data processing method and apparatus for neural network | |
CN113238989A (zh) | 将数据进行量化的设备、方法及计算机可读存储介质 | |
CN112463160A (zh) | 编译方法、装置、电子设备和存储介质 | |
CN115129460A (zh) | 获取算子硬件时间的方法、装置、计算机设备和存储介质 | |
CN114692824A (zh) | 一种神经网络模型的量化训练方法、装置和设备 | |
CN115952848A (zh) | 卷积运算电路、编译方法及相关产品 | |
CN113469333B (zh) | 执行神经网络模型的人工智能处理器、方法及相关产品 | |
CN114692825A (zh) | 一种神经网络模型的量化训练方法、装置及设备 | |
CN112801276B (zh) | 数据处理方法、处理器及电子设备 | |
CN112596881B (zh) | 存储部件及人工智能处理器 | |
CN112766475B (zh) | 处理部件及人工智能处理器 | |
CN115373646A (zh) | 扩展信息方法、装置和相关产品 | |
CN114692865A (zh) | 一种神经网络量化训练方法、装置及相关产品 | |
CN111967588A (zh) | 量化运算方法及相关产品 | |
CN115329923A (zh) | 用于神经网络模型的编译方法和相关产品 | |
CN114692864A (zh) | 量化方法、装置、存储介质以及电子设备 | |
CN113934678A (zh) | 一种计算装置、集成电路芯片、板卡、设备和计算方法 | |
CN114692847B (zh) | 数据处理电路、数据处理方法及相关产品 | |
CN115204351A (zh) | 神经网络模型训练的装置以及方法 | |
CN114596184A (zh) | 一种累加图像数据的方法、装置以及存储介质 | |
CN112801278A (zh) | 数据处理方法、处理器、芯片及电子设备 | |
CN113918220A (zh) | 流水线控制方法、运算模块及相关产品 | |
CN113746471A (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 |