[go: up one dir, main page]
More Web Proxy on the site http://driver.im/

CN116227549A - 一种模型量化方法及其装置 - Google Patents

一种模型量化方法及其装置 Download PDF

Info

Publication number
CN116227549A
CN116227549A CN202310129458.6A CN202310129458A CN116227549A CN 116227549 A CN116227549 A CN 116227549A CN 202310129458 A CN202310129458 A CN 202310129458A CN 116227549 A CN116227549 A CN 116227549A
Authority
CN
China
Prior art keywords
output
numerical
neural network
interval
boundary threshold
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
Application number
CN202310129458.6A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202310129458.6A priority Critical patent/CN116227549A/zh
Publication of CN116227549A publication Critical patent/CN116227549A/zh
Priority to PCT/CN2024/074846 priority patent/WO2024160219A1/zh
Pending legal-status Critical Current

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/08Learning methods
    • G06N3/084Backpropagation, e.g. using gradient descent
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/30Information retrieval; Database structures therefor; File system structures therefor of unstructured textual data
    • G06F16/35Clustering; Classification
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T3/00Geometric image transformations in the plane of the image
    • G06T3/04Context-preserving transformations, e.g. by using an importance map
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/764Arrangements for image or video recognition or understanding using pattern recognition or machine learning using classification, e.g. of video objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V10/00Arrangements for image or video recognition or understanding
    • G06V10/70Arrangements for image or video recognition or understanding using pattern recognition or machine learning
    • G06V10/82Arrangements for image or video recognition or understanding using pattern recognition or machine learning using neural networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/10Terrestrial scenes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V20/00Scenes; Scene-specific elements
    • G06V20/50Context or environment of the image
    • G06V20/56Context or environment of the image exterior to a vehicle by using sensors mounted on the vehicle
    • G06V20/58Recognition of moving objects or obstacles, e.g. vehicles or pedestrians; Recognition of traffic objects, e.g. traffic signs, traffic lights or roads
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06VIMAGE OR VIDEO RECOGNITION OR UNDERSTANDING
    • G06V40/00Recognition of biometric, human-related or animal-related patterns in image or video data
    • G06V40/10Human or animal bodies, e.g. vehicle occupants or pedestrians; Body parts, e.g. hands

Landscapes

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

Abstract

本申请公开了一种模型量化方法,涉及人工智能领域,所述方法包括:获取神经网络的第一中间层输出的第一特征图;根据第一特征图中多个第一特征点的数值分布,确定满足预设条件的第一截断区间;所述第一截断区间包括第一上边界阈值和第一下边界阈值,所述预设条件包括:在所述数值截断区间内的特征点的数值分布密度大于在所述数值截断区间外的特征点的数值分布密度。本申请使用上端截断阈值和下端截断阈值来表示量化的参数设置,而非之前方案中常见的零点位置和范围大小,先对浮点模型使用基于密度的双端截,去除长尾分布中离群点,可以适应非对称的分布趋势,进而提升量化后的模型精度。

Description

一种模型量化方法及其装置
技术领域
本申请涉及人工智能领域,尤其涉及一种模型量化方法及其装置。
背景技术
神经网络模型(尤其是实现视觉相关任务的模型)在实际运行的时候需要大量的内存空间和计算资源,这使得将它们部署到移动设备上非常困难。
为了提升运行效率,通过各种不同的方法用于压缩模型的尺寸,如网络剪枝、模型量化、轻量级架构设计和知识蒸馏。在这些方法中,模型量化是对现有人工智能加速芯片相对更优的技术,因为这些芯片通常专注于低精度的计算,从而可以显著降低模型推理的时延、内存占用以及功耗。然而,现有技术中通过模型量化方法得到的压缩后的模型的精度降低。
发明内容
本申请提供了一种模型量化方法以及相关装置,可以提高网络的精度。
第一方面,本申请实施例提供了一种模型量化方法,所述方法包括:获取第一特征图,所述第一特征图为神经网络的第一中间层输出的特征图,所述第一特征图包括多个第一特征点,所述神经网络为浮点模型;根据所述多个第一特征点的数值分布,确定满足预设条件的第一截断区间;所述第一截断区间包括第一上边界阈值和第一下边界阈值,其中,在对所述第一中间层输出的特征图进行量化时,小于所述第一下边界阈值的第一特征点的数值被量化为所述第一下边界阈值,大于所述第一上边界阈值的第一特征点的数值被量化为所述第一上边界阈值;所述预设条件包括:在所述数值截断区间内的特征点的数值分布密度大于在所述数值截断区间外的特征点的数值分布密度。本申请使用上端截断阈值和下端截断阈值来表示量化的参数设置,而非之前方案中常见的零点位置和范围大小,先对浮点模型使用基于密度的双端截,去除长尾分布中离群点,可以适应非对称的分布趋势,进而提升量化后的模型精度。
在一种可能的实现中,所述预设条件还包括:在所述数值截断区间内的特征点的数量和特征图包括的特征点的数量占比大于第一阈值。
在一种可能的实现中,所述根据所述多个第一特征点的数值分布,确定满足预设条件的第一截断区间,包括:将所述多个第一特征点的数值范围按照数值大小划分为多个数值区间;从所述多个数值区间的两侧向内部依次确定数值分布密度较小的数值区间为边缘数值区间,直至所述多个数值区间中除所述边缘数值区间之外的其他数值区间内的第一特征点的数量和所述多个第一特征点的数量占比小于第二阈值,确定所述其他数值区间为所述第一截断区间。
模型中间层输出的特征图的分布通常显示为中间密集而两端稀疏,因此密集区域与原始边界相离较远,这对模型量化非常不友好,特别是对低比特。因此,本申请实施例提出了基于密度的双端截断来切断特征图的离群值,帮助将分布缩小到有效范围。通过不断比较上下两端的分布密度,在考虑特征图长尾和非对称分布的基础上,将浮点参数中的离群值去除,得到具有相对粗糙上下边界的浮点模型。
在一种可能的实现中,所述第一特征图为神经网络在处理第一批batch训练样本时第一中间层输出的特征图;所述方法还包括:获取第二特征图,所述第二特征图为所述神经网络在处理第二批batch训练样本时所述第一中间层输出的特征图,所述第二特征图包括多个第二特征点;根据所述多个第二特征点的数值分布,确定满足所述预设条件的第二截断区间;所述第二截断区间包括第二上边界阈值和第二下边界阈值;根据所述第二截断区间,对所述第一截断区间进行更新,得到第三截断区间。可以针对于神经网络中的不同中间层的输出特征图基于特征图自身的数值分布来确定不同的截断区间。
在一种可能的实现中,所述根据所述第二截断区间,对所述第一截断区间进行更新,包括:根据所述第二截断区间,通过指数移动平均对所述第一截断区间进行更新。
可以进行像素感知校准,在第一步得到的浮点参数基础上对模型进行量化,然后利用全精度模型监督低比特量化模型,在小的校准数据集上对量化参数进一步微调,使得其在微调过程中进一步适应高度动态的特征图分布变化。
在一种可能的实现中,所述方法还包括:获取第三特征图,所述第三特征图为神经网络的第二中间层输出的特征图,所述第三特征图包括多个第三特征点,所述神经网络为浮点模型;根据所述多个第三特征点的数值分布,确定满足所述预设条件的第三截断区间;所述第三截断区间包括第三上边界阈值和第三下边界阈值,其中,在对所述第二中间层输出的特征图进行量化时,小于所述第三下边界阈值的第三特征点的数值被量化为所述第三下边界阈值,大于所述第三上边界阈值的第三特征点的数值被量化为所述第三上边界阈值。
在一种可能的实现中,所述第一截断区间用于对所述神经网络进行量化,得到量化后的神经网络;所述方法还包括:获取第一输出和第二输出,所述第一输出为所述神经网络在处理训练样本时中间层或者输出层的输出,所述第二输出为所述量化后的神经网络在处理所述训练样本时中间层或者输出层的输出;根据所述第一输出和所述第二输出,确定损失,并根据所述损失对所述第一截断区间进行更新。对模型使用像素感知校准的策略,对量化参数进行适量微调,使得量化模型能更适应高动态的特征变化。
在一种可能的实现中,所述训练样本为无标签的数据。
本申请仅需少量无标签的校准数据,无需训练,在数分钟即可获得量化模型。相比量化感知训练,本申请实施例无需完整的训练数据集和高昂的训练服务器资源,大大降低了模型量化过程所需的成本,并且能够在短时间内获得量化模型的结构和参数,大大加快了模型上线部署的效率。
在一种可能的实现中,所述第一输出和所述第二输出为中间层输出的特征图;所述根据所述第一输出和所述第二输出,确定损失,包括:对所述第一输出和所述第二输出分别计算L2的范数,得到处理后的第一输出和处理后的第二输出;根据所述处理后的第一输出和处理后的第二输出之间的均方误差,确定损失。
在一种可能的实现中,所述根据所述损失对所述第一截断区间进行更新,包括:
在保持针对于所述神经网络的权重参数对应的截断区间不变的情况下,根据所述损失对所述第一截断区间进行更新。
第二方面,本申请提供了一种模型量化装置,所述装置包括:
获取模块,用于获取第一特征图,所述第一特征图为神经网络的第一中间层输出的特征图,所述第一特征图包括多个第一特征点,所述神经网络为浮点模型;
处理模块,用于根据所述多个第一特征点的数值分布,确定满足预设条件的第一截断区间;所述第一截断区间包括第一上边界阈值和第一下边界阈值,其中,在对所述第一中间层输出的特征图进行量化时,小于所述第一下边界阈值的第一特征点的数值被量化为所述第一下边界阈值,大于所述第一上边界阈值的第一特征点的数值被量化为所述第一上边界阈值;所述预设条件包括:在所述数值截断区间内的特征点的数值分布密度大于在所述数值截断区间外的特征点的数值分布密度。
在一种可能的实现中,所述预设条件还包括:
在所述数值截断区间内的特征点的数量和特征图包括的特征点的数量占比大于第一阈值。
在一种可能的实现中,所述处理模块,具体用于:
将所述多个第一特征点的数值范围按照数值大小划分为多个数值区间;
从所述多个数值区间的两侧向内部依次确定数值分布密度较小的数值区间为边缘数值区间,直至所述多个数值区间中除所述边缘数值区间之外的其他数值区间内的第一特征点的数量和所述多个第一特征点的数量占比小于第二阈值,确定所述其他数值区间为所述第一截断区间。
在一种可能的实现中,所述第一特征图为神经网络在处理第一批batch训练样本时第一中间层输出的特征图;
所述获取模块,还用于:
获取第二特征图,所述第二特征图为所述神经网络在处理第二批batch训练样本时所述第一中间层输出的特征图,所述第二特征图包括多个第二特征点;
所述处理模块,还用于:
根据所述多个第二特征点的数值分布,确定满足所述预设条件的第二截断区间;所述第二截断区间包括第二上边界阈值和第二下边界阈值;
根据所述第二截断区间,对所述第一截断区间进行更新,得到第三截断区间。
在一种可能的实现中,所述处理模块,具体用于:
根据所述第二截断区间,通过指数移动平均对所述第一截断区间进行更新。
在一种可能的实现中,所述获取模块,还用于:
获取第三特征图,所述第三特征图为神经网络的第二中间层输出的特征图,所述第三特征图包括多个第三特征点,所述神经网络为浮点模型;
所述处理模块,还用于:
根据所述多个第三特征点的数值分布,确定满足所述预设条件的第三截断区间;所述第三截断区间包括第三上边界阈值和第三下边界阈值,其中,在对所述第二中间层输出的特征图进行量化时,小于所述第三下边界阈值的第三特征点的数值被量化为所述第三下边界阈值,大于所述第三上边界阈值的第三特征点的数值被量化为所述第三上边界阈值。
在一种可能的实现中,所述第一截断区间用于对所述神经网络进行量化,得到量化后的神经网络;所述获取模块,还用于:
所述处理模块,还用于:
获取第一输出和第二输出,所述第一输出为所述神经网络在处理训练样本时中间层或者输出层的输出,所述第二输出为所述量化后的神经网络在处理所述训练样本时中间层或者输出层的输出;
根据所述第一输出和所述第二输出,确定损失,并根据所述损失对所述第一截断区间进行更新。
在一种可能的实现中,所述训练样本为无标签的数据。
在一种可能的实现中,所述处理模块,具体用于:
对所述第一输出和所述第二输出分别计算L2的范数,得到处理后的第一输出和处理后的第二输出;
根据所述处理后的第一输出和处理后的第二输出之间的均方误差,确定损失。
在一种可能的实现中,所述处理模块,具体用于:
在保持针对于所述神经网络的权重参数对应的截断区间不变的情况下,根据所述损失对所述第一截断区间进行更新。
第三方面,本申请实施例提供了一种数据处理装置,可以包括存储器、处理器以及总线系统,其中,存储器用于存储程序,处理器用于执行存储器中的程序,以执行如上述第一方面及其任一可选的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面及其任一可选的方法。
第五方面,本申请实施例提供了一种计算机程序,当其在计算机上运行时,使得计算机执行上述第一方面及其任一可选的方法。
第六方面,本申请提供了一种芯片系统,该芯片系统包括处理器,用于支持执行设备或训练设备实现上述方面中所涉及的功能,例如,发送或处理上述方法中所涉及的数据;或,信息。在一种可能的设计中,所述芯片系统还包括存储器,所述存储器,用于保存执行设备或训练设备必要的程序指令和数据。该芯片系统,可以由芯片构成,也可以包括芯片和其他分立器件。
附图说明
图1为人工智能主体框架的一种结构示意图;
图2为本申请的应用系统框架示意;
图3a为本申请的一种应用场景示意;
图3b为本申请的一种应用场景示意;
图4为本申请的一种应用场景示意;
图5为本申请的一种应用场景示意;
图6为本申请的一种芯片架构示意;
图7为本申请实施例提供的一种模型量化方法的流程示意;
图8A为一种数值分布的示意;
图8B为本申请实施例提供的一种模型量化方法的流程示意;
图9为本申请实施例提供的一种模型量化方法的流程示意;
图10为本申请实施例提供的一种模型量化方法的流程示意;
图11为本申请实施例提供的一种模型量化方法的效果示意;
图12为本申请实施例提供的模型量化装置的一种结构示意图;
图13为本申请实施例提供的执行设备的一种结构示意图;
图14为本申请实施例提供的训练设备一种结构示意图;
图15为本申请实施例提供的芯片的一种结构示意图。
具体实施方式
下面结合本申请实施例中的附图对本申请实施例进行描述。本申请的实施方式部分使用的术语仅用于对本申请的具体实施例进行解释,而非旨在限定本申请。
下面结合附图,对本申请的实施例进行描述。本领域普通技术人员可知,随着技术的发展和新场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。
本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的术语在适当情况下可以互换,这仅仅是描述本申请的实施例中对相同属性的对象在描述时所采用的区分方式。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,以便包含一系列单元的过程、方法、系统、产品或设备不必限于那些单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它单元。
首先对人工智能系统总体工作流程进行描述,请参见图1,图1示出的为人工智能主体框架的一种结构示意图,下面从“智能信息链”(水平轴)和“IT价值链”(垂直轴)两个维度对上述人工智能主题框架进行阐述。其中,“智能信息链”反映从数据的获取到处理的一列过程。举例来说,可以是智能信息感知、智能信息表示与形成、智能推理、智能决策、智能执行与输出的一般过程。在这个过程中,数据经历了“数据—信息—知识—智慧”的凝练过程。“IT价值链”从人智能的底层基础设施、信息(提供和处理技术实现)到系统的产业生态过程,反映人工智能为信息技术产业带来的价值。
(1)基础设施
基础设施为人工智能系统提供计算能力支持,实现与外部世界的沟通,并通过基础平台实现支撑。通过传感器与外部沟通;计算能力由智能芯片(CPU、NPU、GPU、ASIC、FPGA等硬件加速芯片)提供;基础平台包括分布式计算框架及网络等相关的平台保障和支持,可以包括云存储和计算、互联互通网络等。举例来说,传感器和外部沟通获取数据,这些数据提供给基础平台提供的分布式计算系统中的智能芯片进行计算。
(2)数据
基础设施的上一层的数据用于表示人工智能领域的数据来源。数据涉及到图形、图像、语音、文本,还涉及到传统设备的物联网数据,包括已有系统的业务数据以及力、位移、液位、温度、湿度等感知数据。
(3)数据处理
数据处理通常包括数据训练,机器学习,深度学习,搜索,推理,决策等方式。
其中,机器学习和深度学习可以对数据进行符号化和形式化的智能信息建模、抽取、预处理、训练等。
推理是指在计算机或智能系统中,模拟人类的智能推理方式,依据推理控制策略,利用形式化的信息进行机器思维和求解问题的过程,典型的功能是搜索与匹配。
决策是指智能信息经过推理后进行决策的过程,通常提供分类、排序、预测等功能。
(4)通用能力
对数据经过上面提到的数据处理后,进一步基于数据处理的结果可以形成一些通用的能力,比如可以是算法或者一个通用系统,例如,翻译,文本的分析,计算机视觉的处理,语音识别,图像的识别等等。
(5)智能产品及行业应用
智能产品及行业应用指人工智能系统在各领域的产品和应用,是对人工智能整体解决方案的封装,将智能信息决策产品化、实现落地应用,其应用领域主要包括:智能终端、智能交通、智能医疗、自动驾驶、智慧城市等。
首先介绍本申请的应用场景,本申请可以但不限于云侧服务器提供的云服务(模型量化等压缩服务)等。
在一种可能的实现中,服务器可以通过应用程序编程接口(applicationprogramminginterface,API)为端侧提供模型量化等神经网络压缩服务。
其中,终端设备可以通过云端提供的API,将相关参数(例如压缩需求等)发送至服务器,服务器可以基于接收到的参数,得到处理结果,并将处理结果(例如压缩后的神经网络模型)返回至至终端。
此外,模型压缩的处理流程还可以在端侧执行,这里并不限定。
应理解,本申请实施例中的模型量化方法涉及AI相关的运算,下面结合图2对本申请实施例提供的系统架构进行详细的介绍。
图2为本申请实施例提供的系统架构示意图。如图2所示,系统架构500包括执行设备510、训练设备520、数据库530、客户设备540、数据存储系统550以及数据采集系统560。
执行设备510包括计算模块511、I/O接口512、预处理模块513和预处理模块514。计算模块511中可以包括目标模型/规则501,预处理模块513和预处理模块514是可选的。
其中,训练设备520可以为执行模型量化步骤的设备。
数据采集设备560用于采集训练样本。训练样本可以为图像、音视频、文本等数据。在采集到训练样本之后,数据采集设备560将这些训练样本存入数据库530。
训练设备520可以基于数据库530中维护训练样本,对待压缩的神经网络(例如本申请实施例中的神经网络等),以得到目标模型/规则501。
需要说明的是,在实际应用中,数据库530中维护的训练样本不一定都来自于数据采集设备560的采集,也有可能是从其他设备接收得到的。另外需要说明的是,训练设备520也不一定完全基于数据库530维护的训练样本进行目标模型/规则501的压缩,也有可能从云端或其他地方获取训练样本进行模型压缩,上述描述不应该作为对本申请实施例的限定。
根据训练设备520得到的目标模型/规则501可以应用于不同的系统或设备中,如应用于图2所示的执行设备510,该执行设备510可以是终端,如手机终端,平板电脑,笔记本电脑,增强现实(augmented reality,AR)/虚拟现实(virtual reality,VR)设备,车载终端等,还可以是服务器等。
具体的,训练设备520可以将压缩后的模型传递至执行设备510。
在图2中,执行设备510配置输入/输出(input/output,I/O)接口512,用于与外部设备进行数据交互,用户可以通过客户设备540向I/O接口512输入数据。
预处理模块513和预处理模块514用于根据I/O接口512接收到的输入数据进行预处理。应理解,可以没有预处理模块513和预处理模块514或者只有的一个预处理模块。当不存在预处理模块513和预处理模块514时,可以直接采用计算模块511对输入数据进行处理。
在执行设备510对输入数据进行预处理,或者在执行设备510的计算模块511执行计算等相关的处理过程中,执行设备510可以调用数据存储系统550中的数据、代码等以用于相应的处理,也可以将相应处理得到的数据、指令等存入数据存储系统550中。
最后,I/O接口512将处理结果(例如基于本申请实施例提供的方法得到的压缩后的模型处理数据后得到的处理结果)提供给客户设备540,从而提供给用户。
在图2所示情况下,用户可以手动给定输入数据,该“手动给定输入数据”可以通过I/O接口512提供的界面进行操作。另一种情况下,客户设备540可以自动地向I/O接口512发送输入数据,如果要求客户设备540自动发送输入数据需要获得用户的授权,则用户可以在客户设备540中设置相应权限。用户可以在客户设备540查看执行设备510输出的结果,具体的呈现形式可以是显示、声音、动作等具体方式。客户设备540也可以作为数据采集端,采集如图所示输入I/O接口512的输入数据及输出I/O接口512的输出结果作为新的样本数据,并存入数据库530。当然,也可以不经过客户设备540进行采集,而是由I/O接口512直接将如图所示输入I/O接口512的输入数据及输出I/O接口512的输出结果,作为新的样本数据存入数据库530。
值得注意的是,图2仅是本申请实施例提供的一种系统架构的示意图,图中所示设备、器件、模块等之间的位置关系不构成任何限制,例如,在图2中,数据存储系统550相对执行设备510是外部存储器,在其它情况下,也可以将数据存储系统550置于执行设备510中。应理解,上述执行设备510可以部署于客户设备540中。
从模型的推理侧来说:
本申请实施例中,上述执行设备520的计算模块511可以获取到数据存储系统550中存储的代码来进行模型的推理。
本申请实施例中,执行设备520的计算模块511可以包括硬件电路(如专用集成电路(application specific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gatearray,FPGA)、通用处理器、数字信号处理器(digital signalprocessing,DSP)、微处理器或微控制器等等)、或这些硬件电路的组合,例如,训练设备520可以为具有执行指令功能的硬件系统,如CPU、DSP等,或者为不具有执行指令功能的硬件系统,如ASIC、FPGA等,或者为上述不具有执行指令功能的硬件系统以及具有执行指令功能的硬件系统的组合。
具体的,执行设备520的计算模块511可以为具有执行指令功能的硬件系统,本申请实施例提供的连接关系预测方法可以为存储在存储器中的软件代码,执行设备520的计算模块511可以从存储器中获取到软件代码,并执行获取到的软件代码来进行模型的推理。
应理解,执行设备520的计算模块511可以为不具有执行指令功能的硬件系统以及具有执行指令功能的硬件系统的组合,模型推理的部分步骤还可以通过执行设备520的计算模块511中不具有执行指令功能的硬件系统来实现,这里并不限定。
从模型的训练侧来说:
本申请实施例中,上述训练设备520可以获取到存储器(图2中未示出,可以集成于训练设备520或者与训练设备520分离部署)中存储的代码来实现本申请实施例中和模型压缩相关的步骤。
本申请实施例中,训练设备520可以包括硬件电路(如专用集成电路(applicationspecific integrated circuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)、通用处理器、数字信号处理器(digital signalprocessing,DSP)、微处理器或微控制器等等)、或这些硬件电路的组合,例如,训练设备520可以为具有执行指令功能的硬件系统,如CPU、DSP等,或者为不具有执行指令功能的硬件系统,如ASIC、FPGA等,或者为上述不具有执行指令功能的硬件系统以及具有执行指令功能的硬件系统的组合。
应理解,训练设备520可以为不具有执行指令功能的硬件系统以及具有执行指令功能的硬件系统的组合,本申请实施例提供的中和模型压缩相关的部分步骤还可以通过训练设备520中不具有执行指令功能的硬件系统来实现,这里并不限定。
本申请实施例中压缩的神经网络可以应用于视觉上的感知任务、语音语义相关的自然语言合成任务、音视频处理任务等需要神经网络实现的领域中。
示例性的,本申请实施例中压缩的神经网络可以应用在驾驶辅助、自动驾驶、手机终端等需要完成多种感知任务的领域。本申请的应用系统框架的示意可以如图3a和图3b所示,视频经过抽帧得到单张图片,该图片送入到本申请实施例提供的神经网络中,得到该图片中感兴趣物体的2D、3D、Mask(掩膜)、关键点等信息。这些检测结果输出到后处理模块进行处理,比如在自动驾驶系统中送入规划控制单元进行决策、在手机终端中送入美颜算法进行处理得到美颜后的图片。下面分别对ADAS/ADS视觉感知系统和手机美颜两种应用场景做简单的介绍。
应用场景1:ADAS/ADS视觉感知系统
如图4所示,在ADAS和ADS中,需要实时进行多类型的2D目标检测,包括:动态障碍物(行人(Pedestrian)、骑行者(Cyclist)、三轮车(Tricycle)、轿车(Car)、卡车(Truck)、公交车(Bus)),静态障碍物(交通锥标(TrafficCone)、交通棍标(TrafficStick)、消防栓(FireHydrant)、摩托车(Motocycle)、自行车(Bicycle)),交通标志(TrafficSign、导向标志(GuideSign)、广告牌(Billboard)、红色交通灯(TrafficLight_Red)/黄色交通灯(TrafficLight_Yellow)/绿色交通灯(TrafficLight_Green)/黑色交通灯(TrafficLight_Black)、路标(RoadSign))。另外,为了准确获取动态障碍物的在3维空间所占的区域,还需要对动态障碍物进行3D估计,输出3D框。为了与激光雷达的数据进行融合,需要获取动态障碍物的Mask,从而把打到动态障碍物上的激光点云筛选出来;为了进行精确的泊车位,需要同时检测出泊车位的4个关键点;为了进行构图定位,需要检测出静态目标的关键点。使用本申请实施例提供的技术方案对应的神经网络,可以完成上述的全部或一部分功能。
例如,本申请实施例提供的技术方案得到的压缩后的模型可以应用于辅助驾驶、高级辅助驾驶中的自适应巡航。
ADAS中的自适应巡航功能需要根据车道前方车辆的位置和速度,自适应地调整自车的速度,从而实现自动巡航而不发生碰撞。当本车车道前方没有其他交通参与者(目标时),自车根据预先设定的速度或者道路限速前进。例如,当本车的感知系统检测到有其他交通参与者进入到本车道的前方,此时自车会根据白车的位置和速度,自动降低本车的速度,避免前车减速发生碰撞。
例如,本申请实施例提供的技术方案得到的压缩后的模型可以应用于自动辅助驾驶中和监控中的目标轨迹预测。
轨迹预测通过相机感知道路场景,并通过目标检测算法获取重要交通参与者在环境中的位置、朝向、尺寸等信息,通过累计多帧检测结果就可以获得各目标的运动速度和方向,从而实现对目标未来运动轨迹的预测,并作为后续自动驾驶车辆决策控制的依据。例如,可以为自动驾驶车辆对周围车辆未来运动方向的预测,例如,可以在监控场景中,通过检测行人的朝向和位置,对其未来运动做出预测,从而提前识别可能出现的人群形为。
在无人车中,对摄像头拍摄到的图片进行快速的检测和定位,识别图片中行人和车辆的位置,对于无人车的运行来说至关重要。由于无人车的运行需要很快的反映速度,检测对于实时性的要求很高。行人车辆检测中用到的物体检测也是基于神经网络完成的,该神经网络中使用了本申请提出的非线性增强的激活函数或者深度重参数化的训练方案,例如将本申请提出的非线性增强的激活函数和深度重参数化的训练方案应用于神经网络(例如浅层神经网络)中,提升其精度,替代原始使用的深度网络,达到更快的检测速度。
应用场景2:手机美颜功能
如图5所示,在手机中,通过本申请实施例提供的方法得到的压缩后的神经网络可以检测出人体的Mask和关键点,可以对人体相应的部位进行放大缩小,比如进行收腰和美臀操作,从而输出美颜的图片。
应用场景3:图像分类场景:
物体识别装置在获取待分类图像后,采用本申请提供的方法得到的压缩后的神经网络可以获取待分类图像中的物体的类别,然后可根据待分类图像中物体的物体的类别对待分类图像进行分类。对于摄影师来说,每天会拍很多照片,有动物的,有人物,有植物的。采用本申请的方法可以快速地将照片按照照片中的内容进行分类,可分成包含动物的照片、包含人物的照片和包含植物的照片。
应用场景4商品分类:
获取商品的图像后,采用本申请提供的方法得到的压缩后的神经网络获取商品的图像中商品的类别,然后根据商品的类别对商品进行分类。对于大型商场或超市中种类繁多的商品,采用本申请的模型量化方法可以完成商品的分类,降低了时间开销和人工成本。
应用场景5:自然语言处理(NLP):
自然语言(natural language)即人类语言,自然语言处理(NLP)就是对人类语言的处理。自然语言处理是以一种智能与高效的方式,对文本数据进行系统化分析、理解与信息提取的过程。通过使用NLP及其组件,我们可以管理非常大块的文本数据,或者执行大量的自动化任务,并且解决各式各样的问题,如自动摘要(automatic summarization),机器翻译(machine translation,MT),命名实体识别(named entity recognition,NER),关系提取(relationextraction,RE),信息抽取(information extraction,IE),情感分析,语音识别(speech recognition),问答系统(question answering)以及主题分割等等。
示例性的,自然语言处理任务可以有以下几类。
序列标注:句子中每一个单词要求模型根据上下文给出一个分类类别。如中文分词、词性标注、命名实体识别、语义角色标注。
分类任务:整个句子输出一个分类值,如文本分类。
句子关系推断:给定两个句子,判断这两个句子是否具备某种名义关系。例如entilment、QA、语义改写、自然语言推断。
生成式任务:输出一段文本,生成另一段文本。如机器翻译、文本摘要、写诗造句、看图说话。
下面示例性的列举一些自然语言处理案例。
分词(word segmentation或word breaker,WB):将连续的自然语言文本,切分成具有语义合理性和完整性的词汇序列,可以解决交叉歧义问题。
命名实体识别(named entity recognition,NER):识别自然语言文本中具有特定意义的实体(人、地、机构、时间、作品等)。
词性标注(part-speech tagging):为自然语言文本中的每个词汇赋予一个词性(名词、动词、形容词等);依存句法分析(dependency parsing):自动分析句子中的句法成分(主语、谓语、宾语、定语、状语和补语等成分),可以解决结构歧义问题。
词向量与语义相似度(word embedding&semantic similarity):对词汇进行向量化表示,并据此实现词汇的语义相似度计算,可以解决词汇语言相似度。
文本语义相似度(text semantic similarity):依托全网海量数据和深度神经网络技术,实现文本间的语义相似度计算的能力,可以解决文本语义相似度问题。
以机器翻译为例,机器翻译研究借由计算机程序将文字或演说从一种自然语言翻译成另一种自然语言。本申请得到的压缩后的神经网络可以实现上述NLP任务。
由于本申请实施例涉及大量神经网络的应用,为了便于理解,下面先对本申请实施例涉及的相关术语及神经网络等相关概念进行介绍。
(1)物体识别,利用图像处理和机器学习、计算机图形学等相关方法,确定图像物体的类别。
(2)神经网络
神经网络可以是由神经单元组成的,神经单元可以是指以xs和截距1为输入的运算单元,该运算单元的输出可以为:
Figure BDA0004089488390000111
其中,s=1、2、……n,n为大于1的自然数,Ws为xs的权重,b为神经单元的偏置。f为神经单元的激活函数(activation functions),用于将非线性特性引入神经网络中,来将神经单元中的输入信号转换为输出信号。该激活函数的输出信号可以作为下一层卷积层的输入。激活函数可以是sigmoid函数。神经网络是将许多个上述单一的神经单元联结在一起形成的网络,即一个神经单元的输出可以是另一个神经单元的输入。每个神经单元的输入可以与前一层的局部接受域相连,来提取局部接受域的特征,局部接受域可以是由若干个神经单元组成的区域。
(3)深度神经网络
深度神经网络(Deep Neural Network,DNN),可以理解为具有很多层隐含层的神经网络,这里的“很多”并没有特别的度量标准,我们常说的多层神经网络和深度神经网络其本质上是同一个东西。从DNN按不同层的位置划分,DNN内部的神经网络可以分为三类:输入层,隐含层,输出层。一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。层与层之间是全连接的,也就是说,第i层的任意一个神经元一定与第i+1层的任意一个神经元相连。虽然DNN看起来很复杂,但是就每一层的工作来说,其实并不复杂,简单来说就是如下线性关系表达式:
Figure BDA0004089488390000121
其中,/>
Figure BDA0004089488390000122
是输入向量,/>
Figure BDA0004089488390000123
是输出向量,/>
Figure BDA0004089488390000124
是偏移向量,W是权重矩阵(也称系数),α()是激活函数。每一层仅仅是对输入向量/>
Figure BDA0004089488390000125
经过如此简单的操作得到输出向量/>
Figure BDA0004089488390000126
由于DNN层数多,则系数W和偏移向量/>
Figure BDA0004089488390000127
的数量也就是很多了。那么,具体的参数在DNN是如何定义的呢?首先我们来看看系数W的定义。以一个三层的DNN为例,如:第二层的第4个神经元到第三层的第2个神经元的线性系数定义为/>
Figure BDA0004089488390000128
上标3代表系数W所在的层数,而下标对应的是输出的第三层索引2和输入的第二层索引4。总结下,第L-1层的第k个神经元到第L层的第j个神经元的系数定义为/>
Figure BDA0004089488390000129
注意,输入层是没有W参数的。在深度神经网络中,更多的隐含层让网络更能够刻画现实世界中的复杂情形。理论上而言,参数越多的模型复杂度越高,“容量”也就越大,也就意味着它能完成更复杂的学习任务。
(4)卷积神经网络(Convosutionas Neuras Network,CNN)是一种带有卷积结构的深度神经网络。卷积神经网络包含了一个由卷积层和子采样层构成的特征抽取器。该特征抽取器可以看作是滤波器,卷积过程可以看作是使用一个可训练的滤波器与一个输入的图像或者卷积特征平面(feature map)做卷积。卷积层是指卷积神经网络中对输入信号进行卷积处理的神经元层。在卷积神经网络的卷积层中,一个神经元可以只与部分邻层神经元连接。一个卷积层中,通常包含若干个特征平面,每个特征平面可以由一些矩形排列的神经单元组成。同一特征平面的神经单元共享权重,这里共享的权重就是卷积核。共享权重可以理解为提取图像信息的方式与位置无关。这其中隐含的原理是:图像的某一部分的统计信息与其他部分是一样的。即意味着在某一部分学习的图像信息也能用在另一部分上。所以对于图像上的所有位置,我们都能使用同样的学习得到的图像信息。在同一卷积层中,可以使用多个卷积核来提取不同的图像信息,一般地,卷积核数量越多,卷积操作反映的图像信息越丰富。
卷积核可以以随机大小的矩阵的形式初始化,在卷积神经网络的训练过程中卷积核可以通过学习得到合理的权重。另外,共享权重带来的直接好处是减少卷积神经网络各层之间的连接,同时又降低了过拟合的风险。
(5)反向传播算法
卷积神经网络可以采用误差反向传播(back propagation,BP)算法在训练过程中修正初始的超分辨率模型中参数的大小,使得超分辨率模型的重建误差损失越来越小。具体地,前向传递输入信号直至输出会产生误差损失,通过反向传播误差损失信息来更新初始的超分辨率模型中参数,从而使误差损失收敛。反向传播算法是以误差损失为主导的反向传播运动,旨在得到最优的超分辨率模型的参数,例如权重矩阵。
(6)损失函数
在训练深度神经网络的过程中,因为希望深度神经网络的输出尽可能的接近真正想要预测的值,所以可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重向量(当然,在第一次更新之前通常会有初始化的过程,即为深度神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重向量让它预测低一些,不断地调整,直到深度神经网络能够预测出真正想要的目标值或与真正想要的目标值非常接近的值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么深度神经网络的训练就变成了尽可能缩小这个loss的过程。
(7)模型量化:
人工智能的模型加速领域的一个术语,指用低于32比特的位宽来表示神经网络中的权重数据和特征图数据的压缩技术。压缩的比特位宽越低,实际部署时能节省的内存空间、延时和功耗越多。模型量化通常分为后训练量化(PTQ)和量化感知训练(QAT)两种类型,前者仅需要少量无标签的校准数据集即可对预训练好的浮点模型完成量化的过程,常用于较高比特位宽的压缩,而后者则需要完整的数据集进行训练,在训练过程中模拟量化操作,使得量化模型能够进一步收敛到最优点,常用于量化模型出现较大损失后的精度恢复过程。
(8)峰值信噪比(Peak signal-to-noise ratio,PSNR):
一个表示信号最大可能功率和影响它的表示精度的破坏性噪声功率的比值的工程术语。峰值信噪比经常用作图像处理等领域中信号重建质量的测量方法,通常简单地通过均方误差进行定义。一般而言,PSNR越高,表征与真值的差距越小。
图6为本申请实施例提供的一种芯片的硬件结构,该芯片包括神经网络处理器NPU50。该芯片可以被设置在如图2所示的执行设备510中,用以完成计算模块511的计算工作。该芯片也可以被设置在如图2所示的训练设备520中,用以完成训练设备520的训练工作并输出目标模型/规则。
神经网络处理器NPU 50,NPU作为协处理器挂载到主中央处理器(centralprocessing unit,CPU)(host CPU)上,由主CPU分配任务。NPU的核心部分为运算电路503,控制器504控制运算电路503提取存储器(权重存储器或输入存储器)中的数据并进行运算。
在一些实现中,运算电路503内部包括多个处理单元(process engine,PE)。在一些实现中,运算电路503是二维脉动阵列。运算电路503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路503是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器502中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器501中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)508中。
向量计算单元507可以对运算电路的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。例如,向量计算单元507可以用于神经网络中非卷积/非FC层的网络计算,如池化(pooling),批归一化(batch normalization),局部响应归一化(local response normalization)等。
在一些实现种,向量计算单元能507将经处理的输出的向量存储到统一缓存器506。例如,向量计算单元507可以将非线性函数应用到运算电路503的输出,例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元507生成归一化的值、合并值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路503的激活输入,例如用于在神经网络中的后续层中的使用。
统一存储器506用于存放输入数据以及输出数据。
权重数据直接通过存储单元访问控制器505(directmemory accesscontroller,DMAC)将外部存储器中的输入数据搬运到输入存储器501和/或统一存储器506、将外部存储器中的权重数据存入权重存储器502,以及将统一存储器506中的数据存入外部存储器。
总线接口单元(bus interface unit,BIU)510,用于通过总线实现主CPU、DMAC和取指存储器509之间进行交互。
与控制器504连接的取指存储器(instruction fetch buffer)509,用于存储控制器504使用的指令;
控制器504,用于调用指存储器509中缓存的指令,实现控制该运算加速器的工作过程。
一般地,统一存储器506,输入存储器501,权重存储器502以及取指存储器509均为片上(On-Chip)存储器,外部存储器为该NPU外部的存储器,该外部存储器可以为双倍数据率同步动态随机存储器(double data rate synchronous dynamic randomaccessmemory,DDRSDRAM)、高带宽存储器(high bandwidth memory,HBM)或其他可读可写的存储器。
神经网络模型(尤其是实现视觉相关任务的模型)在实际运行的时候需要大量的内存空间和计算资源,这使得将它们部署到移动设备上非常困难。
为了提升运行效率,通过各种不同的方法用于压缩模型的尺寸,如网络剪枝、模型量化、轻量级架构设计和知识蒸馏。在这些方法中,模型量化是对现有人工智能加速芯片相对更优的技术,因为这些芯片通常专注于低精度的计算,从而可以显著降低模型推理的时延、内存占用以及功耗。然而,现有技术中通过模型量化方法得到的压缩后的模型的精度降低。
通过给模型的权重和特征图设置不同的比特位宽来确定造成底层视觉模型量化精度下降的原因。以超分辨模型为例,当只将模型的权重量化为6比特时,与全精度模型相比,其性能仅有小幅下降(PSNR指标下降0.059,SSIM指标下降0.002),相反,当只对特征图进行量化时,模型的精度下降严重,这表明对特征量化会大大降低低位精度模型的性能。
进一步对特征图的分布进行可视化来分析量化导致的性能严重下降的具体原因,可以总结出三点对量化不友好的原因:
(1)长尾:所有特征图的分布都是中间密集两端稀疏,大部分的数值都在一个非常小的范围内,然而整个特征图的范围却非常大,例如图8A中的(b)表示的body.11.conv1的特征图分布所示,输入样本2之后的范围是[-232,210],其中99.16%的数值都在[-30,25]之间。对于常见的均匀量化器而言,这种非常严重的长尾分布会对中间密集区域造成巨大的量化损失,对性能影响严重;
(2)非对称:图8A中标注的skew指的是偏度,这是衡量概率分布围绕其平均值的不对称性的一个指标。对于非对称分布,负偏度表示长尾在分布的左边,正偏度表示长尾在分布的左边,偏度为0表示分布两端是对称的。从图8A中可以看到,特征图的偏度显示它们在分布两端上是非常不对称的,如图8A中的body.0.conv1两个不同输入样本下的特征图偏度为3.78和1.73,这对使用传统量化方法进行零点校准非常不友好;
(3)高动态:由于没有批规范化层的约束,超分辨率模型特征图的范围具有非常高的灵活性。例如对于body.31.conv1层,第二个输入样本造成的模型输出特征图的范围是第一个样本的2.19倍。高动态范围意味着对于每一个样本而言,最优的量化值都是不同的,因此确定一个可以适应整个超分辨率数据集的最优截断值是非常具有挑战性的。
总而言之,造成模型量化性能急剧下降的原因是其长尾的、非对称的以及高动态变化的特征图分布,从而导致之前高层视觉模型的后训练量化方案并不能直接迁移到该项任务中。为了解决这个问题,本申请实施例提出了一种模型量化方法,可以获取更合适截断区间(也就是上阈值和下阈值,或者可以称之为上边界阈值和下边界阈值),以应对长尾和不对称两个特性,然后可以细粒度地对这些截断值进行微调,驱使量化模型在高动态的特征图变化中寻找到最优点。
参照图7,本申请实施例提供的模型量化方法可以包括:
701、获取第一特征图,所述第一特征图为神经网络的第一中间层输出的特征图,所述第一特征图包括多个第一特征点,所述神经网络为浮点模型。
其中,第一特征图为浮点神经网络的一个中间网络层(例如第一中间层)输出的特征图。第一特征图可以包括多个第一特征点。本申请实施例主要用于确定对中间网络层输出的特征图进行的量化过程。
首先说明一下模型量化相关的基本步骤:
给定一个浮点的张量x,需要量化到N比特,设置这个张量的量化上下边界为l和u。量化的过程通常包含三个步骤,如下公式所示,1)将浮点张量x截断到[l,u]之间,设为xc;2)将浮点xc映射到[0,2N-1]范围内,设为xint;3)从xint重建出浮点的张量,得到xq
xc=Clamp(x,l,u);
Figure BDA0004089488390000151
Figure BDA0004089488390000152
其中Clamp(x,l,u)=min(max(x,l),u),其将输入截断到给定阈值以内,小于下阈值则输出下阈值,大于上阈值即输出上阈值,当数值在上下阈值之内时则输出本身。Round()是四舍五入函数,输出离输入最近的那个整型数。通常,后训练量化的目标就是在不对原始浮点权重做修改的前提下,获得每一层权重和特征图的上下截断阈值的参数,分别设置为(lw,uw)和(la,ua)。本发明的目的就是在给定的量化比特位宽下,仅利用少量无标签的校准图像,快速为每一层权重和特征图获得最优的上下截断阈值。
702、根据所述多个第一特征点的数值分布,确定满足预设条件的第一截断区间;所述第一截断区间包括第一上边界阈值和第一下边界阈值,其中,在对所述第一中间层输出的特征图进行量化时,小于所述第一下边界阈值的第一特征点的数值被量化为所述第一下边界阈值,大于所述第一上边界阈值的第一特征点的数值被量化为所述第一上边界阈值;所述预设条件包括:在所述数值截断区间内的特征点的数值分布密度大于在所述数值截断区间外的特征点的数值分布密度。
在一种可能的实现中,所述预设条件还包括:在所述数值截断区间内的特征点的数量和特征图包括的特征点的数量占比大于第一阈值。
本申请实施例的一个系统架构示意可以如图8B所示,针对模型的后训练量化的优化可以包括两个步骤,第一个步骤是基于密度的双端截断,通过不断比较上下两端的分布密度,在考虑特征图长尾和非对称分布的基础上,将浮点参数中的离群值去除,得到具有相对粗糙上下边界的浮点模型。
通过对特征图的分析可知,非对称和长尾分布是影响模型量化性能的主要原因之二。该模块充分考虑到这个特性,基于密度越低,重要性越低的先验认知,通过对比上阈值和下阈值的密度,将密度较低的那一端截掉,保留密度较高的那一端,然后继续迭代,直到阈值范围内的密度占整个特征图密度的比例低于某一阈值即停止迭代过程,得到当前最优的截断参数。
在一种可能的实现中,可以将所述多个第一特征点的数值范围按照数值大小划分为多个数值区间;从所述多个数值区间的两侧向内部依次确定数值分布密度较小的数值区间为边缘数值区间,直至所述多个数值区间中除所述边缘数值区间之外的其他数值区间内的第一特征点的数量和所述多个第一特征点的数量占比小于第二阈值,确定所述其他数值区间为所述第一截断区间。
模型中间层输出的特征图的分布通常显示为中间密集而两端稀疏,因此密集区域与原始边界相离较远,这对模型量化非常不友好,特别是对低比特。因此,本申请实施例提出了基于密度的双端截断来切断特征图的离群值,帮助将分布缩小到有效范围。
与使用ReLU函数的高层语义模型的单边截断不同的是,本申请实施例充分考虑了模型中间层输出的特征图中特征点数值的不对称分布,以某一层的范围截断为例,首先根据原始特征图x的最大最小值将其范围划分为N等份:
Figure BDA0004089488390000161
Figure BDA0004089488390000162
其中H(p)表示位置p的密度。基于假设:边界上的分布密度越低,其对整体的重要性越低,本技术的目标是尽可能多地保持密度最高的那部分的区域。如图8B所示,H(p)通常在两端的值非常小,在中间部位的值非常大。因此,为了得到合适的上端截断阈值和下端截断阈值,本申请实施例中,可以从原始的两点开始搜索,称为la和ua。不断地比较这两个阈值位置的分布密度大小,并且截掉密度低的那个边界点,使其往中间靠拢,这个过程可以用以下公式进行表示:
Figure BDA0004089488390000171
其中t表示当前的迭代步数,对于一个批次样本迭代的终止条件是当截断阈值内的密度之和占整个分布密度的比例低于某个阈值(M%)时即停止。
通过上述方式,上端截断阈值和下端截断阈值通过分布密度比较的形式进行循环迭代,截掉重要性更低的边界部分(密度更低),从而解决长尾分布和非对称分布带来的量化损失。
本申请实施例中,可以针对于神经网络中的不同中间层的输出特征图基于特征图自身的数值分布来确定不同的截断区间,以不同于第一中间层的第二中间层为例:
在一种可能的实现中,还可以获取第三特征图,所述第三特征图为神经网络的第二中间层输出的特征图,所述第三特征图包括多个第三特征点,所述神经网络为浮点模型;根据所述多个第三特征点的数值分布,确定满足所述预设条件的第三截断区间;所述第三截断区间包括第三上边界阈值和第三下边界阈值,其中,在对所述第二中间层输出的特征图进行量化时,小于所述第三下边界阈值的第三特征点的数值被量化为所述第三下边界阈值,大于所述第三上边界阈值的第三特征点的数值被量化为所述第三上边界阈值。
在一种可能的实现中,所述第一特征图为神经网络在处理第一批batch训练样本时第一中间层输出的特征图;在下一批batch训练样本输入时,可以获取第二特征图,所述第二特征图为所述神经网络在处理第二批batch训练样本时所述第一中间层输出的特征图,所述第二特征图包括多个第二特征点;根据所述多个第二特征点的数值分布,确定满足所述预设条件的第二截断区间;所述第二截断区间包括第二上边界阈值和第二下边界阈值;根据所述第二截断区间,对所述第一截断区间进行更新,得到第三截断区间。
在一种可能的实现中,可以根据所述第二截断区间,通过指数移动平均对所述第一截断区间进行更新。
在获得了当前校准样本的最合适的上端和下端的截断阈值之后,然后再输入下一个批次的校准样本,同时也会使用指数移动平均的方式来更新得到全局的上端和下端的阈值参数值,用公式表示如下:
Figure BDA0004089488390000172
Figure BDA0004089488390000173
其中β是权重衰减的超参数,而
Figure BDA0004089488390000174
和/>
Figure BDA0004089488390000175
表示当前批次的截断值,具体的算法流程图示意可以如图9所示。
然后可以进行像素感知校准,在第一步得到的浮点参数基础上对模型进行量化,然后利用全精度模型监督低比特量化模型,在小的校准数据集上对量化参数进一步微调,使得其在微调过程中进一步适应高度动态的特征图分布变化。
具体的,可以在第一步的基础上,进一步考虑到特征图的高动态变化也是影响量化性能的主要因素之一。本申请实施例利用浮点模型作为监督模型,通过其中间特征和最终的输出来指导量化模型对截断阈值的参数进行进一步地微调,在这个微调过程中,量化模型的阈值参数会不断适应高度动态的特征图的变化过程,并在浮点模型的监督下找到最优点,从而得到高精度的量化模型。
在一种可能的实现中,所述第一截断区间用于对所述神经网络进行量化,得到量化后的神经网络;可以获取第一输出和第二输出,所述第一输出为所述神经网络在处理训练样本时中间层或者输出层的输出,所述第二输出为所述量化后的神经网络在处理所述训练样本时中间层或者输出层的输出;根据所述第一输出和所述第二输出,确定损失,并根据所述损失对所述第一截断区间进行更新。
例如,第一输出和第二输出可以为神经网络在处理训练样本时中间层的输出,或者第一输出和第二输出可以为神经网络在处理训练样本时输出层的输出。
在一种可能的实现中,在构建损失时,可以对所述第一输出和所述第二输出分别计算L2的范数,得到处理后的第一输出和处理后的第二输出;根据所述处理后的第一输出和处理后的第二输出之间的均方误差,确定损失。
在基于密度的双端截断的粗调技术上,可以为模型每一层的权重和特征图获得初始的下端和上端的截断阈值,这一步骤中权重和特征图都没有量化,始终保持为浮点模型的形式。然后本申请实施例进一步提出了一种像素感知校准方法来微调这些截断参数,以拟合给定位宽设置下不同样本的高动态特征图。利用无标记校准图像和全精度预训练模型,可以得到模型输出和中间层输出的特征图,为量化模型提供丰富的监督信息,并用于构建一个用于微调的数据集,第i个样本的输入和标签对可以表示为:
Figure BDA0004089488390000181
其中
Figure BDA0004089488390000182
表示第b个残差模块的输出特征图,Oi表示的是浮点模型对于第i个样本的输出,因此可以得到一个仅有100对输入和标签的小的微调数据集。由于校准图片的数量有限,这个方法的微调仅仅是截断参数,这样可以使得参数数量和样本数量类似,从而避免过拟合。浮点模型对量化模型的监督包含两个部分,一部分是模型的输出,另一部分是特征图。对于输出,可以采取传统的L1损失:
Figure BDA0004089488390000183
其中||·||1表示L1范数,Ho,Wo和Co表示的输出图像的高、宽和通道数,O和Oq分别表示的浮点模型和量化模型对于同一组输入样本的输出结果。而对于特征图的监督,提出了一种像素迁移损失来计算浮点模型和量化模型中间层的输出的距离。这个技术首先对两个模型的特征图计算一个L2的范数:
Figure BDA0004089488390000184
其中Fi和Fqi分别表示浮点模型和量化模型的第i个残差块的输出。然后计算所有模块的这两个特征图的均方误差,像素迁移损失的表达式如下:
Figure BDA0004089488390000191
其中Hi,Wi和Ci表示的第i个残差模块的输出特征图的高、宽和通道数,B表示的模块的数量。然后就可以得到最终的总损失函数:
LPaC=Lo+λLpt
其中λ是用于平衡这两个损失的超参数,可选的,可以设置为5。在充分考虑重构损失和量化累积误差的总损失最小化的情况下,量化模型倾向于模仿全精度模型,并试图找到最适合高动态分布的截断阈值参数。
在一种可能的实现中,可以在保持针对于所述神经网络的权重参数对应的截断区间不变的情况下,根据所述损失对所述第一截断区间进行更新。
为了稳定微调过程,可以迭代优化权重和特征图的剪裁参数,而不是将它们一起微调。如图8B所示,首先冻结特征图的截断阈值参数,用总损失微调权重的截断阈值参数,其中梯度可以表示:
Figure BDA0004089488390000192
Figure BDA0004089488390000193
其中
Figure BDA0004089488390000194
是第i层权重的截断阈值参数。可选的,对于/>
Figure BDA0004089488390000195
梯度在此处可以近似为1。然后冻结权重的截断阈值参数,用相同的损失函数微调特征图的参数。梯度的计算与权重的计算相同。这种迭代优化循环重复,直到它到达校准的轮式,在整个校准过程中,原始权重参数都不参与更新。
本申请实施例提供了一种模型量化方法,所述方法包括:获取第一特征图,所述第一特征图为神经网络的第一中间层输出的特征图,所述第一特征图包括多个第一特征点,所述神经网络为浮点模型;根据所述多个第一特征点的数值分布,确定满足预设条件的第一截断区间;所述第一截断区间包括第一上边界阈值和第一下边界阈值,其中,在对所述第一中间层输出的特征图进行量化时,小于所述第一下边界阈值的第一特征点的数值被量化为所述第一下边界阈值,大于所述第一上边界阈值的第一特征点的数值被量化为所述第一上边界阈值;所述预设条件包括:在所述数值截断区间内的特征点的数值分布密度大于在所述数值截断区间外的特征点的数值分布密度。本申请使用上端截断阈值和下端截断阈值来表示量化的参数设置,而非之前方案中常见的零点位置和范围大小,先对浮点模型使用基于密度的双端截,去除长尾分布中离群点,可以适应非对称的分布趋势,进而提升量化后的模型精度。
此外,对模型使用像素感知校准的策略,对量化参数进行适量微调,使得量化模型能更适应高动态的特征变化。
本申请仅需少量无标签的校准数据,在数分钟即可获得量化模型。相比量化感知训练,本申请实施例无需完整的训练数据集和高昂的训练服务器资源,大大降低了模型量化过程所需的成本,并且能够在短时间内获得量化模型的结构和参数,大大加快了模型上线部署的效率。
本申请实施例的一个实施例的结构框图如图10所示,下面详细说明实例中的各个模块以及主要步骤。
在给定的训练好的浮点模型后,使用未标注的校准图片进行各层浮点权重和特征图分布范围的截断,每个样本批次输入进去后,会不断地对比上端阈值和下端阈值的密度,迭代优化得到最适合的参数,然后再利用指数移动平均得到全局的上端阈值和下端阈值参数,在充分考虑长尾和不对称特征图的情况下截去分布中的离群点,得到具有合适截断阈值的浮点模型。
在第一步的基础上,在给定比特位宽的条件下,对模型进行量化。利用未标注图片和原始的浮点模型构建小的微调数据集,然后利用浮点模型中间特征图和最后输出作为监督信号,指导量化模型的阈值参数进行微调,进一步适应底层视觉模型的高动态特征图的分布变化,最终得到量化之后的模型。
在给定训练测试集上,本申请实施例与如下几个基准算法进行比较,具有如下的有益效果。
基准算法1:浮点模型和Bicubic算法结果,分别来自于《Enhanced deep residualnetworksfor single image super-resolution》的EDSR和《Photorealistic singleimage super-resolution usinga generative adversarial network》的SRResNet。
基准算法2:商用部署工具,包括OpenVINO、TensorRT、SNPE。
基准算法3:面向高层语义的训练后量化算法,包括论文《Bridging the accuracygap for2-bit quantized neural networks》中的MSE算法,论文《Fully quantizednetwork for objectdetection》中的percentile算法以及论文《Quantization andtraining of neural networks forefficient integer-arithmetic-only inference》中的MinMax算法。
基准算法4:面向底层视觉模型的量化感知训练算法,包括论文《Pams:Quantizedsuper-resolution via parameterized max scale》中的PAMS算法和论文《Fully quantized imagesuper-resolution networks》中的FQSR算法。
有益效果1:EDSR模型上更好的客观指标。在开源数据集Set5、Set14、BSDS100和Urban100和EDSR模型上测试,如表1所示,本申请实施例与现有的方法相比,具有更好的PSNR/SSIM(越大越好),如当模型量化到4-bit时,本申请实施例对EDSR×4模型量化后在Set5上仅有1.28dB的精度误差,远超其他方案。
有益效果2:SRResNet模型上更好的客观指标。在开源数据集Set5、Set14、BSDS100和Urban100和SRResNet模型上测试,如表2所示,本申请实施例与现有的方法相比,具有更好的PSNR/SSIM(越大越好)。如当模型量化到4-bit时,本申请实施例对SRResNet×4模型量化后在Set5上仅有1.09dB的精度误差,远超其他方案。
有益效果3:与量化感知训练方案比具有更好的客观指标。在开源数据集Set5、Set14、BSDS100和Urban100和EDSR模型上测试,如表3所示,本申请实施例与现有的方法相比,具有更好的PSNR/SSIM(越大越好)。
有益效果4:更好的视觉效果。在Urban100上测试主观效果,如图11所示,本申请实施例的方法在细节保存上和浮点模型更为接近,相比于其他方法能获得更好的主观和客观效果。
表1训练后量化方法量在EDSR上的客观指标(PSNR/SSIM)比较
Figure BDA0004089488390000211
表2训练后量化方法量在SRResNet上的客观指标(PSNR/SSIM)比较
Figure BDA0004089488390000221
表3量化感知训练方法在EDSR上的客观指标(PSNR/SSIM)比较
Figure BDA0004089488390000222
参照图12,图12为本申请实施例提供的一种模型量化装置的结构示意,如图12所示,所述装置1200包括:
获取模块1201,用于获取第一特征图,所述第一特征图为神经网络的第一中间层输出的特征图,所述第一特征图包括多个第一特征点,所述神经网络为浮点模型;
其中,关于获取模块1201的具体介绍可以参照上述实施例中步骤701的描述,这里不再赘述。
处理模块1202,用于根据所述多个第一特征点的数值分布,确定满足预设条件的第一截断区间;所述第一截断区间包括第一上边界阈值和第一下边界阈值,其中,在对所述第一中间层输出的特征图进行量化时,小于所述第一下边界阈值的第一特征点的数值被量化为所述第一下边界阈值,大于所述第一上边界阈值的第一特征点的数值被量化为所述第一上边界阈值;所述预设条件包括:在所述数值截断区间内的特征点的数值分布密度大于在所述数值截断区间外的特征点的数值分布密度。
其中,关于处理模块1202的具体介绍可以参照上述实施例中步骤702的描述,这里不再赘述。
在一种可能的实现中,所述预设条件还包括:
在所述数值截断区间内的特征点的数量和特征图包括的特征点的数量占比大于第一阈值。
在一种可能的实现中,所述处理模块,具体用于:
将所述多个第一特征点的数值范围按照数值大小划分为多个数值区间;
从所述多个数值区间的两侧向内部依次确定数值分布密度较小的数值区间为边缘数值区间,直至所述多个数值区间中除所述边缘数值区间之外的其他数值区间内的第一特征点的数量和所述多个第一特征点的数量占比小于第二阈值,确定所述其他数值区间为所述第一截断区间。
在一种可能的实现中,所述第一特征图为神经网络在处理第一批batch训练样本时第一中间层输出的特征图;
所述获取模块,还用于:
获取第二特征图,所述第二特征图为所述神经网络在处理第二批batch训练样本时所述第一中间层输出的特征图,所述第二特征图包括多个第二特征点;
所述处理模块,还用于:
根据所述多个第二特征点的数值分布,确定满足所述预设条件的第二截断区间;所述第二截断区间包括第二上边界阈值和第二下边界阈值;
根据所述第二截断区间,对所述第一截断区间进行更新,得到第三截断区间。
在一种可能的实现中,所述处理模块,具体用于:
根据所述第二截断区间,通过指数移动平均对所述第一截断区间进行更新。
在一种可能的实现中,所述获取模块,还用于:
获取第三特征图,所述第三特征图为神经网络的第二中间层输出的特征图,所述第三特征图包括多个第三特征点,所述神经网络为浮点模型;
所述处理模块,还用于:
根据所述多个第三特征点的数值分布,确定满足所述预设条件的第三截断区间;所述第三截断区间包括第三上边界阈值和第三下边界阈值,其中,在对所述第二中间层输出的特征图进行量化时,小于所述第三下边界阈值的第三特征点的数值被量化为所述第三下边界阈值,大于所述第三上边界阈值的第三特征点的数值被量化为所述第三上边界阈值。
在一种可能的实现中,所述第一截断区间用于对所述神经网络进行量化,得到量化后的神经网络;所述获取模块,还用于:
所述处理模块,还用于:
获取第一输出和第二输出,所述第一输出为所述神经网络在处理训练样本时中间层或者输出层的输出,所述第二输出为所述量化后的神经网络在处理所述训练样本时中间层或者输出层的输出;
根据所述第一输出和所述第二输出,确定损失,并根据所述损失对所述第一截断区间进行更新。
在一种可能的实现中,所述训练样本为无标签的数据。
在一种可能的实现中,所述处理模块,具体用于:
对所述第一输出和所述第二输出分别计算L2的范数,得到处理后的第一输出和处理后的第二输出;
根据所述处理后的第一输出和处理后的第二输出之间的均方误差,确定损失。
在一种可能的实现中,所述处理模块,具体用于:
在保持针对于所述神经网络的权重参数对应的截断区间不变的情况下,根据所述损失对所述第一截断区间进行更新。
接下来介绍本申请实施例提供的一种执行设备,请参阅图13,图13为本申请实施例提供的执行设备的一种结构示意图,执行设备1300具体可以表现为虚拟现实VR设备、手机、平板、笔记本电脑、智能穿戴设备、监控设备或服务器等,此处不做限定。具体的,执行设备1300包括:接收器1301、发射器1302、处理器1303和存储器1304(其中执行设备1300中的处理器1303的数量可以一个或多个,图13中以一个处理器为例),其中,处理器1303可以包括应用处理器13031和通信处理器13032。在本申请的一些实施例中,接收器1301、发射器1302、处理器1303和存储器1304可通过总线或其它方式连接。
存储器1304可以包括只读存储器和随机存取存储器,并向处理器1303提供指令和数据。存储器1304的一部分还可以包括非易失性随机存取存储器(non-volatile randomaccessmemory,NVRAM)。存储器1304存储有处理器和操作指令、可执行模块或者数据结构,或者它们的子集,或者它们的扩展集,其中,操作指令可包括各种操作指令,用于实现各种操作。
处理器1303控制执行设备的操作。具体的应用中,执行设备的各个组件通过总线系统耦合在一起,其中总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,在图中将各种总线都称为总线系统。
上述本申请实施例揭示的方法可以应用于处理器1303中,或者由处理器1303实现。处理器1303可以是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1303中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1303可以是通用处理器、数字信号处理器(digital signal processing,DSP)、微处理器或微控制器,还可进一步包括专用集成电路(application specific integratedcircuit,ASIC)、现场可编程门阵列(field-programmable gate array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。该处理器1303可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本申请实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1304,处理器1303读取存储器1304中的信息,结合其硬件运行基于上述图7对应的方法得到的量化后模型。
接收器1301可用于接收输入的数字或字符信息,以及产生与执行设备的相关设置以及功能控制有关的信号输入。发射器1302可用于通过第一接口输出数字或字符信息;发射器1302还可用于通过第一接口向磁盘组发送指令,以修改磁盘组中的数据;发射器1302还可以包括显示屏等显示设备。
本申请实施例还提供了一种训练设备,请参阅图14,图14是本申请实施例提供的训练设备一种结构示意图,具体的,训练设备1400由一个或多个服务器实现,训练设备1400可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上中央处理器(centralprocessing units,CPU)1414(例如,一个或一个以上处理器)和存储器1432,一个或一个以上存储应用程序1442或数据1444的存储介质1430(例如一个或一个以上海量存储设备)。其中,存储器1432和存储介质1430可以是短暂存储或持久存储。存储在存储介质1430的程序可以包括一个或一个以上模块(图示没标出),每个模块可以包括对训练设备中的一系列指令操作。更进一步地,中央处理器1414可以设置为与存储介质1430通信,在训练设备1400上执行存储介质1430中的一系列指令操作。
训练设备1400还可以包括一个或一个以上电源1426,一个或一个以上有线或无线网络接口1450,一个或一个以上输入输出接口1458;或,一个或一个以上操作系统1441,例如Windows ServerTM,Mac OS XTM,UnixTM,LinuxTM,FreeBSDTM等等。
本申请实施例中,中央处理器1414,用于执行上述实施例中图7对应的实施例所描述的模型量化方法。
本申请实施例中还提供一种包括计算机程序产品,当其在计算机上运行时,使得计算机执行如前述执行设备所执行的步骤,或者,使得计算机执行如前述训练设备所执行的步骤。
本申请实施例中还提供一种计算机可读存储介质,该计算机可读存储介质中存储有用于进行信号处理的程序,当其在计算机上运行时,使得计算机执行如前述执行设备所执行的步骤,或者,使得计算机执行如前述训练设备所执行的步骤。
本申请实施例提供的执行设备、训练设备或终端设备具体可以为芯片,芯片包括:处理单元和通信单元,所述处理单元例如可以是处理器,所述通信单元例如可以是输入/输出接口、管脚或电路等。该处理单元可执行存储单元存储的计算机执行指令,以使执行设备内的芯片执行上述实施例描述的模型量化方法,或者,以使训练设备内的芯片执行上述实施例描述的模型量化方法。可选地,所述存储单元为所述芯片内的存储单元,如寄存器、缓存等,所述存储单元还可以是所述无线接入设备端内的位于所述芯片外部的存储单元,如只读存储器(read-only memory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)等。
具体的,请参阅图15,图15为本申请实施例提供的芯片的一种结构示意图,所述芯片可以表现为神经网络处理器NPU 1500,NPU 1500作为协处理器挂载到主CPU(HostCPU)上,由Host CPU分配任务。NPU的核心部分为运算电路1503,通过控制器1504控制运算电路1503提取存储器中的矩阵数据并进行乘法运算。
在一些实现中,运算电路1503内部包括多个处理单元(Process Engine,PE)。在一些实现中,运算电路1503是二维脉动阵列。运算电路1503还可以是一维脉动阵列或者能够执行例如乘法和加法这样的数学运算的其它电子线路。在一些实现中,运算电路1503是通用的矩阵处理器。
举例来说,假设有输入矩阵A,权重矩阵B,输出矩阵C。运算电路从权重存储器1502中取矩阵B相应的数据,并缓存在运算电路中每一个PE上。运算电路从输入存储器1501中取矩阵A数据与矩阵B进行矩阵运算,得到的矩阵的部分结果或最终结果,保存在累加器(accumulator)1508中。
统一存储器1506用于存放输入数据以及输出数据。权重数据直接通过存储单元访问控制器(Direct Memory Access Controller,DMAC)1505,DMAC被搬运到权重存储器1502中。输入数据也通过DMAC被搬运到统一存储器1506中。
BIU为Bus Interface Unit即,总线接口单元1510,用于AXI总线与DMAC和取指存储器(Instruction Fetch Buffer,IFB)1509的交互。
总线接口单元1510(Bus Interface Unit,简称BIU),用于取指存储器1509从外部存储器获取指令,还用于存储单元访问控制器1505从外部存储器获取输入矩阵A或者权重矩阵B的原数据。
DMAC主要用于将外部存储器DDR中的输入数据搬运到统一存储器1506或将权重数据搬运到权重存储器1502中或将输入数据数据搬运到输入存储器1501中。
向量计算单元1507包括多个运算处理单元,在需要的情况下,对运算电路1503的输出做进一步处理,如向量乘,向量加,指数运算,对数运算,大小比较等等。主要用于神经网络中非卷积/全连接层网络计算,如Batch Normalization(批归一化),像素级求和,对特征平面进行上采样等。
在一些实现中,向量计算单元1507能将经处理的输出的向量存储到统一存储器1506。例如,向量计算单元1507可以将线性函数;或,非线性函数应用到运算电路1503的输出,例如对卷积层提取的特征平面进行线性插值,再例如累加值的向量,用以生成激活值。在一些实现中,向量计算单元1507生成归一化的值、像素级求和的值,或二者均有。在一些实现中,处理过的输出的向量能够用作到运算电路1503的激活输入,例如用于在神经网络中的后续层中的使用。
控制器1504连接的取指存储器(instruction fetch buffer)1509,用于存储控制器1504使用的指令;
统一存储器1506,输入存储器1501,权重存储器1502以及取指存储器1509均为On-Chip存储器。外部存储器私有于该NPU硬件架构。
其中,上述任一处提到的处理器,可以是一个通用中央处理器,微处理器,ASIC,或一个或多个用于控制上述程序执行的集成电路。
另外需说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。另外,本申请提供的装置实施例附图中,模块之间的连接关系表示它们之间具有通信连接,具体可以实现为一条或多条通信总线或信号线。
通过以上的实施方式的描述,所属领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件的方式来实现,当然也可以通过专用硬件包括专用集成电路、专用CPU、专用存储器、专用元器件等来实现。一般情况下,凡由计算机程序完成的功能都可以很容易地用相应的硬件来实现,而且,用来实现同一功能的具体硬件结构也可以是多种多样的,例如模拟电路、数字电路或专用电路等。但是,对本申请而言更多情况下软件程序实现是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在可读取的存储介质中,如计算机的软盘、U盘、移动硬盘、ROM、RAM、磁碟或者光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,训练设备,或者网络设备等)执行本申请各个实施例所述的方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。
所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、训练设备或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、训练设备或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存储的任何可用介质或者是包含一个或多个可用介质集成的训练设备、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。

Claims (23)

1.一种模型量化方法,其特征在于,所述方法包括:
获取第一特征图,所述第一特征图为神经网络的第一中间层输出的特征图,所述第一特征图包括多个第一特征点,所述神经网络为浮点模型;
根据所述多个第一特征点的数值分布,确定满足预设条件的第一截断区间;所述第一截断区间包括第一上边界阈值和第一下边界阈值,其中,在对所述第一中间层输出的特征图进行量化时,小于所述第一下边界阈值的第一特征点的数值被量化为所述第一下边界阈值,大于所述第一上边界阈值的第一特征点的数值被量化为所述第一上边界阈值;所述预设条件包括:在所述数值截断区间内的特征点的数值分布密度大于在所述数值截断区间外的特征点的数值分布密度。
2.根据权利要求1所述的方法,其特征在于,所述预设条件还包括:
在所述数值截断区间内的特征点的数量和特征图包括的特征点的数量占比大于第一阈值。
3.根据权利要求1或2所述的方法,其特征在于,所述根据所述多个第一特征点的数值分布,确定满足预设条件的第一截断区间,包括:
将所述多个第一特征点的数值范围按照数值大小划分为多个数值区间;
从所述多个数值区间的两侧向内部依次确定数值分布密度较小的数值区间为边缘数值区间,直至所述多个数值区间中除所述边缘数值区间之外的其他数值区间内的第一特征点的数量和所述多个第一特征点的数量占比小于第二阈值,确定所述其他数值区间为所述第一截断区间。
4.根据权利要求1至3任一所述的方法,其特征在于,所述第一特征图为神经网络在处理第一批batch训练样本时第一中间层输出的特征图;
所述方法还包括:
获取第二特征图,所述第二特征图为所述神经网络在处理第二批batch训练样本时所述第一中间层输出的特征图,所述第二特征图包括多个第二特征点;
根据所述多个第二特征点的数值分布,确定满足所述预设条件的第二截断区间;所述第二截断区间包括第二上边界阈值和第二下边界阈值;
根据所述第二截断区间,对所述第一截断区间进行更新,得到第三截断区间。
5.根据权利要求4所述的方法,其特征在于,所述根据所述第二截断区间,对所述第一截断区间进行更新,包括:
根据所述第二截断区间,通过指数移动平均对所述第一截断区间进行更新。
6.根据权利要求1至5任一所述的方法,其特征在于,所述方法还包括:
获取第三特征图,所述第三特征图为神经网络的第二中间层输出的特征图,所述第三特征图包括多个第三特征点,所述神经网络为浮点模型;
根据所述多个第三特征点的数值分布,确定满足所述预设条件的第三截断区间;所述第三截断区间包括第三上边界阈值和第三下边界阈值,其中,在对所述第二中间层输出的特征图进行量化时,小于所述第三下边界阈值的第三特征点的数值被量化为所述第三下边界阈值,大于所述第三上边界阈值的第三特征点的数值被量化为所述第三上边界阈值。
7.根据权利要求1至6任一所述的方法,其特征在于,所述第一截断区间用于对所述神经网络进行量化,得到量化后的神经网络;所述方法还包括:
获取第一输出和第二输出,所述第一输出为所述神经网络在处理训练样本时中间层或者输出层的输出,所述第二输出为所述量化后的神经网络在处理所述训练样本时中间层或者输出层的输出;
根据所述第一输出和所述第二输出,确定损失,并根据所述损失对所述第一截断区间进行更新。
8.根据权利要求7所述的方法,其特征在于,所述训练样本为无标签的数据。
9.根据权利要求7或8所述的方法,其特征在于,所述第一输出和所述第二输出为中间层输出的特征图;所述根据所述第一输出和所述第二输出,确定损失,包括:
对所述第一输出和所述第二输出分别计算L2的范数,得到处理后的第一输出和处理后的第二输出;
根据所述处理后的第一输出和处理后的第二输出之间的均方误差,确定损失。
10.根据权利要求7至9任一所述的方法,其特征在于,所述根据所述损失对所述第一截断区间进行更新,包括:
在保持针对于所述神经网络的权重参数对应的截断区间不变的情况下,根据所述损失对所述第一截断区间进行更新。
11.一种模型量化装置,其特征在于,所述装置包括:
获取模块,用于获取第一特征图,所述第一特征图为神经网络的第一中间层输出的特征图,所述第一特征图包括多个第一特征点,所述神经网络为浮点模型;
处理模块,用于根据所述多个第一特征点的数值分布,确定满足预设条件的第一截断区间;所述第一截断区间包括第一上边界阈值和第一下边界阈值,其中,在对所述第一中间层输出的特征图进行量化时,小于所述第一下边界阈值的第一特征点的数值被量化为所述第一下边界阈值,大于所述第一上边界阈值的第一特征点的数值被量化为所述第一上边界阈值;所述预设条件包括:在所述数值截断区间内的特征点的数值分布密度大于在所述数值截断区间外的特征点的数值分布密度。
12.根据权利要求11所述的装置,其特征在于,所述预设条件还包括:
在所述数值截断区间内的特征点的数量和特征图包括的特征点的数量占比大于第一阈值。
13.根据权利要求11或12所述的装置,其特征在于,所述处理模块,具体用于:
将所述多个第一特征点的数值范围按照数值大小划分为多个数值区间;
从所述多个数值区间的两侧向内部依次确定数值分布密度较小的数值区间为边缘数值区间,直至所述多个数值区间中除所述边缘数值区间之外的其他数值区间内的第一特征点的数量和所述多个第一特征点的数量占比小于第二阈值,确定所述其他数值区间为所述第一截断区间。
14.根据权利要求11至13任一所述的装置,其特征在于,所述第一特征图为神经网络在处理第一批batch训练样本时第一中间层输出的特征图;
所述获取模块,还用于:
获取第二特征图,所述第二特征图为所述神经网络在处理第二批batch训练样本时所述第一中间层输出的特征图,所述第二特征图包括多个第二特征点;
所述处理模块,还用于:
根据所述多个第二特征点的数值分布,确定满足所述预设条件的第二截断区间;所述第二截断区间包括第二上边界阈值和第二下边界阈值;
根据所述第二截断区间,对所述第一截断区间进行更新,得到第三截断区间。
15.根据权利要求14所述的装置,其特征在于,所述处理模块,具体用于:
根据所述第二截断区间,通过指数移动平均对所述第一截断区间进行更新。
16.根据权利要求11至15任一所述的装置,其特征在于,所述获取模块,还用于:
获取第三特征图,所述第三特征图为神经网络的第二中间层输出的特征图,所述第三特征图包括多个第三特征点,所述神经网络为浮点模型;
所述处理模块,还用于:
根据所述多个第三特征点的数值分布,确定满足所述预设条件的第三截断区间;所述第三截断区间包括第三上边界阈值和第三下边界阈值,其中,在对所述第二中间层输出的特征图进行量化时,小于所述第三下边界阈值的第三特征点的数值被量化为所述第三下边界阈值,大于所述第三上边界阈值的第三特征点的数值被量化为所述第三上边界阈值。
17.根据权利要求11至16任一所述的装置,其特征在于,所述第一截断区间用于对所述神经网络进行量化,得到量化后的神经网络;所述获取模块,还用于:
所述处理模块,还用于:
获取第一输出和第二输出,所述第一输出为所述神经网络在处理训练样本时中间层或者输出层的输出,所述第二输出为所述量化后的神经网络在处理所述训练样本时中间层或者输出层的输出;
根据所述第一输出和所述第二输出,确定损失,并根据所述损失对所述第一截断区间进行更新。
18.根据权利要求17所述的装置,其特征在于,所述训练样本为无标签的数据。
19.根据权利要求17或18所述的装置,其特征在于,所述处理模块,具体用于:
对所述第一输出和所述第二输出分别计算L2的范数,得到处理后的第一输出和处理后的第二输出;
根据所述处理后的第一输出和处理后的第二输出之间的均方误差,确定损失。
20.根据权利要求17至19任一所述的装置,其特征在于,所述处理模块,具体用于:
在保持针对于所述神经网络的权重参数对应的截断区间不变的情况下,根据所述损失对所述第一截断区间进行更新。
21.一种计算机存储介质,其特征在于,所述计算机存储介质存储有一个或多个指令,所述指令在由一个或多个计算机执行时使得所述一个或多个计算机执行权利要求1至10中任一项所述方法的操作。
22.一种计算机程序产品,其特征在于,包括计算机可读指令,当所述计算机可读指令在计算机设备上运行时,使得所述计算机设备执行如权利要求1至10任一所述的方法。
23.一种系统,包括至少一个处理器,至少一个存储器;所述处理器、所述存储器通过通信总线连接并完成相互间的通信;
所述至少一个存储器用于存储代码;
所述至少一个处理器用于执行所述代码,以执行如权利要求1至10任一所述的方法。
CN202310129458.6A 2023-01-31 2023-01-31 一种模型量化方法及其装置 Pending CN116227549A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202310129458.6A CN116227549A (zh) 2023-01-31 2023-01-31 一种模型量化方法及其装置
PCT/CN2024/074846 WO2024160219A1 (zh) 2023-01-31 2024-01-31 一种模型量化方法及其装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310129458.6A CN116227549A (zh) 2023-01-31 2023-01-31 一种模型量化方法及其装置

Publications (1)

Publication Number Publication Date
CN116227549A true CN116227549A (zh) 2023-06-06

Family

ID=86581981

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310129458.6A Pending CN116227549A (zh) 2023-01-31 2023-01-31 一种模型量化方法及其装置

Country Status (2)

Country Link
CN (1) CN116227549A (zh)
WO (1) WO2024160219A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024160219A1 (zh) * 2023-01-31 2024-08-08 华为技术有限公司 一种模型量化方法及其装置

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190125141A (ko) * 2018-04-27 2019-11-06 삼성전자주식회사 뉴럴 네트워크의 파라미터들을 양자화하는 방법 및 장치
US20200364552A1 (en) * 2019-05-13 2020-11-19 Baidu Usa Llc Quantization method of improving the model inference accuracy
CN112200296B (zh) * 2020-07-31 2024-04-05 星宸科技股份有限公司 网络模型量化方法、装置、存储介质及电子设备
CN115049055B (zh) * 2022-06-29 2024-06-04 厦门大学 基于动态双可训练界限的超分神经网络的量化方法
CN115640840A (zh) * 2022-10-31 2023-01-24 杭州嘉楠耘智信息科技有限公司 神经网络数据的量化方法、装置、系统及可读存储介质
CN116227549A (zh) * 2023-01-31 2023-06-06 华为技术有限公司 一种模型量化方法及其装置

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2024160219A1 (zh) * 2023-01-31 2024-08-08 华为技术有限公司 一种模型量化方法及其装置

Also Published As

Publication number Publication date
WO2024160219A1 (zh) 2024-08-08

Similar Documents

Publication Publication Date Title
CN111368972B (zh) 一种卷积层量化方法及其装置
WO2021147325A1 (zh) 一种物体检测方法、装置以及存储介质
CN110175671A (zh) 神经网络的构建方法、图像处理方法及装置
CN114255361A (zh) 神经网络模型的训练方法、图像处理方法及装置
Liu et al. Vehicle-related scene understanding using deep learning
US20180336469A1 (en) Sigma-delta position derivative networks
CN112580720B (zh) 一种模型训练方法及装置
WO2022253074A1 (zh) 一种数据处理方法及相关设备
CN113191241A (zh) 一种模型训练方法及相关设备
WO2021129668A1 (zh) 训练神经网络的方法和装置
CN114595799A (zh) 一种模型训练方法及装置
CN115375781A (zh) 一种数据处理方法及其装置
WO2024160215A1 (zh) 一种数据处理方法及其装置
CN110705600A (zh) 一种基于互相关熵的多深度学习模型融合方法、终端设备及可读存储介质
WO2024083121A1 (zh) 一种数据处理方法及其装置
Xing et al. Traffic sign recognition using guided image filtering
CN113537462A (zh) 数据处理方法、神经网络的量化方法及相关装置
CN109982088B (zh) 图像处理方法及装置
CN117217280A (zh) 神经网络模型优化方法、装置及计算设备
Andriyanov et al. Development of a productive transport detection system using convolutional neural networks
WO2024160219A1 (zh) 一种模型量化方法及其装置
Wu et al. A lightweight network for vehicle detection based on embedded system
CN113128285A (zh) 一种处理视频的方法及装置
CN116863260A (zh) 数据处理方法及装置
JP2022537542A (ja) 動的な画像解像度評価

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