CN116258190A - 一种量化方法、装置及相关设备 - Google Patents
一种量化方法、装置及相关设备 Download PDFInfo
- Publication number
- CN116258190A CN116258190A CN202111502625.4A CN202111502625A CN116258190A CN 116258190 A CN116258190 A CN 116258190A CN 202111502625 A CN202111502625 A CN 202111502625A CN 116258190 A CN116258190 A CN 116258190A
- Authority
- CN
- China
- Prior art keywords
- quantization
- network layer
- neural network
- activation
- value
- 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
-
- 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
-
- 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/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/061—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using biological neurons, e.g. biological neurons connected to an integrated circuit
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Life Sciences & Earth Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Mathematical Physics (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computational Linguistics (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Image Analysis (AREA)
Abstract
本申请公开了人工智能领域的一种量化方法,应用于神经网络模型,该方法在训练神经网络时,将验证集中的数据输入第一神经网络模型,保存第一网络层的激活函数输出的激活值,然后根据第一网络层的激活值确定第一网络层的量化阈值,该量化阈值用于在使用第一神经网络模型进行推理时对第一网络层输出的激活值进行量化。由于验证集中各类数据分布均匀,因此第一神经网络模型在处理验证集时输出的激活值更加接近实际部署环境,通过该激活值确定量化阈值,能够提高确定量化阈值的精确度,通过上述方法确定的量化阈值在推理时对第一网络层的激活值进行量化,能够使量化前后的数据的数据分布更加接近,提高量化精度。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种量化方法、装置及相关设备。
背景技术
人工智能(Artificial Intelligence,AI)是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用***。换句话说,人工智能是计算机科学的一个分支,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。人工智能领域的研究包括机器人、自然语言处理、计算机视觉、决策与推理、人机交互、推荐与搜索、AI基础理论等。
近年来,神经网络慢慢的从科学研究及实验室走向了各行各业的实际应用。随着神经网络的发展,神经网络的模型结构越来越复杂,模型参数越来越多,同时神经网络训练和应用时消耗的算力越来越多、占用的内存也越来越大,给神经网络模型在移动端、边缘嵌入式设备上的部署带来困难。模型量化作为能减小神经网络模型对内存占用,降低推理时算力消耗的重要方法之一。对神经网络各神经元输出的激活值进行量化是模型量化的一部分,因此,如何进行激活值的量化是一个亟待解决的技术问题。
发明内容
本申请实施例公开了量化方法、装置及相关设备,能够提高确定神经网络各层量化阈值的效率,且通过该方法确定的量化阈值在推理时对激活值进行量化,能够使量化前后的数据的数据分布更加接近,提高量化精度。
第一方面,本申请提供一种量化方法,应用于训练神经网络模型的过程中,该方法包括:在通过训练集对初始神经网络模型进行一次或多次epoch训练得到第一神经网络模型,并用验证集对第一神经网络模型进行验证时,将验证集中的验证数据输入第一神经网络模型,保存第一网络层的激活函数输出的激活值;然后根据激活值确定第一网络层的量化阈值;其中,量化阈值包括最大量化阈值和最小量化阈值,最大量化阈值小于或等于上述激活值中的最大值,最小量化阈值大于或等于上述激活值中的最小值;验证集包括多个验证数据,第一网络层是第一神经网络模型中的任一网络层,第一网络层的量化阈值用于在使用第一神经网络模型进行推理时对第一网络层的激活函数输出的激活值进行量化。
验证集是对模型训练过程得到的模型进行验证的数据集,由于验证集中各类数据分布均匀,在训练过程中用验证集对训练过程中得到的第一神经网络模型进行验证的验证阶段中,记录的激活值更加接近实际部署第一神经网络模型进行推理时输出的激活值,因此根据验证阶段记录的激活值确定量化阈值,能够提高确定的量化阈值的精确度,通过上述方法确定的量化阈值在推理时对第一网络层的激活值进行量化,能够使量化后的数据与量化前的数据的数据分布更加接近,提高量化精度。
在一种可能的实现方式中,上述保存第一网络层的激活函数输出的激活值,包括:获取用户设置的区间数量,区间数量指示将上述第一网络层的激活函数输出的激活值划分为多个区间;然后激活值和区间数量确定激活值对应的分布参数,分布参数包括激活值中的最大值、最小值以及各个区间包括的激活值的数量;保存激活值对应的分布参数和区间数量。
神经网络模型包括多个网络层,每个网络层包括多个神经元,神经网络模型在对验证集中的每个验证数据进行处理时,每个神经元都会输出一个激活值;如果保存神经网络模型在处理验证集中数据时输出的所有的激活值,需要保存的数据量较大;通过将激活值划分多个区间进而保存激活值的分布参数,能够降低需要存储的数据量,便于持久化保存各个网络层的激活值对应的分布参数和区间数量。同时,由于存储的数据量降低,能够便于将第一神经网络模型部署到其他设备,并继续使用保存的各个网络层的激活值的分布参数和区间数量,确定各个网络层对应的量化阈值,不用在将神经网络模型部署到其他设备时重新执行选取图像进行推理以获取激活值的过程,降低部署时的计算量,提高模型部署的效率。
在一种可能的实现方式中,根据激活值确定第一网络层的量化阈值,包括:获取激活值对应的分布参数和区间数量;根据分布参数和区间数量确定第一网络层的量化阈值。
通过存储第一网络层的激活值的分布参数和区间数量,在确定第一网络层的量化阈值时,根据分布参数和区间数量进行确定量化阈值,能够降低计算量,提高确定量化阈值的效率。
在一种可能的实现方式中,上述第一神经网络模型是使用训练集对初始神经网络模型进行m次epoch训练后,得到的n个神经网络模型中正确率大于预设阈值的模型,其中,m大于或等于n。
在使用训练集中的数据训练初始神经网络模型时,通常在训练的过程中需要通过验证集对经过训练集训练后的初始神经网络模型进行验证,并保存此时神经网络模型的权重、偏置以及正确率,这一组权重和偏置可以确定一个神经网络模型。例如间隔预设次数的epoch用验证集进行一次验证,得到一个神经网络模型。在经过m次epoch后能够得到n个神经网络模型,将n个神经网络模型中用验证集验证后正确率大于预设阈值的第一神经网络模型作为最终部署的模型。
在一种可能的实现方式中,在使用训练集训练初始神经网络模型,满足预设条件的情况下,保存第一网络层的激活函数输出的激活值;上述预设条件包括:使用验证集对第一神经网络模型进行验证时第一神经网络模型的正确率大于预设阈值、相邻两次迭代训练的损失函数的损失值的差值小于预设差值或使用训练集训练第二神经网络模型后的epoch次数等于预设次数;其中,第一神经网络模型是使用训练集对第二神经网络模型训练后得到的模型。
在神经网络模型训练的过程中,需要对初始神经网络模型进行多次epoch训练,在训练的过程中需要多次使用验证集对训练中得到的神经网络模型进行验证,通过设置预设条件,能够减少验证次数,降低需要存储的权重以及激活值等数据的数据量。
在一种可能的实现方式中,在确定上述第一网络层的量化阈值后,还包括:根据第一网络层的量化阈值、量化位宽确定量化参数,该量化参数包括收缩因子和零点,量化位宽为量化后得到的数值用二进制数表示时的位数;根据收缩因子和零点确定第一网络层对应的量化算子,其中,第一网络层的量化算子用于在使用第一神经网络模型进行推理时对第一网络层的激活函数输出的激活值进行量化。
在确定将第一神经网络模型部署到的设备时,能够根据该设备确定上述量化位宽,进而根据量化位宽和第一网络层的量化阈值等确定第一网络层的量化算子,在部署第一神经网络模型并利用第一神经网络模型进行推理时,能够直接通过第一网络层的量化算子对第一网络层输出的激活值进行量化,降低推理时的计算复杂度。
在一种可能的实现方式中,上述方法还包括:将测试数据输入第一神经网络模型;获取第一神经网络模型处理测试数据时第一网络层输出的激活值;通过量化算子对第一网络层输出的激活值进行量化,得到第一网络层对应的量化后的量化值,将第一网络层对应的量化后的量化值输入第二网络层,第二网络层是第一网络层的下一个网络层。
在将第一神经网络模型部署到设备中并利用第一神经网络模型进行推理时,能够直接通过第一网络层的量化算子对第一网络层输出的激活值进行量化,降低推理过程中的计算复杂度和需要占用的内存。
在一种可能的实现方式中,上述根据分布参数和区间数量确定第一网络层的量化阈值,包括:获取k组预设量化阈值,其中,k为正整数;分别根据k组预设量化阈值中的各组预设量化阈值、分布参数、区间数量和量化位宽,确定分布参数对应的k组量化值,其中,一组预设量化阈值对应一组量化值,量化位宽为量化后得到的数值用二进制数表示时的位数;分别计算k组量化值和第一网络层的分布参数之间的相对熵,得到k个相对熵,将k个相对熵中最小值对应的预设量化阈值确定为第一网络层的量化阈值。
在一种可能的实现方式中,上述分别根据k组预设量化阈值中的各组预设量化阈值、分布参数、区间数量和量化位宽,确定分布参数对应的k组激活值,包括:根据各组预设量化阈值和量化位宽,分别确定各组预设量化阈值对应的收缩因子和零点;根据第一网络层的分布参数、各组预设量化阈值对应的收缩因子和零点,确定基于各组预设量化阈值得到的分布参数的k组激活值。
通过预先设置多组预设量化阈值,对于某一组量化阈值,根据该组预设量化阈值对第一网络层输出的激活值进行量化,并确定量化后的数据与量化前的数据之间的相对熵,由于相对熵越小,表示表示量化后的数据与量化前的数据之间的信息损失越少,选择最小的相对熵对应的预设量化阈值作为第一网络层的量化阈值,能够在部署第一神经网络并根据第一神经网络模型进行推理时,根据该量化阈值进行量化后的数据更加接近第一神经网络模型进行推理时输出的激活值,能够降低对激活值进行量化带来的模型精度下降的影响。
第二方面,本申请提供一种量化装置,该量化装置包括:
训练模块,用于将验证集中的验证数据输入第一神经网络模型,保存第一网络层的激活函数输出的激活值,其中,验证集包括多个验证数据,第一网络层是第一神经网络模型中的任一网络层;
量化模块,用于根据上述第一网络层的激活函数输出的激活值确定第一网络层的量化阈值,其中,第一网络层的量化阈值用于在使用第一神经网络模型进行推理时对第一网络层的激活函数输出的激活值进行量化。
在一种可能的实现方式中,上述训练模块保存第一网络层的激活函数输出的激活值,具体包括:获取用户设置的区间数量,区间数量指示将上述第一网络层的激活函数输出的激活值划分为多个区间;然后激活值和区间数量确定激活值对应的分布参数,分布参数包括激活值中的最大值、最小值以及各个区间包括的激活值的数量;保存激活值对应的分布参数和区间数量。
在一种可能的实现方式中,上述量化模块具体用于:获取激活值对应的分布参数和区间数量;根据分布参数和区间数量确定第一网络层的量化阈值。
在一种可能的实现方式中,上述第一神经网络模型是使用训练集对初始神经网络模型进行m次epoch训练后,得到的n个神经网络模型中正确率大于预设阈值的模型,其中,m大于或等于n。
在一种可能的实现方式中,上述训练模块具体用于:在使用训练集训练初始神经网络模型,满足预设条件的情况下,保存第一网络层的激活函数输出的激活值;上述预设条件包括:使用验证集对第一神经网络模型进行验证时第一神经网络模型的正确率大于预设阈值、相邻两次迭代训练的损失函数的损失值的差值小于预设差值或使用训练集训练第二神经网络模型后的epoch次数等于预设次数;其中,第一神经网络模型是使用训练集对第二神经网络模型训练后得到的模型。
在一种可能的实现方式中,上述量化模块还用于:根据第一网络层的量化阈值、量化位宽确定量化参数,量化参数包括收缩因子和零点,量化位宽为量化后得到的数值用二进制数表示时的位数;根据收缩因子和零点确定第一网络层对应的量化算子,其中,第一网络层的量化算子用于在使用第一神经网络模型进行推理时对第一网络层的激活函数输出的激活值进行量化。
在一种可能的实现方式中,量化装置还包括推理模块,推理模块用于将测试数据输入第一神经网络模型;获取第一神经网络模型处理测试数据时第一网络层输出的激活值;通过量化算子对第一网络层输出的激活值进行量化,得到第一网络层对应的量化后的量化值,将第一网络层对应的量化后的量化值输入第二网络层,第二网络层是第一网络层的下一个网络层。
在一种可能的实现方式中,上述量化模块具体用于获取k组预设量化阈值,其中,k为正整数;分别根据k组预设量化阈值中的各组预设量化阈值、分布参数、区间数量和量化位宽,确定分布参数对应的k组量化值,其中,一组预设量化阈值对应一组量化值,量化位宽为量化后得到的数值用二进制数表示时的位数;分别计算k组量化值和第一网络层的分布参数之间的相对熵,得到k个相对熵,将k个相对熵中最小值对应的预设量化阈值确定为第一网络层的量化阈值。
在一种可能的实现方式中,上述量化模块具体用于上述分别根据k组预设量化阈值中的各组预设量化阈值、分布参数、区间数量和量化位宽,确定分布参数对应的k组激活值,包括:根据各组预设量化阈值和量化位宽,分别确定各组预设量化阈值对应的收缩因子和零点;根据第一网络层的分布参数、各组预设量化阈值对应的收缩因子和零点,确定基于各组预设量化阈值得到的分布参数的k组激活值。
第三方面,本申请提供一种计算设备,包括处理器和存储器,存储器用于存储指令,处理器用于执行所述指令,当处理器执行所述指令时,计算设备执行如第一方面或第一方面任意可能的实现方式中所述的方法。
第四方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有指令,当所述指令在计算设备上运行时执行如第一方面或第一方面任意可能的实现方式中所述的方法。
第五方面,本申请实施例提供一种计算机程序产品,该计算机程序产品包括指令,当该计算机程序产品被计算机执行时,使得计算机可以执行上述第一方面或上述第一方面任意可能的实现方式中所述的方法。
本申请在上述各方面提供的实现方式的基础上,还可以进行进一步组合以提供更多实现方式。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种人工智能主体框架的示意图;
图2是本申请实施例提供的一种***架构示意图;
图3是本申请实施例提供的一种神经网络模型示意图;
图4是本申请实施例提供一种芯片的硬件结构示意图;
图5是本申请实施例提供的一种量化方法的流程示意图;
图6是本申请实施例提供的一种量化装置的示意图;
图7是本申请实施例提供的一种训练设备的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请的技术方案进行描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
图1示出一种人工智能主体框架示意图,该主体框架描述了人工智能***总体工作流程,适用于通用的人工智能领域需求。
下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。
“智能信息链”反映从数据的获取到处理的一系列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。
“IT价值链”从人工智能的底层基础设施、信息(提供和处理技术实现)到***的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施
基础设施为人工智能***提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片提供,智能芯片包括中央处理器(central processing unit,CPU)、图像处理器(graphics processing unit,GPU)、嵌入式神经网络处理器(neural-network processing units,NPU)、张量处理器(tensorprocessing unit,TPU)、专用集成电路(application-specific integrated circuit,ASIC)、现场可编程逻辑门阵列(field-programmable gate array,FPGA)等;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算***中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有***的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练、机器学习、深度学习、搜索、推理、决策等方式。其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能***中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用***,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能***在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能制造、智能交通、智能家居、智能医疗、智能安防、自动驾驶,智能终端等。
下面介绍几种应用场景。
应用场景1:高级驾驶辅助***(Advanced Driver Assistance System,ADAS)/自动驾驶解决方案(Autonomous Driving Solution,ADS)。在ADAS和ADS中,需要实时进行多类型的目标检测,包括:动态障碍物(例如行人、骑行者、三轮车、轿车、卡车、公交车),静态障碍物(交通锥标、交通棍标、消防栓、摩托车、自行车),交通标志(导向标志、广告牌、交通灯、路标)。另外,为了准确获取动态障碍物的在3维空间所占的区域,还需要对动态障碍物进行3D估计,输出3D框。为了与激光雷达的数据进行融合,需要获取动态障碍物的Mask,从而把打到动态障碍物上的激光点云筛选出来;为了进行精确的泊车位,需要同时检测出泊车位的4个关键点;为了进行构图定位,需要检测出静态目标的关键点。这是一个语义分割问题。自动驾驶车辆的摄像头捕捉到道路画面,需要对画面进行分割,分出路面、路基、车辆、行人等不同物体,从而保持车辆行驶在正确的区域。对于安全型要求极高的自动驾驶需要实时对画面进行理解,能够实时运行的进行语义分割的神经网络模型至关重要。
应用场景2:分类场景。物体识别装置在获取待分类图像后,通过基于本申请实施例的神经网络的量化方法所训练得到的神经网络模型对待分类图像中的物体进行处理,得到待分类图像的类别,然后根据待分类图像中物体的类别对待分类图像进行分类。
应用场景3:医疗场景。神经网络模型具有强大的特征表示能力和模式识别能力,能够识别潜在的模式,从海量的数据中挖掘出有价值的信息。如果将神经网络模型用于分析医疗数据,不仅能够提高诊断的效率和准确率,还能够对潜在的疾病进行预测。
应用场景4:翻译场景。通过神经网络模型对图像采集设备(例如手机摄像头)采集的图像中的文字或字符进行即时翻译或离线翻译;或者对语音采集设备(例如麦克风)采集的语音进行即时翻译或离线翻译等,能够提高交流或学习的效率。
参见图2,本申请实施例提供了一种***架构200。数据采集设备260用于采集样本数据,并将样本数据存入数据库230。其中,样本数据可以是带标签的多张图像、带标签的多个语音片段或带标签的字符等,本申请实施例中以样本数据是图像为例对本申请提供的方法进行介绍。训练设备220基于数据库230中维护的样本图像生成目标模型/规则201。训练设备220得到的目标模型/规则201可以应用到不同的***或设备中,例如部署到执行设备210中。训练设备220可以针对不同的目的,基于不同的样本数据生成相应的目标模型/规则201。在图2中,执行设备210配置有输入输出(input/output,I/O)接口212,与外部设备进行数据交互。用户能够通过用户设备240向I/O接口212输入待识别图像,计算模块211能够使用目标模型/规则201对输入的待识别图像进行处理,得到识别结果。执行设备210对待识别图像进行处理的过程中,执行设备210能够调用数据存储***250中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据等存入数据存储***250中。最后,执行设备210通过I/O接口将识别结果返回给用户设备240。
需要说明的是,在实际应用中,数据库230中维护的样本图像不一定都来自于数据采集设备260,也能够是从其他设备接收到的,例如从用户设备240获取。上述训练设备220和执行设备210可以是终端,例如手机、平板电脑、笔记本、车载终端等,也可以是服务器或者云端等。在图2中所示情况下,用户可以手动指定输入执行设备210中的数据,例如,在I/O接口212提供的界面中操作。另一种情况下,用户设备240可以自动地向I/O接口212输入数据并获得结果,如果用户设备240自动输入数据需要获得用户的授权,用户可以在用户设备240中设置相应权限。用户可以在用户设备240查看执行设备210输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。
上述图2是仅是本申请实施例提供的一种***架构示意图,图2中所述的设备、模块等之间的位置关系不构成任何限制。例如,数据存储***250可以是执行设备210的外部存储设备,也可以是位于执行设备210中的存储器。
下面详细介绍训练设备220如何基于样本数据得到目标模型/规则201。
如图3所示,神经网络包括输入层、多个网络层及输出层,输入层负责接收输入信号,输出层负责输出神经网络的计算结果,网络层负责学习、训练等计算过程,是网络的记忆单元,网络层的记忆功能由权重矩阵来表征。
通常神经网络中的每一个网络层包括权重(weight)、偏置(bias)和激活函数。数据输入神经网络的某一层后,神经网络中的每一个网络层的工作可以用数学表达式 来描述。其中,/>表示输入,每一层的输入是上一层的输出,W是一个多维的权重矩阵,该权重矩阵中的每一个值表示该层神经网络中的一个神经元的权重值,b是偏置,/>表示输出,a()是激活函数。其中,/>是线性处理过程,线性处理的输出作为激活函数的输入,激活函数对输入数据进行处理得到该层每个神经元输出的激活值,该层的输出值继续作为下一层的输入值,直至输出层输出结果。
从物理层面神经网络中的每一层的工作可以理解为通过五种对输入空间(输入向量的集合)的操作,完成输入空间到输出空间的变换,这五种操作包括:1、升维/降维;2、放大/缩小;3、旋转;4、平移;5、“弯曲”。其中1、2、3的操作由完成,4的操作由+b完成,5的操作则由a()来实现。这里之所以用“空间”二字来表述是因为被分类的对象并不是单个事物,而是一类事物,空间是指这类事物所有个体的集合。权重矩阵W决定着上文所述的输入空间到输出空间的空间变换,即每一层的权重矩阵W控制着如何变换空间。训练神经网络的目的,也就是最终得到训练好的神经网络的所有层的权重矩阵。因此,神经网络的训练过程本质上就是学习控制空间变换的方式,更具体的就是学习权重矩阵。
因为希望神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重矩阵(当然,在第一次更新之前通常会有初始化的过程,即为神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断的调整,直到神经网络能够预测出真正想要的目标值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么神经网络的训练就变成了尽可能缩小这个loss的过程。
下面介绍本申请实施例提供的一种芯片结构。图4是本申请实施例提供一种芯片的硬件结构示意图。该芯片包括人工智能处理器40,该芯片能够被设置在如图2所示的执行设备210中,用以完成计算模块211的计算工作。该芯片也能够被设置在如图2所示的训练设备220中,用以完成训练设备220的训练工作并输出目标模型/规则201。
人工智能处理器40可以是NPU、TPU或GPU等适用于大规模运算的处理器。以NPU为例,NPU可以作为协处理器挂载到主CPU(host CPU)上,由主CPU为其分配任务。NPU的核心部分为运算电路403,控制器404控制运算电路403提取存储器(权重存储器402或输入存储器401)中的数据并进行运算。
在一些实现中,运算电路403内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路403是二维脉动阵列。运算电路403还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路403是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器402中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器401中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器408中。
向量计算单元407可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元407可以用于神经网络中非卷积/非全连接层的网络计算,如池化(pooling),批归一化(batch normalization),局部响应归一化(local response normalization)等。
在一些实现中,向量计算单元407能将经处理的输出的向量存储到统一存储器406。例如,向量计算单元407可以将非线性函数应用到运算电路403的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元407生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路403的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器406用于存放输入数据以及输出数据。存储单元访问控制器405(direct memory access controller,DMAC)将外部存储器中的输入数据搬运到输入存储器401和/或统一存储器406、将外部存储器中的权重数据存入权重存储器402,以及将统一存储器406中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)410,用于通过总线实现主CPU、DMAC和取指存储器409之间进行交互。与控制器404连接的取指存储器(instruction fetchbuffer)409,用于存储控制器404使用的指令;
控制器404,用于调用取指存储器409中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器406,输入存储器401,权重存储器402以及取指存储器409均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(Double Data Rate Synchronous Dynamic Random AccessMemory,简称DDR SDRAM)、高带宽存储器(High Bandwidth Memory,HBM)或其他可读可写的存储器。
下面详细介绍本申请实施例提供的应用于神经网络的量化方法。
随着人工智能技术的发展,当前神经网络的精度往往依赖于网络规模的扩大(例如网络层数和网络参数的增加)以及海量数据的训练分析,基于海量数据的训练分析以及大规模网络的训练过程会占用较大的存储空间和较多的算力资源。而将神经网络中原本的32位的浮点数的参数量化为较低位(例如16位、8位等)的整型的参数,能够降低模型部署时消耗的存储资源,同时能够加速神经网络的推理过程。对神经网络各神经元输出的激活值进行量化是模型量化的一部分,因此,如何进行激活值的量化是一个亟待解决的技术问题。
针对上述问题,本申请提供一种针对神经网络中激活函数输出的激活值的量化方法。在神经网络模型训练过程中使用验证集中的图像对神经网络模型进行验证,在神经网络模型处理每张图像时,保存各个网络层激活函数输出的激活值。其中,对于第i层网络层,如果该层包括Mi个神经元,则神经网络对一个图像进行处理的过程中,该层会输出Mi个激活值。对于包括N张图像的验证集,在通过验证集对神经网络模型进行验证后,第i层网络层共输出N*Mi个激活值。然后根据这N*Mi个激活值,确定该层网络层对应的量化阈值。最后根据量化阈值与量化位宽,确定该网络层对应的收缩因子(scale)和零点(zeropoint)。其中,量化阈值包括最大量化阈值Tmax和最小量化阈值Tmin,Tmax大于Tmin;激活值中大于或等于Tmax的激活值均会被量化为Lmax,小于或等于Tmin的激活值均会被量化为Lmin,Lmax是量化后的数据的最大值,Lmin是量化后的数据的最小值;量化位宽表示量化后得到的数值用二进制数表示时的位数,通过量化位宽能够确定对激活值进行量化后得到的数据的最大值Lmax和最小值Lmin。在该神经网络模型训练好之后,在应用该神经网络模型进行图像识别分类时,第i层的激活函数输出激活值之后,利用该层对应的量化阈值、收缩因子和零点,对输出的激活值进行量化,将量化后的值作为下一层的输出。
下面结合附图详细介绍本申请的量化方法,图5是本申请实施例提供的一种量化方法的流程示意图,该量化方法包括:
S501、通过训练集训练初始神经网络模型。
神经网络模型的训练过程包括训练阶段和验证阶段。在进行训练过程之前,需要将样本图像分为训练集和验证集,训练集和验证集中各类样本的数量均衡。例如训练用于根据图像对多种物体进行分类的神经网络模型时,如果该样本数据中包括需要分类的10种物体,则训练集和验证集均包括这10种物体的图像,且不同物体对应的图像的数量相差不大。训练设备220在神经网络模型训练的过程中,通常先使用训练集中的图像对神经网络模型的进行训练,以更新神经网络模型各层的权重和偏置;然后使用验证集中的图像对之前训练后的神经网络模型进行评估,以调整神经网络模型的超参数,例如调整神经网络模型的学习率等。
在使用训练集中的图像训练初始神经网络模型时,通常在预设次数的时期(epoch)训练或者预设次数的迭代训练后,需要通过验证集对经过训练集训练后的神经网络模型进行验证。其中,epoch训练是指使用训练集中的所有图像对神经网络模型进行一次完整的训练;用户能够通过上述训练设备220中的训练框架提供的应用程序接口(application programming interface,API)设置上述预设次数,预设次数可以是1次、可以是2次、可以是5次等,本申请实施例不做具体限制。需要说明的是,初始神经网络模型的权重和偏置是预先配置的,在通过训练集训练模型的过程中,每次迭代训练后更新模型的权重和偏置。即在对初始神经网络模型进行训练的过程中,第1次迭代训练时,神经网络模型中每层的权重和偏置都会在初始的权重和偏置基础上进行更新;第二次迭代训练时,权重和偏置会在第1次迭代训练后的权重和偏置的基础上进行更新,依次类推,第d次迭代训练时,权重和偏置会在第d-1次迭代训练后的权重和偏置的基础上进行更新。
S502、将验证集中的验证数据输入第一神经网络模型,保存第一神经网络模型在处理验证集中的验证数据时,第一网络层的激活函数输出的激活值。
本申请实施例中,对神经网络模型,每间隔预设次数的epoch训练之后,通过验证集对经过训练集训练后的神经网络模型进行验证,并保存此时神经网络模型的权重、偏置以及正确率,这一组权重和偏置可以确定一个神经网络模型。对神经网络模型进行m次epoch之后停止训练,能够得到n个神经网络模型。示例性的,上述预设次数为2,即每两次epoch训练之后,使用验证集对神经网络模型进行验证,并保存一次当前神经网络模型对应的权重、偏置和正确率;例如,在第二次epoch训练后,保存第二次epoch训练后的权重和偏置,得到神经网络模型A,其中,神经网络模型A的权重和偏置是第二次epoch训练后的权重和偏置,使用验证集对神经网络模型A进行验证,得到神经网络模型A对应的正确率;然后在神经网络模型A的基础上,再次使用训练集进行两次epoch训练,在第四次epoch训练后,再次保存第四次epoch训练后的权重和偏置,得到神经网络模型B,其中,神经网络模型B的权重和偏置是第四次epoch训练后的权重和偏置,使用验证集对神经网络模型B进行验证,得到神经网络模型B对应的正确率。如果m为100,经过100次epoch训练后,能够得到50组权重和偏置,即50个神经网络模型。
在经过m次epoch训练得到n个神经网络模型之后,将n个神经网络模型中正确率大于预设阈值的第一神经网络模型,作为最终部署的神经网络模型。例如将正确率最大的一个神经网络模型作为第一神经网络模型。在确定第一神经网络模型之后,再次将验证集中的图像输入第一神经网络模型,保存第一神经网络模型在处理验证集中的图像时第一网络层的激活函数输出的激活值。
在将验证集中的图像输入第一神经网络模型中进行识别时,对于神经网络模型中的任意一个网络层,在处理一张图像时,每个网络层都会输出多个激活值,其中,每个网络层输出的激活值的数量与该网络层的神经元数量相同。以第一网络层为例,如果第一网络层包括M1个神经元,第一神经网络模型在对一张图像进行识别时,第一网络层对输入的数据进行处理后,第一网络层的激活函数输出M1个激活值。如果验证集中共包括N张图像,则在一次验证过程中,第一网络层共输出N*M1个激活值,训练设备220保存第一网络层输出的N*M1个激活值,得到第一网络层的激活值集合R,其中R={r1,r2,r3,…,rh,…},h为小于或等于N*M1的正整数。
在一种可能的实现方式中,训练设备220在得到第一网络层的N*M1个激活值之后,可以不保存所有的N*M1个激活值,训练设备220可以保存第一网络层的激活值的数据分布,该数据分布包括区间数量和分布参数。其中,分布参数包括激活值中的最大值、最小值以及各个区间包括的激活值的数量,区间是指将最大值与最小值之间划分多个区间后的每个区间。示例性的,训练设备220可以获取第一网络层输出的激活值的最大值和最小值;然后将最大值和最小值划分为预设数量的区间,例如划分为2048个区间;再统计每个区间包括的激活值的数量或者每个区间包括的激活值的数量占该层输出的所有激活值的比例;最后,对于第一网络层的激活值,保存该层的名称、最大激活值、最小激活值、区间数量以及每个区间的激活值的数量,其中,激活值的数量也可以用每个区间的激活值分布(即每个区间包括的激活值的数量占该层所有激活值数量的比例)替代。以卷积神经网络为例,对于包括激活函数的a个卷积层,保存的各个卷积层的激活值的数据分布如下表1所示。表1中,激活值分布中的数值依次表示2048个区间中每个区间的激活值的数量占该层所有激活值的比例。
需要说明的是,本申请实施例中,每个网络层的激活值被划分的区间数量可以相同,也可以部分相同,部分不同,本申请实施例不做具体限定。用户能够通过上述训练设备220中的训练框架提供的API配置上述每个层的区间数量,也可以由训练设备220根据每个网络层输出的激活值的最大值和最小值进行划分。本申请实施例不做具体限定。
神经网络模型包括多个网络层,每个网络层包括多个神经元,神经网络模型在对验证集中的每个验证数据进行处理时,每个神经元都会输出一个激活值;如果保存神经网络模型在处理验证集中数据时输出的所有的激活值,需要保存的数据量较大。通过将激活值划分多个区间进而保存激活值的数据分布,能够降低需要存储的数据量,便于持久化保存各个网络层的激活值的数据分布。同时,由于存储的数据量降低,能够便于将第一神经网络模型部署到其他设备,并继续使用保存的各个网络层的激活值的分布参数和区间数量,确定各个网络层对应的量化阈值,不用在将神经网络模型部署到其他设备时重新执行选取图像进行推理以获取激活值的过程,降低部署时的计算量,提高模型部署的效率。
表1
S503、根据第一网络层的激活值确定第一网络层的量化阈值。
其中,第一网络层的量化阈值用于对第一网络层输出的激活值进行量化。例如在部署第一神经网络模型进行推理时,第一神经网络模型在处理待识别图像时,基于量化阈值对第一网络层输出的激活值进行量化。量化阈值包括最大量化阈值Tmax和最小量化阈值Tmin;最大量化阈值Tmax小于或等于第一网络层的最大激活值,最小量化阈值Tmin大于或等于第一网络层的最小激活值。
在一种可能的实现方式中,在确定第一网络层的量化阈值时,首先对每个网络层预先设置k组预设量化阈值,每组预设量化阈值的范围不同,每组预设量化阈值均包括最大量化阈值Tmax与最小量化阈值Tmin。对于k组预设量化阈值中的任意一组预设量化阈值,例如第j组预设量化阈值,根据第j组预设量化阈值与量化位宽确定该组量化阈值对应的收缩因子和零点。其中,量化位宽是指量化后得到的数值用二进制数表示时的位数,根据位宽能够确定激活值被量化后得到的数值的最大值Lmax和最小值Lmin。例如,如果数据位宽是4位,量化后的最大值Lmax为7,最小值Lmin为-8;如果数据位宽是8位,量化后的数据是8位有符号整型数据,则最大值Lmax为127,最小值Lmin为-128;如果例如量化后的数据是8位无符号整型数据,则最大值Lmax为0,最小值Lmin为255。收缩因子和零点满足如下关系:
其中,Sj表示第j组预设量化阈值对应的收缩因子,Zj表示第j组预设量化阈值对应的零点,Tjmax表示第j组预设量化阈值中的最大量化阈值,Tjmin表示第j组预设量化阈值中的最小量化阈值,round表示round函数。
在确定第j组预设量化阈值对应的收缩因子和零点之后,根据该组预设量化阈值的最大量化阈值Tjmax、最小量化阈值Tjmin、收缩因子Sj和零点Zj,对第一网络层的各个激活值分别进行量化,得到根据第j组预设量化阈值计算得到的第一网络层对应的量化值集合Qj。
其中,对于任意一个待量化的激活值r,r与对应的量化后的值q之间满足如下关系:
根据第j组预设量化阈值对第一网络层的各个激活值分别进行量化得到第一网络层对应的量化值Qj之后,计算第一网络层的激活值集合R与对第一网络层的各个激活值量化后的量化值集合Qj之间的相对熵,例如Kullback-Leibler(KL)散度。
对于预先设置的k组预设量化阈值,根据上述方法计算第一网络层的激活值通过不同预设量化阈值进行量化后的量化值,得到第一网络层的激活值分别根据上述k组预设量化阈值计算得到的k组量化值。其中,每组预设量化阈值对应一组第一网络层的激活值的量化值;然后再计算第一网络层的激活值与第一网络层对应的各组量化值之间的KL散度,得到k个KL散度。其中,KL散度越小,表示量化后的数据与量化前的数据之间的信息损失越少。将k个KL散度中最小KL散度对应的一组预设量化阈值作为第一网络层的量化阈值。
需要说明的是,如果训练设备220保存的是如上述表1所示的各个网络层的激活值的数据分布,在根据预设量化阈值计算激活值对应的量化值时,对于每个区间,以一个区间的最大值、最小值或者平均值作为该区间的表征值,对于第一网络层,将第一网络层各个区间的表征值作为该第一网络层的激活值,然后通过上述方法计算第一网络层的量化阈值。在另一种可能的实现方式中,在确定第一网络层的量化阈值时,对于第一网络层输出的激活值,将激活值按照从大到小或从小到大排列,将排在最前或最后面的b%的数据删除,将剩下的数据中的最大数值作为最大值Lmax,将剩余的数据中的最小数值作为最小值Lmin。
在确定第一神经网络模型各个网络层的量化阈值之后,保存各个网络层对应的量化阈值。在确定第一网络层的量化阈值之后,通过上述(公式1)和(公式2),能够确定目标收缩因子S1和目标零点Z1,将量化阈值、目标收缩因子和目标零点带入上述(公式3),即可得到第一网络层的量化算子。当通过第一神经网络模型进行推理时,例如将第一神经网络模型部署到如图2所示的执行设备210中对输入的图像进行识别,第一网络层的激活函数输出的激活值通过量化算子进行量化,得到量化后的值,然后将量化后的值输入第二网络层,其中,第二网络层是第一网络层的下一个网络层。
在确定将第一神经网络模型部署到的设备时,能够根据该设备确定上述量化位宽,进而根据量化位宽和第一网络层的量化阈值等确定第一网络层的量化算子,在部署第一神经网络模型并利用第一神经网络模型进行推理时,能够直接通过第一网络层的量化算子对第一网络层输出的激活值进行量化,降低推理时的计算复杂度。
上述S502中,在从n个神经网络模型中确定第一神经网络模型之后,再将验证集输入第一神经网络模型中,保存第一网络层输出的激活值,或者确定第一网络层输出的激活值的分布参数,保存第一网络层的激活值的数据分布。本申请实施例中,还可以在满足预设条件的情况下,保存神经网络模型第一网络层输出的激活值,或者第一网络层输出的激活值的数据分布。
在一种可能的实现方式中,预设条件可以是间隔预设次数的epoch训练后使用验证集中的图像对神经网络模型进行一次验证,在每次使用验证集中的图像对神经网络模型进行验证时,就保存每个神经网络模型中第一网络层输出的激活值或者数据分布。例如上述预设次数为2,每隔2次epoch记录一次权重和偏置,在用验证集对神经网络模型进行验证时,同时记录此次验证时神经网络模型中第一网络层输出的激活值。在经过100次epoch后,则能够得到50个如表1所示的数据分布。在停止训练并确定上述第一神经网络模型之后,删除其他神经网络模型对应的数据分布,保留第一神经网络模型对应的权重和数据分布。
在另一种可能的实现方式中,还可以在通过验证集对一个神经网络模型进行验证时,就保存该神经网络模型中每个网络层对应的数据分布,在确定该神经网络模型的正确率后,如果该神经网络模型的正确率大于或等于预设阈值,就保留该神经网络模型对应的数据分布,如果该神经网络模型的正确率小于预设阈值,则不保存该神经网络模型各个网络层的激活值对应的数据分布。例如第四次epoch训练得到神经网络模型B之后,在用验证集进行验证时,记录神经网络模型B的各个网络层输出的激活值的数据分布,在确定神经网络模型B的正确率之后,如果该正确率大于或等于预设阈值,则保留神经网络模型B各个网络层的激活值对应的数据分布。或者相邻两次迭代训练中,损失函数的损失值的差值小于预设差值时,保存后一次迭代训练后的权重和偏置,得到一个神经网络模型,然后用验证集中的数据对该神经网络模型进行验证,保存验证过程中该神经网络模型输出的激活值或激活值的数据分布。
本申请实施例中,可以设置一个数据结构,该数据结构包括一个或多个比特位,以一个比特位为例,在满足预设条件时,将该比特位置1,在用验证集对神经网络模型进行验证前,获取该比特位的值,如果该比特位的值为1,则在通过验证集中的图像对神经网络模型进行验证时,保存激活值或者激活值的数据分布。在通过验证集对神经网络模型进行验证后,再将该比特位置0。例如,预设条件是间隔预设次数的epoch训练后使用验证集中的数据对神经网络模型进行一次验证,在每次使用验证集中的图像对神经网络模型进行验证时,就保存每个神经网络模型中每个网络层输出的激活值或者数据分布。如果预设次数是2,在2t次epoch训练后,将该比特位置1,在一次验证过程结束之后,将该比特位置0,其中,t为正整数。
在神经网络模型对验证集中的图像进行推理的过程中,由于对验证集中的每张图像进行推理时,每一个网络层都会输出多个激活值,因此在保存各网络层的激活值的数据分布之前,需要保存各个网络层输出的激活值,保存的激活值的数据量其中,Mi表示第i个网络层的神经元数量。由于需要保存的数据量较大,会占用过多内存,因此在使用验证集中的数据进行验证的过程中,可以将保存的激活值从内存迁移到硬盘等存储设备中,在验证完成之后,再将保存的激活值从硬盘等存储设备中读取到内存中进行数据分布的统计,以减少推理过程中激活值占用的内存量,提高推理效率。/>
需要说明的是,用户能够通过训练设备220中训练框架提供的API接口设置保存激活值的方式,例如上述S502中,用户能够设置在用验证集中的数据对神经网络模型进行验证后,是保存所有的激活值还是保存激活值的数据分布。用户还能够通过API接口设置保存激活值的路径,例如在每次用验证集中的数据进行验证时,激活值在内存中的缓存路径,以及将激活值持久化到硬盘等存储设备中时的存储路径。
应理解,对于神经网络模型中的每一个网络层,能够通过上述方法确定每一个网络层对应的量化阈值或量化算子,并保存每个网络层对应的激活值或激活值的数据分布。
由于验证集中各类数据分布均匀,在训练过程中用验证集对训练得到的第一神经网络模型进行验证的验证阶段中,记录的激活值更加接近实际部署第一神经网络模型进行推理时输出的激活值,因此根据验证阶段记录的激活值确定量化阈值,能够提高确定的量化阈值的精确度,通过上述方法确定的量化阈值在推理时对第一网络层的激活值进行量化,能够使量化后的数据与量化前的数据的数据分布更加接近,提高量化精度。
对于上述方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
本领域的技术人员根据以上描述的内容,能够想到的其他合理的步骤组合,也属于本发明的保护范围内。其次,本领域技术人员也应该熟悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明所必须的。
上文中结合图1至图5详细描述了根据本申请实施例所提供的审查方法,下面结合图6与图7,描述本申请实施例所提供的关于量化的相关装置和设备。参见图6,图6是本申请实施例提供的一种量化装置的示意图,该量化装置600用于训练神经网络的过程中,包括:训练模块610和量化模块620,其中,
训练模块610,用于在通过训练集对初始神经网络模型进行一次或多次epoch训练得到第一神经网络模型,并用验证集对第一神经网络模型进行验证时,将验证集中的验证数据输入第一神经网络模型,保存第一网络层的激活函数输出的激活值。其中,上述验证集包括多个验证数据,第一网络层是第一神经网络模型中的任一网络层,保存第一网络输出的激活值的方式可以参照上述方法实施例中的相关描述。训练模块610对初始神经网络模型进行训练的过程中保存激活值的方法,可以参照上述图5所示的方法实施例中S501和S502以及其他的相关描述,在此不再赘述。
量化模块620,用于获取上述保存的第一网络层的激活函数输出的激活值,根据激活值确定第一网络层的量化阈值;具体的,量化模块根据激活值确定第一网络层的量化阈值的方法,可以参照上述图5所示的方法实施例中S503以及方法实施例中的相关描述。量化阈值包括最大量化阈值和最小量化阈值,最大量化阈值小于或等于上述激活值中的最大值,最小量化阈值大于或等于上述激活值中的最小值;第一网络层的量化阈值用于在使用第一神经网络模型进行推理时对第一网络层的激活函数输出的激活值进行量化。
具体的,上述量化装置600中训练模块610或者量化模块620用于实现上述图5所示的方法实施例中训练设备220的操作,在此不再赘述。
在一种可能的实现方式中,如果将上述第一神经网络模型部署在训练设备220中,即训练设备220即用于训练神经网络模型,也用于在神经网络模型训练好之后,能够用训练好的神经网络模型进行识别。则该量化装置还包括推理模块630,推理模块630用于通过第一神经网络模型对待识别图像进行识别,其中,第一神经网络模型对待识别图像进行识别时,第一网络层的激活函数输出的激活值通过量化算子进行量化,得到量化后的值,然后将量化后的值输入第二网络层,其中,第二网络层是第一网络层的下一个网络层。
参见图7,图7是本申请实施例提供的一种训练设备的示意图,该训练设备220包括:一个或者多个处理器710、通信接口720以及存储器730,所述处理器710、通信接口720以及存储器730通过总线740相互连接,其中,
所述处理器710用于实现上述图6所示的量化装置600所实现的操作,处理器710执行各种操作的具体实现可参照上述方法实施例中的训练设备220的操作。例如处理器710用于执行上述图5中S501~S503的操作,在此不再赘述。
处理器710可以有多种具体实现形式,例如处理器710可以为中央处理器CPU、GPU或TPU等,处理器710还可以是单核处理器或多核处理器。处理器710可以为图4所示的芯片结构,处理器710还可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integrated circuit,ASIC),可编程逻辑器件(programmablelogic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complexprogrammable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gatearray,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器710也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signalprocessor,DSP)等。
通信接口720可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器730可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器730也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。
存储器730也可用于存储程序代码和数据,例如训练过程中的激活值或者激活值的数据分布,权重数据和偏置数据等,以便于处理器710调用存储器730中存储的程序代码执行上述方法实施例中实现量化的操作步骤。此外,训练设备220可能包含相比于图7展示的更多或者更少的组件,或者有不同的组件配置方式。
总线740可以是快捷***部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extendedindustrystandardarchitecture,EISA)总线、统一总线(unifiedbus,Ubus或UB)、计算机快速链接(computeexpresslink,CXL)、缓存一致互联协议(cachecoherentinterconnectforaccelerators,CCIX)等。总线740可以分为地址总线、数据总线、控制总线等。总线740除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图7中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选地,该训练设备220还可以包括输入/输出接口750,输入/输出接口750连接有输入/输出设备,用于接收输入的信息,输出操作结果。
具体地,上述训练设备220执行各种操作的具体实现可参照上述方法实施例中S501~S503执行的具体操作,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当其在处理器上运行时,可以实现上述方法实施例中的方法步骤,所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例的具体操作,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
上述实施例,可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质(例如,软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘(solid state drive,SSD)。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例装置中的模块可以根据实际需要进行划分、合并或删减。
以上对本申请实施例进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的方法及其核心思想;同时,对于本领域的一般技术人员,依据本申请的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本申请的限制。
Claims (20)
1.一种量化方法,其特征在于,所述方法包括:
将验证集中的验证数据输入第一神经网络模型,保存第一网络层的激活函数输出的激活值,所述验证集包括多个验证数据,所述第一网络层是所述第一神经网络模型中的任一网络层;
根据所述激活值确定所述第一网络层的量化阈值,其中,所述第一网络层的量化阈值用于在使用所述第一神经网络模型进行推理时对所述第一网络层的激活函数输出的激活值进行量化。
2.根据权利要求1所述的方法,其特征在于,所述保存第一网络层的激活函数输出的激活值,包括:
获取用户设置的区间数量,所述区间数量指示将所述激活值划分为多个区间;
根据所述激活值和所述区间数量确定所述激活值对应的分布参数,所述分布参数包括所述激活值中的最大值、最小值以及各个区间包括的激活值的数量;
保存所述激活值对应的分布参数和所述区间数量。
3.根据权利要求2所述的方法,其特征在于,所述根据所述激活值确定所述第一网络层的量化阈值,包括:
获取所述激活值对应的分布参数和所述区间数量;
根据所述分布参数和所述区间数量确定所述第一网络层的量化阈值。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述第一神经网络模型是使用训练集对初始神经网络模型进行m次epoch训练后,得到的n个神经网络模型中正确率大于预设阈值的模型,其中,m大于或等于n。
5.根据权利要求4所述的方法,其特征在于,
在使用所述训练集训练所述初始神经网络模型,满足预设条件的情况下,保存所述第一网络层的激活函数输出的激活值;
所述预设条件包括:使用所述验证集对所述第一神经网络模型进行验证时所述第一神经网络模型的正确率大于所述预设阈值、相邻两次迭代训练的损失函数的损失值的差值小于预设差值或使用训练集训练第二神经网络模型后的epoch次数等于预设次数;其中,所述第一神经网络模型是使用所述训练集对所述第二神经网络模型训练后得到的模型。
6.根据权利要求1-5任一项所述的方法,其特征在于,所述方法还包括:
根据所述第一网络层的量化阈值、量化位宽确定量化参数,所述量化参数包括收缩因子和零点,所述量化位宽为量化后得到的数值用二进制数表示时的位数;
根据所述收缩因子和所述零点确定所述第一网络层对应的量化算子,其中,所述第一网络层的量化算子用于在使用所述第一神经网络模型进行推理时对所述第一网络层的激活函数输出的激活值进行量化。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
将测试数据输入所述第一神经网络模型;
获取所述第一神经网络模型处理所述测试数据时所述第一网络层输出的激活值;
通过所述量化算子对所述第一网络层输出的激活值进行量化,得到所述第一网络层对应的量化后的量化值,将所述第一网络层对应的量化后的量化值输入第二网络层,所述第二网络层是所述第一网络层的下一个网络层。
8.根据权利要求3所述的方法,其特征在于,根据所述分布参数和所述区间数量确定所述第一网络层的量化阈值,包括:
获取k组预设量化阈值,其中,k为正整数;
分别根据所述k组预设量化阈值中的各组预设量化阈值、所述分布参数、所述区间数量和量化位宽,确定所述分布参数对应的k组量化值,其中,一组预设量化阈值对应一组量化值,所述量化位宽为量化后得到的数值用二进制数表示时的位数;
分别计算所述k组量化值和所述第一网络层的分布参数之间的相对熵,得到k个相对熵,将所述k个相对熵中最小值对应的预设量化阈值确定为所述第一网络层的量化阈值。
9.根据权利要求8所述的方法,其特征在于,所述分别根据所述k组预设量化阈值中的各组预设量化阈值、所述分布参数、所述区间数量和量化位宽,确定所述分布参数对应的k组激活值,包括:
根据所述各组预设量化阈值和所述量化位宽,分别确定所述各组预设量化阈值对应的收缩因子和零点;
根据所述第一网络层的分布参数、所述各组预设量化阈值对应的收缩因子和零点,确定基于所述各组预设量化阈值得到的所述分布参数的k组激活值。
10.一种量化装置,其特征在于,所述装置包括:
训练模块,用于将验证集中的验证数据输入第一神经网络模型,保存第一网络层的激活函数输出的激活值,所述验证集包括多个验证数据,所述第一网络层是所述第一神经网络模型中的任一网络层;
量化模块,用于根据所述激活值确定所述第一网络层的量化阈值,其中,所述第一网络层的量化阈值用于在使用所述第一神经网络模型进行推理时对所述第一网络层的激活函数输出的激活值进行量化。
11.根据权利要求10所述的装置,其特征在于,所述训练模块保存第一网络层的激活函数输出的激活值,具体包括:
获取用户设置的区间数量,所述区间数量指示将所述激活值划分为多个区间;
根据所述激活值和所述区间数量确定所述激活值对应的分布参数,所述分布参数包括所述激活值中的最大值、最小值以及各个区间包括的激活值的数量;
保存所述激活值对应的分布参数和所述区间数量。
12.根据权利要求11所述的装置,其特征在于,所述量化模块具体用于:
获取所述激活值对应的分布参数和所述区间数量;
根据所述分布参数和所述区间数量确定所述第一网络层的量化阈值。
13.根据权利要求10-12任一项所述的装置,其特征在于,所述第一神经网络模型是使用训练集对初始神经网络模型进行m次epoch训练后,得到的n个神经网络模型中正确率大于预设阈值的模型,其中,m大于或等于n。
14.根据权利要求13所述的装置,其特征在于,所述训练模块具体用于:
在使用所述训练集训练所述初始神经网络模型,满足预设条件的情况下,保存所述第一网络层的激活函数输出的激活值;
所述预设条件包括:使用所述验证集对所述第一神经网络模型进行验证时所述第一神经网络模型的正确率大于所述预设阈值、相邻两次迭代训练的损失函数的损失值的差值小于预设差值或使用训练集训练第二神经网络模型后的epoch次数等于预设次数;其中,所述第一神经网络模型是使用所述训练集对所述第二神经网络模型训练后得到的模型。
15.根据权利要求10-14任一项所述的装置,其特征在于,所述量化模块还用于:
根据所述量化阈值、量化位宽确定量化参数,所述量化参数包括收缩因子和零点,所述量化位宽为量化后得到的数值用二进制数表示时的位数;
根据所述收缩因子和所述零点确定所述第一网络层对应的量化算子,其中,所述第一网络层的量化算子用于在使用所述第一神经网络模型进行推理时对第一网络层的激活函数输出的激活值进行量化。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括推理模块,所述推理模块用于:
将测试数据输入所述第一神经网络模型;
获取所述第一神经网络模型处理所述测试数据时所述第一网络层输出的激活值;
通过所述量化算子对所述第一网络层输出的激活值进行量化,得到所述第一网络层对应的量化后的量化值,将所述第一网络层对应的量化后的量化值输入第二网络层,所述第二网络层是所述第一网络层的下一个网络层。
17.根据权利要求12所述的装置,其特征在于,所述量化模块具体用于:
获取k组预设量化阈值;
分别根据所述k组预设量化阈值中的各组预设量化阈值、所述分布参数、所述区间数量和量化位宽,确定所述分布参数对应的k组量化值,其中,一组预设量化阈值对应一组量化值,所述量化位宽为量化后得到的数值用二进制数表示时的位数;
分别计算所述k组量化值和所述第一网络层的分布参数之间的相对熵,得到k个相对熵,将所述k个相对熵中最小值对应的预设量化阈值确定为所述第一网络层的量化阈值。
18.根据权利要求17所述的装置,其特征在于,所述量化模块具体用于:
根据所述各组预设量化阈值和所述量化位宽,分别确定所述各组预设量化阈值对应的收缩因子和零点;
根据所述第一网络层的分布参数、所述各组预设量化阈值对应的收缩因子和零点,确定基于所述各组预设量化阈值得到的所述分布参数的k组激活值。
19.一种计算设备,其特征包括,包括处理器和存储器,所述存储器用于存储指令,所述处理器用于执行所述指令,当所述处理器执行所述指令时,所述***执行如权利要求1至9任一项所述的方法。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时,所述处理器执行如权利要求1至9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111502625.4A CN116258190A (zh) | 2021-12-09 | 2021-12-09 | 一种量化方法、装置及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111502625.4A CN116258190A (zh) | 2021-12-09 | 2021-12-09 | 一种量化方法、装置及相关设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116258190A true CN116258190A (zh) | 2023-06-13 |
Family
ID=86679782
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111502625.4A Pending CN116258190A (zh) | 2021-12-09 | 2021-12-09 | 一种量化方法、装置及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116258190A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116992032A (zh) * | 2023-09-25 | 2023-11-03 | 之江实验室 | 基于模型自动量化的文本分类方法、***和存储介质 |
-
2021
- 2021-12-09 CN CN202111502625.4A patent/CN116258190A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116992032A (zh) * | 2023-09-25 | 2023-11-03 | 之江实验室 | 基于模型自动量化的文本分类方法、***和存储介质 |
CN116992032B (zh) * | 2023-09-25 | 2024-01-09 | 之江实验室 | 基于模型自动量化的文本分类方法、***和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112990211B (zh) | 一种神经网络的训练方法、图像处理方法以及装置 | |
CN112418392A (zh) | 一种神经网络构建方法以及装置 | |
CN111507378A (zh) | 训练图像处理模型的方法和装置 | |
CN111797893A (zh) | 一种神经网络的训练方法、图像分类***及相关设备 | |
CN112651511A (zh) | 一种训练模型的方法、数据处理的方法以及装置 | |
CN111797983A (zh) | 一种神经网络构建方法以及装置 | |
CN112883149B (zh) | 一种自然语言处理方法以及装置 | |
CN111368993A (zh) | 一种数据处理方法及相关设备 | |
CN113570029A (zh) | 获取神经网络模型的方法、图像处理方法及装置 | |
CN114255361A (zh) | 神经网络模型的训练方法、图像处理方法及装置 | |
CN111428854A (zh) | 一种结构搜索方法及结构搜索装置 | |
CN111797970B (zh) | 训练神经网络的方法和装置 | |
US20240135174A1 (en) | Data processing method, and neural network model training method and apparatus | |
CN113240079A (zh) | 一种模型训练方法及装置 | |
WO2023274052A1 (zh) | 一种图像分类方法及其相关设备 | |
CN113191241A (zh) | 一种模型训练方法及相关设备 | |
CN111738403A (zh) | 一种神经网络的优化方法及相关设备 | |
WO2023125628A1 (zh) | 神经网络模型优化方法、装置及计算设备 | |
CN114492723A (zh) | 神经网络模型的训练方法、图像处理方法及装置 | |
CN113128285A (zh) | 一种处理视频的方法及装置 | |
CN111950702A (zh) | 一种神经网络结构确定方法及其装置 | |
CN112446462B (zh) | 目标神经网络模型的生成方法和装置 | |
CN115018039A (zh) | 一种神经网络蒸馏方法、目标检测方法以及装置 | |
CN115238909A (zh) | 一种基于联邦学习的数据价值评估方法及其相关设备 | |
CN114861859A (zh) | 神经网络模型的训练方法、数据处理方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication |