CN115146775B - 边缘设备推理加速方法、装置和数据处理系统 - Google Patents
边缘设备推理加速方法、装置和数据处理系统 Download PDFInfo
- Publication number
- CN115146775B CN115146775B CN202210785413.XA CN202210785413A CN115146775B CN 115146775 B CN115146775 B CN 115146775B CN 202210785413 A CN202210785413 A CN 202210785413A CN 115146775 B CN115146775 B CN 115146775B
- Authority
- CN
- China
- Prior art keywords
- neural network
- network model
- convolution
- pruning
- model
- 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
- 238000000034 method Methods 0.000 title claims abstract description 86
- 230000001133 acceleration Effects 0.000 title claims abstract description 57
- 238000012545 processing Methods 0.000 title claims abstract description 44
- 238000003062 neural network model Methods 0.000 claims abstract description 223
- 238000013138 pruning Methods 0.000 claims abstract description 135
- 238000013528 artificial neural network Methods 0.000 claims abstract description 9
- 230000006870 function Effects 0.000 claims description 117
- 238000012795 verification Methods 0.000 claims description 27
- 238000012549 training Methods 0.000 claims description 25
- 238000010200 validation analysis Methods 0.000 claims description 23
- 238000012163 sequencing technique Methods 0.000 claims description 21
- 230000008859 change Effects 0.000 claims description 9
- 230000002596 correlated effect Effects 0.000 claims description 7
- 238000004422 calculation algorithm Methods 0.000 claims description 6
- 230000006835 compression Effects 0.000 abstract description 6
- 238000007906 compression Methods 0.000 abstract description 6
- 238000013473 artificial intelligence Methods 0.000 abstract description 2
- 238000004590 computer program Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 17
- 230000008569 process Effects 0.000 description 16
- 230000000875 corresponding effect Effects 0.000 description 9
- 230000015654 memory Effects 0.000 description 9
- 238000004891 communication Methods 0.000 description 8
- 238000004458 analytical method Methods 0.000 description 7
- 238000004364 calculation method Methods 0.000 description 7
- 230000000694 effects Effects 0.000 description 6
- 238000007667 floating Methods 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000012935 Averaging Methods 0.000 description 2
- 230000014509 gene expression Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000013527 convolutional neural network Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000013135 deep learning Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000011159 matrix material Substances 0.000 description 1
- 238000003058 natural language processing Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 239000000758 substrate Substances 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/04—Architecture, e.g. interconnection topology
- G06N3/0464—Convolutional networks [CNN, ConvNet]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/06—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons
- G06N3/063—Physical realisation, i.e. hardware implementation of neural networks, neurons or parts of neurons using electronic means
-
- 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
- G06N5/00—Computing arrangements using knowledge-based models
- G06N5/04—Inference or reasoning models
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computing Systems (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Evolutionary Computation (AREA)
- Health & Medical Sciences (AREA)
- Software Systems (AREA)
- Artificial Intelligence (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Molecular Biology (AREA)
- General Health & Medical Sciences (AREA)
- Neurology (AREA)
- Image Analysis (AREA)
Abstract
本公开提供了一种边缘设备推理加速方法、装置、系统、介质和程序产品,可以应用于人工智能技术领域。该方法包括:获得预先训练的第一神经网络模型;对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型;获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间;若所述第一推理时间小于目标推理时间,确定所述第二神经网络模型为符合所述边缘设备部署要求的模型。能够以目标推理时间为约束,利用神经网络剪枝方法进行模型压缩,可针对待部署的边缘设备剪枝出满足部署需求的模型,实现特定边缘设备的推理加速。本公开还提供了一种部署在边缘设备的数据处理系统。
Description
技术领域
本公开涉及人工智能领域,更具体地,涉及一种边缘设备推理加速方法、装置、数据处理系统、边缘设备推理加速系统、介质和程序产品。
背景技术
通常精度符合要求的神经网络模型的参数量和浮点计算量都很大,很难在如可穿戴设备、车载系统等边缘设备上部署。相关技术中,可以对神经网络模型进行压缩,减小参数量和浮点计算量。然而神经网络模型在边缘设备上的推理时间与边缘设备的诸多特性息息相关,例如设备型号、输入数据类型、访存带宽和数据对齐方式等因素。因此,将相关技术中压缩后的神经网络模型部署在特定边缘设备中,存在推理速度较慢的问题。
发明内容
鉴于上述问题,本公开提供了一种边缘设备推理加速方法、装置、数据处理系统、边缘设备推理加速系统、介质和程序产品。
本公开实施例的一个方面提供了一种边缘设备推理加速方法,包括:获得预先训练的第一神经网络模型,其中,所述第一神经网络模型包括N个卷积层,每个卷积层包括至少一个卷积核,N为大于或等于1的整数;对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型;获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间,其中,所述第一推理时间包括利用所述第二神经网络模型处理特定输入数据并得到处理结果的时间;若所述第一推理时间小于目标推理时间,确定所述第二神经网络模型为符合所述边缘设备部署要求的模型,其中,所述部署要求包括对所述待部署的边缘设备的推理加速要求,所述目标推理时间根据所述待部署的边缘设备的性能预先设置。
根据本公开的实施例,在对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝之前,还包括:根据所述每个卷积层的重要度,获得所述每个卷积层的第一分数,其中,所述重要度用于表征对所述第一神经网络模型在验证集的第一损失函数值的影响程度;根据所述N个卷积层的第一分数的大小进行排序得到第一排序结果,其中,所述第一排序结果用于作为对所述每个卷积层进行剪枝的依据。
根据本公开的实施例,第i个卷积层为所述N个卷积层中的任一个,i大于或等于1,且i小于或等于N,所述获得所述每个卷积层的第一分数包括:令i的初始值为1,循环执行以下操作,从所述第一神经网络模型中剪枝所述第i个卷积层,得到第三神经网络模型;获得所述第三神经网络模型在验证集的第三损失函数值;根据所述第三损失函数值获得所述第i个卷积层的第一分数;若i的值小于N,令i的值加1。
根据本公开的实施例,还包括:根据M个剪枝比例,分别对所述i个卷积层中的卷积核进行剪枝,得到M个第四神经网络模型,M为大于或等于1的整数;分别获得所述M个第四神经网络模型在所述验证集上的M个第四损失函数值;其中,根据所述第三损失函数值获得所述第i个卷积层的第一分数包括:根据所述第三损失函数值和所述M个第四损失函数值,获得所述第i个卷积层的第一分数。
根据本公开的实施例,所述每个卷积层的第一分数与重要度正相关,对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型包括:根据所述第一排序结果中从小至大的顺序,依次对所述每个卷积层进行剪枝。
根据本公开的实施例,第j个顺序为所述第一排序结果中的任一个,j大于或等于1,且j小于或等于N,所述根据所述第一排序结果中从小至大的顺序,依次对所述每个卷积层进行剪枝包括:令j的初始值为1,循环执行以下操作,在当前待剪枝模型的基础上,对所述第一神经网络模型中第j个顺序的卷积层进行剪枝,得到第五神经网络模型;获得所述第五神经网络模型在所述验证集的第五损失函数值;若所述第一损失函数值和所述第五损失函数值之间的第一变化量小于目标变化量,将所述第五神经网络模型作为所述当前待剪枝模型,并在j的值小于N的情况下,令j的值加1后执行下一次循环。
根据本公开的实施例,若所述第一损失函数值和所述第五损失函数值之间的第一变化量大于或等于目标变化量,在所述令j的值加1之前,还包括:对所述第j个顺序的卷积层进行卷积核剪枝,得到第六神经网络模型;获得所述第六神经网络模型在所述验证集上的第六损失函数值;若所述第一损失函数值和所述第六损失函数值之间的第二变化量小于所述目标变化量,将所述第六神经网络模型作为所述当前待剪枝模型,并在j的值小于N的情况下,令j的值加1后执行下一次循环;或若所述第一损失函数值和所述第六损失函数值之间的第二变化量大于或等于所述目标变化量,不将所述第六神经网络模型作为所述当前待剪枝模型,并在j的值小于N的情况下,令j的值加1后执行下一次循环。
根据本公开的实施例,在对所述第j个顺序的卷积层进行卷积核剪枝之前,包括:根据每个卷积核的所述重要度,获得所述每个卷积核的第二分数;对所述每个卷积层中所有卷积核的第二分数的大小进行排序,得到N个第二排序结果,其中,所述N个第一排序结果用于作为对所述每个卷积核进行剪枝的依据。
根据本公开的实施例,第i个卷积层为所述N个卷积层中的任一个,i大于或等于1,且i小于或等于N,所述获得所述每个卷积核的第二分数包括:令i的初始值为1,循环执行以下操作,将所述验证集作为所述第一神经网络模型的输入,得到所述第i个卷积层中每个卷积核的参数对,其中,所述参数对包括梯度值和权重值,所述梯度值根据反向传播算法得到;根据所述第i个卷积层中每个卷积核的参数对,得到所述第i个卷积层中每个卷积核的第二分数;若i的值小于N,令i的值加1。
根据本公开的实施例,所述验证集包括S个子集,S大于或等于2,所述将所述验证集作为所述第一神经网络模型的输入,得到所述第i个卷积层中每个卷积核的参数对包括:将所述S个子集中至少两个子集作为所述第一神经网络模型的输入,对应得到所述第i个卷积层中每个卷积核的至少两个参数对,其中,所述至少两个参数对中每个参数对根据所述至少两个子集中每个子集来获得。
根据本公开的实施例,所述根据所述第i个卷积层中每个卷积核的参数对,得到所述第i个卷积层中每个卷积核的第二分数包括:根据所述至少两个参数对,对应得到所述第i个卷积层中每个卷积核的至少两个第三分数;根据所述至少两个第三分数,得到所述第i个卷积层中每个卷积核的第二分数。
根据本公开的实施例,所述每个卷积核的第二分数与重要度正相关,对所述第j个顺序的卷积层进行卷积核剪枝包括:根据所述第二排序结果中从小至大的顺序,对所述第j个顺序的卷积层中至少一个卷积核进行剪枝。
根据本公开的实施例,所述第j个顺序的卷积层包括Q个卷积核,Q大于等于1,所述根据所述第二排序结果中从小至大的顺序,对所述第j个顺序的卷积层中至少一个卷积核进行剪枝包括:循环执行以下操作,其中,循环结束后得到的模型作为所述第六神经网络模型:根据所述第二排序结果中从小至大的顺序,得到p个卷积核;在p的值大于或等于1,且小于Q的情况下,对所述p个卷积核进行剪枝,得到第七神经网络模型;获得所述第七神经网络模型在所述验证集上的第七损失函数值;若所述第一损失函数值和所述第七损失函数值之间的第三变化量小于所述目标变化量,令p的值增加第一预设值。
根据本公开的实施例,还包括:若所述第一损失函数值和所述第七损失函数值之间的第三变化量大于或等于所述目标变化量,令p的值减少第二预设值。
根据本公开的实施例,所述得到第二神经网络模型包括:每更新一次所述当前待剪枝模型,将更新后的所述当前待剪枝模型作为一个所述第二神经网络模型。
根据本公开的实施例,所述获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间包括:获得每个所述第二神经网络的第一推理时间;其中,所述方法还包括:从符合所述部署要求的至少一个第二神经网络模型中,确定出具有最小损失函数值的第二神经网络模型;将所述具有最小损失函数值的第二神经网络模型部署在所述边缘设备。
根据本公开的实施例,还包括:若j的值等于N,获得所述当前待剪枝模型在待部署的边缘设备运行的第三推理时间;其中,所述方法还包括更新所述目标变化量,具体包括:若所述第三推理时间小于所述目标推理时间,令所述目标变化量减少第三预设值。
根据本公开的实施例,所述更新所述目标变化量还包括:若所述第三推理时间大于或等于所述目标推理时间,令所述目标变化量增加第四预设值。
根据本公开的实施例,在获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间之前,还包括:利用训练集对所述第二神经网络模型进行训练,其中,所述训练集中的训练数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据;使训练后的所述第二神经网络模型在待部署的所述边缘设备运行。
根据本公开的实施例,所述特定输入数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据。
本公开的另一方面提供了一种边缘设备推理加速装置,包括:模型获得模块,用于获得预先训练的第一神经网络模型,其中,所述第一神经网络模型包括N个卷积层,每个卷积层包括至少一个卷积核,N为大于或等于1的整数;模型剪枝模块,用于对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型;时间获得模块,用于获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间,其中,所述第一推理时间包括利用所述第二神经网络模型处理特定输入数据并得到处理结果的时间;模型确定模块,用于若所述第一推理时间小于目标推理时间,确定所述第二神经网络模型为符合所述边缘设备部署要求的模型,其中,所述部署要求包括对所述待部署的边缘设备的推理加速要求,所述目标推理时间根据所述待部署的边缘设备的性能预先设置。
本公开的另一方面提供了一种部署在边缘设备的数据处理系统,其中:所述数据处理系统中用于处理特定输入数据的第二神经网络模型根据权利要求1所述的方法获得,所述特定输入数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据。
本公开实施例的另一方面提供了一种边缘设备推理加速系统,包括电子设备,所述电子设备包括:一个或多个处理器;存储装置,用于存储一个或多个程序,其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得一个或多个处理器执行如上所述的方法。
根据本公开的实施例,边缘设备推理加速系统还包括边缘设备。边缘设备用于运行所述一个或多个处理器发送的第二神经网络模型得到第一推理时间;其中,所述一个或多个处理器用于从所述边缘设备获得所述第一推理时间。
本公开实施例的另一方面还提供了一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行如上所述的方法。
本公开实施例的另一方面还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述的方法。
上述一个或多个实施例具有如下有益效果:以待部署的边缘设备上的目标推理时间为约束,利用神经网络剪枝方法进行模型压缩,实现特定边缘设备的推理加速。首先,通过对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝以得到第二神经网络模型,然后,获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间,最后,比较第一推理时间与目标推理时间的大小,来判断第二神经网络模型是否符合所述边缘设备部署要求。从而在得到高压缩率模型的同时,一定程度上解决了在部分硬件平台上由于访存带宽限制等因素导致常规剪枝算法无法有效地加速模型推理的问题。
附图说明
通过以下参照附图对本公开实施例的描述,本公开的上述内容以及其他目的、特征和优点将更为清楚,在附图中:
图1示意性示出了根据本公开实施例的边缘设备推理加速方法的应用场景图;
图2示意性示出了根据本公开实施例的边缘设备推理加速方法的流程图;
图3示意性示出了根据本公开实施例的训练第二神经网络模型的流程图;
图4示意性示出了根据本公开实施例的获得第一排序结果的流程图;
图5示意性示出了根据本公开实施例的获得第一分数的流程图;
图6示意性示出了根据本公开的另一实施例的获得第一分数的流程图;
图7示意性示出了根据本公开实施例的模型剪枝的流程图;
图8示意性示出了根据本公开的另一实施例的模型剪枝的流程图;
图9示意性示出了根据本公开实施例的获得第二排序结果的流程图;
图10示意性示出了根据本公开实施例的获得第二分数的流程图;
图11示意性示出了根据本公开的另一实施例的模型剪枝的流程图;
图12示意性示出了根据本公开的另一实施例的模型剪枝的流程图;
图13示意性示出了根据本公开的另一实施例的边缘设备推理加速方法的流程图;
图14示意性示出了根据本公开的另一实施例的边缘设备推理加速方法的流程图;
图15示意性示出了根据本公开实施例的边缘设备推理加速装置的结构框图;以及
图16示意性示出了根据本公开实施例的适于实现边缘设备推理加速方法的电子设备的方框图。
具体实施方式
以下,将参照附图来描述本公开的实施例。但是应该理解,这些描述只是示例性的,而并非要限制本公开的范围。在下面的详细描述中,为便于解释,阐述了许多具体的细节以提供对本公开实施例的全面理解。然而,明显地,一个或多个实施例在没有这些具体细节的情况下也可以被实施。此外,在以下说明中,省略了对公知结构和技术的描述,以避免不必要地混淆本公开的概念。
在此使用的术语仅仅是为了描述具体实施例,而并非意在限制本公开。在此使用的术语“包括”、“包含”等表明了所述特征、步骤、操作和/或部件的存在,但是并不排除存在或添加一个或多个其他特征、步骤、操作或部件。
在此使用的所有术语(包括技术和科学术语)具有本领域技术人员通常所理解的含义,除非另外定义。应注意,这里使用的术语应解释为具有与本说明书的上下文相一致的含义,而不应以理想化或过于刻板的方式来解释。
在使用类似于“A、B和C等中至少一个”这样的表述的情况下,一般来说应该按照本领域技术人员通常理解该表述的含义来予以解释(例如,“具有A、B和C中至少一个的系统”应包括但不限于单独具有A、单独具有B、单独具有C、具有A和B、具有A和C、具有B和C、和/或具有A、B、C的系统等)。
为解决相关技术中存在的问题,本公开的实施例提供了一种边缘设备推理加速方法。以目标推理时间为约束,利用神经网络剪枝方法进行模型压缩,可针对待部署的边缘设备剪枝出满足需求的模型,实现特定边缘设备的推理加速。首先,通过对第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝以得到第二神经网络模型,然后,获得第二神经网络模型在待部署的边缘设备运行的第一推理时间,最后,比较第一推理时间与目标推理时间的大小,来判断第二神经网络模型是否符合边缘设备部署要求。从而在得到高压缩率模型的同时,一定程度上解决了在部分硬件平台上由于访存带宽限制等因素导致常规剪枝算法无法有效地加速模型推理的问题。
图1示意性示出了根据本公开实施例的边缘设备推理加速方法的应用场景图。
如图1所示,根据该实施例的应用场景100可以包括边缘设备101、102、103,网络104和服务器105。网络104用以在边缘设备101、102、103和服务器105之间提供通信链路的介质。网络104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用边缘设备101、102、103通过网络104与服务器105交互,以接收或发送消息等。边缘设备101、102、103上可以安装有各种通讯客户端应用,例如购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等(仅为示例)。
边缘设备可以是具有边缘计算功能的硬件设备,用于根据配置的软件应用或功能来完成不同的数据处理任务。换言之,可以将数据、数据处理和应用程序集中在边缘设备中,令边缘设备具有存储数据和处理任务的能力。边缘设备可以用于物联网、机器人和智能设备等场景。边缘设备101、102、103包括但不限于自动驾驶平台、可穿戴设备、可植入医疗设备、智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器105可以是提供各种服务的服务器,例如对用户利用边缘设备101、102、103所传送的数据包提供支持的边缘服务器(仅为示例)。边缘服务器可以对接收到的用户请求等数据进行分析等处理,并将处理结果(例如根据用户请求获取或生成的网页、信息、或数据等)反馈给终端设备。
应该理解,图1中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
以下将基于图1描述的场景,通过图2~图14对本公开实施例的边缘设备推理加速方法进行详细描述。
图2示意性示出了根据本公开实施例的边缘设备推理加速方法的流程图。
如图2所示,该实施例的边缘设备推理加速方法包括操作S210~操作S240。
在操作S210,获得预先训练的第一神经网络模型,其中,第一神经网络模型包括N个卷积层,每个卷积层包括至少一个卷积核,N为大于或等于1的整数。
示例性地,可以利用训练集对第一神经网络模型进行预先训练。该训练集中的训练数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据。第一神经网络模型是卷积神经网络模型。
在操作S220,对第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型。
示例性地,模型剪枝是模型压缩的一个方法,其可以将原始模型中一些不重要的连接给剪掉,并可以将保留下来的连接作为新的模型。第一神经网络模型即为原始模型,第二神经网络模型即为新的模型。
在一些实施例中,每次剪枝可将一个卷积层或多个卷积核作为剪枝单位,来对第一神经网络模型进行压缩。具体减掉哪些卷积层或者某个卷积层中的哪些卷积核,可以根据剪枝后新的模型的精度来确定。其中,可以根据新的模型处理验证集数据来得到的损失函数值来确定精度。例如损失函数值小则代表精度高,即模型收敛效果好。
在操作S230,获得第二神经网络模型在待部署的边缘设备运行的第一推理时间,其中,第一推理时间包括利用第二神经网络模型处理特定输入数据并得到处理结果的时间。
根据本公开的实施例,特定输入数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据。
例如图像识别场景中,特定输入数据为一张或多张图片。第二神经网络模型处理该一张或多张图片得到图片识别结果的时间即为第一推理时间。在语音识别场景中,特定输入数据为一段时间内的音频数据。第二神经网络模型处理该音频得到语音识别结果的时间即为第一推理时间。在自然语言处理场景中,如文本主题识别,特定输入数据为一段文本。第二神经网络模型处理该文本得到主题识别结果的时间即为第一推理时间。在目标重识别场景中,特定输入数据为一段时间内的视频数据。第二神经网络模型处理该视频数据得到目标跟踪结果的时间即为第一推理时间。
在一些实施例中,可以按照如下方式在待部署的边缘设备中运行第二神经网络模型处理图片进行测速:
步骤1,读取剪枝过程中得到的第二神经网络模型。
步骤2,根据边缘设备的平台和框架等配置对第二神经网络模型进行处理。例如特定边缘设备不支持SyncBatchNorm,需要转换为BatchNorm2d处理,其中,SyncBatchNorm和BatchNorm2d皆用于对输入进行批量归一化或批量标准化。将第二神经网络模型转化为不同框架部署支持的数据格式,如cambricon格式;onnx(Open Neural Network Exchange,开放神经网络交换)格式;TensorRT支持的文件格式,TensorRT是英伟达开发的深度学习推理引擎(GPU Inference Engine),是一套从模型获得,到模型优化与编译,再到部署的完整工具。
步骤3,设定测速时第二神经网络模型的输入图片数量batch_size(批大小,如64张,仅为示例)和输入图片的shape(通道与尺寸,如3*224*224,仅为示例)。
步骤4,读取一张图片,通过resize/padding(缩放/补边)等方式使其符合输入图片的shape,并拷贝与batch_size相等的份数。
步骤5,将整个batch(批次)送入模型做前向推理,重复若干次(如20次,仅为示例),此步骤为了使设备状态达到稳定,并不计时。
步骤6,将整个batch送入模型做前向推理,重复若干次(如100次,仅为示例),使用系统计时函数求差得到总的推理时间,即获得模型运行前后的两个时间,然后作差,如endtime(运行结束时间)减去starttime(运行前时间)。
步骤7,根据步骤6中总的推理时间求得平均推理时间,如(endtime-starttime)/100。
步骤8,返回步骤7得到的平均推理时间作为测速结果(即第一推理时间)。
在操作S240,若第一推理时间小于目标推理时间,确定第二神经网络模型为符合边缘设备部署要求的模型,其中,部署要求包括对待部署的边缘设备的推理加速要求,目标推理时间根据待部署的边缘设备的性能预先设置。
示例性地,若第一推理时间小于目标推理时间,说明剪枝得到的第二神经网络模型符合要求,并且其比第一神经网络模型的参数量和浮点计算量小,更利于提高待部署的边缘设备推理速度。
示例性地,不同的边缘设备的型号、用途、输入数据类型、访存带宽和数据对齐方式等因素不同,因此具有不同的推理性能。以最终部署在特定边缘设备下的推理时间为约束,搜索出在这个时间约束内符合部署要求的剪枝模型,能更精确地得到与特定边缘设备匹配的模型,从而实现更好的推理加速效果。
根据本公开的实施例,以目标推理时间为约束,利用神经网络剪枝方法进行模型压缩,可针对待部署的边缘设备剪枝出满足需求的模型,实现特定边缘设备的推理加速。在得到高压缩率模型的同时,一定程度上解决了在部分硬件平台上由于访存带宽限制等因素导致常规剪枝算法无法有效地加速模型推理的问题。
图3示意性示出了根据本公开实施例的训练第二神经网络模型的流程图。
如图3所示,在操作S230之前,还可以包括操作S310~操作S320。
在操作S310,利用训练集对第二神经网络模型进行训练,其中,训练集中的训练数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据。
在对第一神经网络模型剪枝后,原始模型中的参数可能不再适用。因此,对第二神经网络模型进行训练后再判断其是否可行。
首先,将一个或多个训练数据输入至第二神经网络模型。训练数据包括样本和标签,如{x1,y1}、{x2,y2}......{xn,yn}。其中,x1~xn为n个待处理的样本,y1~yn为每个样本对应的标签。
其次,例如人脸识别任务中,x1~xn为n个人脸图像,y1~yn为每个样本对应的实际结果。将第二神经网络模型输出的预测结果与标签输入到损失函数中,计算两者之间的对比损失。
最后,根据损失函数的输出进行反向传播更新参数,在损失函数趋于收敛时,认为当前第二神经网络模型的鲁棒性较高,从而得到训练后的第二神经网络模型。
在操作S320,使训练后的第二神经网络模型在待部署的边缘设备运行。
根据本公开的实施例,在确定第二神经网络模型的精度符合要求后,再令其运行在待部署的边缘设备中,可以令符合部署要求的模型也具有较高的可靠性。
图4示意性示出了根据本公开实施例的获得第一排序结果的流程图。
如图4所示,该实施例的获得第一排序结果可以在操作S220之前执行,具体包括操作S410~操作S420。
在操作S410,根据每个卷积层的重要度,获得每个卷积层的第一分数,其中,重要度用于表征对第一神经网络模型的损失函数值的影响程度。
示例性地,影响程度是指剪枝前后的模型处理同一批验证数据,两模型损失函数值之间的变化程度。例如第一神经网络模型处理验证集中的数据,得到损失函数值A1。对某个卷积层进行剪枝得到新的模型,并处理相同验证集中的数据,得到的损失函数值A2。A2相对于A1的变化量(如两者差值的绝对值)可以用来表征重要度。
其中,验证集中的验证数据与训练数据的类型相同,每个验证数据也包括样本和标签。
在操作S420,根据N个卷积层的第一分数的大小进行排序得到第一排序结果,其中,第一排序结果用于作为对每个卷积层进行剪枝的依据。
根据本公开的实施例,通过第一分数来表征卷积层的重要度,从而能够根据第一排序结果确定对N个卷积层的剪枝顺序,提高模型压缩的效率。
下面结合图5和图6,介绍操作S410中获得每个卷积层的第一分数的一些实施例。
图5示意性示出了根据本公开实施例的获得第一分数的流程图。
如图5所示,操作S410中获得每个卷积层的第一分数包括:令i的初始值为1,循环执行操作S510~操作S540。其中,第i个卷积层为N个卷积层中的任一个,i大于或等于1,且i小于或等于N。
在操作S510,从第一神经网络模型中剪枝第i个卷积层,得到第三神经网络模型。
将第i个卷积层从第一神经网络模型中剪去,第三神经网络模型包括剩余的N-1个卷积层。在i为1的时候,可以按照模型前向计算(从输入到输出的计算过程)的顺序,确定出第一个卷积层。随着i的增加,前往后依次分析,每次取一个卷积层进行分析。
在操作S520,获得第三神经网络模型在验证集的第三损失函数值。
可以对第三神经网络模型进行训练,令其具有较高的收敛程度。然后令训练后的第三神经网络模型处理验证集中的数据,并得到第三损失函数值。
在操作S530,根据第三损失函数值获得第i个卷积层的第一分数。
示例性地,可以将验证集分为多个子集,每个子集获得一个第三损失函数值,将多个第三损失函数值的平均数作为第一分数。
在操作S540,判断i是否小于N。若i的值小于N,令i的值加1。若i的值不小于N,结束循环。
根据本公开的实施例,通过剪去第i个卷积层前后的模型损失函数值的变化,来得到该卷积层的第一分数,可以体现出对模型精度的影响。
图6示意性示出了根据本公开的另一实施例的获得第一分数的流程图。
如图6所示,操作S410中获得每个卷积层的第一分数包括操作S510、操作S520和操作S540,还可以包括操作S610~操作S630。其中,操作S630是操作S530的其中一个实施例。其中,操作S510和操作S520参照上述内容,在此不做赘述。
在操作S610,根据M个剪枝比例,分别对i个卷积层中的卷积核进行剪枝,得到M个第四神经网络模型,M为大于或等于1的整数。
M个剪枝比例代表M个不同的剪枝率,对应于M个不同的卷积核数量。例如,分别剪去第i个卷积层中20%、50%和80%的卷积核,得到三个第四神经网络模型(仅为示例)。
示例性地,可以随机选择卷积核进行剪枝。还可以对卷积核的重要度进行排序,按照由小到大的重要度选择卷积核进行剪枝。
在操作S620,分别获得M个第四神经网络模型在验证集上的M个第四损失函数值。
示例性地,对应不同剪枝比例得到的第四神经网络模型在训练集上训练后,在验证集上计算损失函数值并保存。
在操作S630,根据第三损失函数值和M个第四损失函数值,获得第i个卷积层的第一分数。
对于第i个卷积层,得到完全剪去该层时的损失函数值以及不同剪枝率的损失函数值后,对多个损失函数值加权求和得到第一分数。
然后,对N个卷积层的第一分数从低到高排序,得到最终各卷积层的重要度排名。排名越靠前,第一分数越小,说明卷积层进行卷积核剪枝或层剪枝时对模型的损失值影响小,也就是说卷积层的重要度较低。
根据本公开的实施例,根据对每一层进行层剪枝和卷积核剪枝,得到综合性的重要度,用于确定对卷积层剪枝分析的先后顺序。
根据本公开的实施例,每个卷积层的第一分数与重要度正相关,操作S220中对第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型包括:根据第一排序结果中从小至大的顺序,依次对每个卷积层进行剪枝。示例性地,可以先对某个卷积层进行层剪枝,若剪枝后的模型符合待部署的边缘设备的推理加速要求,则对下一卷积层剪枝。若剪枝后的模型不符合推理加速要求,则对该卷积层中的卷积核进行核剪枝继续判断剪枝后的模型是否符合推理加速要求,核剪枝完成后进行下一卷积层剪枝。其中,下一卷积层剪枝重复对该卷积层的剪枝步骤。下面进行详细介绍。
图7示意性示出了根据本公开实施例的模型剪枝的流程图。
如图7所示,根据第一排序结果中从小至大的顺序,依次对每个卷积层进行剪枝包括:令j的初始值为1,循环执行操作S710~操作S750。其中,第j个顺序为第一排序结果中的任一个,j大于或等于1,且j小于或等于N。
在操作S710,在当前待剪枝模型的基础上,对第一神经网络模型中第j个顺序的卷积层进行剪枝,得到第五神经网络模型。
在首次进行卷积层剪枝时,第一神经网络模型即为当前待剪枝模型。
在操作S720,获得第五神经网络模型在验证集的第五损失函数值。
可以对第五神经网络模型进行训练,令其具有较高的收敛程度。然后令训练后的第五神经网络模型处理验证集中的数据,并得到第五损失函数值test_loss。
示例性地,可以计算第五损失函数值test_loss与第一损失函数值test_loss_ori之间的第一变化量(ΔLoss1),如式1)所示。
ΔLoss1=abs(test_loss_ori-test_loss) 式1)
其中,abs表示取绝对值。需要说明的是,式1)仅是本公开计算第一变化量的其中一个实施例,例如还可以令ΔLoss1等于test_loss减去test_loss_ori的值。本公开不进行具体限定。
在操作S730,判断第一损失函数值和第五损失函数值之间的第一变化量(ΔLoss1)是否小于目标变化量(ΔLoss2)。若是,则执行操作S740,若否,则结束执行操作S750。
在操作S740,若第一损失函数值和第五损失函数值之间的第一变化量小于目标变化量,将第五神经网络模型作为当前待剪枝模型。
若ΔLoss1<ΔLoss2成立,那么说明在当前阈值条件下该层可以进行层剪枝,否则该层不可以进行层剪枝。因此,更新当前待剪枝模型,下一次循环中针对的当前待剪枝模型为第五神经网络模型。
在操作S750,判断j是否小于N。在j的值小于N的情况下,令j的值加1,执行操作S710。若j的值不小于N,结束循环。
根据本公开的实施例,通过判断在损失阈值为ΔLoss2的约束条件下,确定第j个顺序的卷积层是否可以直接完全剪去。
图8示意性示出了根据本公开的另一实施例的模型剪枝的流程图。
如图8所示,该实施例的模型剪枝可以包括操作S710~操作S750。若第一损失函数值和第五损失函数值之间的第一变化量大于或等于目标变化量,该次循环还可以包括操作S810~操作S840。其中,操作S710~操作S740可参照上述实施例,在此不做赘述。
在操作S810,对第j个顺序的卷积层进行卷积核剪枝,得到第六神经网络模型。
在操作S820,获得第六神经网络模型在验证集上的第六损失函数值。
可以对第六神经网络模型进行训练,令其具有较高的收敛程度。然后令训练后的第六神经网络模型处理验证集中的数据,并得到第六损失函数值作为test_loss。根据式1)得到第二变化量(ΔLoss3)。
在操作S830,判断第一损失函数值和第六损失函数值之间的ΔLoss3是否小于ΔLoss2。若是,则执行操作S840,若否,则不将所述第六神经网络模型作为所述当前待剪枝模型,接着执行操作S750,在j的值小于N的情况下,令j的值加1后执行下一次循环,在Loss3大于或等于ΔLoss2的情况下,下一次循环所针对的当前待剪枝模型与本次循环中针对的当前待剪枝模型相同。
在操作S840,若第一损失函数值和第六损失函数值之间的第二变化量小于目标变化量,将第六神经网络模型作为当前待剪枝模型,下一次循环所针对的当前待剪枝模型为第六神经网络模型。
若ΔLoss3<ΔLoss2成立,那么说明在当前阈值条件下该层可以进行卷积核剪枝。因此,更新当前待剪枝模型。
在操作S750,判断j是否小于N。在j的值小于N的情况下,令j的值加1,执行操作S710。若j的值不小于N,结束循环。
根据本公开的实施例,通过判断在损失阈值为ΔLoss2的约束条件下,若确定第j个顺序的卷积层不可以直接完全剪去,则进一步对该卷积层中的卷积核进行剪枝。
下面结合图9~图11,进一步介绍根据卷积核的重要度,对第j个顺序的卷积层进行卷积核剪枝的一些实施例。
图9示意性示出了根据本公开实施例的获得第二排序结果的流程图。
如图9所示,在操作S810之前,还可以包括操作S910~操作S920。
在操作S910,根据每个卷积核的重要度,获得每个卷积核的第二分数。
示例性地,例如第一神经网络模型处理验证集中的数据,得到损失函数值A1。对一个卷积层中的一个或多个卷积核进行剪枝得到的新的模型,并处理相同验证集中的数据,得到的损失函数值A3。A3相对于A1的变化量用来表征重要度。
在操作S920,对每个卷积层中所有卷积核的第二分数的大小进行排序,得到N个第二排序结果,其中,N个第一排序结果用于作为对每个卷积核进行剪枝的依据。
根据本公开的实施例,通过第二分数来表征一个卷积层中某个卷积核的重要度,从而能够根据第二排序结果确定对一个卷积层中卷积核的剪枝顺序,提高模型压缩的效率。
在一些实施例中,可以根据卷积核中非零值的个数确定第二分数,或根据卷积核的特征值确定第二分数,或根据卷积核的权重和梯度确定第二分数。
下面结合图10,对根据卷积核的权重和梯度确定第二分数的实施例进行介绍。
图10示意性示出了根据本公开实施例的获得第二分数的流程图。
如图10所示,操作S910中获得第二分数包括操作S1010~操作S1030。
在操作S1010,将验证集作为第一神经网络模型的输入,得到第i个卷积层中每个卷积核的参数对,其中,参数对包括梯度值和权重值,梯度值根据反向传播算法得到。其中,权重值包括每个卷积核中的矩阵元素值。
在利用训练集对第一神经网络模型训练完成后,可以利用验证集对其进行前向计算和反向计算。反向计算包括利用反向传播方法得到每个卷积核的梯度值的过程。
本公开的实施例利用验证集进行反向计算得到梯度值,避免若训练后的模型过拟合,导致在训练集中得到的梯度值不可靠的情况发生。
在操作S1020,根据第i个卷积层中每个卷积核的参数对,得到第i个卷积层中每个卷积核的第二分数。
示例性地,可以根据每个卷积核的梯度值和权重值求得L1范数,来作为第二分数。
在一些实施例中,可以将验证集划分为多个batch,每个batch作为一个子集。因此,验证集可以包括S个子集,S大于或等于2,将S个子集中至少两个子集作为第一神经网络模型的输入,对应得到第i个卷积层中每个卷积核的至少两个参数对。其中,所述至少两个参数对中每个参数对根据所述至少两个子集中每个子集来获得,即对每个子集执行一次操作S1010得到对应的一个参数对。
首先,根据至少两个参数对,对应得到第i个卷积层中每个卷积核的至少两个第三分数。在一些实施例中,根据一个卷积核的每个参数对求得一个L1范数,将该L1范数直接作为一个第三分数。在另一些实施例中,在根据某个子集得到第i个卷积层中每个卷积核的一个参数对的情况下,首先获得每个卷积核的L1范数。然后利用rank函数(排名函数)对每个卷积核的L1范数进行排序,获得每个卷积核的排名。最后根据排名进行每个卷积核的第三分数的赋值。
其次,根据至少两个第三分数,得到第i个卷积层中每个卷积核的第二分数。例如对多个第三分数求和得到第二分数。还可以对多个第三分数求平均值得到第二分数。求平均值的作用在于,可以避免数据噪声干扰,例如根据某个子集中的数据得到的梯度值异于正常水平则可能是噪声。
在一些实施例中,可以不将验证集划分为多个batch,而直接将验证集作为一个数据集合。在该实施例中,可以利用验证集作为第一神经网络模型的输入,对应得到第i个卷积层中每个卷积核的一个参数对。首先获得每个卷积核的L1范数。然后利用rank函数(排名函数)对每个卷积核的L1范数进行排序,获得每个卷积核的排名。最后,根据排名进行每个卷积核的第三分数的赋值。该步骤中得到的每个卷积核的第三分数可以直接作为第二分数。
在操作S1030,判断i的值是否小于N。若i的值小于N,令i的值加1。若i的值不小于N,结束循环。
根据本公开的实施例,根据得到每个卷积核的重要度,确定对卷积核剪枝分析的先后顺序。
根据本公开的实施例,每个卷积核的第二分数与重要度正相关,操作S810中对第j个顺序的卷积层进行卷积核剪枝包括:根据第二排序结果中从小至大的顺序,对第j个顺序的卷积层中至少一个卷积核进行剪枝。其中,第j个顺序的卷积层包括Q个卷积核,Q大于等于1。
图11示意性示出了根据本公开的另一实施例的模型剪枝的流程图。
如图11所示,操作S810的其中一个实施例可以包括循环执行操作S1110~操作S1170,其中,循环结束后得到的模型作为第六神经网络模型。
在操作S1110,根据第二排序结果中从小至大的顺序,得到p个卷积核。
示例性地,首次剪枝时,可以预先确定p的初始值。例如根据专家经验确定一个初始比例20%,则p的值即为Q的20%。
在一些实施例中,可以根据二分法确定p的值。例如设置L的初始值为0,R的初始值为Q,每次剪枝时,p的值为(L+R)*0.5。
在操作S1120,判断1≤p<Q是否成立。若是,则执行操作S1130。若否,则结束循环。
在一些实施例中,在操作S1120还可以判断L是否等于R。若是,则表明二分法不再适合用于更新p的值。
在操作S1130,在p的值大于或等于1,且小于Q的情况下,对p个卷积核进行剪枝,得到第七神经网络模型。
在操作S1140,获得第七神经网络模型在验证集上的第七损失函数值。
可以对第七神经网络模型进行训练,令其具有较高的收敛程度。然后令训练后的第七神经网络模型处理验证集中的数据,并得到第七损失函数值作为test_loss。第一损失函数值和第七损失函数值之间的第三变化量(ΔLoss4)可以根据式1)获得。
在操作S1150,判断第一损失函数值和第七损失函数值之间的第三变化量(ΔLoss4)是否小于目标变化量(ΔLoss2)。若是,则执行操作S1160。若否,则执行操作S1170。
在操作S1160,若第一损失函数值和第七损失函数值之间的第三变化量小于目标变化量,令p的值增加第一预设值,并执行下一次循环,即增加第一预设值后,根据p的最新值重新从操作S1110开始执行。
若ΔLoss4<ΔLoss2成立,那么说明在当前阈值条件下该层可以进行当前剪枝率的核剪枝。因此,更新p的值。
在一些实施例中,可以预先设置第一预设值,例如10%(仅为示例)。若使用二分法,则可以令L的值为当前p的值加1,并更新(L+R)*0.5得到新的p值。
在操作S1170,若第一损失函数值和第七损失函数值之间的第三变化量大于或等于目标变化量,令p的值减少第二预设值,并执行下一次循环,即减少第二预设值后,根据p的最新值重新从操作S1110开始执行。
在一些实施例中,可以预先设置第二预设值,例如10%(仅为示例)。若使用二分法,则可以令R的值为当前p的值减1,并更新(L+R)*0.5得到新的p值。
根据本公开的实施例,在符合目标变化量的前提下,逐渐对某个层中卷积核进行剪枝,最终得到的第七神经网络模型作为第六神经网络模型。
在一些实施例中,每次循环对第一神经网络模型中的每个卷积层剪枝分析结束后,可以根据最终结果更新目标变化量。下面结合图12进一步介绍。
图12示意性示出了根据本公开的另一实施例的模型剪枝的流程图。
如图12所示,该实施例的模型剪枝可以包括操作S710~操作S750和S810~操作S840。若j的值为N,还可以更新目标变化量,具体包括操作S1210~操作S1240。其中,操作S710~操作S750和S810~操作S840可参照上述实施例,在此不做赘述。
在操作S1210,若j的值等于N,获得当前待剪枝模型在待部署的边缘设备运行的第三推理时间。
因为每次循环j的值递增1,因此,递增的过程中,在j小于N不成立的情况下,j的值等于N。
将当前待剪枝模型在待部署的边缘设备运行,利用该模型处理特定输入数据并得到处理结果的时间即为第三推理时间。
在操作S1220,若第三推理时间小于目标推理时间,令目标变化量减少第三预设值。
若第三推理时间小于目标推理时间,说明在当前存在模型既满足LOSS条件(即小于目标变化量)又满足推理加速条件(即小于目标推理时间),因此缩小目标变化量。
在一些实施例中,可以预先设置第三预设值,例如5秒(仅为示例)。还可以在当前目标变化量的基础上取中间值。
在操作S1230,若第三推理时间大于或等于目标推理时间,令目标变化量增加第四预设值。
若第三推理时间大于或等于目标推理时间,说明在当前不存在模型既满足LOSS条件又满足推理加速条件,因此增加目标变化量。
在一些实施例中,可以预先设置第三预设值,例如5秒(仅为示例)。还可以在当前目标变化量的基础上灵活确定第三预设值。
在操作S1240,判断0≤ΔLoss2<W是否成立,若是,则执行操作S710。若否,则结束循环。
在一些实施例中,目标变化量并非是无限制的增加或减少,在目标变化值为绝对值的情况下,其最小为0。而目标变化值过大,表明剪枝后新的模型相对于原始模型出现了明显的性能变化,该情况下不考虑采用新的模型。其中,W的值可以根据实际情况确定。
根据本公开的实施例,通过灵活调整目标变化量,可以提高获得既满足LOSS条件又满足推理加速条件的模型的效率。
如图12所示,本公开实施例的边缘设备推理加速方法还可以包括操作S1250。在操作S1250,每更新一次当前待剪枝模型,将更新后的当前待剪枝模型作为一个第二神经网络模型。例如,在一个循环中,若在操作S740将第四神经网络模型作为当前待剪枝模型,则相应地将该第四神经网络模型作为一个第二神经网络模型。在操作S840将第五神经网络模型作为当前待剪枝模型,则相应地将该第五神经网络模型作为一个第二神经网络模型。
根据本公开的实施例,在对模型剪枝结束后,可以获得一个或多个第二神经网络模型,可以从该些模型中确定出一个进行部署,下面通过图13进行介绍。
图13示意性示出了根据本公开的另一实施例的边缘设备推理加速方法的流程图。
如图13所示,该实施例的边缘设备推理加速方法可以包括操作S210、操作S220和操作S240,还可以包括操作S1310~操作S1330。其中,操作S1310为操作S230的其中一个实施例。其中,操作S210、操作S220和操作S240可参照上述实施例,在此不做赘述。
在操作S1310,获得每个第二神经网络的第一推理时间。
在操作S1320,从符合部署要求的至少一个第二神经网络模型中,确定出具有最小损失函数值的第二神经网络模型。
在操作S1330,将具有最小损失函数值的第二神经网络模型部署在边缘设备。
根据本公开的实施例,最终部署的模型即符合推理加速条件,又接近于第一神经网络模型的精度,能够取得更稳定的数据处理效果。
在另一些实施例中,还可以从符合部署要求的至少一个第二神经网络模型中,确定出具有最小第三变化量的第二神经网络模型,其中,第三变化量包括第一变化量或第二变化量。将具有最小第三变化量的第二神经网络模型部署在边缘设备。
本公开的实施例还提供了一种部署在边缘设备的数据处理系统,其中:数据处理系统中用于处理特定输入数据的第二神经网络模型根据上述图2~图13描述的一个或多个实施例获得,特定输入数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据。参照图1,数据处理系统可以部署在边缘设备101、102和103。
图14示意性示出了根据本公开的另一实施例的边缘设备推理加速方法的流程图。
如图14所示,该实施例的方法包括操作S1401~操作S1416。
在操作S1401,构建原始模型并导入权重,读取训练和验证数据集,在验证集上测试得到原始模型的损失值test_loss_ori,设置推理时间约束target_time,初始化损失阈值的左边界值LOSS_L=0.0,右边界值LOSS_R=0.1(仅为示例),设置结果集合为空集。
在操作S1402,判断LOSS_L和LOSS_R的差的绝对值是否小于0.005(仅为示例)。若是,则执行操作S1403。若否,则执行操作S1404。
在操作S1403,若不等式成立,那么从结果集合中选择loss最小的模型作为压缩后的模型保存下来并退出分析。
在操作S1404,设置Find_flag=False,Delta_loss=LOSS_R,STEP=(LOSS_R-LOSS_L)。其中,Find_flag用于作为更新目标变化量的标识,Delta_loss表示目标变化量。
在操作S1405,读取卷积层的综合重要度,即第一分数,可以参照操作S510~操作S530,和操作S610~操作S630。对综合重要度进行排序得到第一排序结果,从重要度低的层开始分析。
在操作S1406,对于模型中的某一层,先进行层剪枝,若该层在Delta_loss阈值约束下可以层剪枝,那么执行操作S1407,否则执行操作S1408。
在操作S1407,若该层可以进行层剪枝,则下发到目标硬件平台测试模型速度temp_time。
在操作S1408,若该层不能进行层剪枝,则对该层进行卷积核剪枝。
在操作S1409,若卷积核剪枝过程中,有满足Deta_loss的模型,则下发到目标硬件平台测试模型速度temp_time。
在操作S1410,判断temp_time<target_time是否成立。若是,则执行操作S1411和操作S1412。若否,则执行操作S1412。
在操作S1411,当前模型加入到分析的结果集合中,并设置Find_flag=True。
在操作S1412,判断该层是否为重要度分数最高的层。若其是重要度最高的层,则可能是最后一个卷积层。若是,则执行操作S1414。若否,则执行操作S1413。
在操作S1413,开始分析下一层。
在操作S1414,判断Find_flag是否为True。若是,则执行操作S1415。若否,则执行操作S1416。
在操作S1415,如果Find_flag为True,则说明在当前LOSS_L和LOSS_R阈值之间存在模型既满足LOSS条件又满足推理速度条件,因此缩小阈值,即LOSS_R=(LOSS_L+LOSS_R)/2,同时记录当前LOSS_R为MaxR(即后续搜索不需要再超过该maxR的值)。然后执行操作S1402。
在操作S1416,如果Find_flag为False,则说明在当前阈值区间不存在剪枝模型既满足LOSS阈值又满足推理速度条件,因此需要扩大阈值。判断MaxR是否已定义。若是,则执行操作S1418。若否,则执行操作S1417。
在操作S1417,令LOSS_L=LOSS_R,LOSS_R=LOSS_R+2*STEP。然后执行操作S1402。
在操作S1418,令L OSS_L=LOSS_R,LOSS_R=(LOSS_R+MaxR)/2。然后执行操作S1402。
基于上述边缘设备推理加速方法,本公开还提供了一种边缘设备推理加速装置。以下将结合图15对该装置进行详细描述。
图15示意性示出了根据本公开实施例的边缘设备推理加速装置的结构框图。
如图15所示,该实施例的边缘设备推理加速装置1500包括模型获得模块1510、模型剪枝模块1520、时间获得模块1530和模型确定模块1540。
模型获得模块1510可以执行操作S210,用于获得预先训练的第一神经网络模型,其中,第一神经网络模型包括N个卷积层,每个卷积层包括至少一个卷积核,N为大于或等于1的整数。
模型剪枝模块1520可以执行操作S220,用于对第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型。
时间获得模块1530可以执行操作S230,用于获得第二神经网络模型在待部署的边缘设备运行的第一推理时间,其中,第一推理时间包括利用第二神经网络模型处理特定输入数据并得到处理结果的时间。
模型确定模块1540可以执行操作S240,用于若第一推理时间小于目标推理时间,确定第二神经网络模型为符合边缘设备部署要求的模型,其中,部署要求包括对待部署的边缘设备的推理加速要求,目标推理时间根据待部署的边缘设备的性能预先设置。
根据本公开的实施例,边缘设备推理加速装置1500还可以包括模型训练模块,用于执行操作S310~操作S320。
根据本公开的实施例,边缘设备推理加速装置1500还可以包括第一排序模块,用于执行操作S410~操作S420,操作S510~操作S540,操作S610~操作S630。
根据本公开的实施例,模型剪枝模块1520还可以用于根据第一排序结果中从小至大的顺序,依次对每个卷积层进行剪枝。
根据本公开的实施例,模型剪枝模块1520还可以执行操作S710~操作S750,操作S810~操作S840。
根据本公开的实施例,边缘设备推理加速装置1500还可以包括第二排序模块,用于执行操作S910~操作S920,操作S1010~操作S1030。
根据本公开的实施例,模型剪枝模块1520还可以执行操作S1110~操作S1170。
根据本公开的实施例,边缘设备推理加速装置1500还可以包括目标变化量更新模块,用于执行操作S1210~操作S1240。
根据本公开的实施例,边缘设备推理加速装置1500还可以包括模型部署模块,用于执行操作S1250、操作S1310~操作S1330。
需要说明的是,装置部分实施例中各模块/单元/子单元等的实施方式、解决的技术问题、实现的功能、以及达到的技术效果分别与方法部分实施例中各对应的步骤的实施方式、解决的技术问题、实现的功能、以及达到的技术效果相同或类似,在此不再赘述。
根据本公开的实施例,模型获得模块1510、模型剪枝模块1520、时间获得模块1530和模型确定模块1540中的任意多个模块可以合并在一个模块中实现,或者其中的任意一个模块可以被拆分成多个模块。或者,这些模块中的一个或多个模块的至少部分功能可以与其他模块的至少部分功能相结合,并在一个模块中实现。
根据本公开的实施例,模型获得模块1510、模型剪枝模块1520、时间获得模块1530和模型确定模块1540中的至少一个可以至少被部分地实现为硬件电路,例如现场可编程门阵列(FPGA)、可编程逻辑阵列(PLA)、片上系统、基板上的系统、封装上的系统、专用集成电路(ASIC),或可以通过对电路进行集成或封装的任何其他的合理方式等硬件或固件来实现,或以软件、硬件以及固件三种实现方式中任意一种或以其中任意几种的适当组合来实现。或者,模型获得模块1510、模型剪枝模块1520、时间获得模块1530和模型确定模块1540中的至少一个可以至少被部分地实现为计算机程序模块,当该计算机程序模块被运行时,可以执行相应的功能。
本公开的实施例提供了一种边缘设备推理加速系统,包括电子设备和边缘设备。
图16示意性示出了根据本公开实施例的适于实现边缘设备推理加速方法的电子设备的方框图。
如图16所示,根据本公开实施例的电子设备1600包括处理器1601,其可以根据存储在只读存储器(ROM)1602中的程序或者从存储部分1608加载到随机访问存储器(RAM)1603中的程序而执行各种适当的动作和处理。处理器1601例如可以包括通用微处理器(例如CPU)、指令集处理器和/或相关芯片组和/或专用微处理器(例如,专用集成电路(ASIC))等等。处理器1601还可以包括用于缓存用途的板载存储器。处理器1601可以包括用于执行根据本公开实施例的方法流程的不同动作的单一处理单元或者是多个处理单元。
在RAM1603中,存储有电子设备1600操作所需的各种程序和数据。处理器1601、ROM1602以及RAM 1603通过总线1604彼此相连。处理器1601通过执行ROM 1602和/或RAM 1603中的程序来执行根据本公开实施例的方法流程的各种操作。需要注意,程序也可以存储在除ROM 1602和RAM 1603以外的一个或多个存储器中。处理器1601也可以通过执行存储在一个或多个存储器中的程序来执行根据本公开实施例的方法流程的各种操作。
根据本公开的实施例,电子设备1600还可以包括输入/输出(I/O)接口1605,输入/输出(I/O)接口1605也连接至总线1604。电子设备1600还可以包括连接至I/O接口1605的以下部件中的一项或多项:包括键盘、鼠标等的输入部分1606。包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1607。包括硬盘等的存储部分1608。以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1609。通信部分1609经由诸如因特网的网络执行通信处理。驱动器1610也根据需要连接至I/O接口1605。可拆卸介质1611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1610上,以便于从其上读出的计算机程序根据需要被安装入存储部分1608。
本公开还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中描述的设备/装置/系统中所包含的。也可以是单独存在,而未装配入该设备/装置/系统中。上述计算机可读存储介质承载有一个或者多个程序,当上述一个或者多个程序被执行时,实现根据本公开实施例的方法。
根据本公开的实施例,计算机可读存储介质可以是非易失性的计算机可读存储介质,例如可以包括但不限于:便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本公开中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。例如,根据本公开的实施例,计算机可读存储介质可以包括上文描述的ROM 1602和/或RAM 1603和/或ROM 1602和RAM 1603以外的一个或多个存储器。
本公开的实施例还包括一种计算机程序产品,其包括计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。当计算机程序产品在计算机系统中运行时,该程序代码用于使计算机系统实现本公开实施例所提供的方法。
在该计算机程序被处理器1601执行时执行本公开实施例的系统/装置中限定的上述功能。根据本公开的实施例,上文描述的系统、装置、模块、单元等可以通过计算机程序模块来实现。
在一种实施例中,该计算机程序可以依托于光存储器件、磁存储器件等有形存储介质。在另一种实施例中,该计算机程序也可以在网络介质上以信号的形式进行传输、分发,并通过通信部分1609被下载和安装,和/或从可拆卸介质1611被安装。该计算机程序包含的程序代码可以用任何适当的网络介质传输,包括但不限于:无线、有线等等,或者上述的任意合适的组合。
在这样的实施例中,该计算机程序可以通过通信部分1609从网络上被下载和安装,和/或从可拆卸介质1611被安装。在该计算机程序被处理器1601执行时,执行本公开实施例的系统中限定的上述功能。根据本公开的实施例,上文描述的系统、设备、装置、模块、单元等可以通过计算机程序模块来实现。
根据本公开的实施例,可以以一种或多种程序设计语言的任意组合来编写用于执行本公开实施例提供的计算机程序的程序代码,具体地,可以利用高级过程和/或面向对象的编程语言、和/或汇编/机器语言来实施这些计算程序。程序设计语言包括但不限于诸如Java,C++,python,“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。在涉及远程计算设备的情形中,远程计算设备可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算设备,或者,可以连接到外部计算设备(例如利用因特网服务提供商来通过因特网连接)。
附图中的流程图和框图,图示了按照本公开各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
本领域技术人员可以理解,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合或/或结合,即使这样的组合或结合没有明确记载于本公开中。特别地,在不脱离本公开精神和教导的情况下,本公开的各个实施例和/或权利要求中记载的特征可以进行多种组合和/或结合。所有这些组合和/或结合均落入本公开的范围。
以上对本公开的实施例进行了描述。但是,这些实施例仅仅是为了说明的目的,而并非为了限制本公开的范围。尽管在以上分别描述了各实施例,但是这并不意味着各个实施例中的措施不能有利地结合使用。本公开的范围由所附权利要求及其等同物限定。不脱离本公开的范围,本领域技术人员可以做出多种替代和修改,这些替代和修改都应落在本公开的范围之内。
Claims (22)
1.一种边缘设备推理加速方法,包括:
获得预先训练的第一神经网络模型,其中,所述第一神经网络模型包括N个卷积层,每个卷积层包括至少一个卷积核,N为大于或等于1的整数;
对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型;
获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间,其中,所述第一推理时间包括利用所述第二神经网络模型处理输入数据并得到处理结果的时间;
若所述第一推理时间小于目标推理时间,确定所述第二神经网络模型为符合所述边缘设备部署要求的模型,其中,所述部署要求包括对所述待部署的边缘设备的推理加速要求,所述目标推理时间根据所述待部署的边缘设备的性能预先设置,所述性能与以下至少一个因素相关:边缘设备的型号、用途、输入数据类型、访存带宽和数据对齐方式;
其中,在对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝之前,还包括:
根据所述每个卷积层的重要度,获得所述每个卷积层的第一分数,其中,所述重要度用于表征对所述第一神经网络模型在验证集的第一损失函数值的影响程度;
根据所述N个卷积层的第一分数的大小进行排序得到第一排序结果,其中,所述第一排序结果用于作为对所述每个卷积层进行剪枝的依据;
其中,所述每个卷积层的第一分数与重要度正相关,对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型包括:
根据所述第一排序结果中从小至大的顺序,依次对所述每个卷积层进行剪枝;
其中,第j个顺序为所述第一排序结果中的任一个,j大于或等于1,且j小于或等于N,所述根据所述第一排序结果中从小至大的顺序,依次对所述每个卷积层进行剪枝包括:令j的初始值为1,循环执行以下操作,
在当前待剪枝模型的基础上,对所述第一神经网络模型中第j个顺序的卷积层进行剪枝,得到第五神经网络模型;
获得所述第五神经网络模型在所述验证集的第五损失函数值;
若所述第一损失函数值和所述第五损失函数值之间的第一变化量小于目标变化量,将所述第五神经网络模型作为所述当前待剪枝模型,并在j的值小于N的情况下,令j的值加1后执行下一次循环。
2.根据权利要求1所述的方法,其中,第i个卷积层为所述N个卷积层中的任一个,i大于或等于1,且i小于或等于N,所述获得所述每个卷积层的第一分数包括:令i的初始值为1,循环执行以下操作,
从所述第一神经网络模型中剪枝所述第i个卷积层,得到第三神经网络模型;
获得所述第三神经网络模型在验证集的第三损失函数值;
根据所述第三损失函数值获得所述第i个卷积层的第一分数;
若i的值小于N,令i的值加1。
3.根据权利要求2所述的方法,其中,还包括:
根据M个剪枝比例,分别对所述i个卷积层中的卷积核进行剪枝,得到M个第四神经网络模型,M为大于或等于1的整数;
分别获得所述M个第四神经网络模型在所述验证集上的M个第四损失函数值;
其中,根据所述第三损失函数值获得所述第i个卷积层的第一分数包括:
根据所述第三损失函数值和所述M个第四损失函数值,获得所述第i个卷积层的第一分数。
4.根据权利要求1所述的方法,其中,若所述第一损失函数值和所述第五损失函数值之间的第一变化量大于或等于目标变化量,还包括:
对所述第j个顺序的卷积层进行卷积核剪枝,得到第六神经网络模型;
获得所述第六神经网络模型在所述验证集上的第六损失函数值;
若所述第一损失函数值和所述第六损失函数值之间的第二变化量小于所述目标变化量,将所述第六神经网络模型作为所述当前待剪枝模型,并在j的值小于N的情况下,令j的值加1后执行下一次循环;或
若所述第一损失函数值和所述第六损失函数值之间的第二变化量大于或等于所述目标变化量,不将所述第六神经网络模型作为所述当前待剪枝模型,并在j的值小于N的情况下,令j的值加1后执行下一次循环。
5.根据权利要求4所述的方法,其中,在对所述第j个顺序的卷积层进行卷积核剪枝之前,包括:
根据每个卷积核的所述重要度,获得所述每个卷积核的第二分数;
对所述每个卷积层中所有卷积核的第二分数的大小进行排序,得到N个第二排序结果,其中,所述N个第二排序结果用于作为对所述每个卷积核进行剪枝的依据。
6.根据权利要求5所述的方法,其中,第i个卷积层为所述N个卷积层中的任一个,i大于或等于1,且i小于或等于N,所述获得所述每个卷积核的第二分数包括:令i的初始值为1,循环执行以下操作,
将所述验证集作为所述第一神经网络模型的输入,得到所述第i个卷积层中每个卷积核的参数对,其中,所述参数对包括梯度值和权重值,所述梯度值根据反向传播算法得到;
根据所述第i个卷积层中每个卷积核的参数对,得到所述第i个卷积层中每个卷积核的第二分数;
若i的值小于N,令i的值加1。
7.根据权利要求6所述的方法,其中,所述验证集包括S个子集,S大于或等于2,所述将所述验证集作为所述第一神经网络模型的输入,得到所述第i个卷积层中每个卷积核的参数对包括:
将所述S个子集中至少两个子集作为所述第一神经网络模型的输入,对应得到所述第i个卷积层中每个卷积核的至少两个参数对,其中,所述至少两个参数对中每个参数对根据所述至少两个子集中每个子集来获得。
8.根据权利要求7所述的方法,其中,所述根据所述第i个卷积层中每个卷积核的参数对,得到所述第i个卷积层中每个卷积核的第二分数包括:
根据所述至少两个参数对,对应得到所述第i个卷积层中每个卷积核的至少两个第三分数;
根据所述至少两个第三分数,得到所述第i个卷积层中每个卷积核的第二分数。
9.根据权利要求5所述的方法,其中,所述每个卷积核的第二分数与重要度正相关,对所述第j个顺序的卷积层进行卷积核剪枝包括:
根据所述第二排序结果中从小至大的顺序,对所述第j个顺序的卷积层中至少一个卷积核进行剪枝。
10.根据权利要求9所述的方法,其中,所述第j个顺序的卷积层包括Q个卷积核,Q大于等于1,所述根据所述第二排序结果中从小至大的顺序,对所述第j个顺序的卷积层中至少一个卷积核进行剪枝包括:
循环执行以下操作,其中,循环结束后得到的模型作为所述第六神经网络模型:
根据所述第二排序结果中从小至大的顺序,得到p个卷积核;
在p的值大于或等于1,且小于Q的情况下,对所述p个卷积核进行剪枝,得到第七神经网络模型;
获得所述第七神经网络模型在所述验证集上的第七损失函数值;
若所述第一损失函数值和所述第七损失函数值之间的第三变化量小于所述目标变化量,令p的值增加第一预设值,并执行下一次循环。
11.根据权利要求10所述的方法,其中:
若所述第一损失函数值和所述第七损失函数值之间的第三变化量大于或等于所述目标变化量,令p的值减少第二预设值,并执行下一次循环。
12.根据权利要求1或4所述的方法,其中,所述得到第二神经网络模型包括:
每更新一次所述当前待剪枝模型,将更新后的所述当前待剪枝模型作为一个所述第二神经网络模型。
13.根据权利要求12所述的方法,其中,所述获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间包括:
获得每个所述第二神经网络的第一推理时间;
其中,所述方法还包括:
从符合所述部署要求的至少一个第二神经网络模型中,确定出具有最小损失函数值的第二神经网络模型;
将所述具有最小损失函数值的第二神经网络模型部署在所述边缘设备。
14.根据权利要求1或4所述的方法,其中,还包括:
若j的值等于N,获得所述当前待剪枝模型在待部署的边缘设备运行的第三推理时间;
其中,所述方法还包括更新所述目标变化量,具体包括:
若所述第三推理时间小于所述目标推理时间,令所述目标变化量减少第三预设值。
15.根据权利要求14所述的方法,其中,所述更新所述目标变化量还包括:
若所述第三推理时间大于或等于所述目标推理时间,令所述目标变化量增加第四预设值。
16.根据权利要求1所述的方法,其中,在获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间之前,还包括:
利用训练集对所述第二神经网络模型进行训练,其中,所述训练集中的训练数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据;
使训练后的所述第二神经网络模型在待部署的所述边缘设备运行。
17.根据权利要求1所述的方法,其中,所述输入数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据。
18.一种边缘设备推理加速装置,包括:
模型获得模块,用于获得预先训练的第一神经网络模型,其中,所述第一神经网络模型包括N个卷积层,每个卷积层包括至少一个卷积核,N为大于或等于1的整数;
模型剪枝模块,用于对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型;
时间获得模块,用于获得所述第二神经网络模型在待部署的边缘设备运行的第一推理时间,其中,所述第一推理时间包括利用所述第二神经网络模型处理输入数据并得到处理结果的时间;
模型确定模块,用于若所述第一推理时间小于目标推理时间,确定所述第二神经网络模型为符合所述边缘设备部署要求的模型,其中,所述部署要求包括对所述待部署的边缘设备的推理加速要求,所述目标推理时间根据所述待部署的边缘设备的性能预先设置,所述性能与以下至少一个因素相关:边缘设备的型号、用途、输入数据类型、访存带宽和数据对齐方式;
第一排序模块,在对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝之前,用于:
根据所述每个卷积层的重要度,获得所述每个卷积层的第一分数,其中,所述重要度用于表征对所述第一神经网络模型在验证集的第一损失函数值的影响程度;
根据所述N个卷积层的第一分数的大小进行排序得到第一排序结果,其中,所述第一排序结果用于作为对所述每个卷积层进行剪枝的依据;
其中,所述每个卷积层的第一分数与重要度正相关,对所述第一神经网络模型中的至少一个卷积层和/或至少一个卷积核进行剪枝,得到第二神经网络模型包括:
根据所述第一排序结果中从小至大的顺序,依次对所述每个卷积层进行剪枝;
其中,第j个顺序为所述第一排序结果中的任一个,j大于或等于1,且j小于或等于N,所述根据所述第一排序结果中从小至大的顺序,依次对所述每个卷积层进行剪枝包括:令j的初始值为1,循环执行以下操作,
在当前待剪枝模型的基础上,对所述第一神经网络模型中第j个顺序的卷积层进行剪枝,得到第五神经网络模型;
获得所述第五神经网络模型在所述验证集的第五损失函数值;
若所述第一损失函数值和所述第五损失函数值之间的第一变化量小于目标变化量,将所述第五神经网络模型作为所述当前待剪枝模型,并在j的值小于N的情况下,令j的值加1后执行下一次循环。
19.一种部署在边缘设备的数据处理系统,其中:
所述数据处理系统中用于处理输入数据的第二神经网络模型根据权利要求1所述的方法获得,所述输入数据包括图像数据、语音数据、自然语言数据或视频数据中任一种数据。
20.一种边缘设备推理加速系统,包括电子设备,其中,所述电子设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
其中,当所述一个或多个程序被所述一个或多个处理器执行时,使得所述一个或多个处理器执行根据权利要求1~17中任一项所述的方法。
21.根据权利要求20所述的系统,其中,还包括:
边缘设备,用于运行所述一个或多个处理器发送的第二神经网络模型得到第一推理时间;
其中,所述一个或多个处理器用于从所述边缘设备获得所述第一推理时间。
22.一种计算机可读存储介质,其上存储有可执行指令,该指令被处理器执行时使处理器执行根据权利要求1~17中任一项所述的方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310498815.6A CN117350332A (zh) | 2022-07-04 | 2022-07-04 | 边缘设备推理加速方法、装置和数据处理系统 |
CN202210785413.XA CN115146775B (zh) | 2022-07-04 | 2022-07-04 | 边缘设备推理加速方法、装置和数据处理系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210785413.XA CN115146775B (zh) | 2022-07-04 | 2022-07-04 | 边缘设备推理加速方法、装置和数据处理系统 |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310498815.6A Division CN117350332A (zh) | 2022-07-04 | 2022-07-04 | 边缘设备推理加速方法、装置和数据处理系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115146775A CN115146775A (zh) | 2022-10-04 |
CN115146775B true CN115146775B (zh) | 2023-05-23 |
Family
ID=83410055
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310498815.6A Pending CN117350332A (zh) | 2022-07-04 | 2022-07-04 | 边缘设备推理加速方法、装置和数据处理系统 |
CN202210785413.XA Active CN115146775B (zh) | 2022-07-04 | 2022-07-04 | 边缘设备推理加速方法、装置和数据处理系统 |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310498815.6A Pending CN117350332A (zh) | 2022-07-04 | 2022-07-04 | 边缘设备推理加速方法、装置和数据处理系统 |
Country Status (1)
Country | Link |
---|---|
CN (2) | CN117350332A (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117762642B (zh) * | 2024-01-02 | 2024-05-28 | 广州汇思信息科技股份有限公司 | 一种卷积神经网络模型的加载方法、装置及存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113011581A (zh) * | 2021-02-23 | 2021-06-22 | 北京三快在线科技有限公司 | 神经网络模型压缩方法、装置、电子设备及可读存储介质 |
CN114282670A (zh) * | 2022-01-14 | 2022-04-05 | 北京百度网讯科技有限公司 | 神经网络模型的压缩方法、设备和存储介质 |
CN114358257A (zh) * | 2022-02-21 | 2022-04-15 | Oppo广东移动通信有限公司 | 神经网络剪枝方法及装置、可读介质和电子设备 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10832139B2 (en) * | 2018-06-22 | 2020-11-10 | Moffett Technologies Co. Limited | Neural network acceleration and embedding compression systems and methods with activation sparsification |
CN109523017B (zh) * | 2018-11-27 | 2023-10-17 | 广州市百果园信息技术有限公司 | 姿态检测方法、装置、设备及存储介质 |
CN109671020B (zh) * | 2018-12-17 | 2023-10-24 | 北京旷视科技有限公司 | 图像处理方法、装置、电子设备和计算机存储介质 |
US20200272899A1 (en) * | 2019-02-22 | 2020-08-27 | Ubotica Technologies Limited | Systems and Methods for Deploying and Updating Neural Networks at the Edge of a Network |
CN110232436A (zh) * | 2019-05-08 | 2019-09-13 | 华为技术有限公司 | 卷积神经网络的修剪方法、装置及存储介质 |
CN110929860B (zh) * | 2019-11-07 | 2020-10-23 | 深圳云天励飞技术有限公司 | 一种卷积加速运算方法、装置、存储介质及终端设备 |
KR20210092575A (ko) * | 2020-01-16 | 2021-07-26 | 에스케이하이닉스 주식회사 | 목표 성능에 따라 신경망을 압축하는 반도체 장치 |
CN113361702A (zh) * | 2020-03-05 | 2021-09-07 | 阿里巴巴集团控股有限公司 | 卷积神经网络剪枝、推理方法、设备以及计算机可读介质 |
CN113392953A (zh) * | 2020-03-12 | 2021-09-14 | 澜起科技股份有限公司 | 用于对神经网络中卷积层进行剪枝的方法和装置 |
CN111445026B (zh) * | 2020-03-16 | 2023-08-22 | 东南大学 | 面向边缘智能应用的深度神经网络多路径推理加速方法 |
CN114118384B (zh) * | 2021-12-09 | 2024-06-04 | 安谋科技(中国)有限公司 | 神经网络模型的量化方法、可读介质和电子设备 |
CN114358280A (zh) * | 2021-12-29 | 2022-04-15 | 北京奕斯伟计算技术有限公司 | 数据处理方法、装置、电子设备及计算机可读存储介质 |
-
2022
- 2022-07-04 CN CN202310498815.6A patent/CN117350332A/zh active Pending
- 2022-07-04 CN CN202210785413.XA patent/CN115146775B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113011581A (zh) * | 2021-02-23 | 2021-06-22 | 北京三快在线科技有限公司 | 神经网络模型压缩方法、装置、电子设备及可读存储介质 |
CN114282670A (zh) * | 2022-01-14 | 2022-04-05 | 北京百度网讯科技有限公司 | 神经网络模型的压缩方法、设备和存储介质 |
CN114358257A (zh) * | 2022-02-21 | 2022-04-15 | Oppo广东移动通信有限公司 | 神经网络剪枝方法及装置、可读介质和电子设备 |
Also Published As
Publication number | Publication date |
---|---|
CN117350332A (zh) | 2024-01-05 |
CN115146775A (zh) | 2022-10-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20210150355A1 (en) | Training machine learning models using task selection policies to increase learning progress | |
US11941527B2 (en) | Population based training of neural networks | |
CN110475129B (zh) | 视频处理方法、介质及服务器 | |
CN110766142A (zh) | 模型生成方法和装置 | |
CN109189544B (zh) | 用于生成表盘的方法和装置 | |
CN111709493B (zh) | 对象分类方法、训练方法、装置、设备及存储介质 | |
US20240135191A1 (en) | Method, apparatus, and system for generating neural network model, device, medium, and program product | |
CN113177538B (zh) | 一种视频循环识别方法、装置、计算机设备及存储介质 | |
CN112989212B (zh) | 媒体内容推荐方法、装置和设备及计算机存储介质 | |
CN113301442A (zh) | 确定直播资源的方法、设备、介质及程序产品 | |
CN110689136B (zh) | 一种深度学习模型获得方法、装置、设备及存储介质 | |
CN112733043B (zh) | 评论推荐方法及装置 | |
CN113256335B (zh) | 数据筛选方法、多媒体数据的投放效果预测方法及装置 | |
US20240177506A1 (en) | Method and Apparatus for Generating Captioning Device, and Method and Apparatus for Outputting Caption | |
CN115146775B (zh) | 边缘设备推理加速方法、装置和数据处理系统 | |
CN111783873A (zh) | 基于增量朴素贝叶斯模型的用户画像方法及装置 | |
CN111539903A (zh) | 训练人脸图像合成模型的方法和装置 | |
CN116757224A (zh) | 意图理解方法、装置、设备和介质 | |
CN112307243A (zh) | 用于检索图像的方法和装置 | |
CN115577797B (zh) | 一种基于本地噪声感知的联邦学习优化方法及系统 | |
CN116128044A (zh) | 一种模型剪枝方法、图像处理方法及相关装置 | |
US11900222B1 (en) | Efficient machine learning model architecture selection | |
CN113392249A (zh) | 图文信息分类方法、图文分类模型训练方法、介质及设备 | |
CN112672202A (zh) | 弹幕处理方法、设备和存储介质 | |
CN117891935B (zh) | 价值展示图分发方法、装置、电子设备和计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |