CN111738435B - 一种基于移动设备的在线稀疏训练方法及系统 - Google Patents
一种基于移动设备的在线稀疏训练方法及系统 Download PDFInfo
- Publication number
- CN111738435B CN111738435B CN202010574063.3A CN202010574063A CN111738435B CN 111738435 B CN111738435 B CN 111738435B CN 202010574063 A CN202010574063 A CN 202010574063A CN 111738435 B CN111738435 B CN 111738435B
- Authority
- CN
- China
- Prior art keywords
- neural network
- network model
- sparse
- data
- training
- 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
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)
- Data Mining & Analysis (AREA)
- General Health & Medical Sciences (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computational Linguistics (AREA)
- Life Sciences & Earth Sciences (AREA)
- Evolutionary Computation (AREA)
- Artificial Intelligence (AREA)
- Molecular Biology (AREA)
- Computing Systems (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)
Abstract
本发明涉及一种基于移动设备的在线稀疏训练方法及系统。该方法包括:在云端对神经网络模型进行结构化剪枝,得到稀疏神经网络模型;对所述稀疏神经网络模型进行编码,得到编码后的神经网络模型;所述编码后的神经网络模型包括数据部分和控制部分,所述数据部分为所述稀疏神经网络模型中非零滤波器,所述控制部分用于记录所述稀疏神经网络模型的稀疏数据;在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练。本发明可以提高移动设备数据处理的精度,提高移动设备端的性能。
Description
技术领域
本发明涉及移动设备数据处理领域,特别是涉及一种基于移动设备的在线稀疏训练方法及系统。
背景技术
目前神经网络部署应用模式为“云端训练,端侧推理”,即在云端的大数据集上训练一个高性能的神经网络,直接部署到边缘端,在边缘端的数据集上做推理,部署到边缘端侧的神经网络结构固定,参数不会更新。云端是指计算与存储资源非常丰富的场景,如服务器集群,数据中心等。端侧是指在一些边缘场景中的移动设备,比如手机,物联网中相关节点等。
此应用模式的优势在于神经网络边缘端部署成本较低,缺点则是神经网络在边缘端性能较差。主要原因是端侧现实物理世界的数据与云端数据集数据分布存在不同。图1中模拟了此类数据分布不同的情况,如图1所示,显然,手写识别数据集(a)和(b)的手写风格是有差别的,此类数据分布会导致在数据集(b)上训练得到的神经网络模型直接推理数据集(a)时性能较差。相同的情况完全有可能发生在“云端训练,端侧推理”模式中。出于隐私安全等考虑,边缘端用户不愿意将自己的真实数据上传到云端训练,这进一步导致云端训练出来的神经网络在边缘端数据集上应用推理时,数据处理精度差,效果无法达到预期。所以直接在边缘端设备上利用边缘端数据集对神经网络进行训练以解决隐私与神经网络性能问题成为一种可行的方案。
神经网络框架是一类支持神经网络算法的科学计算框架,其中提供了一系列神经网络计算所需用到的API。深度学习开发者可根据框架内部API训练与测试自己的神经网络模型,减少开发成本。此类框架往往还支持多种机器学习与深度学习算法,其中神经网络为其主要关注内容。当前深度学习框架呈现出百花齐放的状态,图2中列举了一些常见的神经网络框架,根据其计算图的生成方式分为两类:基于动态图的与基于静态图的。其中基于静态图的框架要求在执行运算前先行定义计算图。动态图在每次执行运算前,都会重构一个计算图。在支持静态图的框架,如TensorFlow、MXNet,是通过先定义后运算的方式,在继续运行之前的计算图的时候,不需要再次进行重构。从理论上讲,静态计算这样的机制允许编译器进行更大程度的优化。但由于开发者所期望的程序与实际程序的执行之间存在着代沟,代码中漏洞也难以被发现。同时,在静态图中,计算图无法改变,因此在计算过程中,很难实现计算过程的动态调整。支持动态图的框架,如PyTorch,会按照开发者编写的顺序执行命令。这大幅降低了开发者调试的成本。同时在计算过程中,也可以根据计算的结果动态调整后续的计算流程。因此,现有的神经网络框架中,在针对移动端的训练方面,支持训练的通用深度学习框架往往对移动端支持较差。这些开发框架都面向数据中心,没有对移动端设备做优化,例如:没有为移动端的硬件(ARM、CPU、GPU等)实现算子,没有为移动端裁减运行时程序尺寸等。同时对移动端能提供较好支持的推理深度学习框架则不支持训练任务。这些端侧神经网络框架不支持结构化稀疏,导致在端侧的运行能耗高。同时这种方式在云端训练,在边缘端推理的方式在数据的隐私、延时性和模型的通用性都存在一定的局限。
发明内容
本发明的目的是提供一种基于移动设备的在线稀疏训练方法及系统,以提高移动设备数据处理的精度,提高移动设备端神经网络的性能。
为实现上述目的,本发明提供了如下方案:
一种基于移动设备的在线稀疏训练方法,包括:
在云端对神经网络模型进行结构化剪枝,得到稀疏神经网络模型;
对所述稀疏神经网络模型进行编码,得到编码后的神经网络模型;所述编码后的神经网络模型包括数据部分和控制部分,所述数据部分为所述稀疏神经网络模型中非零滤波器,所述控制部分用于记录所述非零滤波器的下标位置及初始滤波器个数;
在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练。
可选的,所述在云端对神经网络模型进行结构化剪枝,得到稀疏神经网络模型,具体包括:
在云端对所述神经网络模型进行滤波器维度的结构化剪枝,删除所述神经网络模型中各层权值中冗余的滤波器,得到稀疏神经网络模型。
可选的,所述对所述稀疏神经网络模型进行编码,得到编码后的神经网络模型,具体包括:
获取稀疏神经网络模型中每一层的非零滤波器;
将每一层的非零滤波器以数据部分存储;
获取所述非零滤波器的下标位置及初始滤波器个数;所述初始滤波器个数为所述非零滤波器所在层剪枝前的滤波器个数;
将每一层的所述非零滤波器的下标位置和对应的初始滤波器个数以控制部分存储。
可选的,所述在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练,之前还包括:
获取初始神经网络模型训练框架;
对所述初始神经网络模型训练框架中算子层的输入和输出中增加控制流;所述控制流用于输入所述编码后的神经网络模型的控制部分;
变更所述算子层的计算规则,使算子在计算时根据所述控制部分跳过被稀疏的数据,对未被稀疏的数据进行计算;
得到改进的神经网络模型训练框架;所述改进的神经网络模型训练框架用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练。
可选的,所述变更所述算子层的计算规则,使算子在计算时根据所述控制部分跳过被稀疏的数据,对未被稀疏的数据进行计算,具体包括:
算子读取输入数据;
根据所述输入数据的控制部分,确定当前输入数据的稀疏性;
跳过被稀疏的数据;
将所述被稀疏的数据在对应的输出中确定为稀疏数据;
采用所述算子对未被稀疏的数据进行计算。
本发明还提供一种基于移动设备的在线稀疏训练系统,包括:
结构化剪枝模块,用于在云端对神经网络模型进行结构化剪枝,得到稀疏神经网络模型;
编码模块,用于对所述稀疏神经网络模型进行编码,得到编码后的神经网络模型;所述编码后的神经网络模型包括数据部分和控制部分,所述数据部分为所述稀疏神经网络模型中非零滤波器,所述控制部分用于记录所述非零滤波器的下标位置及初始滤波器个数;
稀疏训练模块,用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练。
可选的,所述结构化剪枝模块具体包括:
滤波器维度的结构化剪枝单元,用于在云端对所述神经网络模型进行滤波器维度的结构化剪枝,删除所述神经网络模型中各层权值中冗余的滤波器,得到稀疏神经网络模型。
可选的,所述编码模块具体包括:
非零滤波器获取单元,用于获取稀疏神经网络模型中每一层的非零滤波器;
数据部分存储单元,用于将每一层的非零滤波器以数据部分存储;
滤波器参数获取单元,用于获取所述非零滤波器的下标位置及初始滤波器个数;所述初始滤波器个数为所述非零滤波器所在层剪枝前的滤波器个数;
控制部分存储单元,用于将每一层的所述非零滤波器的下标位置和对应的初始滤波器个数以控制部分存储。
可选的,还包括:
初始神经网络模型训练框架获取模块,用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练之前获取初始神经网络模型训练框架;
控制流增加模块,用于对所述初始神经网络模型训练框架中算子层的输入和输出中增加控制流;所述控制流用于输入所述编码后的神经网络模型的控制部分;
计算规则变更模块,用于变更所述算子层的计算规则,使算子在计算时根据所述控制部分跳过被稀疏的数据,对未被稀疏的数据进行计算;
改进的神经网络模型训练框架生成模块,用于得到改进的神经网络模型训练框架;所述改进的神经网络模型训练框架用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练。
可选的,所述计算规则变更模块具体包括:
算子读取单元,用于读取输入数据;
稀疏性确定单元,用于根据所述输入数据的控制部分,确定当前输入数据的稀疏性;
跳过单元,用于跳过被稀疏的数据;
稀疏数据确定单元,用于将所述被稀疏的数据在对应的输出中确定为稀疏数据;
算子计算单元,用于采用所述算子对未被稀疏的数据进行计算。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明在端侧移动设备上对云端训练好的神经网络模型根据端侧的数据进行迁移学习、重新训练和权重微调,从而使神经网络在端侧可以达到既定的精度目标。具体的,考虑到云端上的公开数据集和端侧具体所处物理环境收集到的数据集的数据分布是不同的,所以云端上基于公开数据集训练出来的神经网络直接应用在端侧的场景上往往效果会不理想。为了使神经网络能达到更高的精度,本发明根据端侧的数据对云端的模型进行微调,而由于神经网络训练所需的存储计算开销通常是端侧难以负担的,本发明首先在云端对神经网络进行剪枝,降低神经网络中的参数量与计算量,从而使端侧可以负担训练的开销;之后端侧将使用本发明所涉及的端侧稀疏化训练框架,完成重训练的过程,从而使神经网络在端侧设备上仍然可以达到较高的性能,提高端侧移动设备后续数据处理的精度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为实际手写字符与数据库中手写字符的对比图;
图2为常见的神经网络框架示意图;
图3为本发明基于移动设备的在线稀疏训练方法的流程示意图;
图4为本发明对稀疏神经网络模型进行编码的示意图;
图5为本发明改进的神经网络模型训练框架的示意图;
图6为本发明改进的神经网络模型训练框架的计算流程与初始神经网络模型训练框架的计算流程对比图;
图7为本发明具体实施案例的流程示意图;
图8为本发明具体实施案例的结构化剪枝对应的输出示意图;
图9为本发明具体实施案例的稀疏权值矩阵及其计算结果示意图;
图10为本发明具体实施案例中稀疏卷积计算的前向传播过程示意图;
图11为本发明具体实施案例中稀疏卷积计算的反向传播过程示意图;
图12为本发明具体实施案例中Element-WiseADD Sparse算子前向运行实例;
图13为本发明具体实施案例中Element-WiseADD Sparse算子反向运行实例;
图14为本发明基于移动设备的在线稀疏训练系统的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
图3为本发明基于移动设备的在线稀疏训练方法的流程示意图。如图3所示,本发明基于移动设备的在线稀疏训练方法包括以下步骤:
步骤100:在云端对神经网络模型进行结构化剪枝,得到稀疏神经网络模型。具体的,可以先利用云端已有的公开数据集在云端设备上训练一个完整的稠密的神经网络模型,然后再利用一些已有的神经网络结构化剪枝算法对训练好的神经网络模型进行滤波器维度(Filter-wise)的剪枝,删除原网络中各层权值中一些冗余的滤波器,即将冗余的滤波器的权值置0,得到稀疏神经网络模型。
步骤200:对稀疏神经网络模型进行编码,得到编码后的神经网络模型。所述编码后的神经网络模型包括数据部分和控制部分,所述数据部分为所述稀疏神经网络模型中非零滤波器,所述控制部分用于记录所述非零滤波器的下标位置及初始滤波器个数。图4为本发明对稀疏神经网络模型进行编码的示意图,如图4所示,图4中(a)部分表示滤波器1和滤波器2均被剪枝(即被稀疏),即稀疏神经网络模型中滤波器1和滤波器2中的权值均被置为0。
为了节约剪枝后的稀疏神经网络模型在端侧移动设备进行训练时所需的存储空间,本发明根据稀疏神经网络模型中被稀疏的数据对稀疏神经网络模型进行编码。具体的,本发明将稀疏神经网络模型每一层的权值分为两个部分:数据部分和控制部分,其中数据部分即剪枝后权值中剩下的非零的滤波器;控制部分则记录了这些非零滤波器的下标位置以及本层权值原始的滤波器个数。图4中(a)部分所示的稀疏权值模型进行编码后得到图4中(b)部分所示的编码后的神经网络模型,其中,数据部分是权值中不为0的部分重稠密化的张量,即滤波器0和滤波器3组成的新的数据;而控制部分则是记录了这两个滤波器在原始权值矩阵中的位置的张量,另外还有一个记录初始滤波器数量的标量,图中数值为4,即原始权值矩阵有4个滤波器。
步骤300:在端侧移动设备上对编码后的神经网络模型进行稀疏训练。当得到了上述编码后的神经网络模型后,用户可以将编码后的神经网络模型在端侧移动设备上进行训练,对编码后的神经网络模型进行重新训练和权重微调,使训练好的神经网络模型更能适用于端侧移动设备,使得神经网络模型在端侧移动设备上仍然可以达到较高的性能,提高后续移动设备进行数据处理的精度。
然而现有的神经网络训练框架只能够处理非稀疏的原始的神经网络模型的训练。而本发明为了节约存储,在步骤200中得到的编码后的神经网络模型的表示方案是现有框架难以支持的。除此之外,神经网络中稀疏权值被删除后,其所对应的计算/操作也可以被省去,然而使用现有的神经网络训练框架也不能节省这部分计算。因此,在对编码后的神经网络模型进行稀疏训练之前,本发明对现有的神经网络框架作出修改。如图5所示,为了能够实现节约计算以及存储的功能,本发明主要在原始神经网络训练框架的算子层面进行改进,采用改进后的神经网络训练框架对编码后的神经网络模型进行训练。该修改主要包含以下方面:
(1)算子输入输出的变更:由于现有神经网络训练框架所针对的神经网络模型中数据结构均如图4中(a)部分所示,只有数据部分,故而这些现有框架的算子之间彼此传递的信息只包含数据部分。而本发明中编码后的神经网络模型的表示方案中同时包含数据部分和控制部分,为了能够支持这种数据表示模型,在原始的神经网络训练框架的算子输入输出中增加控制流,控制流用于输入编码后的神经网络模型的控制部分,进而可以使各个算子之间交互这些控制信息。
(2)变更算子的计算规则:剪枝后神经网络中这些被剪枝元素的计算可以被节省,而算子输入中的控制部分即包含着此类信息,故而本发明将对各个算子进行修改以使其利用算子输入中控制部分记录的稀疏性跳过不必要的计算,即跳过被稀疏的数据,只对未被稀疏的数据进行计算。
图6为本发明改进的神经网络模型训练框架的计算流程与初始神经网络模型训练框架的计算流程对比图。如图6所示,图6中(a)部分为初始神经网络模型训练框架中算子的一般计算流程,该算子对于一个稠密的输入,其会根据所定义的计算规则每次从输入中读取一部分数据(这部分数据往往分布在权值和输入的各个通道中),然后使用该部分数据执行计算,得到一个结果。该算子会重复此过程直到所有输入数据都按照计算规则完成计算。
对于本发明的编码后的神经网络模型,由于剪枝后权值和输入中有些通道/滤波器被删除,有些通道/滤波器仍保留。在算子执行计算时,这些被删除的通道/滤波器对应的计算可以被节省,而算子的输入中控制部分就记录着这些稀疏信息,因此算子可以根据这些稀疏信息判断选择跳过或者计算部分数据。如图6中(b)部分所示,相对于原始算子,本发明在每次算子读取参与本次计算的数据时,算子会根据其输入中的控制部分判断参与本次计算的输入数据是否被稀疏,若是被稀疏则可以直接跳过本次计算。除此之外,由于计算过程中有一部分数据并没有计算,这意味着输入部分中相对于正常的非稀疏的计算必定会缺少一部分,即该层计算结果中也会有稀疏性。这个稀疏性一般就是该层输入中权值的稀疏性,所以计算完成后该算子还会将本算子输入中权值的稀疏性确定为本算子输出的稀疏信息,即将被稀疏的输入中权值的数据在对应的输出中也对应确定为稀疏数据,并送往下一层。
本发明改进的神经网络模型训练框架从计算图层面来看,其对稀疏性的支持相对于传统神经网络模型训练框架的计算图就是增加一个控制流,其中控制流中流动的就是控制信息,每个算子根据控制信息可以得知输入的稀疏性信息,即输入信息的哪些权重被删除,故而对应计算/操作可以被跳过。计算时改进的神经网络模型训练框架会使数据部分流动于数据流中,控制部分流动于控制流中。
下面提供一个具体实施案例,进一步说明本发明的方案。
图7为本发明具体实施案例的流程示意图,如图7所示,云端训练好的原始神经网络模型部署到端侧并进行稀疏化训练主要分为以下几个步骤:
步骤一:在云端对神经网络进行滤波器维度的结构稀疏化剪枝。神经网络中的卷积层的权值通常会包含若干个滤波器,每个滤波器是一个三维的张量,这些滤波器有一些是冗余的故而可以被删除。具体来说,在剪枝过程中会为权值张量中的每一个滤波器计算一个重要性度量因子(如L1/L2范数,熵,其相关的activation的均值、方差、APoZ等)。然后对各个滤波器的重要性因子进行排序,删除重要性度量因子低于设定阈值的滤波器,即将滤波器中的权值全部置为0。图8为本发明具体实施案例的结构化剪枝示意图,如图8所示,滤波器1和滤波器2被剪枝。
若某一层神经网络中权值如果存在稀疏性,即滤波器被剪枝,那么在其参与计算得到输出后该输出中也具有稀疏性。考虑到神经网络中一个滤波器其实对应输出中的一个通道,如果一个滤波器被置为零后,则其计算出来的输出中的对应的通道中所有值也全为零,如图8右半部分中,输出的四个通道中通道1和通道2中全为0。
步骤二:编码云端剪枝模型中的稀疏信息以用于稀疏训练。云端剪枝后的模型实际上是把被剪枝的滤波器中所有的权值都置为0,但这部分0仍然会占据内存,在计算时也会参与计算。为了能够利用这部分稀疏性来节约存储和计算,本发明中设计了一套稀疏权值的表示方案即对剪枝后的稀疏神经网络模型进行编码。在该方案中稀疏的权值将被分为两个部分,数据部分和控制部分。其中数据部分是剪枝后剩下的所有非零的滤波器。
以图8中剪枝后的模型为例,即剪枝后的稀疏神经网络模型包括滤波器0和滤波器3,滤波器数据如图9中(a)部分的数据部分所示。而控制部分则记录了哪些滤波器被保留,在此处即0和3,另外还有一个标量记录了原始权值中共有多少个滤波器,在此处即为4,如图9中(a)部分的控制部分所示。而该层对应的输出的稀疏表示如图9中(b)部分所示,此时输出中将只有两个通道,分别为通道0和通道3,这和权值中保留的滤波器是对应的。而其控制部分和权值的控制部分是完全一样的,只是在输出中,控制部分的稀疏下标代表的是输出中具体保留了哪几个通道。
步骤三:在端侧设备上对神经网络进行稀疏训练。在完成神经网络权值模型重新稀疏化表示之后,将编码后的神经网络模型送往神经网络训练框架中进行训练。该框架相对于常用的神经网络框架主要是修改了其中算子层的输入输出部分,即输入输出部分除了数据信息之外还包括控制信息,以对应步骤二中所描述的稀疏模型的表示方式。另外本发明还对算子的计算规则作了修改,以利用稀疏性节约一部分不必要的计算。
此处将使用两个典型的神经网络算子Conv2d(卷积)算子以及ElementADD(逐位相加)算子来介绍如何为相关算子增加控制流以利用权值和输入中的稀疏性。
图10为本发明具体实施案例中稀疏卷积计算的前向传播过程示意图,如图10所示,卷积算子利用控制张量避免了一些不必要的计算。此时卷积计算的权值包括两个部分,删除了零权重后的权值数据部分和记录稀疏性的权值控制张量。具体来说,图10中权值数据部分沿着OC’维度剩下了4个滤波器,而权值控制张量的值为2,6,7,9,这表示原本的权值被删除的只剩下四个滤波器,分别对应原来第2,6,7,9个滤波器。类似的,由于网络中前一层中某一些滤波器是稀疏的,故而本层的输入,即前一层的输出也有着稀疏性,其中输入控制张量用于记录这个稀疏性。具体来说,此时的稀疏的输入相对于原始的输入减少了部分通道,而此时输入控制张量表示删除非零权重后的输入中各个通道所对应的原始的通道。
由于此时权值的通道数仍然是原始的长度IC,而输入的通道数已经是IC’,为了能够使这两者进行正确的卷积计算,计算时该稀疏卷积算子首先根据输入控制张量从权值中提取权值对应的通道,得到一个新的重稠密化的权值。然后重稠密化的权值和此时的输入由于已经去除了不必要的数据,这些剩下的部分则可以执行正常的卷积计算。
由于权值中一些滤波器被删除,所以其不会参与计算,故而此时输出中没有其对应通道,权值控制张量记录了具体缺少了哪些滤波器,故而其可以作为此时输出的稀疏性,并与此时的输出的数据部分一起送往网络的下一层。
图11为本发明具体实施案例中稀疏卷积计算的反向传播过程示意图,如图11所示,稀疏卷积计算的反向传播过程与前向传播类似,此时算子输入是网络后面的层传回来的梯度,其形状和该层前向时计算出来的输出形状一致,均为OC’*H*W。计算时该算子内首先使用正常的非稀疏的卷积反向算子计算权值的梯度和输入的梯度,其中输入的梯度的尺寸和该层输入一致,可以直接送往前一层,而权值的梯度则将根据输入控制张量找到刚刚实际参与计算的权值有哪些来决定更新权值中的哪些通道。
Element-WiseADD Sparse算子主要的功能是实现两个输入的相加,由于这两个输入均存在着稀疏性,所以更新的算子中会首先将这两个输入扩张成两个形状相同的输入,之后再完成正常的Element-WiseADD计算。为了实现在端侧训练,该算子分为两部分,前向的计算和反向的求导。
图12为本发明具体实施案例中Element-WiseADD Sparse算子前向运行实例,如图12所示,输入分为两个输入数据:输入1和输入2;两个输入相对应的控制流,存储的是当前非稀疏数据的通道的下标。两个参与运算的输入的输入通道数不同,且根据输入控制张量可以知道其输入1中通道分别表示原始网络中下标为第0,2,3,5,8个通道,输入2中通道表示原始网络中下标为第1,2,4,5,7,8,9个通道。该算子先根据输入控制张量1,输入控制张量2求解输出控制张量,即两者的并集{0,1,2,3,4,5,7,8,9}。然后根据输出控制张量,将两个输入的对应的通道相加,完成最终的前向计算。
图13为本发明具体实施案例中Element-WiseADD Sparse算子反向运行实例,如图13所示,Element-WiseADD sparse算子的反向过程是为了对输入1和输入2求梯度。由于前向时,输入1对于输出中部分通道有贡献,反向时会从输出梯度中根据输入控制张量1找到对应通道,作为输入1的梯度。类似的,由于前向时,输入2对于输出中部分通道有贡献,反向时会从输出梯度中根据输入控制张量2提取对应通道,作为输入2的梯度。同时对输入的控制流的梯度,本方案返回和其形状一致的全0向量。
本发明具体实施案例中,在该稀疏的卷积计算前向与反向传播过程中,包括输入,权值,输出,输入梯度,权值梯度,输出梯度在内的所有主要的Tensor相对于稀疏化之前的模型都大大减少了尺寸。故而所需要的存储资源也大大减小,同时因为真正参与计算的数据减小,故而该稀疏的卷积前反向计算过程相对于非稀疏的版本所需的计算资源也大大减少。
相比于现有技术,本发明具有以下有益效果:
(1)稀疏模型的表示方案:本发明是基于神经网络的稀疏性来降低神经网络训练的存储开销。本发明中所提出的稀疏模型表示方法会将原始稀疏模型分为数据部分和控制部分,数据部分只保留了剪枝后剩下的非零元素,而控制部分以非常微小的开销记录了模型中的稀疏性与原始权值的空间结构,从而大大降低了网络模型的存储开销。同时由于该发明中控制部分可以保证原始权值的空间结构始终是清晰明确的,故而根据神经网络中各个算子的前向反向规则,系统中可以很容易找到参与每次计算的具体数据,所以本发明所保存的权值仍然是易于训练的。
(2)在端侧稀疏训练的实现方式:本发明通过在算子内增加控制机制,利用输入数据和权值的稀疏性跳过不必要的计算,降低神经网络训练的计算开销。本发明在计算图层面使用了数据流加控制流双流流动的方式,数据流中的数据是剪枝后网络中剩余的权值和数据,而控制流部分流动的是网络中用于表示稀疏性的控制张量。具体到每个算子,算子内在计算时会根据输入和权值的控制张量所表示的稀疏性跳过不必要的计算,从而能够大大降低计算开销。
基于上述的基于移动设备的在线稀疏训练方法,本发明还提供一种基于移动设备的在线稀疏训练系统,图14为本发明基于移动设备的在线稀疏训练系统的结构示意图。如图14所示,本发明基于移动设备的在线稀疏训练系统包括以下结构:
结构化剪枝模块1401,用于在云端对神经网络模型进行结构化剪枝,得到稀疏神经网络模型。
编码模块1402,用于对所述稀疏神经网络模型进行编码,得到编码后的神经网络模型;所述编码后的神经网络模型包括数据部分和控制部分,所述数据部分为所述稀疏神经网络模型中非零滤波器,所述控制部分用于记录所述非零滤波器的下标位置及初始滤波器个数。
稀疏训练模块1403,用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练。
作为另一实施例,本发明基于移动设备的在线稀疏训练系统中所述结构化剪枝模块1401具体包括:
滤波器维度的结构化剪枝单元,用于在云端对所述神经网络模型进行滤波器维度的结构化剪枝,删除所述神经网络模型中各层权值中冗余的滤波器,得到稀疏神经网络模型。
作为另一实施例,本发明基于移动设备的在线稀疏训练系统中所述编码模块1402具体包括:
非零滤波器获取单元,用于获取稀疏神经网络模型中每一层的非零滤波器。
数据部分存储单元,用于将每一层的非零滤波器以数据部分存储。
滤波器参数获取单元,用于获取所述非零滤波器的下标位置及初始滤波器个数;所述初始滤波器个数为所述非零滤波器所在层剪枝前的滤波器个数。
控制部分存储单元,用于将每一层的所述非零滤波器的下标位置和对应的初始滤波器个数以控制部分存储。
作为另一实施例,本发明基于移动设备的在线稀疏训练系统还包括:
初始神经网络模型训练框架获取模块,用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练之前获取初始神经网络模型训练框架。
控制流增加模块,用于对所述初始神经网络模型训练框架中算子层的输入和输出中增加控制流;所述控制流用于输入所述编码后的神经网络模型的控制部分。
计算规则变更模块,用于变更所述算子层的计算规则,使算子在计算时根据所述控制部分跳过被稀疏的数据,对未被稀疏的数据进行计算。
改进的神经网络模型训练框架生成模块,用于得到改进的神经网络模型训练框架;所述改进的神经网络模型训练框架用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练。
作为另一实施例,本发明基于移动设备的在线稀疏训练系统中所述计算规则变更模块具体包括:
算子读取单元,用于读取输入数据。
稀疏性确定单元,用于根据所述输入数据的控制部分,确定当前输入数据的稀疏性。
跳过单元,用于跳过被稀疏的数据。
稀疏数据确定单元,用于将所述被稀疏的数据在对应的输出中确定为稀疏数据。
算子计算单元,用于采用所述算子对未被稀疏的数据进行计算。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
Claims (6)
1.一种基于移动设备的在线稀疏训练方法,其特征在于,包括:
在云端对神经网络模型进行结构化剪枝,得到稀疏神经网络模型;
对所述稀疏神经网络模型进行编码,得到编码后的神经网络模型;所述编码后的神经网络模型包括数据部分和控制部分,所述数据部分为所述稀疏神经网络模型中非零滤波器,所述控制部分用于记录所述非零滤波器的下标位置及初始滤波器个数;
所述对所述稀疏神经网络模型进行编码,得到编码后的神经网络模型,具体包括:
获取稀疏神经网络模型中每一层的非零滤波器;
将每一层的非零滤波器以数据部分存储;
获取所述非零滤波器的下标位置及初始滤波器个数;所述下标位置为滤波器在剪枝前的所有滤波器中所处的排序位置;所述初始滤波器个数为所述非零滤波器所在层剪枝前的滤波器个数;
将每一层的所述非零滤波器的下标位置和对应的初始滤波器个数以控制部分存储;
在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练;
所述在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练,之前还包括:
获取初始神经网络模型训练框架;
对所述初始神经网络模型训练框架中算子层的输入和输出中增加控制流;所述控制流用于输入所述编码后的神经网络模型的控制部分;
变更所述算子层的计算规则,使算子在计算时根据所述控制部分跳过被稀疏的数据,对未被稀疏的数据进行计算;
得到改进的神经网络模型训练框架;所述改进的神经网络模型训练框架用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练;
所述基于移动设备的在线稀疏训练方法用于手写字符识别。
2.根据权利要求1所述的基于移动设备的在线稀疏训练方法,其特征在于,所述在云端对神经网络模型进行结构化剪枝,得到稀疏神经网络模型,具体包括:
在云端对所述神经网络模型进行滤波器维度的结构化剪枝,删除所述神经网络模型中各层权值中冗余的滤波器,得到稀疏神经网络模型。
3.根据权利要求1所述的基于移动设备的在线稀疏训练方法,其特征在于,所述变更所述算子层的计算规则,使算子在计算时根据所述控制部分跳过被稀疏的数据,对未被稀疏的数据进行计算,具体包括:
算子读取输入数据;
根据所述输入数据的控制部分,确定当前输入数据的稀疏性;
跳过被稀疏的数据;
将所述被稀疏的数据在对应的输出中确定为稀疏数据;
采用所述算子对未被稀疏的数据进行计算。
4.一种基于移动设备的在线稀疏训练系统,其特征在于,包括:
结构化剪枝模块,用于在云端对神经网络模型进行结构化剪枝,得到稀疏神经网络模型;
编码模块,用于对所述稀疏神经网络模型进行编码,得到编码后的神经网络模型;所述编码后的神经网络模型包括数据部分和控制部分,所述数据部分为所述稀疏神经网络模型中非零滤波器,所述控制部分用于记录所述非零滤波器的下标位置及初始滤波器个数;
所述编码模块具体包括:
非零滤波器获取单元,用于获取稀疏神经网络模型中每一层的非零滤波器;
数据部分存储单元,用于将每一层的非零滤波器以数据部分存储;
滤波器参数获取单元,用于获取所述非零滤波器的下标位置及初始滤波器个数;所述下标位置为滤波器在剪枝前的所有滤波器中所处的排序位置;所述初始滤波器个数为所述非零滤波器所在层剪枝前的滤波器个数;
控制部分存储单元,用于将每一层的所述非零滤波器的下标位置和对应的初始滤波器个数以控制部分存储;
稀疏训练模块,用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练;
初始神经网络模型训练框架获取模块,用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练之前获取初始神经网络模型训练框架;
控制流增加模块,用于对所述初始神经网络模型训练框架中算子层的输入和输出中增加控制流;所述控制流用于输入所述编码后的神经网络模型的控制部分;
计算规则变更模块,用于变更所述算子层的计算规则,使算子在计算时根据所述控制部分跳过被稀疏的数据,对未被稀疏的数据进行计算;
改进的神经网络模型训练框架生成模块,用于得到改进的神经网络模型训练框架;所述改进的神经网络模型训练框架用于在端侧移动设备上对所述编码后的神经网络模型进行稀疏训练;
所述基于移动设备的在线稀疏训练方法用于手写字符识别。
5.根据权利要求4所述的基于移动设备的在线稀疏训练系统,其特征在于,所述结构化剪枝模块具体包括:
滤波器维度的结构化剪枝单元,用于在云端对所述神经网络模型进行滤波器维度的结构化剪枝,删除所述神经网络模型中各层权值中冗余的滤波器,得到稀疏神经网络模型。
6.根据权利要求4所述的基于移动设备的在线稀疏训练系统,其特征在于,所述计算规则变更模块具体包括:
算子读取单元,用于读取输入数据;
稀疏性确定单元,用于根据所述输入数据的控制部分,确定当前输入数据的稀疏性;
跳过单元,用于跳过被稀疏的数据;
稀疏数据确定单元,用于将所述被稀疏的数据在对应的输出中确定为稀疏数据;
算子计算单元,用于采用所述算子对未被稀疏的数据进行计算。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010574063.3A CN111738435B (zh) | 2020-06-22 | 2020-06-22 | 一种基于移动设备的在线稀疏训练方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010574063.3A CN111738435B (zh) | 2020-06-22 | 2020-06-22 | 一种基于移动设备的在线稀疏训练方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111738435A CN111738435A (zh) | 2020-10-02 |
CN111738435B true CN111738435B (zh) | 2024-03-29 |
Family
ID=72650340
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010574063.3A Active CN111738435B (zh) | 2020-06-22 | 2020-06-22 | 一种基于移动设备的在线稀疏训练方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111738435B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112288085B (zh) * | 2020-10-23 | 2024-04-09 | 中国科学院计算技术研究所 | 一种基于卷积神经网络的图像检测方法及系统 |
JP7502972B2 (ja) | 2020-11-17 | 2024-06-19 | 株式会社日立ソリューションズ・テクノロジー | プルーニング管理装置、プルーニング管理システム及びプルーニング管理方法 |
CN113313247B (zh) * | 2021-02-05 | 2023-04-07 | 中国科学院计算技术研究所 | 基于数据流架构的稀疏神经网络的运算方法 |
CN114282666A (zh) * | 2021-12-03 | 2022-04-05 | 中科视语(北京)科技有限公司 | 基于局部稀疏约束的结构化剪枝方法和装置 |
CN114998649A (zh) * | 2022-05-17 | 2022-09-02 | 北京百度网讯科技有限公司 | 图像分类模型的训练方法、图像分类方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196593A (zh) * | 2019-05-16 | 2019-09-03 | 济南浪潮高新科技投资发展有限公司 | 一种自动驾驶多场景环境检测及决策系统及方法 |
CN110705684A (zh) * | 2019-08-22 | 2020-01-17 | 中国科学院计算技术研究所 | 基于端云协同的环境自适应学习方法及系统 |
CN111126569A (zh) * | 2019-12-18 | 2020-05-08 | 中电海康集团有限公司 | 一种支持剪枝稀疏化压缩的卷积神经网络装置和计算方法 |
CN111146789A (zh) * | 2020-02-21 | 2020-05-12 | 中国电力科学研究院有限公司 | 一种基于边缘计算的机组一次调频能力评估方法及系统 |
CN111276157A (zh) * | 2020-01-21 | 2020-06-12 | 清华大学 | 一种基于雨声的降雨强度识别、模型训练的方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11645529B2 (en) * | 2018-05-01 | 2023-05-09 | Hewlett Packard Enterprise Development Lp | Sparsifying neural network models |
US12248877B2 (en) * | 2018-05-23 | 2025-03-11 | Movidius Ltd. | Hybrid neural network pruning |
-
2020
- 2020-06-22 CN CN202010574063.3A patent/CN111738435B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196593A (zh) * | 2019-05-16 | 2019-09-03 | 济南浪潮高新科技投资发展有限公司 | 一种自动驾驶多场景环境检测及决策系统及方法 |
CN110705684A (zh) * | 2019-08-22 | 2020-01-17 | 中国科学院计算技术研究所 | 基于端云协同的环境自适应学习方法及系统 |
CN111126569A (zh) * | 2019-12-18 | 2020-05-08 | 中电海康集团有限公司 | 一种支持剪枝稀疏化压缩的卷积神经网络装置和计算方法 |
CN111276157A (zh) * | 2020-01-21 | 2020-06-12 | 清华大学 | 一种基于雨声的降雨强度识别、模型训练的方法及装置 |
CN111146789A (zh) * | 2020-02-21 | 2020-05-12 | 中国电力科学研究院有限公司 | 一种基于边缘计算的机组一次调频能力评估方法及系统 |
Non-Patent Citations (3)
Title |
---|
Parameter Efficient Training of Deep Convolutional Neural Networks by Dynamic Sparse Reparameterization;Mostafa H、Wang X;《arXiv》;20190215;全文 * |
一种稀疏降噪自编码神经网络研究;张成刚;姜静清;;内蒙古民族大学学报(自然科学版);20160115(第01期);全文 * |
基于卷积神经网络的人脸表情识别研究;李思泉;张轩雄;;软件导刊;20180115(第01期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111738435A (zh) | 2020-10-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111738435B (zh) | 一种基于移动设备的在线稀疏训练方法及系统 | |
CN113822437B (zh) | 深度分层的变分自动编码器 | |
CN115659281B (zh) | 一种自适应加速算子融合的方法及装置 | |
Iandola et al. | Small neural nets are beautiful: enabling embedded systems with small deep-neural-network architectures | |
US20200364538A1 (en) | Method of performing, by electronic device, convolution operation at certain layer in neural network, and electronic device therefor | |
CN116126341A (zh) | 模型编译方法、装置、计算机设备及计算机可读存储介质 | |
CN113361279A (zh) | 一种基于双邻域图神经网络的医疗实体对齐方法及系统 | |
CN111340173A (zh) | 一种针对高维数据的生成对抗网络训练方法、系统及电子设备 | |
DE102021124537A1 (de) | Energiebasierte variational autoencoder | |
WO2025001443A1 (zh) | 一种神经网络模型的生成方法及装置 | |
CN115995085A (zh) | 一种复杂版面图文识别学科类知识图谱嵌入学习方法 | |
CN113516583A (zh) | 基于生成对抗网络的甲骨文单字风格迁移方法及装置 | |
Liang et al. | Time‐Domain Parallelization for Accelerating Cloth Simulation | |
Puranik et al. | Insights and Performance Evaluation of Stable Diffusion Models with OpenVINO on Intel Processor | |
CN111178541B (zh) | 游戏人工智能系统及其性能提升系统及方法 | |
CN111160408A (zh) | 一种张量数据融合方法及系统 | |
CN118966209B (zh) | 一种基于强化学习的动态提示词示例召回方法及系统 | |
CN114638365B (zh) | 一种机器阅读理解推理方法及装置、电子设备、存储介质 | |
CN118537416B (zh) | 图像处理方法与装置、电子设备及存储介质 | |
CN113706647B (zh) | 一种图像上色方法及相关装置 | |
CN119337055A (zh) | 基于混合去噪先验的信号重建方法、系统、介质及终端 | |
Yang | Exploiting Program Representation with Shader Applications | |
Bredies et al. | Learning Firmly Nonexpansive Operators | |
CN118737185A (zh) | 基于可逆扩散的语音驱动生成动作统一编辑方法及装置 | |
Ji | Stable Conservative Q-Learning for Offline Reinforcement Learning |
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 |