CN113780551B - 模型量化方法、装置、设备、存储介质及计算机程序产品 - Google Patents
模型量化方法、装置、设备、存储介质及计算机程序产品 Download PDFInfo
- Publication number
- CN113780551B CN113780551B CN202111030764.1A CN202111030764A CN113780551B CN 113780551 B CN113780551 B CN 113780551B CN 202111030764 A CN202111030764 A CN 202111030764A CN 113780551 B CN113780551 B CN 113780551B
- Authority
- CN
- China
- Prior art keywords
- quantization
- network model
- layer
- processing layer
- quantized
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
- G06N3/082—Learning methods modifying the architecture, e.g. adding, deleting or silencing nodes or connections
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Health & Medical Sciences (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Health & Medical Sciences (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Image Analysis (AREA)
Abstract
本申请实施例公开了一种模型量化方法、装置、设备、存储介质及计算机程序产品,其中,所述方法包括:获取待量化的第一网络模型;基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数;对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。本申请实施例中,由于第一网络模型中待量化的处理层以及对每一待量化的处理层进行量化的量化参数是基于设定的部署配置信息确定的,因此,在进行模型量化的过程中充分考虑了部署模型的硬件平台的部署配置信息,从而得到的第二网络模型是在相应的硬件平台上可部署的。
Description
技术领域
本申请涉及但不限人工智能领域,尤其涉及一种模型量化方法、装置、设备、存储介质及计算机程序产品。
背景技术
现代深度学习技术通过消耗更大的内存和算力来追求更高的性能。虽然大模型可以在云端进行训练,但由于计算资源(包括延迟、能源和内存消耗)有限,将模型直接部署在边缘设备是非常困难的。通过模型量化、剪枝、蒸馏、轻量级网络设计和权重矩阵分解等技术,可以加速深度模型的推理,其中,模型量化可以将神经网络中的权值和激活值从原始的浮点类型量化到低位宽(如8比特、4比特、3比特、2比特等)整型。模型量化后得到的量化神经网络模型所需要的储存空间降低了,计算形式也从原始的浮点型运算变为了代价更小的低位宽整型数据的计算。
相关技术中,模型量化的工作往往无法进行实际应用,得到的量化神经网络模型通常无法在硬件上部署。
发明内容
有鉴于此,本申请实施例提供一种神模型量化方法、装置、设备、存储介质及计算机程序产品。
本申请实施例的技术方案是这样实现的:
一方面,本申请实施例提供一种模型量化方法,所述方法包括:
获取待量化的第一网络模型;
基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数;
对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。
另一方面,本申请实施例提供一种模型量化装置,所述装置包括:
第一获取模块,用于获取待量化的第一网络模型;
第一确定模块,用于基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数;
量化模块,用于对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。
再一方面,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的部分或全部步骤。
又一方面,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的部分或全部步骤。
又一方面,本申请实施例提供一种计算机程序,包括计算机可读代码,当所述计算机可读代码在计算机设备中运行时,所述展示设备中的处理器执行用于实现上述方法中的部分或全部步骤。
又一方面,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。
本申请实施例中,获取待量化的第一网络模型;基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数;对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。这样,由于第一网络模型中待量化的处理层以及对每一待量化的处理层进行量化的量化参数是基于设定的部署配置信息确定的,因此,在进行模型量化的过程中充分考虑了部署模型的硬件平台的部署配置信息,从而得到的第二网络模型是在相应的硬件平台上可部署的。
附图说明
图1为本申请实施例提供的一种模型量化方法的实现流程示意图;
图2A为本申请实施例提供的一种模型量化方法的实现流程示意图;
图2B为本申请实施例提供的一种在基本块结构的计算图中插入量化节点的示意图;
图2C为本申请实施例提供的一种在基本块结构的计算图中插入量化节点的示意图;
图2D为本申请实施例提供的一种在基本块结构的计算图中插入量化节点的示意图;
图3A为本申请实施例提供的一种模型量化方法的实现流程示意图;
图3B为本申请实施例提供的一种批量归一化层折叠策略的实现示意图;
图3C为本申请实施例提供的一种批量归一化层折叠策略的实现示意图;
图3D为本申请实施例提供的一种批量归一化层折叠策略的实现示意图;
图3E为本申请实施例提供的一种批量归一化层折叠策略的实现示意图;
图3F为本申请实施例提供的一种批量归一化层折叠策略的实现示意图;
图4为本申请实施例提供的一种模型量化方法的实现流程示意图;
图5为本申请实施例提供的一种模型量化方法的实现流程示意图;
图6为本申请实施例提供的MQBench的应用场景示意图;
图7为本申请实施例提供的一种模型量化装置的组成结构示意图;
图8为本申请实施例提供的一种计算机设备的硬件实体示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图和实施例对本申请的技术方案进一步详细阐述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。
如果申请文件中出现“第一/第二”的类似描述则增加以下的说明,在以下的描述中,所涉及的术语“第一/第二/第三”仅仅是区别类似的对象,不代表针对对象的特定排序,可以理解地,“第一/第二/第三”在允许的情况下可以互换特定的顺序或先后次序,以使这里描述的本申请实施例能够以除了在这里图示或描述的以外的顺序实施。
除非另有定义,本文所使用的所有的技术和科学术语与属于本申请的技术领域的技术人员通常理解的含义相同。本文中所使用的术语只是为了描述本申请的目的,不是旨在限制本申请。
为了更好地理解本申请实施例,首先对相关技术中的模型量化方案进行说明。相关技术中,模型量化方案往往由于忽略了硬件部署的要求,因而无法进行实际应用与部署。一方面,在模型部署到硬件平台后,硬件平台通常会将批量标准化(Batch Normalization,BN)层的计算过程优化到卷积层里面,以避免额外的开销,但相关技术中的BN层是保持完好无损的;另一方面,相关技术中只考虑对卷积层的输入参数和权值参数进行量化,但在模型部署时,神经网络模型的整个计算图都应该被量化,也即除卷积层以外的其它处理层的输入参数、权值参数等也需要进行量化。因而,相关技术中的模型量化方案将不可避免地降低量化算法的可部署性。此外,由于不同的量化算法在不同硬件平台上具有不同的可部署性,因而在学术研究中也无法对不同的量化算法在不同的硬件与量化方式下的表现和鲁棒性进行衡量。
本申请实施例提供一种模型量化方法,该方法可以由计算机设备的处理器执行。其中,计算机设备指的可以是服务器、笔记本电脑、平板电脑、台式计算机、智能电视、机顶盒、移动设备(例如移动电话、便携式视频播放器、个人数字助理、专用消息设备、便携式游戏设备)等具备数据处理能力的设备。图1为本申请实施例提供的一种模型量化方法的实现流程示意图,如图1所示,该方法包括:
步骤S101,获取待量化的第一网络模型。
这里,第一网络模型可以是任意合适的待量化的神经网络模型,可以是全精度的神经网络模型,示例性的,所述第一网络模型可以是32位浮点型参数或者16位浮点型参数的神经网络模型,当然,本实施例对第一网络模型的浮点位数不做限定。在实施时,第一网络模型可以采用任意合适的神经网络结构,包括但不限于ResNet-18、ResNet-50、MobileNetV2、EfficientNet-Lite、RegNet等中的一种或多种。
步骤S102,基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数。
这里,部署配置信息可以包括但不限于部署硬件类型、部署硬件类型采用的推理引擎、部署硬件的型号、与部署硬件类型对应的网络模型参数的量化位宽等中的一种或多种。在实施时,部署配置信息可以是用户预先设定的,也可以是默认的,还可以是从目标部署硬件的配置文件中获取的,这里并不限定。
第一网络模型中可以包括多个处理层,如输入层、卷积层、池化层、下采样层、线性修正单元、全连接层、批量归一化层等中的一种或多种。由于在不同部署环境下,可以对模型量化具有不同的支持能力,因而,基于设定的部署配置信息,可以确定第一网络模型中待量化的至少一个处理层。在实施时,可以根据实际情况采用合适的方式基于设定的部署配置信息确定第一网络模型中待量化的至少一个处理层,本申请实施例对此并不限定。在一些实施方式中,可以根据实际情况预先确定不同部署配置信息与待量化的处理层之间的对应关系,利用设定的部署配置信息查询该对应关系,即可确定第一网络模型中待量化的至少一个处理层。例如,对于第一部署硬件类型或第一推理引擎,可以确定仅对第一网络模型中的卷积层进行量化;对于第二部署硬件类型或第二推理引擎,可以确定对第一网络模型中的每一卷积层、输入层、全连接层进行量化;对于第三推理引擎,可以对第一网络模型中的每一卷积层、输入层、全连接层以及逐元素相加的计算层进行量化。在一些实施方式中,还可以基于设定的部署配置信息,确定第一网络模型中待量化的至少一个处理层中每一处理层中待量化的参数。
对每一处理层进行量化的量化参数可以包括但不限于对该处理层进行量化的过程中所采用的量化尺度的预设精度、量化对称性、量化位宽和量化粒度等中的一种或多种。例如,量化尺度的预设精度可以包括全精度、2的次方的精度等。量化对称性可以是对称量化,也可以是非对称量化。量化位宽可以包括8比特、4比特、3比特、2比特等中的一种。量化粒度可以是层级量化(也即张量级量化)或特征级量化(也即通道级量化)。不同的部署硬件平台所能支持或适用的量化尺度的精度、量化对称性、量化位宽以及量化粒度等量化参数是不同的,基于设定的部署配置信息,即可确定对第一网络模型中待量化的每一处理层进行量化的过程中采用的量化参数。在实施时,本领域技术人员可以根据实际情况采用合适的方式基于设定的部署配置信息确定对第一网络模型中待量化的每一处理层进行量化的量化参数,这里并不限定。在一些实施方式中,可以预先根据实际情况确定不同的部署配置信息与量化参数之间的对应关系,基于设定的部署配置信息查询该对应关系,即可确定对第一网络模型中待量化的每一处理层进行量化的量化参数。
步骤S103,对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。
这里,可以根据实际情况采用任意合适的量化算法对第一网络模型中的每一处理层按照量化参数进行量化,得到量化后的第二网络模型。量化算法可以包括但不限于训练后量化算法、量化感知训练算法等中的一种或多种。训练后量化算法指的是对预训练后的网络模型选择合适的量化操作和校准操作,以实现量化损失的最小化,可以是训练后静态量化,也可以是训练后动态量化。量化感知训练算法是指在网络的量化过程中进行训练,通过量化感知训练,可以使得网络能够适应整型数值的不连续分布,减少量化过程造成的运算精度损失,可以包括但不限于学习步长量化(Learned Step-size Quantization,LSQ)算法、参数化剪裁激活(PArameterized Clipping acTivation,PACT)算法、加法二次幂量化(Additive Powers-of-Two,APoT)算法、可微软量化(Differentiable SoftQuantization,DSQ)、DoReFa-Net训练算法、高精度紧凑型深层神经网络的学习量化(Learned Quantization for Highly Accurate and Compact Deep Neural Networks,LQ-net)算法等。
在一些实施方式中,在对第一网络模型进行量化的实现过程中,可以基于第一网络模型的网络结构提取第一网络模型的计算图,通过在第一网络模型的计算图中插入至少一个量化节点,来对第一网络模型中的至少一个处理层进行量化,以构建第二网络模型的计算图,在第二网络模型的计算图中,对每一待量化的处理层进行量化处理的量化节点采用的量化参数即为对该处理层进行量化的量化参数,基于该第二网络模型的计算图可以得到量化后的第二网络模型。在一些实施方式中,还可以根据实际情况采用任意合适的量化算法和训练数据在第二网络模型的计算图上进行参数训练,得到训练后的第二网络模型的计算图,并基于训练后的第二网络模型的计算图,得到训练后的第二网络模型。
由于在对量化神经网络的计算图进行构建的过程中,不同的部署硬件会考虑不同层次的图优化,从而基于不同的部署配置信息,可以采用不同的量化节点插入策略,在第一网络模型的计算图中插入至少一个量化节点,来构建合适的量化神经网络的计算图(也即第二网络模型的计算图)。第一网络模型的计算图中插入量化节点的位置可以相当于对该位置相应的逻辑节点对应的处理层进行量化,从而确定在第一网络模型的计算图中插入量化节点的位置即相当于确定第一网络模型中待量化的至少一个处理层。
在一些实施例中,所述部署配置信息包括部署硬件类型采用的推理引擎;上述步骤S102中所述的基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层,可以包括:
步骤S111,基于所述推理引擎,确定待量化的处理层类型;
步骤S112,将所述第一网络模型中与所述处理层类型匹配的至少一个处理层确定为待量化的处理层。
这里,部署硬件类型为部署量化后的第二网络模型的目标硬件的硬件类型,不同的部署硬件类型采用的推理引擎可以相同也可以不同,这里并不限定。推理引擎可以包括但不限于TensorRT、ACL、TVM、SNPE或FBGEMM等。在实施时,可以根据实际情况采用合适的方式对部署硬件进行分类,例如,可以根据硬件的生产厂家对硬件进行分类,在这种情况下部署硬件类型即为部署硬件的生产厂家,部署硬件类型采用的推理引擎即为该生产厂家所采用的推理引擎;还可以根据硬件的规格型号进行分类,在这种情况下部署硬件类型即为部署硬件的型号,部署硬件类型采用的推理引擎即为该型号的硬件所采用的推理引擎。
不同的推理引擎可以支持对不同类型的处理层进行量化,处理层类型可以包括但不限于如输入层、卷积层、池化层、下采样层、线性修正单元、全连接层、批量归一化层等中的一种或多种。在一些实施方式中,可以预先确定不同推理引擎与待量化的处理层类型之间的对应关系,基于该对应关系可以确定与部署硬件类型采用的推理引擎对应的待处理的处理层类型。
在确定待量化的处理层类型之后,可以将第一网络模型中的每一处理层与该处理层类型匹配,并将匹配到的至少一个处理层确定为待量化的处理层。
本申请实施例中,获取待量化的第一网络模型;基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数;对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。这样,由于第一网络模型中待量化的处理层以及对每一待量化的处理层进行量化的量化参数是基于设定的部署配置信息确定的,因此,在进行模型量化的过程中充分考虑了部署模型的硬件平台的部署配置信息,从而得到的第二网络模型是在相应的硬件平台上可部署的。
本申请实施例提供一种模型量化方法,该方法可以由计算机设备的处理器执行。如图2A所示,该方法包括:
步骤S201,获取待量化的第一网络模型。
这里,上述步骤S201对应于前述步骤S101,在实施时可以参照前述步骤S101的具体实施方式。
步骤S202,基于设定的部署配置信息,确定所述第一网络模型中每一所述块结构中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数。
这里,神经网络模型的结构可分为多个阶段(stage),每个阶段又可分为多个块(block),每个块又可分为多个处理层(layer)。本实施例中以块(block)结构为单位进行量化处理。第一网络模型包括至少一个块结构,每一所述块结构包括至少一个处理层。
在一些实施方式中,可以基于预先确定部署配置信息与不同块结构中待量化的处理层之间的对应关系,确定与设定的部署配置信息对应的每一块结构中的待量化处理层。
在一些实施方式中,可以针对第一网络模型中的每一个块结构,基于设定的部署配置信息,确定该部署配置信息对应的在计算图中该块结构对应的计算子图中插入伪量化节点的插入策略,从而确定在该块结构中待量化的至少一个处理层。例如,在第一网络模型采用的神经网络结构为ResNet-18/ResNet-34的情况下,针对ResNet-18/ResNet-34中的基本块结构,对于不同的部署配置信息,可以采用如图2B至2D所示的三种不同插入策略在该基本块结构对应的计算子图中插入至少一个伪量化节点。在图2B所示的插入策略中,在计算子图中每一卷积层Conv 10的输入处插入伪量化节点FakeQuant 20,其中,伪量化节点FakeQuant 20包括量化处理节点Quantization 21和反量化节点Dequantization22,从而在该计算子图对应的基本块结构中待量化的处理层为该基本块结构中的每一卷积层。在图2C所示的插入策略中,计算子图的输入为已量化的数据(也即卷积层Conv 10-1和Conv10-2的输入),在计算子图中卷积层Conv 10-3的输入处、逐元素相加层elementwise-add30的一个输入处以及计算子图的输出处插入伪量化节点FakeQuant 20,从而在该计算子图对应的基本块结构中待量化的处理层为该基本块结构中每一卷积层、逐元素相加层(仅对单侧输入进行量化)以及该基本块结构的输出层。在图2D所示的插入策略中,计算子图的输入为已量化的数据/>(也即卷积层Conv 10-1和Conv 10-2的输入),在计算子图中卷积层Conv 10-3的输入处、逐元素相加层elementwise-add 30的每一个输入处以及计算子图的输出处均插入伪量化节点FakeQuant 20,从而在该计算子图对应的基本块结构中待量化的处理层为该基本块结构中每一卷积层、逐元素相加层(仅对两侧输入均进行量化)以及该基本块结构的输出层。
步骤S203,对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。
这里,上述步骤S203对应于前述步骤S103,在实施时可以参照前述步骤S103的具体实施方式。
本申请实施例中,第一网络模型包括至少一个块结构,每一块结构包括至少一个处理层,基于设定的部署配置信息,确定第一网络模型中每一块结构中待量化的至少一个处理层以及对每一处理层进行量化的量化参数,对第一网络模型中的每一待量化的处理层按照该量化参数进行量化,得到第二网络模型。这样,可以对第一网络模型中的全部块结构进行量化,从而可以实现整个网络模型的量化。
本申请实施例提供一种模型量化方法,该方法可以由计算机设备的处理器执行。如图3A所示,该方法包括:
步骤S301,获取待量化的第一网络模型。
步骤S302,基于设定的部署硬件类型采用的推理引擎,确定待量化的处理层类型。
步骤S303,将所述第一网络模型中与所述处理层类型匹配的至少一个处理层确定为待量化的处理层。
步骤S304,基于所述推理引擎,确定对每一所述处理层进行量化的量化参数。
这里,上述步骤S301至步骤S304对应于前述步骤S101至步骤S102,在实施时可以参照前述步骤S101至步骤S102的具体实施方式。
步骤S305,将所述第一网络模型中的至少一个批量归一化层和每一所述批量归一化层依赖的卷积层确定为待量化的处理层。
这里,批量归一化层依赖的卷积层可以是该批量归一化层之前与该批量归一化层连接的卷积层。
步骤S306,获取设定的批量归一化层折叠策略。
这里,批量归一化折叠策略指的是将神经网络模型中的批量归一化层折叠至该批量归一化层依赖的卷积层中的策略。在神经网络模型中,批量归一化层旨在减少内部协变量偏移并平滑损失,以实现快速收敛。批量归一化层为每个卷积层输出引入了两步线性变换,即缩放和平移。在实施时,本领域技术人员可以根据实际情况设定合适的批量归一化层折叠策略,本申请实施例对此并不限定。在一些实施例中,设定的批量归一化层折叠策略可以是预设的与部署配置信息对应的批量归一化层折叠策略。
步骤S307,基于所述批量归一化层折叠策略,将所述第一网络模型中的每一所述批量归一化层折叠至所述批量归一化层依赖的卷积层中,得到折叠后的所述第一网络模型。
步骤S308,对折叠后的所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。
在一些实施例中,所述批量归一化层折叠策略包括批量归一化层的移除状态、系数更新算法、待合并至权重中的统计参数、待合并至偏移中的统计参数;所述待合并至权重中的统计参数包括批量归一化层依赖的卷积层的运行统计数据或当前批次的统计数据,所述待合并至偏移中的统计参数包括批量归一化层依赖的卷积层的运行统计数据或当前批次的统计数据;上述步骤S307中所述的基于所述批量归一化层折叠策略,将所述第一网络模型中的每一所述批量归一化层折叠至所述批量归一化层依赖的卷积层中,可以包括:
步骤S311,确定第一网络模型中的至少一个批量归一化层中每一所述批量归一化层的缩放系数和平移系数;
这里,可以基于每一批量归一化层的参数确定该批量归一化层的缩放系数和平移系数。
步骤S312,基于所述系数更新算法,对每一所述批量归一化层的缩放系数和平移系数进行更新,得到每一所述批量归一化层的更新后的缩放系数和平移系数。
这里,系数更新算法为设定的用于对批量归一化层的缩放系数和平移系数进行更新的任意合适的算法,可以包括但不限于梯度下降法、模拟退火法、遗传算法等中的一种或多种。在一些实施方式中,系数更新算法也可以是不更新,从而可以不对批量归一化层的缩放系数和平移系数进行更新。
步骤S313,针对每一所述批量归一化层,获取所述批量归一化层中待合并至权重中的统计参数以及待合并至偏移中的统计参数,并将所述批量归一化层的更新后的缩放系数和所述待合并至权重中的统计参数合并至所述批量归一化层依赖的卷积层的权重中,将所述批量归一化层的更新后的缩放系数、平移系数以及所述待合并至偏移中的统计参数合并至所述卷积层的偏移中。
这里,待合并至权重中的统计参数可以包括批量归一化层依赖的卷积层的运行统计数据或当前批次的统计数据,待合并至偏移中的统计参数也可以包括批量归一化层依赖的卷积层的运行统计数据或当前批次的统计数据。
运行统计数据为对卷积层历史运行过程中的输出数据进行统计得到的统计数据,可以包括但不限于历史输出数据的均值、方差、滑动平均值等中的一种或多种。当前批次的统计数据为对卷积层输出数据中当前批次的数据进行统计得到的统计数据,可以包括但不限于当前批次数据的均值、方差等中的一种或多种。在实施时,卷积层的当前批次的统计数据可以通过在该卷积层中使用全精度的权重进行卷积计算得到。
在一些实施方式中,待合并至权重中的统计参数可以包括批量归一化层依赖的卷积层的历史输出数据的方差,待合并至权重中的统计参数可以包括批量归一化层依赖的卷积层的历史输出数据的均值、方差。可以将批量归一化层的更新后的缩放系数和批量归一化层依赖的卷积层的历史输出数据的方差合并至所述批量归一化层依赖的卷积层的权重中,将批量归一化层的更新后的缩放系数、平移系数以及批量归一化层依赖的卷积层的历史输出数据的均值、方差合并至所述卷积层的偏移中。
在一些实施方式中,待合并至权重中的统计参数可以包括批量归一化层依赖的卷积层的当前批次数据的均值,待合并至权重中的统计参数可以包括批量归一化层依赖的卷积层的当前批次数据的均值、方差。可以将批量归一化层的更新后的缩放系数和批量归一化层依赖的卷积层的当前批次数据的方差合并至所述批量归一化层依赖的卷积层的权重中,将批量归一化层的更新后的缩放系数、平移系数以及批量归一化层依赖的卷积层的当前批次数据的均值、方差合并至所述卷积层的偏移中。
在一些实施方式中,待合并至权重中的统计参数可以包括批量归一化层依赖的卷积层的历史输出数据的方差,待合并至权重中的统计参数可以包括批量归一化层依赖的卷积层的当前批次数据的均值、方差。可以将批量归一化层的更新后的缩放系数和批量归一化层依赖的卷积层的历史输出数据的方差合并至所述批量归一化层依赖的卷积层的权重中,将批量归一化层的更新后的缩放系数、平移系数以及批量归一化层依赖的卷积层的当前批次数据的均值、方差合并至所述卷积层的偏移中。
步骤S314,在所述批量归一化层的移除状态为移除的情况下,将每一所述批量归一化层从所述第一网络模型中移除。
在一些实施例中,在推理中,可以采用公式(1)所示的方式将批量归一化层的缩放系数和平移系数以及批量归一化层依赖的卷积层的运行统计数据合并到该卷积层的权重和偏移中,实现将批量归一化层执行的线性变换折叠至相应的卷积层中:
其中,wfold、bfold分别为卷积层中合并后的权重和偏移,μ,σ2分别是对卷积层运行过程中的输出数据进行统计得到的滑动平均值和方差;γ,β分别是批量归一化层的缩放系数和平移系数。ε是为了数值稳定性设置的极小的非零值,可以防止出现除数为0的情况。如果在批量归一化层折叠之后对卷积层进行量化,在推理过程中将不会有额外的浮点运算。
在一些实施例中,批量归一化层折叠策略可以包括但不限于以下之一:
策略1:参见图3B,该策略中利用上述公式(1)将批量归一化层中的缩放系数和平移系数合并到该批量归一化层依赖的卷积层Conv 310的权重wfold和偏移bfold中,并完全去除该批量归一化层;
策略2:参见图3C,该策略中利用上述公式(1)将批量归一化层中的缩放系数和平移系数合并到该批量归一化层依赖的卷积层Conv 310的权重wfold和偏移bfold中,并完全去除该批量归一化层,且在量化训练过程中不更新卷积层的运行统计数据,但是,γ,β可以用随机梯度下降法(Stochastic gradient descent,SGD)更新。在该策略中即使没有更新统计数据,仍然可以平滑损失情况,并能通过减少统计数据的过程显著减少量化训练的时间。
策略3:参见图3D,该策略中在量化训练过程中可以更新卷积层的运行统计数据,在量化训练过程中卷积会计算两次,这会导致额外的开销,其中,第一次卷积(对应图中的卷积层Conv 320)是使用全精度的权重计算当前批次的均值和方差/>然后,利用上述公式(1)将当前批次的均值/>方差/>批量归一化层中的缩放系数和平移系数合并到该批量归一化层依赖的卷积层Conv 310的权重/>和偏移/>中,并完全去除该批量归一化层。
策略4:参见图3E,该策略中在训练过程中也计算了两次卷积。第一次卷积(对应图中的卷积层Conv 320)和策略3一样,会估计当前批次的均值和方差/>在该策略4中,权重将与运行统计数据一起折叠,利用上述公式(1)将运行统计数据中的方差σ2、批量归一化层中的缩放系数合并到该批量归一化层依赖的卷积层Conv 310的权重wfold中,以避免当前批次的统计数据出现意外波动,将当前批次的均值/>方差/>批量归一化层中的缩放系数和平移系数合并到该批量归一化层依赖的卷积层Conv 310的偏移/>中,并完全去除该批量归一化层,此外,批量方差因子/>将用于在第二次卷积后重新缩放输出。
策略5:参见图3F,该策略中不会采用两次卷积,而是在量化卷积(对应图中的卷积层Conv 310)之后明确添加批量归一化层BN 330。这种策略带来的好处之一是当前批次的统计数据是基于量化的权重计算的。在推理过程中,卷积层输出的重新缩放可以被批量归一化层中和。
需要说明的是,上述策略2至5均可以转换为策略1。在一些实施方式中,可以从预设的多种批量归一化折叠策略(如上述策略1至5)中设定一种批量归一化折叠策略,并基于设定的批量归一化层折叠策略,对所述第一网络模型中的至少一个批量归一化层进行折叠,得到折叠后的所述第一网络模型。
在一些实施例中,上述步骤S306可以包括:
步骤S321,基于所述推理引擎,从设定的多种批量归一化层折叠策略中确定目标的批量归一化层折叠策略。
这里,设定的多种批量归一化层折叠策略可以是预先根据实际情况确定的,可以包括但不限于上述策略1至5中的任一种。目标的批量归一化层折叠策略是基于推理引擎从设定的多种批量归一化层折叠策略中确定的。不同的推理引擎可以支持不同的批量归一化层折叠策略,也可以支持相同的批量归一化层折叠策略。在实施时,可以根据推理引擎对批量归一化层折叠策略的支持能力,从设定的多种批量归一化层折叠策略中确定目标的批量归一化层折叠策略。这样,可以进一步提高量化后的第二网络模型在采用设定的推理引擎的部署硬件上部署后的性能。
在一些实施方式中,可以预先基于不同推理引擎对不同批量归一化层折叠策略的支持能力,确定推理引擎与批量归一化层折叠策略之间的对应关系,基于设定的推理引擎查询该对应关系,可以设定的多种批量归一化层折叠策略中确定目标的批量归一化层折叠策略。
本申请实施例中,获取设定的批量归一化层折叠策略,基于所述批量归一化层折叠策略,将所述第一网络模型中的每一所述批量归一化层折叠至所述批量归一化层依赖的卷积层中,得到折叠后的所述第一网络模型,并对折叠后的所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。这样,在批量归一化层折叠之后对卷积层进行量化,在推理过程中将不会有额外的浮点运算,从而可以进一步加速量化后的第二网络模型的推理速度。
本申请实施例提供一种模型量化方法,该方法可以由计算机设备的处理器执行。如图4所示,该方法包括:
步骤S401,获取待量化的第一网络模型。
步骤S402,基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数。
这里,上述步骤S401至步骤S402分别对应于前述步骤S101至步骤S102,在实施时可以参照前述步骤S101至步骤S102的具体实施方式。
步骤S403,基于设定的量化算法和第一训练数据集,按照所述量化参数,对所述第一网络模型中的每一所述处理层进行量化,得到第二网络模型。
这里,用户可以根据实际情况设定任意合适的量化算法,量化算法可以是训练后量化算法,也可以是量化感知训练算法,这里并不限定。
第一训练数据集可以是预先根据第二网络模型的目标任务确定的合适的训练数据集,可以是图像数据集、点云数据集或语音数据等,这里并不限定。
在一些实施方式中,量化算法为训练后量化算法,基于所述训练后量化算法,按照所述量化参数,对所述第一网络模型中的每一所述处理层进行量化,得到量化后的第二网络模型;基于所述第一训练数据集,对量化后的第二网络模型中的模型参数进行校准,得到校准后的第二网络模型。
在一些实施方式中,量化算法为量化感知训练算法,可以基于所述量化感知训练算法和所述第一训练数据集,按照所述量化参数,多所述第一网络模型中的每一所述处理层的参数进行至少一次量化感知训练,得到已训练的量化后的第二网络模型。
在一些实施方式中,可以在对第一网络模型进行量化之前,对该第一网络模型进行预训练,将预训练后的第一网络模型作为待量化的第一网络模型。
本申请实施例中,基于设定的量化算法和第一训练数据集,按照量化参数,对第一网络模型中的每一待量化的处理层进行量化,得到第二网络模型。这样,可以有效复现设定的量化算法。
在一些实施例中,所述量化算法包括量化感知训练算法,上述步骤S403还可以包括:
步骤S411,按照所述量化参数,为所述第一网络模型中的每一所述处理层设置一个伪量化器,得到第三网络模型。
这里,伪量化器可以在量化感知训练过程中进行量化模拟,以方便网络感知量化带来的损失,从而可以为第一网络模型中的每一待量化的处理层设置一个伪量化器。伪量化器的结构可以基于量化参数确定,可以是对称量化器也可以是非对称量化器,可以是均匀量化器也可以是非均匀量化器,可以是基于学习的量化器也可以是基于规则的量化器,还可以是直接使用启发式计算量化步长的量化器,这里并不限定。可以将设置了伪量化器的第一网络模型确定为第三网络模型。
步骤S412,基于设定的量化感知训练算法和第一训练数据集,对所述第三网络模型中的每一所述处理层的参数进行至少一次量化感知训练,得到第二网络模型。
这里,本领域技术人员可以在实施时根据实际情况设定合适的量化感知训练算法,例如LSQ算法、PACT算法、APoT算法、DSQ算法、DoReFa-Net训练算法、LQ-net算法等中的一种或多种,这里并不限定。在一些实施方式中,可以从预设的多种量化感知训练算法中设定一种量化感知训练算法。
在一些实施例中,所述量化参数包括量化尺度的预设精度、量化对称性、量化位宽和量化粒度,所述量化对称性包括对称量化或非对称量化,所述量化粒度包括层级量化或特征级量化。所述伪量化器用于执行如下步骤S421至步骤S424:
步骤S421,基于所述量化位宽确定处理层参数的量化值范围。
这里,量化位宽为对第三网络模型中的每一待量化的处理层的参数进行训练的过程中对浮点型参数进行量化得到的整型数据的比特位宽,如8比特、4比特、3比特、2比特等。量化位宽可以是根据设定的部署配置信息确定的,也可以是用户直接设定的。第三网络模型中不同的处理层可以采用相同的量化位宽,也可以采用不同的量化位宽。
处理层参数可以是待量化的处理层的权重值、激活值、输入数据、输出数据等中的一种或多种待量化的参数,处理层参数的量化值范围为该参数量化后的取值范围。在实施时,处理层参数的量化值范围可以是基于量化位宽确定的,例如,处理层参数可以包括权重值和激活值,在量化位宽为k的情况下,权重值可以被量化为[-2k-1,2k-1-1]范围内的有符号整型数值,激活值可以被量化为[0,2k-1]范围内的无符号整型数值,因此,权重值的量化值范围可以为[-2k-1,2k-1-1],激活值的量化值范围可以为[0,2k-1]。
步骤S422,确定满足所述预设精度的量化尺度和满足所述量化对称性的量化零点。
这里,量化尺度为量化过程中对待量化的全精度数值进行缩放的系数。量化尺度的预设精度可以包括但不限于全精度、2的次方精度等中的一种。
量化对称性用于表征待量化的全精度数值的取值范围是否关于0对称。在均匀量化中,全精度数值的零点会被量化为一个整型的数值,该数值称为量化零点。在量化零点为0的情况下,表示待量化的全精度数值的取值范围是关于0对称,也即该均匀量化为对称量化;在量化零点不为0的情况下,表示待量化的全精度数值的取值范围关于0不对称,也即该均匀量化为非对称量化。
在一些实施方式中,可以根据实际情况为伪量化器设置一个满足预设精度的固定的量化尺度,以及设置一个满足所述量化对称性的固定的量化零点。例如,在量化尺度的预设精度为全精度的情况下,可以为伪量化器设置一个合适的全精度的数值作为量化尺度。在量化对称性为对称的情况下,可以将量化零点设置为0;在量化对称性为非对称的情况下,可以将量化零点设置为一个合适的非零数,如1、-2等。
在一些实施方式中,可以通过统计待量化的全精度数值在模型运行过程中的取值范围,基于该取值范围和对应的量化值范围,可以确定满足预设精度的量化尺度和满足量化对称性的量化零点。在一些实施方式中,还可以在模型训练过程中,对量化尺度和量化零点进行不断调整。
步骤S423,基于所述量化粒度,在所述量化值范围内,采用量化尺度和量化零点对待量化的处理层参数进行均匀量化处理,得到量化后的所述处理层参数。
这里,量化粒度指的是在量化网络模型中共享量化值范围、量化尺度、量化零点等参数的粒度,可以包括层级量化(也即张量级量化)或特征级量化(也即通道级量化)等,其中,层级量化表示对同一处理层中待量化的处理层参数采用相同的共享量化值范围、量化尺度、量化零点等参数,特征级量化表示对同一处理层中不同的特征对应的待量化的处理层参数采用不同的共享量化值范围、量化尺度、量化零点等参数。
在一些实施方式中,在量化值范围为[Nmin,Nmax],其中,Nmin为量化值范围中的最小量化值,Nmax为量化值范围中的最大量化值,量化尺度为s,量化零点为z的情况下,可以采用如下公式(2)所示的方式对待量化的处理层参数进行均匀量化处理:
其中,w表示该处理层参数对应的浮点值,而为该处理层参数的量化值,函数表示将/>限制在Nmin至Nmax之间,在/>大于Nmax的情况下,该函数的值为Nmax,在/>小于Nmin的情况下,该函数的值为Nmin,在/>不大于Nmax且不小于Nmin的情况下,该函数的值为/> 表示对输入的值进行四舍五入取整。
步骤S424,基于所述量化尺度和所述量化零点,对量化后的所述处理层参数进行反均匀量化处理,得到反量化后的所述处理层参数。
这里,在一些实施方式中,在量化尺度为s,量化零点为z的情况下,可以采用如下公式(3)所示的方式对量化后的处理层参数进行反均匀量化处理:
在上述实施例中,可以基于设定的部署配置信息确定对第一网络模型中每一处理层进行量化的量化参数,量化参数包括量化尺度的预设精度、量化对称性、量化位宽和量化粒度,所述量化对称性包括对称量化或非对称量化,所述量化粒度包括层级量化或特征级量化。这样,可以个人那件部署硬件的配置情况采用硬件感知的量化器进行模型量化,从而量化后的第二网络模型可以更好地满足部署硬件的部署要求。此外,可以支持多种类型的量化器,从而可以为更多类型的部署硬件量化可部署的第二网络模型。
在一些实施例中,上述步骤S403可以包括:
步骤S431,确定预设的与所述第一网络模型采用的神经网络结构对应的训练超参数;其中,对于预设的多种部署配置信息中的每一所述部署配置信息,所述训练超参数是相同的。
这里,对于采用相同的神经网络结构的网络模型,采用统一的训练超参数,训练超参数可以包括但不限于微调时长(代数)、学习率、参数优化算法、权重衰减等中的一种或多种。预设的多种部署配置信息可以包括预先设定的至少两个任意合适的部署配置信息,这里并不限定。对于不同的部署配置信息,在对采用相同的神经网络结构的网络模型进行量化训练的过程中,所采用的训练超参数均相同。在采用不同的量化算法对采用相同的神经网络结构的网络模型进行量化训练的过程中,所采用的训练超参数也均相同。
在实施时,可以预先通过实验或分析为至少一种神经网络结构确定一组合适的训练超参数,基于第一网络模型采用的神经网络结构,可以确定预设的与该神经网络结构对应的训练超参数。本领域技术人员可以根据实际情况为至少一种神经网络结构确定合适的训练超参数,本申请实施例对此并不限定。
例如,如下表1提供了一种为神经网络结构ResNet-18、ResNet-50、EffNet、MbV2、RegNet分别预设的训练超参数的示例,其中,对于采用ResNet-18的第一网络模型,预设的学习率为0.004、权重衰减为10-4、批大小为64、图形处理器(Graphics processing unit,GPU)数量为8;对于采用ResNet-50的第一网络模型,预设的学习率为0.004、权重衰减为10-4、批大小为16、GPU数量为16;对于采用EffNet和MbV2的第一网络模型可以预设相同的训练超参数,预设的学习率为0.01、权重衰减为10-5*、批大小为32、GPU数量为16;对于采用RegNet的第一网络模型,预设的学习率为0.004、权重衰减为4×10-5,批大小为32、GPU数量为16。其中,*代表批量归一化层的权重衰减为0。
表1不同神经网络结构对应的训练超参数示例表
在一些实施例中,可以对训练数据采用统一的数据预置处理,包括随机尺寸裁剪到224分辨率,随机水平翻转,对图像进行颜色抖动,如亮度偏移0.2、对比度偏移0.2,饱和度偏移0.2,色调偏移0.1。在训练中,将测试数据居中并裁剪为224分辨率,并使用0.1标签平滑来添加正则化。所有模型都训练100个epoch(指将所有训练样本训练一次,所有训练样本进行了一次正向传播和反向传播),在第一个epoch中进行了线性热身。学习率通过余弦退火策略衰减。使用SGD优化器进行训练,并用动量参数为0.9的牛顿动量(Nesterov)进行更新。
步骤S432,利用设定的第一训练数据集,基于所述量化算法和所述训练超参数,对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二量化网络模型。
在上述实施例中,对于采用相同的神经网络结构的网络模型,采用统一的训练超参数,这样,可以在具有相同的神经网络结构的多种第一网络模型以及多种量化算法之间共享模型训练的技巧,从而可以更好地复现不同的量化算法,提高量化算法的精度。
本申请实施例提供一种模型量化方法,该方法可以由计算机设备的处理器执行。如图5所示,该方法包括:
步骤S501,基于至少一种部署配置信息,对设定的神经网络结构中的处理层进行调整,得到至少一个调整后的神经网络结构。
这里,预设的神经网络结构可以是用户根据实际情况预先设定的,也可以是默认的,这里并不限定。
至少一种部署配置信息可以是用户预先设定的或者默认的一种或多种部署配置信息。由于不同的部署硬件对神经网络结构中不同处理层的量化支持能力存在差异。在实施时,针对每一种部署配置信息,可以根据该部署配置信息对应的部署硬件对神经网络结构中不同处理层的实际的量化支持情况,采用合适的方式对设定的神经网络结构中的至少一个处理层进行调整,得到调整后的神经网络结构。例如,对于量化支持能力不高的部署硬件类型,在设定的神经网络结构为EfficientNet的情况下,可以移除网络结构中的挤压和激励块,并将快速激活层替换为ReLU6(Rectified liner unit,线性修正单元)层,得到EfficientNet的轻量(Lite)版本,从而可以在部署硬件上获得更好的整型数值支持。
步骤S502,基于至少一个所述调整后的神经网络结构,创建至少一个第一网络模型。
这里,可以针对至少一个调整后的神经网络结构中的每一神经网络结构分别创建一个第一网络模型。在实施时,本领域技术人员可以根据实际业务需求基于调整后的神经网络结构创建合适的第一网络模型,这里并不限定。
步骤S503,基于与所述设定的神经网络结构对应的预设模型参数,对至少一个所述第一网络模型的参数进行初始化,得到至少一个初始化后的第一网络模型。
这里,对于采用相同的神经网络结构或采用基于相同的神经网络结构调整后的神经网络结构的第一网络模型,可以采用统一的预设模型参数对该第一网络模型的参数进行初始化,得到至少一个初始化后的第一网络模型。预设模型参数可以包括第一网络模型中各参数的预先设定的初始值,也可以包括对第一网络模型进行预训练后得到的训练好的模型参数,这里并不限定。
步骤S504,基于设定的部署配置信息,从所述至少一个初始化后的第一网络模型中确定待量化的第一网络模型。
这里,每一种部署配置信息可以对应一个初始化后的第一网络模型,基于设定的部署配置信息,可以确定与该部署配置信息对应的初始化后的第一网络模型,并将该初始化后的第一网络模型确定为待量化的第一网络模型。
步骤S505,基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数。
步骤S506,对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。
这里,上述步骤S505至步骤S506分别对应于前述步骤S102至步骤S103,在实施时可以参照前述步骤S102至步骤S103的具体实施方式。
本申请实施例中,基于至少一种部署配置信息,对设定的神经网络结构中的处理层进行调整,得到至少一个调整后的神经网络结构,基于至少一个调整后的神经网络结构,创建至少一个第一网络模型,基于与设定的神经网络结构对应的预设模型参数,对至少一个第一网络模型的参数进行初始化,得到至少一个初始化后的第一网络模型,并基于设定的部署配置信息,从至少一个初始化后的第一网络模型中确定待量化的第一网络模型。这样,一方面,可以待量化的第一网络模型是基于设定的部署配置信息,对设定的神经网络结构中的处理层进行调整后得到的神经网络结构创建的,从而在量化后得到的第二网络模型在部署至采用该设定的部署配置信息的部署硬件后可以得到更好的量化支持;另一方面,通过对采用相同的神经网络结构的第一网络模型,采用统一的预设模型参数进行初始化,可以减少采用不同初始化方式导致的初始化不一致,从而可以提高不同量化算法对同一网络结构的不同神经网络模型进行量化的可比性。
在一些实施例中,在上述步骤S503之前,所述方法还包括:
步骤S511,获取预设的与所述神经网络结构对应的预训练模型;所述预训练模型在输出层之前的结构与所述神经网络结构相同。
这里,预训练模型可以是预先基于该神经网络结构创建的任意合适的神经网络模型。
步骤S512,利用设定的第二训练数据集,对所述预训练模型的参数进行训练,得到已训练的所述预训练模型。
这里,第二训练数据集可以是预先根据预训练模型的目标任务确定的合适的训练数据集,可以是图像数据集、点云数据集或语音数据等,这里并不限定。
步骤S513,将已训练的所述预训练模型的参数确定为所述预设模型参数。
这里,对于采用相同的神经网络结构的第一网络模型,可以采用统一的预训练模型对该第一网络模型的参数进行预训练,并将训练好的预训练模型的参数作为预设模型参数,用于对该第一网络模型的参数进行初始化。这样,在对第一网络模型进行量化的过程中只需对量化后的参数进行简单的校准或微调,即可得到性能较好的量化后的第二网络模型。从而可以提高模型量化的效率,并能进一步提高量化后的第二网络模型的精度。
在一些实施例中,上述步骤S501可以包括:
步骤S521,从预设的多种神经网络结构中确定目标神经网络结构。
这里,可以预先设定多种可选的神经网络结构,用户可以根据实际业务需求从预设的多种神经网络结构中确定合适的目标神经网络结构,这里并不限定。
步骤S522,基于至少一种部署配置信息,对所述目标神经网络结构中的处理层进行调整,得到至少一个调整后的神经网络结构。
在上述实施例中,可以提供多种可选的神经网络结构用于创建初始的第一网络模型,这样,可以更好地支持用户的不同业务需求。
相关技术中,对于面向硬件可部署的不同量化算法,部署在目标硬件上运行时存在着巨大的精度差距。
本申请实施例提供一种面向可复现与可部署的模型量化算法库(以下称为MQBench),该模型量化算法库可以用于评估、分析模型量化算法的可复现性与可部署性,为实际应用中量化模型的部署提供了可选择的多种不同的部署硬件类型,包括中央处理器(central processing unit,CPU)、GPU、专用集成电路(Application SpecificIntegrated Circuit,ASIC)、数字信号处理器(Digital Signal Process,DSP),并在统一的训练配置下评估了大量最先进的量化算法。用户可以在图像分类、目标检测等任务中使用MQBench对训练好的全精度网络模型进行量化,得到可部署到目标硬件上运行的量化网络模型。在使用MQBench进行模型量化的过程中只需要用户提供相应的训练数据集以及目标硬件的部署配置信息(如部署硬件类型、部署硬件类型采用的推理引擎、部署硬件类型对应的量化位宽等)和量化算法的配置信息(如量化算法、微调时长、微调训练代数、训练超参数等)。
在一些实施方式中,可以使用Pytorch深度学习引擎实现MQBench,并支持torch.fx(也称为FX)特性。FX包含一个符号跟踪器、一个中间表示和Python代码生成,从而可以允许进行更深入的元编程。本申请实施例可以在MQBench中实现量化算法和硬件感知配置,只需要一个应用程序编程接口(Application Programming Interface,API)调用,就可以将全精度网络模型转换为量化网络模型。例如,可以采用如下示例的代码调用API,将训练好的全精度网络模型转换为量化网络模型:
1)引入torch.quantization.quantize_fx包:
import torch.quantization.quantize_fx as quantize_fx;
2)基于设定的网络结构self.config.model,创建全精度网络模型model,并加载预训练好的参数对全精度网络模型进行初始化:
model=model_entry(self.config.model,pretrained=True);
3)获取量化算法的配置信息qparams和目标硬件的部署配置信息backend_params:
model_qconfig=get_qconfig(**qparams,**backend_params);
4)获取设定的批量归一化层折叠策略foldbn_strategy:
foldbn_config=get_foldbn_config(foldbn_strategy);
5)调用模型量化的API quantize_fx.prepare_qat_fx对全精度网络模型model进行量化,得到量化网络模型qModel:
qModel=quantize_fx.prepare_qat_fx(model,{“”:model_qconfig},foldbn_config)。
在一些实施方式中,在调用quantize_fx.prepare_qat_fx之后,可以对量化网络模型qModel进行微调、校准等优化。
MQBench就像一座桥梁,连接量化算法和部署硬件。图6为本申请实施例提供的MQBench的应用场景示意图,如图6所示,MQBench 60中主要提供量化算法的可复现能力61和硬件平台的可部署能力62,量化算法的可复现能力61可以支持多种量化算法70,包括量化感知训练算法71和训练后量化算法72,硬件平台的可部署能力62可以支持量化算法在不同的部署硬件80上的部署,包括CPU 81、GPU 82、ASIC 83、DSP 84。下面从模型量化的可复现性和可部署性两个方面对MQBench进行说明。
1)可复现性:
MQBench在模型量化的可复现性方面主要体现在如下4个维度:
硬件感知量化器:针对不同硬件(如CPU、GPU、ASIC及DSP等),MQBench对硬件所采用的推理引擎库(如TVM、TensorRT、ACL及SNPE等)的计算图模式做了匹配支持,可以基于设定的推理引擎库自动匹配计算图中量化节点的插入位置,其中,一个硬件类型对应一种推理引擎,不同的硬件类型可以对应相同的推理引擎。MQBench支持5个通用软件库(也即推理引擎),包括用于图形处理单元(GPU)推理的TensorRT、用于应用专用集成电路(ASIC)推理的ACL、用于移动数字信号处理器(DSP)推理的SNPE、用于ARM中央处理器(CPU)的TVM、以及用于X86服务器端CPU推理的FBGEMM。每个推理引擎对应一种量化器。用户可以根据实际应用场景从这5个推理引擎中选择合适的推理引擎用于进行模型部署,MQBench可以根据选定的推理引擎确定全精度网络模型中待量化的至少一个处理层以及相应的硬件感知量化器。
量化算法:MQBench复现了目前SOTA(State-Of-The-Art,指目前最好/最先进的模型)的多种量化算法,包含基于学习策略(learning-based)的LSQ、APoT、量化区间学习(Quantization Interval Learning,QIL)算法、PACT,以及基于规则策略的DSQ、LQ-Net、DoReFa。用户可以根据实际应用场景从MQBench复现的多种量化算法中选择合适的量化算法用于进行模型量化,MQBench可以根据选定的量化算法对待量化的全精度网络模型进行量化。
神经网络结构:MQBench支持的神经网络结构包括ResNet-18、ResNet-50、MobileNetV2、Efficient-Net(利用Efficient-Net的Lite版本,并将swish激活替换为ReLU6,以便在硬件上提供更好的整型数字支持)以及具有组卷积的神经网络结构RegNetX-600MF。
量化位宽:MQBench支持8比特、4比特、3比特、2比特等多种量化位宽。在一些实施方式中,可以对训练后量化算法采用8比特的量化位宽,对量化感知训练算法采用4比特的量化位宽。
训练设置:在MQBench中,对所有量化算法都采用了微调的方式进行参数训练,对于采用相同的神经网络结构的全精度网络模型都采用统一的预训练模型进行参数初始化,减少了初始化阶段引入的不一致性。
2)可部署性:
MQBench在模型量化的可部署性方面进行了如下优化:
BN层的折叠:MQBench支持5种BN层折叠策略,并能支持根据配置的BN层折叠策略将BN层的参数折叠进相应的卷积层。用户可以根据实际应用场景从这5种BN层折叠策略中选择合适的策略。
块结构的计算图:相关技术中的模型量化方案只考虑量化卷积或全连接层的输入和权重,然而,神经网络架构还可以包括其他操作,如神经网络架构ResNet中的逐元素相加、神经网络架构InceptionV3中的串联等。在MQBench中针对不同推理引擎考虑不同的计算图优化级别,基于设定的推理引擎自动匹配计算图中量化节点的插入位置,从而对应不同的计算图优化级别,以构建相应的量化神经网络的计算图。
本申请实施例提供的面向可复现与可部署的模型量化算法库MQBench与相关技术中的模型量化开源库相比,至少存在以下改进:
1)对于采用相同的神经网络结构的网络模型,采用统一的训练超参数进行微调,可以在具有相同的神经网络结构的多种第一网络模型以及多种量化算法之间共享模型训练的技巧,提高量化算法的精度;
2)对于采用相同的神经网络结构的全精度网络模型都采用统一的预训练模型进行参数初始化,可以减少初始化阶段引入的不一致性;
3)支持多种可配置的神经网络结构;
4)支持多种可配置的部署硬件类型和/或推理引擎;
5)采用硬件感知量化器,可以提高量化网络模型的可部署性以及在实际部署场景下的精度;
6)支持多种可配置的BN层折叠策略;
7)针对不同推理引擎考虑不同的计算图优化级别。
图7为本申请实施例提供的一种模型量化装置的组成结构示意图,如图7所示,模型量化装置700包括:第一获取模块710、第一确定模块720和量化模块730,其中:
第一获取模块710,用于获取待量化的第一网络模型;
第一确定模块720,用于基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数;
量化模块730,用于对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。
在一些实施例中,所述第一网络模型包括至少一个块结构,每一所述块结构包括至少一个处理层;所述第一确定模块还用于:基于设定的部署配置信息,确定所述第一网络模型中每一所述块结构中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数。
在一些实施例中,所述部署配置信息包括部署硬件类型采用的推理引擎;所述第一确定模块还用于:基于所述推理引擎,确定待量化的处理层类型;将所述第一网络模型中与所述处理层类型匹配的至少一个处理层确定为待量化的处理层。
在一些实施例中,所述处理层类型包括卷积层和批量归一化层;所述第一确定模块还用于:将所述第一网络模型中的至少一个批量归一化层和每一所述批量归一化层依赖的卷积层确定为待量化的处理层;获取设定的批量归一化层折叠策略;基于所述批量归一化层折叠策略,将所述第一网络模型中的每一所述批量归一化层折叠至所述批量归一化层依赖的卷积层中,得到折叠后的所述第一网络模型;所述量化模块还用于:对折叠后的所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。
在一些实施例中,所述批量归一化层折叠策略包括批量归一化层的移除状态、系数更新算法、待合并至权重中的统计参数、待合并至偏移中的统计参数;所述待合并至权重中的统计参数包括批量归一化层依赖的卷积层的运行统计数据或当前批次的统计数据,所述待合并至偏移中的统计参数包括批量归一化层依赖的卷积层的运行统计数据或当前批次的统计数据;所述第一确定模块还用于:确定第一网络模型中的至少一个批量归一化层中每一所述批量归一化层的缩放系数和平移系数;基于所述系数更新算法,对每一所述批量归一化层的缩放系数和平移系数进行更新,得到每一所述批量归一化层的更新后的缩放系数和平移系数;针对每一所述批量归一化层,获取所述批量归一化层中待合并至权重中的统计参数以及待合并至偏移中的统计参数,并将所述批量归一化层的更新后的缩放系数和所述待合并至权重中的统计参数合并至所述批量归一化层依赖的卷积层的权重中,将所述批量归一化层的更新后的缩放系数、平移系数以及所述待合并至偏移中的统计参数合并至所述卷积层的偏移中;在所述批量归一化层的移除状态为移除的情况下,将每一所述批量归一化层从所述第一网络模型中移除。
在一些实施例中,所述第一确定模块还用于:基于所述推理引擎,从设定的多种批量归一化层折叠策略中确定目标的批量归一化层折叠策略。
在一些实施例中,所述量化模块还用于:基于设定的量化算法和第一训练数据集,按照所述量化参数,对所述第一网络模型中的每一所述处理层进行量化,得到第二网络模型。
在一些实施例中,所述量化参数包括量化尺度的预设精度、量化对称性、量化位宽和量化粒度,所述量化对称性包括对称量化或非对称量化,所述量化粒度包括层级量化或特征级量化,所述量化算法包括量化感知训练算法;所述量化模块还用于:按照所述量化参数,为所述第一网络模型中的每一所述处理层设置一个伪量化器,得到第三网络模型;其中,所述伪量化器用于:基于所述量化位宽确定处理层参数的量化值范围;确定满足所述预设精度的量化尺度和满足所述量化对称性的量化零点;基于所述量化粒度,在所述量化值范围内,采用量化尺度和量化零点对待量化的处理层参数进行均匀量化处理,得到量化后的所述处理层参数;基于所述量化尺度和所述量化零点,对量化后的所述处理层参数进行反均匀量化处理,得到反量化后的所述处理层参数;基于设定的量化感知训练算法和第一训练数据集,对所述第三网络模型中的每一所述处理层的参数进行训练,得到第二网络模型。
在一些实施例中,所述量化模块还用于:确定预设的与所述第一网络模型采用的神经网络结构对应的训练超参数;其中,对于预设的多种部署配置信息中的每一所述部署配置信息,所述训练超参数是相同的;利用设定的第一训练数据集,基于所述量化算法和所述训练超参数,对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二量化网络模型。
在一些实施例中,所述第一获取模块还用于:基于至少一种部署配置信息,对设定的神经网络结构中的处理层进行调整,得到至少一个调整后的神经网络结构;基于至少一个所述调整后的神经网络结构,创建至少一个第一网络模型;基于与所述设定的神经网络结构对应的预设模型参数,对至少一个所述第一网络模型的参数进行初始化,得到至少一个初始化后的第一网络模型;基于设定的部署配置信息,从所述至少一个初始化后的第一网络模型中确定待量化的第一网络模型。
在一些实施例中,所述装置还包括:第二获取模块,用于获取预设的与所述神经网络结构对应的预训练模型;所述预训练模型在输出层之前的结构与所述神经网络结构相同;预训练模块,用于利用设定的第二训练数据集,对所述预训练模型的参数进行训练,得到已训练的所述预训练模型;第二确定模块,用于将已训练的所述预训练模型的参数确定为所述预设模型参数。
在一些实施例中,所述第一获取模块还用于:从预设的多种神经网络结构中确定目标神经网络结构;基于至少一种部署配置信息,对所述目标神经网络结构中的处理层进行调整,得到至少一个调整后的神经网络结构。
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,本申请实施例中,如果以软件功能模块的形式实现上述的模型量化方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read OnlyMemory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本申请实施例不限制于任何特定的硬件和软件结合。
对应地,本申请实施例提供一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现上述方法中的步骤。
对应地,本申请实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法中的步骤。所述计算机可读存储介质可以是瞬时性的,也可以是非瞬时性的。
对应地,本申请实施例提供一种计算机程序产品,所述计算机程序产品包括存储了计算机程序的非瞬时性计算机可读存储介质,所述计算机程序被计算机读取并执行时,实现上述方法中的部分或全部步骤。该计算机程序产品可以具体通过硬件、软件或其结合的方式实现。在一个可选实施例中,所述计算机程序产品具体体现为计算机存储介质,在另一个可选实施例中,计算机程序产品具体体现为软件产品,例如软件开发包(SoftwareDevelopment Kit,SDK)等等。
这里需要指出的是:以上存储介质、计算机程序产品和设备实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本申请存储介质、计算机程序产品和设备实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
需要说明的是,图8为本申请实施例中计算机设备的一种硬件实体示意图,如图8所示,该计算机设备800的硬件实体包括:处理器801、通信接口802和存储器803,其中:
处理器801通常控制计算机设备800的总体操作。
通信接口802可以使计算机设备通过网络与其他终端或服务器通信。
存储器803配置为存储由处理器801可执行的指令和应用,还可以缓存待处理器801以及计算机设备800中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。处理器801、通信接口802和存储器803之间可以通过总线804进行数据传输。
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本申请的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本申请的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。
另外,在本申请各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(Read Only Memory,ROM)、磁碟或者光盘等各种可以存储程序代码的介质。
或者,本申请上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机、服务器、或者网络设备等)执行本申请各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、ROM、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。
Claims (14)
1.一种模型量化方法,其特征在于,所述方法包括:
获取待量化的第一网络模型;
基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数;其中,所述部署配置信息包括待部署的硬件的配置信息,所述配置信息包括以下至少之一:部署硬件类型、部署硬件类型采用的推理引擎、部署硬件的型号、与部署硬件类型对应的网络模型参数的量化位宽;
对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型,所述第二网络模型用于部署在所述待部署的硬件中;其中,
所述对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型,包括:
基于设定的量化算法和第一训练数据集,按照所述量化参数,对所述第一网络模型中的每一所述处理层进行量化,得到第二网络模型。
2.根据权利要求1所述的方法,其特征在于,所述第一网络模型包括至少一个块结构,每一所述块结构包括至少一个处理层;
所述基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数,包括:
基于设定的部署配置信息,确定所述第一网络模型中每一所述块结构中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数。
3.根据权利要求1所述的方法,其特征在于,所述部署配置信息包括部署硬件类型采用的推理引擎;
所述基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层,包括:
基于所述推理引擎,确定待量化的处理层类型;
将所述第一网络模型中与所述处理层类型匹配的至少一个处理层确定为待量化的处理层。
4.根据权利要求3所述的方法,其特征在于,所述处理层类型包括卷积层和批量归一化层;
所述将所述第一网络模型中与所述处理层类型匹配的至少一个处理层确定为待量化的处理层,包括:
将所述第一网络模型中的至少一个批量归一化层和每一所述批量归一化层依赖的卷积层确定为待量化的处理层;
获取设定的批量归一化层折叠策略;
基于所述批量归一化层折叠策略,将所述第一网络模型中的每一所述批量归一化层折叠至所述批量归一化层依赖的卷积层中,得到折叠后的所述第一网络模型;
所述对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型,包括:
对折叠后的所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二网络模型。
5.根据权利要求4所述的方法,其特征在于,所述批量归一化层折叠策略包括批量归一化层的移除状态、系数更新算法、待合并至权重中的统计参数、待合并至偏移中的统计参数;所述待合并至权重中的统计参数包括批量归一化层依赖的卷积层的运行统计数据或当前批次的统计数据,所述待合并至偏移中的统计参数包括批量归一化层依赖的卷积层的运行统计数据或当前批次的统计数据;
所述基于所述批量归一化层折叠策略,将所述第一网络模型中的每一所述批量归一化层折叠至所述批量归一化层依赖的卷积层中,包括:
确定第一网络模型中的至少一个批量归一化层中每一所述批量归一化层的缩放系数和平移系数;
基于所述系数更新算法,对每一所述批量归一化层的缩放系数和平移系数进行更新,得到每一所述批量归一化层的更新后的缩放系数和平移系数;
针对每一所述批量归一化层,获取所述批量归一化层中待合并至权重中的统计参数以及待合并至偏移中的统计参数,并将所述批量归一化层的更新后的缩放系数和所述待合并至权重中的统计参数合并至所述批量归一化层依赖的卷积层的权重中,将所述批量归一化层的更新后的缩放系数、平移系数以及所述待合并至偏移中的统计参数合并至所述卷积层的偏移中;
在所述批量归一化层的移除状态为移除的情况下,将每一所述批量归一化层从所述第一网络模型中移除。
6.根据权利要求4或5所述的方法,其特征在于,所述获取设定的批量归一化层折叠策略,包括:
基于所述推理引擎,从设定的多种批量归一化层折叠策略中确定目标的批量归一化层折叠策略。
7.根据权利要求1至5中任一项所述的方法,其特征在于,所述量化参数包括量化尺度的预设精度、量化对称性、量化位宽和量化粒度,所述量化对称性包括对称量化或非对称量化,所述量化粒度包括层级量化或特征级量化,所述量化算法包括量化感知训练算法;
所述基于设定的量化算法和第一训练数据集,按照所述量化参数,对所述第一网络模型中的每一所述处理层进行量化,得到第二网络模型,包括:
按照所述量化参数,为所述第一网络模型中的每一所述处理层设置一个伪量化器,得到第三网络模型;其中,所述伪量化器用于:基于所述量化位宽确定处理层参数的量化值范围;确定满足所述预设精度的量化尺度和满足所述量化对称性的量化零点;基于所述量化粒度,在所述量化值范围内,采用量化尺度和量化零点对待量化的处理层参数进行均匀量化处理,得到量化后的所述处理层参数;基于所述量化尺度和所述量化零点,对量化后的所述处理层参数进行反均匀量化处理,得到反量化后的所述处理层参数;
基于设定的量化感知训练算法和第一训练数据集,对所述第三网络模型中的每一所述处理层的参数进行训练,得到第二网络模型。
8.根据权利要求1至5中任一项所述的方法,其特征在于,所述基于设定的量化算法和第一训练数据集,按照所述量化参数,对所述第一网络模型中的每一所述处理层进行量化,得到第二网络模型,包括:
确定预设的与所述第一网络模型采用的神经网络结构对应的训练超参数;其中,对于预设的多种部署配置信息中的每一所述部署配置信息,所述训练超参数是相同的;
利用设定的第一训练数据集,基于所述量化算法和所述训练超参数,对所述第一网络模型中的每一所述处理层按照所述量化参数进行量化,得到第二量化网络模型。
9.根据权利要求1至5中任一项所述的方法,其特征在于,所述获取待量化的第一网络模型,包括:
基于至少一种部署配置信息,对设定的神经网络结构中的处理层进行调整,得到至少一个调整后的神经网络结构;
基于至少一个所述调整后的神经网络结构,创建至少一个第一网络模型;
基于与所述设定的神经网络结构对应的预设模型参数,对至少一个所述第一网络模型的参数进行初始化,得到至少一个初始化后的第一网络模型;
基于设定的部署配置信息,从所述至少一个初始化后的第一网络模型中确定待量化的第一网络模型。
10.根据权利要求9所述的方法,其特征在于,所述方法还包括:
获取预设的与所述神经网络结构对应的预训练模型;所述预训练模型在输出层之前的结构与所述神经网络结构相同;
利用设定的第二训练数据集,对所述预训练模型的参数进行训练,得到已训练的所述预训练模型;
将已训练的所述预训练模型的参数确定为所述预设模型参数。
11.根据权利要求9所述的方法,其特征在于,所述基于至少一种部署配置信息,对设定的神经网络结构中的处理层进行调整,得到至少一个调整后的神经网络结构,包括:
从预设的多种神经网络结构中确定目标神经网络结构;
基于至少一种部署配置信息,对所述目标神经网络结构中的处理层进行调整,得到至少一个调整后的神经网络结构。
12.一种模型量化装置,其特征在于,包括:
第一获取模块,用于获取待量化的第一网络模型;
第一确定模块,用于基于设定的部署配置信息,确定所述第一网络模型中待量化的至少一个处理层以及对每一所述处理层进行量化的量化参数;其中,所述部署配置信息包括待部署的硬件的配置信息,所述配置信息包括以下至少之一:部署硬件类型、部署硬件类型采用的推理引擎、部署硬件的型号、与部署硬件类型对应的网络模型参数的量化位宽;
量化模块,用于基于设定的量化算法和第一训练数据集,按照所述量化参数,对所述第一网络模型中的每一所述处理层进行量化,得到第二网络模型,所述第二网络模型用于部署在所述待部署的硬件中。
13.一种计算机设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现权利要求1至11任一项所述方法中的步骤。
14.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至11任一项所述方法中的步骤。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111030764.1A CN113780551B (zh) | 2021-09-03 | 2021-09-03 | 模型量化方法、装置、设备、存储介质及计算机程序产品 |
PCT/CN2022/071377 WO2023029349A1 (zh) | 2021-09-03 | 2022-01-11 | 模型量化方法、装置、设备、存储介质、计算机程序产品及计算机程序 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111030764.1A CN113780551B (zh) | 2021-09-03 | 2021-09-03 | 模型量化方法、装置、设备、存储介质及计算机程序产品 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113780551A CN113780551A (zh) | 2021-12-10 |
CN113780551B true CN113780551B (zh) | 2023-03-24 |
Family
ID=78840925
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111030764.1A Active CN113780551B (zh) | 2021-09-03 | 2021-09-03 | 模型量化方法、装置、设备、存储介质及计算机程序产品 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN113780551B (zh) |
WO (1) | WO2023029349A1 (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113780551B (zh) * | 2021-09-03 | 2023-03-24 | 北京市商汤科技开发有限公司 | 模型量化方法、装置、设备、存储介质及计算机程序产品 |
CN114580281A (zh) * | 2022-03-04 | 2022-06-03 | 北京市商汤科技开发有限公司 | 模型量化方法、装置、设备、存储介质及程序产品 |
CN114611697B (zh) * | 2022-05-11 | 2022-09-09 | 上海登临科技有限公司 | 神经网络量化及部署方法、系统、电子设备及存储介质 |
CN115238873B (zh) * | 2022-09-22 | 2023-04-07 | 深圳市友杰智新科技有限公司 | 神经网络模型部署方法、装置、计算机设备 |
CN115936067A (zh) * | 2022-12-01 | 2023-04-07 | 北京航天自动控制研究所 | 一种具有eca通道注意力机制的神经网络 |
CN116187420B (zh) * | 2023-05-04 | 2023-07-25 | 上海齐感电子信息科技有限公司 | 轻量化的深度神经网络的训练方法、系统、设备和介质 |
CN116739039A (zh) * | 2023-05-05 | 2023-09-12 | 北京百度网讯科技有限公司 | 分布式部署模型的量化方法、装置、设备和介质 |
CN116630632B (zh) * | 2023-07-25 | 2023-11-03 | 腾讯科技(深圳)有限公司 | 图像分割模型的量化方法、装置和设备及计算机存储介质 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109460613A (zh) * | 2018-11-12 | 2019-03-12 | 北京迈格威科技有限公司 | 模型裁剪方法及装置 |
CN110443165B (zh) * | 2019-07-23 | 2022-04-29 | 北京迈格威科技有限公司 | 神经网络量化方法、图像识别方法、装置和计算机设备 |
WO2021056112A1 (en) * | 2019-09-24 | 2021-04-01 | Huawei Technologies Co., Ltd. | Training method for quantizing the weights and inputs of a neural network |
US20210174214A1 (en) * | 2019-12-10 | 2021-06-10 | The Mathworks, Inc. | Systems and methods for quantizing a neural network |
CN111898751B (zh) * | 2020-07-29 | 2022-11-25 | 苏州浪潮智能科技有限公司 | 一种数据处理的方法、系统、设备及可读存储介质 |
CN111783974A (zh) * | 2020-08-12 | 2020-10-16 | 成都佳华物链云科技有限公司 | 模型构建及图像处理方法、装置、硬件平台及存储介质 |
CN113282535B (zh) * | 2021-05-25 | 2022-11-25 | 北京市商汤科技开发有限公司 | 量化处理方法和装置、量化处理芯片 |
CN113780551B (zh) * | 2021-09-03 | 2023-03-24 | 北京市商汤科技开发有限公司 | 模型量化方法、装置、设备、存储介质及计算机程序产品 |
-
2021
- 2021-09-03 CN CN202111030764.1A patent/CN113780551B/zh active Active
-
2022
- 2022-01-11 WO PCT/CN2022/071377 patent/WO2023029349A1/zh unknown
Also Published As
Publication number | Publication date |
---|---|
WO2023029349A1 (zh) | 2023-03-09 |
CN113780551A (zh) | 2021-12-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113780551B (zh) | 模型量化方法、装置、设备、存储介质及计算机程序产品 | |
Mishra et al. | Accelerating sparse deep neural networks | |
CN110363279B (zh) | 基于卷积神经网络模型的图像处理方法和装置 | |
US11755901B2 (en) | Dynamic quantization of neural networks | |
CN111695671B (zh) | 训练神经网络的方法及装置、电子设备 | |
CN110929836B (zh) | 神经网络训练及图像处理方法和装置、电子设备、介质 | |
CN113434750B (zh) | 神经网络搜索方法、装置、设备及存储介质 | |
CN108351962A (zh) | 具有自适应性通道特征的对象检测 | |
Xue | Low light image enhancement based on modified Retinex optimized by fractional order gradient descent with momentum RBF neural network | |
JP2019023798A (ja) | 超解像装置およびプログラム | |
Pan et al. | Optimal O (1) bilateral filter with arbitrary spatial and range kernels using sparse approximation | |
CN114049530A (zh) | 混合精度神经网络量化方法、装置及设备 | |
CN115205157B (zh) | 图像处理方法和系统、电子设备和存储介质 | |
CN116306879A (zh) | 数据处理方法、装置、电子设备以及存储介质 | |
Seiler et al. | A fast algorithm for selective signal extrapolation with arbitrary basis functions | |
CN117836778A (zh) | 用于确定用于神经网络的量化的基于饱和比率的量化范围的方法及设备 | |
US11861452B1 (en) | Quantized softmax layer for neural networks | |
Naganawa et al. | SIMD-Constrained Lookup Table for Accelerating Variable-Weighted Convolution on x86/64 CPUs | |
CN117556745B (zh) | 空间自适应流体仿真方法、设备及存储介质 | |
Zhou et al. | Iqnn: Training quantized neural networks with iterative optimizations | |
US20230342613A1 (en) | System and method for integer only quantization aware training on edge devices | |
CN117788983B (zh) | 基于大模型的图像数据处理方法及装置、存储介质 | |
CN116501993B (zh) | 房源数据推荐方法及装置 | |
KR20230020856A (ko) | 신경망 파라미터의 양자화 방법 및 장치 | |
KR20240077167A (ko) | 합성곱 연산을 위한 데이터 처리 방법 및 컴퓨팅 장치 |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40065242 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |