WO2023160290A1 - 神经网络推理加速方法、目标检测方法、设备及存储介质 - Google Patents

神经网络推理加速方法、目标检测方法、设备及存储介质 Download PDF

Info

Publication number
WO2023160290A1
WO2023160290A1 PCT/CN2023/071511 CN2023071511W WO2023160290A1 WO 2023160290 A1 WO2023160290 A1 WO 2023160290A1 CN 2023071511 W CN2023071511 W CN 2023071511W WO 2023160290 A1 WO2023160290 A1 WO 2023160290A1
Authority
WO
WIPO (PCT)
Prior art keywords
model
neural network
network model
accelerated
accuracy
Prior art date
Application number
PCT/CN2023/071511
Other languages
English (en)
French (fr)
Inventor
祖春山
Original Assignee
京东方科技集团股份有限公司
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 京东方科技集团股份有限公司 filed Critical 京东方科技集团股份有限公司
Publication of WO2023160290A1 publication Critical patent/WO2023160290A1/zh

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/0464Convolutional networks [CNN, ConvNet]
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/04Inference or reasoning models

Landscapes

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

Abstract

一种神经网络推理加速方法、目标检测方法、设备及存储介质,神经网络推理加速方法包括:获取待加速的神经网络模型和加速数据集;使用加速数据集对待加速的神经网络模型进行自动化加速处理,得到加速后的神经网络模型,加速处理包括以下至少之一:模型压缩、图优化和部署优化,模型压缩包括以下至少之一:模型量化、模型剪枝、模型蒸馏,图优化为针对待加速的神经网络模型的有向图进行的优化,部署优化为针对待加速的神经网络模型的部署平台进行的优化;对加速后的神经网络模型进行推理评估。

Description

神经网络推理加速方法、目标检测方法、设备及存储介质 技术领域
本公开实施例涉及但不限于智能系统技术领域,尤其涉及一种神经网络推理加速方法、目标检测方法、设备及存储介质。
背景技术
现如今,互联网高速发展,大数据时代到来,深度神经网络(Deep Neural Networks,DNN)也随之迅猛发展。在深度神经网络中,输入大量多维度的特征向量,通过多个中间层的矩阵权重加权后,获得输出结果。输出结果用于进行回归计算或者回归分类。
近年来,深度神经网络算法越来越多地被运用在边缘节点的应用上,包括自动驾驶系统、增强现实、嵌入式计算机视觉等。但是,深度神经网络的模型结构庞大复杂,需要大规模数据对模型参数进行优化训练。如何对深度神经网络的模型进行压缩与加速,使其能够满足边缘节点智能化、实时化应用所需已经成为当前深度学习领域研究的一大热点问题。
发明内容
以下是对本文详细描述的主题的概述。本概述并非是为了限制权利要求的保护范围。
本公开实施例提供了一种神经网络推理加速方法,包括:获取待加速的神经网络模型和加速数据集;使用所述加速数据集对所述待加速的神经网络模型进行自动化加速处理,得到加速后的神经网络模型,所述加速处理包括以下至少之一:模型压缩、图优化和部署优化,所述模型压缩包括以下至少之一:模型量化、模型剪枝、模型蒸馏,所述图优化为针对所述待加速的神经网络模型的有向图进行的优化,所述部署优化为针对所述待加速的神经网络模型的部署平台进行的优化;对所述加速后的神经网络模型进行推理评估。
在一些示例性实施例中,所述方法还包括:接收用户的第一输入,所述 第一输入包括以下至少之一:
所述加速后的神经网络模型的最低执行准确率;
所述加速后的神经网络模型的最低执行速度;
所述加速后的神经网络模型的最低模型压缩率;
所述待加速的神经网络模型的类型。
在一些示例性实施例中,所述方法还包括:输出以下至少之一:
所述加速后的神经网络模型;
所述部署平台;
所述部署平台的软硬件资源;
所述加速处理的类别和子类别。
在一些示例性实施例中,所述部署优化包括以下至少之一:
根据部署平台的类别,选择对应的模型加速工具进行模型加速;
根据当前的部署平台的软硬件资源选择对应的软硬件优化策略。
在一些示例性实施例中,所述软硬件优化策略包括以下至少之一:并行线程优化、硬件内置映射优化、循环优化、内存分配读取优化和内存延迟隐藏优化。
在一些示例性实施例中,在所述根据当前的部署平台的软硬件资源选择对应的软硬件优化策略时,所述方法还包括:
搜索当前的部署平台的软硬件资源;
将所述部署平台的软硬件资源用参数表示,并使用成本函数对所述参数的性能进行评估。
在一些示例性实施例中,所述图优化包括以下至少之一:
消除不必要的节点;
用代价较小的算子代替代价较大的算子;
将连续的多个算子融合为一个算子;
消除已经计算过的表达式,使用已经计算出的值代替;
消除死代码。
在一些示例性实施例中,在对所述待加速的神经网络模型进行模型蒸馏时,获取至少两个教师模型,将所述待加速的神经网络模型复制为多个学生模型,对所述多个学生模型和教师模型进行训练,选择最优的学生模型作为蒸馏后的神经网络模型。
在一些示例性实施例中,在对所述多个学生模型和教师模型进行训练时,在每次迭代过程中,同步计算三种损失信息,并将所述三种损失信息相加后,通过反向传播算法反馈给多个学生模型;所述三种损失信息包括:
将每个所述学生模型的输出与真实标签比较获得的真实损失信息;
将每个所述学生模型的输出与多个所述教师模型的输出比较获得的蒸馏损失信息;
对多个所述学生模型的输出互相比较获得的散度损失信息。
在一些示例性实施例中,所述加速数据集包括量化校准图片集和量化测试图片集,使用所述加速数据集对所述待加速的神经网络模型进行模型量化,包括:
使用所述量化校准图片集对第一神经网络模型进行量化,得到第二神经网络模型,所述第二神经网络模型的数值精度小于所述第一神经网络模型的数值精度;
使用所述量化测试图片集对所述第二神经网络模型的模型精度进行测试,当所述第二神经网络模型的模型精度未达到预先设定的模型精度阈值时,改变量化策略,并使用改变后的量化策略与所述量化校准图片集对所述第一神经网络模型重新进行量化,直到量化得到的所述第二神经网络模型的模型精度达到预先设定的模型精度阈值。
在一些示例性实施例中,所述第二神经网络模型的模型精度达到预先设定的模型精度阈值,包括:
所述第二神经网络模型的执行准确率大于或等于预设的执行准确率;
所述第二神经网络模型的执行速度大于或等于预设的执行速度阈值;
所述第二神经网络模型的模型压缩率大于或等于预设的模型压缩率阈值。
在一些示例性实施例中,所述改变量化策略包括以下任意一个或多个:改变量化门限算法、启动混合数值精度计算。
本公开实施例还提供了一种神经网络推理加速设备,包括存储器;和耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如以上任一项所述的神经网络推理加速方法的步骤。
本公开实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如以上任一项所述的神经网络推理加速方法。
本公开实施例还提供了一种目标检测方法,包括:
对目标检测模型进行量化处理,得到量化后的目标检测模型,所述目标检测模型的解耦头包括至少N个检测框回归分支,N为2至C之间的自然数,C为检测类别数;
获取待检测图像,对待检测图像进行图像预处理,所述图像预处理包括以下至少之一:解码转换处理、归一化处理;
使用量化后的目标检测模型对待检测图像进行检测;
对检测结果进行非极大值抑制处理。
在一些示例性实施例中,所述对目标检测模型进行量化处理,包括:
使用量化校准图片集对第一神经网络模型进行量化,得到第二神经网络模型,所述第二神经网络模型的数值精度小于所述第一神经网络模型的数值精度;
使用量化测试图片集对所述第二神经网络模型的模型精度进行测试,当所述第二神经网络模型的模型精度未达到预先设定的模型精度阈值时,改变量化策略,并使用改变后的量化策略与所述量化校准图片集对所述第一神经网络模型重新进行量化,直到量化得到的所述第二神经网络模型的模型精度达到预先设定的模型精度阈值。
本公开实施例还提供了一种目标检测设备,包括存储器;和耦接至所述 存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如以上任一项所述的目标检测方法的步骤。
本公开实施例还提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如以上任一项所述的目标检测方法。
在阅读理解了附图和详细描述后,可以明白其他方面。
附图说明
附图用来提供对本公开技术方案的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开的技术方案,并不构成对本公开的技术方案的限制。附图中各部件的形状和大小不反映真实比例,目的只是示意说明本公开内容。
图1为本公开示例性实施例一种神经网络推理加速方法的流程示意图;
图2为本公开示例性实施例一种模型蒸馏方法的流程示意图;
图3为本公开示例性实施例另一种神经网络推理加速方法的流程示意图;
图4为本公开示例性实施例又一种神经网络推理加速方法的流程示意图;
图5为本公开示例性实施例一种神经网络推理加速方法在两台服务器上的推理结果示意图;
图6为本公开示例性实施例一种目标检测方法的流程示意图;
图7为本公开示例性实施例一种目标检测模型的检测头结构示意图;
图8为本公开示例性实施例一种使用目标检测模型进行目标检测的过程示意图;
图9为本公开示例性实施例一种对目标检测模型进行量化的过程示意图;
图10为本公开示例性实施例一种目标检测设备的模块化示意图。
具体实施方式
为使本公开的目的、技术方案和优点更加清楚明白,下文中将结合附图对本公开的实施例进行详细说明。需要说明的是,在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互任意组合。
除非另外定义,本公开实施例公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开实施例中使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出该词前面的元件或物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。
近年来,深度神经网络算法越来越多地被运用在边缘节点的应用上,包括自动驾驶系统、增强现实、嵌入式计算机视觉等。但是,深度神经网络的模型结构庞大复杂,需要大规模数据对模型参数进行优化训练。如何对深度神经网络的模型进行压缩与加速,使其能够满足边缘节点智能化、实时化应用所需已经成为当前深度学习领域研究的一大热点问题。
如图1所示,本公开实施例提供了一种神经网络推理(Inference)加速方法,包括:
步骤101、获取待加速的神经网络模型和加速数据集;
步骤102、使用加速数据集对待加速的神经网络模型进行自动化加速处理,得到加速后的神经网络模型,自动化加速处理包括以下至少之一:模型压缩、图优化和部署优化,模型压缩包括以下至少之一:模型量化、模型剪枝、模型蒸馏,图优化为针对待加速的神经网络模型的有向图进行的优化,部署优化为针对待加速的神经网络模型的部署平台进行的优化;
步骤103、对加速后的神经网络模型进行推理评估。
本公开实施例的神经网络推理加速方法,通过对待加速的神经网络模型进行自动化加速处理,可以采用流水线自动化方法提高人工智能推理加速的效率,并采用模型压缩、图优化和部署优化中的至少之一的优化方法提高推理加速的倍数,可以应用于人工智能平台、边缘计算平台等环境中。
在一些示例性实施例中,所述方法还包括:接收用户的第一输入,其中, 第一输入包括以下至少之一:
加速后的神经网络模型的最低执行准确率;
加速后的神经网络模型的最低执行速度;
加速后的神经网络模型的最低模型压缩率;
待加速的神经网络模型的类型。
本实施例中,当用户的第一输入同时包括加速后的神经网络模型的最低执行准确率、加速后的神经网络模型的最低执行速度和加速后的神经网络模型的最低模型压缩率时,可以将第一输入中的最低执行准确率、最低执行速度和最低模型压缩率作为加速后的神经网络模型所需达到的模型精度。
当用户的第一输入中不包括加速后的神经网络模型的最低执行准确率、加速后的神经网络模型的最低执行速度和加速后的神经网络模型的最低模型压缩率中的任意一个时,可以使用预设的执行准确率、预设的执行速度阈值和预设的模型压缩率阈值作为加速后的神经网络模型所需达到的模型精度。
当用户的第一输入包括加速后的神经网络模型的最低执行准确率、加速后的神经网络模型的最低执行速度和加速后的神经网络模型的最低模型压缩率中的一个或两个时,可以用用户的第一输入中的输入值和预设的模型精度阈值共同规定加速后的神经网络模型所需达到的模型精度,例如,假设用户的第一输入只包括加速后的神经网络模型的最低执行准确率,则用用户的第一输入中包含的最低执行准确率、预设的执行速度阈值以及预设的模型压缩率阈值来作为加速后的神经网络模型所需达到的模型精度。
本实施例中,用户的第一输入还可以包括待加速的神经网络模型的类型,示例性的,该待加速的神经网络模型的类型可以为“人脸识别”,此时,可以获取多种人脸识别神经网络模型,并根据用户要求的模型精度或预设的模型精度对多种人脸识别神经网络模型进行推理加速,输出满足预设或指定模型精度要求的一种或多种人脸识别神经网络模型。
在一些示例性实施例中,加速数据集包括校准数据和测试数据等,其中,校准数据为用于训练的样本集合,主要用来在加速处理过程中,训练神经网络模型的参数。测试数据用来判断训练完成的神经网络模型的模型精度。
在一些示例性实施例中,所述方法还包括:
获取自动化加速脚本;
对自动化加速脚本进行解析,生成自动化加速流程。
使用加速数据集对待加速的神经网络模型进行自动化加速处理,具体为:根据自动化加速流程,使用加速数据集对待加速的神经网络模型进行自动化加速处理。
在一些示例性实施例中,自动化加速脚本可以用于获取用户想要使用的加速处理的类别和子类别(例如,是否需要模型压缩;在模型压缩时,只进行模型量化还是进行模型量化、模型剪枝和模型蒸馏;是否需要图优化以及需要使用哪种图优化方法;是否需要部署优化以及需要哪种部署优化方法等)、获取用户的部署平台、获取用户的部署平台的软硬件资源配置等。本实施例通过对自动化加速脚本进行解析,生成自动化加速流程,然后根据自动化加速流程,对待加速的神经网络模型进行自动化加速处理,可以采用流水线自动化方法提高人工智能推理加速的效率,并采用模型压缩、图优化和部署优化中的至少之一的优化方法提高推理加速的倍数,该推理加速方法可以应用于人工智能平台、边缘计算平台等环境中。
在另一些示例性实施例中,自动化加速脚本还可以用于获取待加速的神经网络模型和加速数据集等。
在另一些示例性实施例中,当用户没有提供具体的待加速的神经网络模型(示例性的,用户可能只提供了待加速的神经网络模型的类型为人脸识别模型)、也没有提供想要使用的加速处理的类别和子类别、部署平台以及部署平台的软硬件资源配置时,本公开实施例的神经网络推理加速方法可以通过遍历的方法,例如,获取多种人脸识别模型(假设有5钟人脸识别模型)、获取各种加速处理的类别和子类别、获取各种可能的部署平台(假设有6种可能的部署平台)、获取各种可能的软硬件资源配置(假设有7种可能的软硬件资源配置),对各种人脸识别模型、加速处理的类别和子类别、部署平台、软硬件资源配置的组合分别进行自动化加速处理,得到各种组合下的加速后的神经网络模型所能达到的模型精度,将满足预设或指定模型精度需求 的组合输出给用户选择。
在又一些示例性实施例中,当用户没有提供具体的待加速的神经网络模型(示例性的,用户可能只提供了待加速的神经网络模型的类型为人脸识别模型)、也没有提供想要使用的加速处理的类别和子类别、部署平台以及部署平台的软硬件资源配置时,本公开实施例的神经网络推理加速方法可以通过策略搜索的方法,找到满足预设或指定模型精度需求的组合(哪种神经网络模型+哪种加速处理类别和子类别+哪种部署平台+哪种软硬件资源配置),并输出给用户选择。示例性的,可以构建损失函数loss,并计算不同组合情况下的损失函数,将损失函数最低的一种组合或损失函数较低的几种组合输出给用户选择。
在一些示例性实施例中,部署优化包括以下至少之一:
根据部署平台的类别,选择对应的模型加速工具进行模型加速;
根据当前的部署平台的软硬件资源选择对应的软硬件优化策略。
示例性的,部署平台的类别可以包括:高性能精简指令集计算机处理器(Advanced RISC Machines,ARM)移动端或终端、英特尔(Intel)中央处理器(central processing unit,CPU)、英伟达(NVIDIA,一家人工智能计算公司)图形处理器(Graphics Processing Unit,GPU)、人工智能(Artificial Intelligence,AI)芯片厂家等。当部署平台为ARM移动端或终端时,可以选择移动神经网络(Mobile Neural Network,MNN)和/或TVM(Tensor Virtual Machine)进行模型加速;当部署平台为英特尔CPU时,可以选择OpenVINO(Open Visual Inference&Neural Network Optimization)和/或TVM进行模型加速;当部署平台为英伟达GPU时,可以选择TensorRT/或TVM进行模型加速;当部署平台使用某个特定的AI芯片厂家的AI芯片时,可以选择该特定的AI芯片厂家加速库进行模型加速。
需要说明的是,对于大规模部署应用场景,部分加速库(如TensorRT)需要在部署的设备/平台上进行推理加速。
MNN是一个轻量级的深度学习端侧推理引擎,核心解决深度神经网络模型在端侧推理运行问题,涵盖深度神经网络模型的优化、转换和推理。MNN 负责加载网络模型,推理预测返回相关结果。整个推理过程可以分为模型的加载解析、计算图的调度、在异构后端上高效运行。MNN具备如下特征:
(1)通用性:支持Tensorflow(一个开源的、基于Python的机器学习框架)、快速特征嵌入的卷积结构(Convolutional Architecture for Fast Feature Embedding,Caffe)、开放神经网络交换(Open Neural Network Exchange,ONNX)等主流模型文件格式,支持卷积神经网络(Convolutional Neural Networks,CNN)、循环神经网络(Rerrent Neural Network,RNN)、生成对抗网络(Generative Adversarial Networks,GAN)等常用网络;
(2)轻量性:针对端侧设备特点深度定制和裁剪,无任何依赖,可以方便地部署到移动设备和各种嵌入式设备中。
(3)高性能:不依赖任何第三方计算库,依靠大量手写汇编实现核心运算,充分发挥ARMCPU的算力。
(4)易用性:具备完善的文档和实例,有高效的图像处理模块,覆盖常见的形变、转换等需求。支持回调机制,方便提取数据或者控制运行走向。
OpenVINO是一款由英特尔发布的、开源的商用免费的加速神经网络模型推导计算的软件开发包(Software Development Kit,SDK),其针对神经网络推导计算的优化,在大部分情况下,可以节省一张英伟达的显卡。
TensorRT是一个高性能的深度学习推理优化器,可以为深度学习应用提供低延迟、高吞吐率的部署推理。TensorRT可用于对超大规模数据中心、嵌入式平台或自动驾驶平台进行推理加速。TensorRT现已能支持TensorFlow、Caffe、Mxnet(一个深度学习库)、Pytorch(一个开源的Python(一种计算机编程语言)机器学习库,基于Torch(一个广泛支持机器学习算法的科学计算框架),用于自然语言处理等应用程序)等几乎所有的深度学习框架,将TensorRT和NVIDIA的GPU结合起来,能在几乎所有的框架中进行快速和高效的部署推理。
TVM是由华盛顿大学在读博士陈天奇等人提出的深度学习自动代码生成方法。该技术能自动为大多数计算硬件生成可部署优化代码,其性能可与当前最优的供应商提供的优化计算库相比,且可以适应新型专用加速器后端。 TVM针对不同的深度学习框架和硬件平台,实现了统一的软件栈,以尽可能高效的方式,将不同框架下的深度学习模型部署到硬件平台上。
综上,MNN更适合在ARM移动端或终端上的模型加速;TensorRT专门用于英伟达GPU上的模型加速;OpenVINO更适合英特尔CPU上的模型加速;TVM是深度学习编译器,可以适配上述多种情况。
AI芯片加速库是专门为某种AI芯片加速的,示例性的,AI芯片加速库可以包括:RKNN、Questcore、君正加速库、BMNNSDK等,其中,RKNN专门用于瑞芯微(Rockchip,一家数字音视频处理芯片公司)嵌入式神经网络处理器(Neural-network Processing Unit,NPU)芯片;Questcore专门用于依图科技(一家网络科技有限公司)的AI芯片;君正加速库专门用于北京君正(一家集成电路股份有限公司)的智能视频芯片;BMNNSDK(BitMain Neural Network SDk)专门用于算能科技(一家科技有限公司)的AI芯片。需要说明的是,实际使用时,选择的部署平台的类别不限于上述列举的这几种类型,本公开对此不作限制。
本公开实施例的推理加速方法,根据当前资源情况默认选择自动设定的“自动化配置”选择对应的模型加速工具进行模型加速,“自动化配置”可以包括:
(1)如果当前推理加速系统中存在ARM移动端或终端,则自动选择MNN和TVM;
(2)如果当前推理加速系统中存在英伟达GPU,则自动选择OpenVINO和TVM;
(3)如果当前推理加速系统中存在瑞芯微NPU芯片,则自动选择RKNN;
(4)如果当前推理加速系统中存在某个特定厂家的AI芯片,则选择该特定厂家的AI芯片加速库进行加速。
如果使用者根据实际需求手动设定“自动化配置”,则优先按照使用者的设定选择对应的模型加速工具进行模型加速。
在一些示例性实施例中,可以通过调用操作系统API获取硬件信息来判 断系统中是否存在ARM移动端/终端、英特尔CPU、瑞芯微NPU芯片或某个特定厂家的AI芯片。
示例性的,调用操作系统API的函数格式如下:
Void GetCpuInfo(CString&chProcessorName,CString&chProcessorType,DWORD&dwNum,DWORD&dwMaxClockSpeed)。
在一些示例性实施例中,软硬件优化策略包括以下至少之一:并行线程优化、硬件内置映射优化、循环优化、内存分配读取优化和内存延迟隐藏优化。
在一些示例性实施例中,并行线程优化可以包括:CPU中的多线程与单指令多数据SIMD优化、GPU中的单指令多线程SIMT优化等。
在一些示例性实施例中,硬件内置映射优化可以包括:将算子映射到CPU/GPU/AIcore等的内置高效内核(Kernel)上,例如,该内置高效内核可以为通用矩阵乘法(GEMM)内核。
在一些示例性实施例中,循环优化可以包括循环融合、循环展开、循环重排序等。
在一些示例性实施例中,内存分配读取优化可以包括GPU中的共享内存空间(Shared Memory Space)优化与本地内存空间(Local Memory Space)优化等。
在一些示例性实施例中,内存延迟隐藏优化可以包括:优化执行管线,以减少内存延迟导致的整体耗时等。
在一些示例性实施例中,在根据当前的部署平台的软硬件资源选择对应的软硬件优化策略时,所述方法还包括:
搜索当前的部署平台的软硬件资源;
将部署平台的软硬件资源用参数表示,并使用成本函数对参数的性能进行评估。
在一些示例性实施例中,当前的部署平台的软硬件资源,可以包括:CPU中的线程数、单指令多数据流(Single Instruction Multiple Data,SIMD)的配 置、候选的内核选项、循环排序的选择、内存空间(Memory Space)的配置等。
在一些示例性实施例中,成本函数为基于梯度提升决策树(Gradient Boosting Decision Tree,GBDT)算法的成本函数。
本公开实施例通过使用成本函数来评估不同参数的性能,示例性的,可以采用基于GBDT机器学习算法的成本函数,获得更加精准的性能评估。
在一些示例性实施例中,搜索当前的部署平台的软硬件资源包括:
初始化搜索空间,示例性的,本公开针对上述神经网络模型可以设定较大的初始搜索空间,然后在此基础上根据具体的软硬件资源情况自动对初始搜索空间进行微调以尽可能缩小搜索空间、减少后续搜索耗时;
进行搜索,示例性的,可以采用模拟退火算法进行优化搜索,模拟退火算法可以高效地搜索到全局最优值。
本实施例的推理加速方法,在根据当前的部署平台的软硬件资源选择对应的软硬件优化策略时,通过基于自动性能寻优的方法充分挖掘软硬件计算资源进行加速处理。
在一些示例性实施例中,图优化包括以下至少之一:
节点优化:消除不必要的节点;
代数简化:用代价较小的算子代替代价较大的算子;
算子融合:将连续的多个算子融合为一个算子;
通用子表达式消除:消除已经计算过的表达式,使用已经计算出的表达式的值代替,以避免在其他位置进行重新计算;
消除死代码:死代码通常由其他图层优化引起。
一般来说,神经网络模型包括图层和算子层,其中,图层是以图(Graph)数据结构组织的层,其节点为算子;算子层是指算子的实现层。算子通常以函数方式实现,通过函数调用的方式来使用算子。
示例性的,一种卷积算子的形式可以为如下格式:
Figure PCTCN2023071511-appb-000001
在一些示例性实施例中,在对待加速的神经网络模型进行模型蒸馏时,获取至少两个教师模型,将待加速的神经网络模型复制为多个学生模型,对多个学生模型和教师模型进行训练,选择最优的学生模型作为蒸馏后的神经网络模型。
在一些示例性实施例中,在对多个学生模型和教师模型进行训练时,在每次迭代过程中,同步计算三种损失信息,并将三种损失信息相加后,通过反向传播算法反馈给多个学生模型;该三种损失信息包括:
将每个学生模型的输出与真实标签比较获得的真实损失信息;
将每个学生模型的输出与多个教师模型的输出比较获得的蒸馏损失信息;
对多个学生模型的输出互相比较获得的散度损失信息。
示例性的,如图2所示,S1、S2、S3代表学生模型,T1、T2代表教师模型,GT loss1表示学生模型1和真实标签(GroundTruth Label,GT Label)之间的真实损失信息,GT loss2表示学生模型2和真实标签之间的真实损失信息,GT loss3表示学生模型3和真实标签之间的真实损失信息,distill1表示学生模型1和教师模型1以及教师模型2之间的蒸馏损失信息,distill2表示学生模型2和教师模型1以及教师模型2之间的蒸馏损失信息,distill3表示学生模型3和教师模型1以及教师模型2之间的蒸馏损失信息,KL div12表示学生模型1和学生模型2之间的散度损失信息,KL div13表示学生模型1和学生模型3之间的散度损失信息,KL div23表示学生模型2和学生模型3之间的散度损失信息,Reponce Map1为学生模型1的响应图,Reponce Map2为学生模型2的响应图,Reponce Map3为学生模型3的响应图,PostProcess1为学生模型1的后处理,PostProcess2为学生模型2的后处理,PostProcess3 为学生模型3的后处理,Inputs为蒸馏输入,Outputs为蒸馏输出。相对于单教师、单学生的蒸馏方法,本公开实施例的蒸馏方法中,一个学生模型可以跟多位教师模型学习,而且多个学生模型之间也可以相互学习,可以大幅提高学习效率。
本公开实施例中,在对待加速的神经网络模型进行模型蒸馏时,先训练多个参数量较大的教师模型到最优,例如,教师模型可以为基于ResNet50的大模型(一种比较经典的用于图像分类的网络,其在各大框架均有实现);然后端到端训练多个学生模型,训练过程中使用三种信息(损失loss)来让各个学生模型达到最优:与真实标签比较获得的真实(GroundTruth,GT)损失;与多个教师模型比较获得的蒸馏损失(distill)损失;学生模型之间互相比较得到的散度损失信息,示例性的,该散度损失信息可以为KL散度(Kullback-Leibler Divergence)损失信息。训练过程中,在每一个迭代(iteration)步骤都会同步计算上述三个损失,并将计算得到的上述三个损失相加后,统一通过反向传播(BP)算法反馈给多个学生模型以达到更加优化的效果。
在一些示例性实施例中,校准数据包括量化校准图片集,测试数据包括量化测试图片集,使用校准数据与测试数据对待加速的神经网络模型进行模型量化,包括:
使用量化校准图片集对第一神经网络模型进行量化,得到第二神经网络模型,第二神经网络模型的数值精度小于第一神经网络模型的数值精度(示例性的,第一神经网络模型的数值精度可以为fp32(fp32是指采用4字节(即32位)进行编码存储的一种数据类型,相应的,后文的fp16是指采用2字节(即16位)进行编码存储的一种数据类型),第二神经网络模型的数值精度可以为int8(有符号8bit整数),本公开对此不作限制);
使用量化测试图片集对第二神经网络模型的模型精度进行测试,当第二神经网络模型的模型精度未达到预先设定的模型精度阈值时,改变量化策略,并使用改变后的量化策略与量化校准图片集对第一神经网络模型重新进行量化,直到量化得到的第二神经网络模型的模型精度达到预先设定的模型精度阈值。
在一些示例性实施例中,第二神经网络模型的模型精度达到预先设定的模型精度阈值,具体为:
第二神经网络模型的执行准确率大于或等于预设的执行准确率阈值;
第二神经网络模型的执行速度大于或等于预设的执行速度阈值;
第二神经网络模型的模型压缩率大于或等于预设的模型压缩率阈值。
本公开实施例中,执行速度定义为:平均每秒推理次数,如200次/秒。模型压缩率定义为:压缩后模型规模与压缩前模型规模的比率,如0.3。
由于不同场景对执行准确率的要求不同,可以根据实际场景的需求来优先设定最低的执行准确率阈值,通过本公开的量化方法来最大化地提升执行速度和模型压缩率。由于执行准确率与执行速度及模型压缩率存在矛盾,实际应用场景中需要进行均衡,尤其是在边缘计算盒子等算力不高的情况下。目标检测的执行准确率指标可以采用平均精度均值(Mean Average Precision,mAP)衡量,mAP越大精度越高,也就是准确度越高。
在一些示例性实施例中,改变量化策略包括以下任意一个或多个:改变量化门限算法、启动混合数值精度计算。
示例性的,使用量化校准图片集,对fp32模型(第一神经网络模型)进行量化,量化为int8模型(第二神经网络模型)后,再使用量化测试图片集对int8模型的模型精度进行测试,若模型精度不满足指定标准,会自动进行量化策略搜索,比如:改变量化门限算法(例如,量化门限算法可以包括KLD、ADMM、MinMax、EQ等)、启动混合精度计算(混合精度计算可以包括int8/fp32混合精度、int8/fp16混合精度、int8/fp32/fp16混合精度)等,然后对fp32模型重新进行量化后再测试新得到的int8模型的模型精度,如此循环直到量化得到的int8模型达到满足指定执行准确率下的最优执行速度和模型压缩率。
量化通常是高比特位到低比特位的映射过程,量化的对象既可以是权重数据,也可以是激活值。量化方式具有多种形态,不管是混合量化、还是全整型量化;不管是单层量化、成组量化、还是整网量化,都存在浮点数映射到整型数的过程,这个过程一定存在精度损失,而对于我们来说,要做的是 把精度损失控制在可接受的范围。
MinMax是最简单的量化方法,MinMax其实就是简单的把浮点数直接映射到int8的数据范围,这种量化方式主要关注浮点范围的最大值和最小值。
KLD量化是用KL散度来衡量两个分布之间的相似性,是TensorRT中对于激活值采用的量化方法。KLD量化方法试图将fp32数值分布和int8数值分布抽象成两个分布,用阈值|T|来更新两个数值分布,并用KL散度来衡量两个分布的相似性,若KL散度值越小,说明这两个分布越相似,也说明这个阈值|T|选择的最好。
交替方向乘子法(Alternating Direction Method of Multipliers,ADMM)量化,是优化函数的一种方式,一般用于带有约束的最优解问题。
EQ(EasyQuant)量化,是格灵深瞳(一家人工智能科技公司)开源的量化算法,EQ量化方法的主要思想是:误差累计、整网决策变成单网决策、以余弦相似度为优化目标、交替优化权重缩放系数和激活值缩放系数。
本公开实施例中,在对上述各种量化算法(KLD、ADMM、MinMax、EQ等)进行选择时,不需要交互界面,候选的算法是由系统内部确定的。系统调用单元函数接口,同时指定数据源,如Start_auto_quantization(string data_source)。
混合精度(也称为超精度)计算是在单个操作中使用不同的精度级别,从而在不牺牲精度的情况下实现计算效率。在混合精度中,计算从半精度值开始,以进行快速矩阵数学运算。但是随着数字的计算,机器会以更高的精度存储结果。使用这种方法,在应用程序结束计算时,其累积得到结果,在准确度上可与使用双精度算法运算得到的结果相媲美。这项技术可以将传统的双精度应用程序加速多达25倍,同时减少了运行所需的内存、时间和功耗。
在一些示例性实施例中,如图3所示,当使用者上传神经网络模型到模型仓库时,管理平台自动解析相应的自动化加速脚本,自动化加速脚本包括加速自动化配置(即流水线配置),该加速自动化配置包括与推理加速相关的模型、代码、数据、镜像等的路径信息,及后续使用何种加速处理方法进行推理加速,生成自动化加速流程;管理平台将该推理加速任务分发至一个 或多个边缘节点,接收到任务的边缘节点下载模型(即使用者上传的神经网络模型)、数据(包括校准数据和测试数据)、代码(包含自动化加速脚本)及容器镜像(边缘节点下载容器镜像后构建和启动容器)等,并使用加速自动化配置中规定的推理加速方法进行模型加速,并进行推理优化和推理评估,最后进行推理部署,启动服务。
在一些示例性实施例中,如图4所示,当边缘节点进行模型量化时,可以根据部署平台的类别,选择对应的模型加速工具进行模型加速;然后,再根据对应的CPU架构,进行推理优化和推理评估。当然,也可以不选择加速库或CPU架构,直接进行模型量化、推理优化和推理评估。
在一些示例性实施例中,部署平台的类别可以包括:ARM(Advanced RISC Machines)移动端或终端、英特尔(Intel)中央处理器(central processing unit,CPU)、英伟达(NVIDIA,一家人工智能计算公司)图形处理器(Graphics Processing Unit,GPU)、人工智能(Artificial Intelligence,AI)芯片厂家等。当部署平台为ARM移动端或终端时,可以选择移动神经网络(Mobile Neural Network,MNN)和/或TVM(Tensor Virtual Machine)进行模型加速;当部署平台为英特尔CPU时,可以选择OpenVINO(Open Visual Inference&Neural Network Optimization)和/或TVM进行模型加速;当部署平台为英伟达GPU时,可以选择TensorRT/或TVM进行模型加速;当部署平台使用某个特定的AI芯片厂家的AI芯片时,可以选择该特定的AI芯片厂家加速库进行模型加速。
在一些示例性实施例中,CPU架构可以包括:ARM Linux、Linux、ARM Android、Windows等。
在一些示例性实施例中,所述方法还包括:输出包括以下至少之一:
加速后的神经网络模型;
部署平台;
部署平台的软硬件资源;
加速处理的类别和子类别。
其中,加速处理的类别可以包括模型压缩、图优化和部署优化。当加速 处理的类别为模型压缩时,加速处理的子类别可以包括模型量化、模型剪枝、模型蒸馏;当加速处理的类别为图优化时,加速处理的子类别可以包括消除不必要的节点、用代价较小的算子代替代价较大的算子、将连续的多个算子融合为一个算子、消除已经计算过的表达式,使用已经计算出的值代替、消除死代码等;当加速处理的类别为部署优化时,加速处理的子类别可以包括:根据部署平台的类别,选择对应的模型加速工具进行模型加速;根据当前的部署平台的软硬件资源选择对应的软硬件优化策略等。当加速处理的子类别为根据部署平台的类别,选择对应的模型加速工具进行模型加速时,该子类别可以包括第一子子类别,第一子子类别可以包括:部署平台为ARM移动端或终端,选择MNN和/或TVM进行加速;部署平台为英特尔CPU,选择OpenVINO和/或TVM进行加速;部署平台为英伟达GPU,选择TensorRT/或TVM进行加速;部署平台使用某个特定的AI芯片厂家的AI芯片,选择该特定的AI芯片厂家加速库进行加速。当加速处理的子类别为根据当前的部署平台的软硬件资源选择对应的软硬件优化策略时,该子类别可以包括第二子子类别,第二子子类别可以包括并行线程优化、硬件内置映射优化、循环优化、内存分配读取优化和内存延迟隐藏优化。
在一些示例性实施例中,所述方法还包括:
部署加速后的神经网络模型。
在一些示例性实施例中,对加速后的神经网络模型进行推理评估,具体为:对部署后的神经网络模型进行推理评估。
图5为使用本公开实施例的推理加速方法在两台分别配有GTX2060(一款英伟达的显卡型号)和P100 GPU(一款英伟达的Tesla P100图形处理器芯片)的服务器主机上的推理结果示意图,其中,校准数据和测试数据包括三组,第一组包括786张年龄图片,第二组包括604张性别图片,第三组包括417张微笑表情图片,使用这三组数据分别进行推理评估,PyTorch所在列对应加速前的准确度和速度,TensorRT所在列对应加速后的准确度和速度,acc_age,acc_gender,acc_smile的数据分别表示第一组数据、第二组数据和第三组数据的推理准确率,acc是accuracy的缩写,avg_time表示平均推理时间,avg_FPS表示每秒推理的图片帧数。可以看出,使用本公开实施例的 推理加速方法,模型的准确度没有下降,速度有很大提升。
如图6所示,本公开实施例还提供了一种目标检测方法,包括:
步骤601、对目标检测模型进行量化处理,得到量化后的目标检测模型,该目标检测模型的解耦头包括至少N个检测框回归分支,N为2至C之间的自然数,C为检测类别数;
步骤602、获取待检测图像,对待检测图像进行图像预处理,所述图像预处理包括以下至少之一:解码转换处理、归一化处理;
步骤603、使用量化后的目标检测模型对待检测图像进行检测;
步骤604、对检测结果进行非极大值抑制(Non-Maximum Suppression,NMS)处理。
本公开实施例的目标检测方法,通过针对边缘算力受限的情况专门设计了轻量化的目标检测模型,并对模型进行了专门设计的量化方法进行模型量化处理,在边缘计算平台上实现了实时目标检测,此外,通过对量化算法进行自动化策略搜索,能够更高效地完成模型轻量化过程,整个流程的自动化迭代可以减少手动干预的过程,该目标检测方法可以应用于智慧金融、智慧园区、智慧交通等业务场景。
本公开实施例的目标检测模型可以为前述神经网络推理加速方法中的待加速的神经网络模型,可选的,可以通过前述神经网络推理加速方法中的各种加速处理方法对该目标检测模型进行加速处理,具体的加速处理方法可参照前文所述,在此不再赘述。
在一些示例性实施例中,目标检测模型可以为Yolox(You Only Look Once X)深度神经网络模型。Yolox共有7种网络结构,包含2种轻量级网络和5种标准网络。Yolox轻量级网络包括(1)Yolox-Nano可视化网络结构图;(2)Yolox-Tiny可视化网络结构图。Yolox标准网络包括:(1)Yolox-s可视化网络结构图;(2)Yolox-m可视化网络结构图;(3)Yolox-l可视化网络结构图;(4)Yolox-x可视化网络结构图;(5)Yolox-Darknet53可视 化网络结构图。示例性的,该目标检测模型可以为Yolox-Tiny轻量级网络。
Yolo(You Only Look Once)深度神经网络模型获取图像并绘制由不同小方块组成的网格。然后从这些小方块中,他们从方块中回归以预测他们应该预测边界框的偏移量。仅这些网格单元就为我们提供了数万个可能的框,但Yolo模型在网格顶部有锚(anchor)框。锚框具有不同的比例,使模型能够检测不同方向的不同大小的对象。
这两者的结合使模型能够检测范围广泛的对象,但它们也带来了计算成本高的问题。Yolo模型的另一个限制方面是边界框回归和对象检测任务的耦合,这会导致一些权衡。
Yolox深度神经网络模型解决了这两个限制,它完全放弃了锚框的构造。这导致计算成本和推理速度的提高。Yolox还将Yolo检测头解耦(Decoupled)为单独的特征通道,用于框坐标回归和对象分类。这导致改进的收敛速度和模型精度。
本公开实施例的目标检测方法,通过对Yolox检测头进行改进,提高了准确度,使得轻量模型Yolox-Tiny能够在满足速度需求的同时也能满足准确度需求。如图7所示,本公开实施例的目标检测方法,通过将检测框回归分支(Reg.)扩展为N个,大大提高了检测准确度,N为2至C之间的自然数,C为检测类别数。当N为C时,为每个检测类别单独进行检测框回归。当N小于C时,部分检测类别共用检测框回归。实际使用时,可以根据各检测类别的检测框是否具有共性来确定N的大小。图7中的Cls.为分类分支,IoU.为损失感知分支,H、W分别为检测目标的高度和宽度。
如图8所示,当使用目标检测模型进行目标检测时,一般都包括图像预处理(检测前处理)、通过目标检测模型进行检测、NMS处理(检测后处理)。本实施例中,图像预处理可以包括以下至少之一:解码转换处理、归一化处理。
在一些示例性实施例中,解码转换处理具体为:将待检测图像统一转换为3通道RGB图像,当输入图像为非RGB编码时,通过解码转换处理将其解码为RGB图像;当输入图像为非3通道图像时,通过解码转换处理将其 转换为3通道图像。
在一些示例性实施例中,归一化处理用于保持预设比例的图像尺寸,示例性的,将待检测图像统一归一化到宽高为512x512,为保持图像比例必要时需要进行填充(Padding)处理。
NMS在很多计算机视觉任务中都有广泛应用,如:边缘检测、目标检测等。这里主要以人脸检测中的应用为例,来说明NMS。绝大部分人脸检测器的核心是分类器,即给定一个尺寸固定图片,分类器判断是或者不是人脸;将分类器进化为检测器的关键是:在原始图像上从多个尺度产生窗口,并调整(resize)到固定尺寸,然后送给分类器做判断。最常用的方法是滑动窗口。滑动窗口会导致很多窗口与其他窗口存在包含或者大部分交叉的情况。于是我们就要用到NMS,来选取分数最高的框,并抑制那些冗余的框。NMS处理的过程是一个迭代-遍历-消除的过程,示例性的,NMS处理的过程可以包括:
(1)将所有框的得分排序,选中最高分及其对应的框:
(2)遍历其余的框,如果某个框和当前最高分框的重叠面积(IOU)大于一定阈值,就将该遍历的框删除。
(3)从未处理的框中继续选一个得分最高的,重复上述过程。
在一些示例性实施例中,对目标检测模型进行量化处理,包括:
使用量化校准图片集对第一神经网络模型进行量化,得到第二神经网络模型,第二神经网络模型的数值精度小于第一神经网络模型的数值精度(示例性的,第一神经网络模型的数值精度可以为fp32,第二神经网络模型的数值精度可以为int8,然而,本公开对此不作限制);
使用量化测试图片集对第二神经网络模型的模型精度进行测试,当第二神经网络模型的模型精度未达到预先设定的模型精度阈值时,改变量化策略,并使用改变后的量化策略与量化校准图片集对第一神经网络模型重新进行量化,直到量化得到的第二神经网络模型的模型精度达到预先设定的模型精度阈值。
在一些示例性实施例中,第二神经网络模型的模型精度达到预先设定的模型精度阈值,具体为:
第二神经网络模型的执行准确率大于或等于预设的执行准确率阈值;
第二神经网络模型的执行速度大于或等于预设的执行速度阈值;
第二神经网络模型的模型压缩率大于或等于预设的模型压缩率阈值。
在一些示例性实施例中,运用本公开的模型量化方法对模型进行量化时,使用者可以在交互界面上输入或选择所需的最低执行准确率;系统自动进行模型量化得到最优的执行速度和模型压缩率。
本公开实施例中,执行速度定义为:平均每秒推理次数,如200次/秒。模型压缩率定义为:压缩后模型规模与压缩前模型规模的比率,如0.3。
由于不同场景对执行准确率的要求不同,可以根据实际场景的需求来优先设定最低的执行准确率阈值,通过本公开的量化方法来最大化地提升执行速度和模型压缩率。由于执行准确率与执行速度及模型压缩率存在矛盾,实际应用场景中需要进行均衡,尤其是在边缘计算盒子等算力不高的情况下。目标检测的执行准确率指标可以采用mAP衡量,mAP越大精度越高,也就是准确度越高。
在一些示例性实施例中,改变量化策略包括以下任意一个或多个:改变量化门限算法、启动混合数值精度计算。
示例性的,使用量化校准图片集,对fp32模型(第一神经网络模型)进行量化,量化为int8模型(第二神经网络模型)后,再使用量化测试图片集对int8模型的模型精度进行测试,若模型精度不满足指定标准,会自动进行量化策略搜索,比如:改变量化门限算法(例如,量化门限算法可以包括KLD、ADMM、MinMax、EQ等)、启动混合精度计算(混合精度计算可以包括int8/fp32混合精度、int8/fp16混合精度、int8/fp32/fp16混合精度)等,然后对fp32模型重新进行量化后再测试新得到的int8模型的模型精度,如此循环直到量化得到的int8模型达到满足指定执行准确率下的最优执行速度和模型压缩率。
在一些示例性实施例中,如图9和图10所示,整个模型量化流程包括:量化校准图片集和量化测试图片集的准备、原始框架模型转换、自动量化策略搜索、量化执行、int8模型推理执行、后处理及精度计算、报告。
不同深度学习框架训练得到的模型文件的格式不尽相同,当用户基于各种原因学习并使用了一种框架的时候,常常会发现应用或者再训练的场景改变了,比如用户用Caffe训练好了一个图像识别的模型,但是生产环境是使用TensorFlow做预测。再比如某机构主要以TensorFlow作为基础的深度学习开发框架,现在有一个深度算法项目,需要将其部署在移动设备上等等。此时,我们可以使用模型转换技术来解决该类问题。目前的模型转换技术在设计思路上包括两种,一种是直接将模型从现有框架转换为适合目标框架使用的格式,可以称之为直接转换技术;另外一种是针对深度学习设计一种开放式的文件规范,而主流深度学习框架最终都能实现对这种规范标准的支持,这种技术的代表是开放式神经网络切换框架——ONNX技术。
本公开实施例中,当当前的int8模型的模型精度未达到指定的模型精度时,运行自动量化策略搜索模块,改变量化策略,并使用改变后的量化策略重新进行量化,直到量化后的模型兼顾模型精度和执行效率的最佳策略,输出量化后的模型(bmodel)。其中,在执行模型量化时,量化校准数据有以下2种方式获取:从宿主机上原始框架训练环境中获取、从新挑选的校准图片中获取,实际使用时,以上两种量化校准数据获取的方式任选其一即可;int8模型推理执行时,输入的测试数据使用以下3种方式中的至少一种:从新挑选的测试图片中获取、从宿主机上原始框架训练环境中获取、从Data_loader(pytorch中用来处理模型输入数据的一个工具,组合了数据集(dataset)+采样器(sampler),并在数据集上提供单线程或多线程(num_workers)的可迭代对象)模块中获取预处理数据,实际使用时,以上三种输入测试数据的方式任选其一即可。本公开实施例中,测试数据可直接在原始框架训练环境中获取后,用于int8模型推理执行,结果再返回原始框架环境中进行处理和精度计算。
互联网电影资料库(Internet Movie Database,IMDB)数据集为互联网电影数据,包含50000条严重两极分化的评论,被均分为训练集和测试集。正 面和负面评论各占50%。而该数据集也同样被内置于Keras库(一个由Python编写的开源人工神经网络库)中了。IMDB文件结构简单,一个文件夹,里面一个数据文件,一个锁文件。数据随意复制,随意传输。它的访问简单,不需要运行单独的数据库管理进程,只要在访问数据的代码里引用IMDB库,访问时给文件路径即可。
Imdb_save模块,用于保存IMDB文件和标签(label)文件。DataLoader模块是Pytorch中用来处理模型输入数据的一个工具,组合了数据集(dataset)+采样器(sampler),并在数据集上提供单线程或多线程(num_workers)的可迭代对象。
本公开实施例中,在对上述各种量化算法(KLD、ADMM、MinMax、EQ等)进行选择时,不需要交互界面,候选的算法是由系统内部确定的。系统调用单元函数接口,同时指定数据源,如Start_auto_quantization(string data_source)。同样,启动混合精度计算时,也不需要用户指定,由系统内部指定候选的混合精度类型。
本公开实施例还提供了一种神经网络推理加速设备,包括存储器;和耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如前任一项所述的神经网络推理加速方法的步骤。
在一个示例中,神经网络推理加速设备可包括:第一处理器、第一存储器、第一总线系统和第一收发器,其中,该第一处理器、该第一存储器和该第一收发器通过该第一总线系统相连,该第一存储器用于存储指令,该第一处理器用于执行该第一存储器存储的指令,以控制该第一收发器发送信号。具体地,第一收发器可在第一处理器的控制下获取待加速的神经网络模型和加速数据集,第一处理器使用所述加速数据集对所述待加速的神经网络模型进行自动化加速处理,得到加速后的神经网络模型,所述加速处理包括以下至少之一:模型压缩、图优化和部署优化,所述模型压缩包括以下至少之一:模型量化、模型剪枝、模型蒸馏,所述图优化为针对所述待加速的神经网络模型的有向图进行的优化,所述部署优化为针对所述待加速的神经网络模型的部署平台进行的优化;第一处理器对所述加速后的神经网络模型进行推理 评估。
应理解,第一处理器可以是中央处理单元(Central Processing Unit,CPU),第一处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
第一存储器可以包括只读存储器和随机存取存储器,并向第一处理器提供指令和数据。第一存储器的一部分还可以包括非易失性随机存取存储器。例如,第一存储器还可以存储设备类型的信息。
第一总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。
在实现过程中,处理设备所执行的处理可以通过第一处理器中的硬件的集成逻辑电路或者软件形式的指令完成。即本公开实施例的方法步骤可以体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等存储介质中。该存储介质位于第一存储器,第一处理器读取第一存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本公开实施例还提供了一种计算机存储介质,该计算机存储介质存储有可执行指令,该可执行指令被处理器执行时可以实现本公开上述任一实施例提供的神经网络推理加速方法,该神经网络推理加速方法可以获取待加速的神经网络模型和加速数据集;使用所述加速数据集对所述待加速的神经网络模型进行自动化加速处理,得到加速后的神经网络模型,所述加速处理包括以下至少之一:模型压缩、图优化和部署优化,所述模型压缩包括以下至少之一:模型量化、模型剪枝、模型蒸馏,所述图优化为针对所述待加速的神经网络模型的有向图进行的优化,所述部署优化为针对所述待加速的神经网络模型的部署平台进行的优化;对加速后的神经网络模型进行推理评估,可以采用流水线自动化方法提高人工智能推理加速的效率,并采用模型压缩、 图优化和部署优化中的至少之一的优化方法提高推理加速的倍数,可以应用于人工智能平台、边缘计算平台等环境中。通过执行可执行指令驱动神经网络推理加速的方法与本公开上述实施例提供的神经网络推理加速方法基本相同,在此不做赘述。
本公开实施例还提供了一种目标检测设备,包括存储器;和耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如前任一项所述的目标检测方法的步骤。
在一个示例中,目标检测设备可包括:第二处理器、第二存储器、第二总线系统和第二收发器,其中,该第二处理器、该第二存储器和该第二收发器通过该第二总线系统相连,该第二存储器用于存储指令,该第二处理器用于执行该第二存储器存储的指令,以控制该第二收发器发送信号。具体地,第二收发器可在第二处理器的控制下获取待检测图像,第二处理器对目标检测模型进行量化处理,得到量化后的目标检测模型,所述目标检测模型的解耦头包括至少N个检测框回归分支,N为2至C之间的自然数,C为检测类别数;对待检测图像进行图像预处理,所述图像预处理包括以下至少之一:解码转换处理、归一化处理;使用量化后的目标检测模型对待检测图像进行检测;对检测结果进行非极大值抑制处理。
应理解,第二处理器可以是中央处理单元(Central Processing Unit,CPU),第二处理器还可以是其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
第二存储器可以包括只读存储器和随机存取存储器,并向第二处理器提供指令和数据。第二存储器的一部分还可以包括非易失性随机存取存储器。例如,第二存储器还可以存储设备类型的信息。
第二总线系统除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。
在实现过程中,处理设备所执行的处理可以通过第二处理器中的硬件的集成逻辑电路或者软件形式的指令完成。即本公开实施例的方法步骤可以体现为硬件处理器执行完成,或者用处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等存储介质中。该存储介质位于第二存储器,第二处理器读取第二存储器中的信息,结合其硬件完成上述方法的步骤。为避免重复,这里不再详细描述。
本公开实施例还提供了一种计算机存储介质,该计算机存储介质存储有可执行指令,该可执行指令被处理器执行时可以实现本公开上述任一实施例提供的目标检测方法,该目标检测方法可以对目标检测模型进行量化处理,得到量化后的目标检测模型,所述目标检测模型的解耦头包括至少N个检测框回归分支,N为2至C之间的自然数,C为检测类别数;获取待检测图像,对待检测图像进行图像预处理,所述图像预处理包括以下至少之一:解码转换处理、归一化处理;使用量化后的目标检测模型对待检测图像进行检测;对检测结果进行非极大值抑制处理,可以使得轻量模型能够在满足速度需求的同时也能满足准确度需求,此外,通过对目标检测模型进行量化处理,在不降低模型精度的情况下,对模型进行压缩,从而可在边缘计算平台上实现实时目标检测,可以应用于智慧金融、智慧园区、智慧交通等业务场景。通过执行可执行指令驱动神经网络推理加速的方法与本公开上述实施例提供的神经网络推理加速方法基本相同,在此不做赘述。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些组件或所有组件可以被实施为由处理器,如数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质) 和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其他数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其他存储器技术、CD-ROM、数字多功能盘(DVD)或其他光盘存储、磁盒、磁带、磁盘存储或其他磁存储装置、或者可以用于存储期望的信息并且可以被计算机访问的任何其他的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其他传输机制之类的调制数据信号中的其他数据,并且可包括任何信息递送介质。
虽然本公开所揭露的实施方式如上,但所述的内容仅为便于理解本公开而采用的实施方式,并非用以限定本发明。任何所属领域内的技术人员,在不脱离本公开所揭露的精神和范围的前提下,可以在实施的形式及细节上进行任何的修改与变化,但本发明的专利保护范围,仍须以所附的权利要求书所界定的范围为准。

Claims (18)

  1. 一种神经网络推理加速方法,包括:
    获取待加速的神经网络模型和加速数据集;
    使用所述加速数据集对所述待加速的神经网络模型进行自动化加速处理,得到加速后的神经网络模型,所述加速处理包括以下至少之一:模型压缩、图优化和部署优化,所述模型压缩包括以下至少之一:模型量化、模型剪枝、模型蒸馏,所述图优化为针对所述待加速的神经网络模型的有向图进行的优化,所述部署优化为针对所述待加速的神经网络模型的部署平台进行的优化;
    对所述加速后的神经网络模型进行推理评估。
  2. 根据权利要求1所述的神经网络推理加速方法,所述方法还包括:接收用户的第一输入,所述第一输入包括以下至少之一:
    所述加速后的神经网络模型的最低执行准确率;
    所述加速后的神经网络模型的最低执行速度;
    所述加速后的神经网络模型的最低模型压缩率;
    所述待加速的神经网络模型的类型。
  3. 根据权利要求1所述的神经网络推理加速方法,所述方法还包括:输出以下至少之一:
    所述加速后的神经网络模型;
    所述部署平台;
    所述部署平台的软硬件资源;
    所述加速处理的类别和子类别。
  4. 根据权利要求1所述的神经网络推理加速方法,其中,所述部署优化包括以下至少之一:
    根据部署平台的类别,选择对应的模型加速工具进行模型加速;
    根据当前的部署平台的软硬件资源选择对应的软硬件优化策略。
  5. 根据权利要求4所述的神经网络推理加速方法,其中,所述软硬件优化策略包括以下至少之一:并行线程优化、硬件内置映射优化、循环优化、内存分配读取优化和内存延迟隐藏优化。
  6. 根据权利要求4所述的神经网络推理加速方法,其中,在所述根据当前的部署平台的软硬件资源选择对应的软硬件优化策略时,所述方法还包括:
    搜索当前的部署平台的软硬件资源;
    将所述部署平台的软硬件资源用参数表示,并使用成本函数对所述参数的性能进行评估。
  7. 根据权利要求1所述的神经网络推理加速方法,其中,所述图优化包括以下至少之一:
    消除不必要的节点;
    用代价较小的算子代替代价较大的算子;
    将连续的多个算子融合为一个算子;
    消除已经计算过的表达式,使用已经计算出的值代替;
    消除死代码。
  8. 根据权利要求1所述的神经网络推理加速方法,其中,在对所述待加速的神经网络模型进行模型蒸馏时,获取至少两个教师模型,将所述待加速的神经网络模型复制为多个学生模型,对所述多个学生模型和教师模型进行训练,选择最优的学生模型作为蒸馏后的神经网络模型。
  9. 根据权利要求8所述的神经网络推理加速方法,其中,在对所述多个学生模型和教师模型进行训练时,在每次迭代过程中,同步计算三种损失信息,并将所述三种损失信息相加后,通过反向传播算法反馈给多个学生模型;所述三种损失信息包括:
    将每个所述学生模型的输出与真实标签比较获得的真实损失信息;
    将每个所述学生模型的输出与多个所述教师模型的输出比较获得的蒸馏损失信息;
    对多个所述学生模型的输出互相比较获得的散度损失信息。
  10. 根据权利要求1所述的神经网络推理加速方法,其中,所述加速数据集包括量化校准图片集和量化测试图片集,使用所述加速数据集对所述待加速的神经网络模型进行模型量化,包括:
    使用所述量化校准图片集对第一神经网络模型进行量化,得到第二神经网络模型,所述第二神经网络模型的数值精度小于所述第一神经网络模型的数值精度;
    使用所述量化测试图片集对所述第二神经网络模型的模型精度进行测试,当所述第二神经网络模型的模型精度未达到预先设定的模型精度阈值时,改变量化策略,并使用改变后的量化策略与所述量化校准图片集对所述第一神经网络模型重新进行量化,直到量化得到的所述第二神经网络模型的模型精度达到预先设定的模型精度阈值。
  11. 根据权利要求10所述的神经网络推理加速方法,其中,所述第二神经网络模型的模型精度达到预先设定的模型精度阈值,包括:
    所述第二神经网络模型的执行准确率大于或等于预设的执行准确率;
    所述第二神经网络模型的执行速度大于或等于预设的执行速度阈值;
    所述第二神经网络模型的模型压缩率大于或等于预设的模型压缩率阈值。
  12. 根据权利要求10所述的神经网络推理加速方法,其中,
    所述改变量化策略包括以下任意一个或多个:改变量化门限算法、启动混合数值精度计算。
  13. 一种神经网络推理加速设备,包括存储器;和耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求1至12中任一项所述的神经网络推理加速方法的步骤。
  14. 一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求1至12中任一项所述的神经网络推理加速方法。
  15. 一种目标检测方法,包括:
    对目标检测模型进行量化处理,得到量化后的目标检测模型,所述目标检测模型的解耦头包括至少N个检测框回归分支,N为2至C之间的自然数,C为检测类别数;
    获取待检测图像,对待检测图像进行图像预处理,所述图像预处理包括以下至少之一:解码转换处理、归一化处理;
    使用量化后的目标检测模型对待检测图像进行检测;
    对检测结果进行非极大值抑制处理。
  16. 根据权利要求15所述的目标检测方法,其中,所述对目标检测模型进行量化处理,包括:
    使用量化校准图片集对第一神经网络模型进行量化,得到第二神经网络模型,所述第二神经网络模型的数值精度小于所述第一神经网络模型的数值精度;
    使用量化测试图片集对所述第二神经网络模型的模型精度进行测试,当所述第二神经网络模型的模型精度未达到预先设定的模型精度阈值时,改变量化策略,并使用改变后的量化策略与所述量化校准图片集对所述第一神经网络模型重新进行量化,直到量化得到的所述第二神经网络模型的模型精度达到预先设定的模型精度阈值。
  17. 一种目标检测设备,包括存储器;和耦接至所述存储器的处理器,所述处理器被配置为基于存储在所述存储器中的指令,执行如权利要求15至16中任一项所述的目标检测方法的步骤。
  18. 一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现如权利要求15至16中任一项所述的目标检测方法。
PCT/CN2023/071511 2022-02-23 2023-01-10 神经网络推理加速方法、目标检测方法、设备及存储介质 WO2023160290A1 (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
CN202210168811.7 2022-02-23
CN202210168811.7A CN116702835A (zh) 2022-02-23 2022-02-23 神经网络推理加速方法、目标检测方法、设备及存储介质

Publications (1)

Publication Number Publication Date
WO2023160290A1 true WO2023160290A1 (zh) 2023-08-31

Family

ID=87764700

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/CN2023/071511 WO2023160290A1 (zh) 2022-02-23 2023-01-10 神经网络推理加速方法、目标检测方法、设备及存储介质

Country Status (2)

Country Link
CN (1) CN116702835A (zh)
WO (1) WO2023160290A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117093376A (zh) * 2023-10-19 2023-11-21 中共山东省委组织部党员教育中心 一种应用于国产gpu环境下的智能识别模型适配方法

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109447033A (zh) * 2018-11-14 2019-03-08 北京信息科技大学 基于yolo的车辆前方障碍物检测方法
CN111738419A (zh) * 2020-06-19 2020-10-02 北京百度网讯科技有限公司 神经网络模型的量化方法和装置
CN111753878A (zh) * 2020-05-20 2020-10-09 济南浪潮高新科技投资发展有限公司 一种网络模型部署方法、设备及介质
CN112070213A (zh) * 2020-08-28 2020-12-11 Oppo广东移动通信有限公司 神经网络模型的优化方法、装置、设备及存储介质
CN112232509A (zh) * 2020-10-10 2021-01-15 苏州浪潮智能科技有限公司 一种边缘计算模型压缩优化方法、装置、设备及可读介质
US20210174214A1 (en) * 2019-12-10 2021-06-10 The Mathworks, Inc. Systems and methods for quantizing a neural network
CN113052264A (zh) * 2021-04-23 2021-06-29 四川无为有科技有限公司 一种压缩目标检测神经网络的方法
US20210350233A1 (en) * 2018-11-19 2021-11-11 Deeplite Inc. System and Method for Automated Precision Configuration for Deep Neural Networks
US20220035878A1 (en) * 2021-10-19 2022-02-03 Intel Corporation Framework for optimization of machine learning architectures

Patent Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109447033A (zh) * 2018-11-14 2019-03-08 北京信息科技大学 基于yolo的车辆前方障碍物检测方法
US20210350233A1 (en) * 2018-11-19 2021-11-11 Deeplite Inc. System and Method for Automated Precision Configuration for Deep Neural Networks
US20210174214A1 (en) * 2019-12-10 2021-06-10 The Mathworks, Inc. Systems and methods for quantizing a neural network
CN111753878A (zh) * 2020-05-20 2020-10-09 济南浪潮高新科技投资发展有限公司 一种网络模型部署方法、设备及介质
CN111738419A (zh) * 2020-06-19 2020-10-02 北京百度网讯科技有限公司 神经网络模型的量化方法和装置
CN112070213A (zh) * 2020-08-28 2020-12-11 Oppo广东移动通信有限公司 神经网络模型的优化方法、装置、设备及存储介质
CN112232509A (zh) * 2020-10-10 2021-01-15 苏州浪潮智能科技有限公司 一种边缘计算模型压缩优化方法、装置、设备及可读介质
CN113052264A (zh) * 2021-04-23 2021-06-29 四川无为有科技有限公司 一种压缩目标检测神经网络的方法
US20220035878A1 (en) * 2021-10-19 2022-02-03 Intel Corporation Framework for optimization of machine learning architectures

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117093376A (zh) * 2023-10-19 2023-11-21 中共山东省委组织部党员教育中心 一种应用于国产gpu环境下的智能识别模型适配方法

Also Published As

Publication number Publication date
CN116702835A (zh) 2023-09-05

Similar Documents

Publication Publication Date Title
US20220391665A1 (en) Method for splitting neural network model by using multi-core processor, and related product
US20220391678A1 (en) Neural network model processing method and apparatus, computer device, and storage medium
US20190370659A1 (en) Optimizing neural network architectures
CN112184508B (zh) 一种用于图像处理的学生模型的训练方法及装置
US20210110288A1 (en) Adaptive model insights visualization engine for complex machine learning models
US20220283820A1 (en) Data parallelism in distributed training of artificial intelligence models
US20220121903A1 (en) Method of performing splitting in neural network model by means of multi-core processor, and related product
US11354579B2 (en) Dynamic multi-layer execution for artificial intelligence modeling
US20220276871A1 (en) Executing large artificial intelligence models on memory-constrained devices
US20220230048A1 (en) Neural Architecture Scaling For Hardware Accelerators
CN112579063A (zh) 一种用于深度学习编译器中探索优化空间的加速方法
US20220303176A1 (en) Efficient optimization for neural network deployment and execution
CN113128478B (zh) 模型训练方法、行人分析方法、装置、设备及存储介质
WO2022152104A1 (zh) 动作识别模型的训练方法及装置、动作识别方法及装置
WO2023150912A1 (zh) 算子的调度运行时间比较方法、装置及存储介质
CN116594748A (zh) 针对任务的模型定制处理方法、装置、设备和介质
WO2023160290A1 (zh) 神经网络推理加速方法、目标检测方法、设备及存储介质
CN114936085A (zh) 基于深度学习算法的etl调度方法及装置
WO2020164644A2 (zh) 神经网络模型拆分方法、装置、计算机设备和存储介质
US20220292300A1 (en) Efficient quantization for neural network deployment and execution
US20220198277A1 (en) Post-hoc explanation of machine learning models using generative adversarial networks
CN112364933A (zh) 图像分类方法、装置、电子设备和存储介质
WO2023160060A1 (zh) 一种模型优化方法、装置、电子设备、计算机可读存储介质及计算机程序产品
CN111339364A (zh) 视频分类方法、介质、装置和计算设备
US20220292334A1 (en) Efficient memory use optimization for neural network deployment and execution

Legal Events

Date Code Title Description
WWE Wipo information: entry into national phase

Ref document number: 18284076

Country of ref document: US

121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 23758915

Country of ref document: EP

Kind code of ref document: A1