CN117829242B - 模型处理方法及相关设备 - Google Patents
模型处理方法及相关设备 Download PDFInfo
- Publication number
- CN117829242B CN117829242B CN202410241105.XA CN202410241105A CN117829242B CN 117829242 B CN117829242 B CN 117829242B CN 202410241105 A CN202410241105 A CN 202410241105A CN 117829242 B CN117829242 B CN 117829242B
- Authority
- CN
- China
- Prior art keywords
- pruning
- node
- target
- model
- data processing
- 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
- 238000003672 processing method Methods 0.000 title claims abstract description 25
- 238000013138 pruning Methods 0.000 claims abstract description 782
- 238000012545 processing Methods 0.000 claims abstract description 446
- 238000004364 calculation method Methods 0.000 claims abstract description 128
- 238000000034 method Methods 0.000 claims abstract description 96
- 239000011159 matrix material Substances 0.000 claims description 80
- 238000004458 analytical method Methods 0.000 claims description 44
- 238000004806 packaging method and process Methods 0.000 claims description 27
- 238000004088 simulation Methods 0.000 claims description 26
- 238000004590 computer program Methods 0.000 claims description 25
- 230000005540 biological transmission Effects 0.000 claims description 24
- 238000011144 upstream manufacturing Methods 0.000 claims description 24
- 238000003860 storage Methods 0.000 claims description 18
- 238000000605 extraction Methods 0.000 claims description 13
- 239000003550 marker Substances 0.000 claims description 3
- 230000008569 process Effects 0.000 description 61
- 238000010586 diagram Methods 0.000 description 19
- 238000012549 training Methods 0.000 description 18
- 238000005457 optimization Methods 0.000 description 12
- 230000000694 effects Effects 0.000 description 11
- 230000015654 memory Effects 0.000 description 10
- 238000004422 calculation algorithm Methods 0.000 description 9
- 238000006243 chemical reaction Methods 0.000 description 9
- 238000013135 deep learning Methods 0.000 description 9
- 238000013528 artificial neural network Methods 0.000 description 8
- 238000013136 deep learning model Methods 0.000 description 7
- 230000006870 function Effects 0.000 description 7
- 238000003058 natural language processing Methods 0.000 description 7
- 230000006835 compression Effects 0.000 description 6
- 238000007906 compression Methods 0.000 description 6
- 238000005516 engineering process Methods 0.000 description 6
- 238000003062 neural network model Methods 0.000 description 6
- 230000002688 persistence Effects 0.000 description 6
- 230000008859 change Effects 0.000 description 4
- 238000010801 machine learning Methods 0.000 description 4
- 230000009286 beneficial effect Effects 0.000 description 3
- 238000013499 data model Methods 0.000 description 3
- 210000002569 neuron Anatomy 0.000 description 3
- 230000009467 reduction Effects 0.000 description 3
- 230000002787 reinforcement Effects 0.000 description 3
- 230000004888 barrier function Effects 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000005034 decoration Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 238000013178 mathematical model Methods 0.000 description 2
- 238000012856 packing Methods 0.000 description 2
- 230000002085 persistent effect Effects 0.000 description 2
- 238000012805 post-processing Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000004913 activation Effects 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 210000004556 brain Anatomy 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 238000013140 knowledge distillation Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012858 packaging process Methods 0.000 description 1
- 230000001902 propagating effect Effects 0.000 description 1
- 238000013139 quantization Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000000638 solvent extraction Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
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
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)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本申请实施例提供了一种模型处理方法及相关设备,其中方法包括:获取待处理的数据处理模型;数据处理模型中包括多个网络层;对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,计算拓扑图中包括网络层对应的操作节点及操作节点的属性信息,属性信息包括剪枝性;基于计算拓扑图中操作节点的属性信息,对数据处理模型进行序列化处理,得到序列化结果,序列化结果用于指示数据处理模型中需剪枝的网络层;按照序列化结果对数据处理模型进行剪枝处理。通过本申请实施例,可以实现数据处理模型全自动化地剪枝处理,从而提升模型剪枝效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种模型处理方法及相关设备。
背景技术
随着人工智能技术的发展,各种智能化的数据处理模型(例如通过深度学习技术训练得到的神经网络模型)已应用在各个领域中,包括但不限于:图像识别、游戏AI、语音识别、自然语言等等领域。得益于数据处理模型的精确处理效果,数据处理模型给人们的生产生活也带来了极大地改变,比如在购物应用中通过部署推荐大模型,能够智能化地为用户推荐其可能感兴趣的内容。然而,数据处理模型可能存在参数冗余等问题,从而影响数据处理模型的推理速度。模型剪枝作为一种模型优化方式,通过对数据处理模型进行剪枝处理,能够降低模型的冗余运算量,但是目前模型剪枝多采用人工辅助分析出模型剪枝方向,无法自动地分析出模型中需要被剪枝的网络层,从而影响模型剪枝效率。
发明内容
本申请实施例提供一种模型处理方法及相关设备,可以实现数据处理模型全自动化地剪枝处理,从而提升模型剪枝效率。
一方面,本申请实施例提供了一种模型处理方法,该方法包括:
获取待处理的数据处理模型;数据处理模型中包括多个网络层;
对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,计算拓扑图中包括网络层对应的操作节点及操作节点的属性信息,属性信息包括剪枝性;
基于计算拓扑图中操作节点的属性信息,对数据处理模型进行序列化处理,得到序列化结果,序列化结果用于指示数据处理模型中需剪枝的网络层;
按照序列化结果对数据处理模型进行剪枝处理。
一方面,本申请实施例提供了一种模型处理装置,该装置包括:
获取单元,用于获取待处理的数据处理模型;数据处理模型中包括多个网络层;
处理单元,用于对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,计算拓扑图中包括网络层对应的操作节点及操作节点的属性信息,属性信息包括剪枝性;
处理单元,还用于基于计算拓扑图中操作节点的属性信息,对数据处理模型进行序列化处理,得到序列化结果,序列化结果用于指示数据处理模型中需剪枝的网络层;
处理单元,还用于按照序列化结果对数据处理模型进行剪枝处理。
一方面,本申请实施例提供一种计算机设备,该计算机设备包括:
处理器,适用于执行计算机程序;
计算机可读存储介质,计算机可读存储介质中存储有计算机程序,计算机程序被处理器执行时,实现如上述模型处理方法。
一方面,本申请实施例提供一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,该计算机程序被处理器加载并执行如上述模型处理方法。
一方面,本申请实施例提供了一种计算机程序产品,该计算机程序产品包括计算机程序或计算机指令,该计算机程序或计算机指令被处理器执行时实现上述模型处理方法。
本申请实施例提供的模型处理方法,可以获取待处理的数据处理模型,该数据处理模型中包括多个网络层,之后,可以对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,该计算拓扑图中包括网络层对应的操作节点和操作节点的属性信息,该属性信息包括剪枝性。可见,通过拓扑自动化分析,可以得到数据处理模型中未涉及的属性信息,从而能够为模型序列化提供可靠的处理依据。进一步地,基于计算拓扑图中操作节点的属性信息,可以对数据处理模型进行序列化处理,得到序列化结果,该序列化结果用于指示数据处理模型中需剪枝的网络层。如此,通过模型的序列化处理,可以自动地分析出数据处理模型中哪些网络层需剪枝,这个过程无需人工干预,并且拓扑分析和序列化作为剪枝分析的过程,由于自动化特点而具有高效率的优点,另外,基于属性信息包括的剪枝性,能够保证剪枝分析的准确度。之后,可以按照序列化结果对数据处理模型进行剪枝处理。基于序列化结果的指示,可以对数据处理模型进行准确地剪枝处理。由此可见,从获取模型到对模型进行剪枝的整个过程是一个全自动化的过程,无论是分析数据处理模型中哪些网络层需要剪枝,还是对数据处理模型进行真正地剪枝处理,均能够按照固定的流程实现自动化处理,这样一方面,可以降低模型剪枝的使用门槛和人工成本,另一方面,能够提升模型剪枝效率,从而提升模型优化速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1a是本申请一个示例性实施例提供的一种模型处理***的架构图;
图1b是本申请一个示例性实施例提供的一种模型剪枝的场景示意图;
图2是本申请一个示例性实施例提供的一种模型处理方法的流程示意图;
图3a是本申请一个示例性实施例提供的一种数据处理模型的结构示意图;
图3b是本申请一个示例性实施例提供的一种模型拓扑分析的结果示意图;
图4是本申请一个示例性实施例提供的另一种模型处理方法的流程示意图;
图5a是本申请一个示例性实施例提供的一种操作组的分组示意图;
图5b是本申请一个示例性实施例提供的一种操作组的包装示意图;
图5c是本申请一个示例性实施例提供的一种剪枝模拟的示意图;
图5d是本申请一个示例性实施例提供的一种透传剪枝标记信息的示意图;
图6是本申请一个示例性实施例提供的一种模型处理方法的流程图;
图7是本申请一个示例性实施例提供的一种模型处理装置的结构示意图;
图8是本申请一个示例性实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中术语“第一”“第二”等字样用于对作用和功能基本相同的相同项或相似项进行区分,应理解,“第一”、“第二”、“第n”之间不具有逻辑或时序上的依赖关系,也不对数量和执行顺序进行限定。术语“至少一个”是指一个或多个,“多个”的含义是指两个或两个以上。
本申请中术语“模块”或“单元”是指有预定功能的计算机程序或计算机程序的一部分,并与其他相关部分一起工作以实现预定目标,并且可以通过使用软件、硬件(如处理电路或存储器)或其组合来全部或部分实现。同样的,一个处理器(或多个处理器或存储器)可以用来实现一个或多个模块或单元。此外,每个模块或单元都可以是包含该模块或单元功能的整体模块或单元的一部分。
本申请提出了一种模型处理方案,该方案涉及模型处理***、方法及相关设备,该方案针对待处理的数据处理模型,可以对数据处理模型的网络拓扑结构进行自动化分析,将网络层抽象为操作节点进行表示,并得到操作节点的属性信息,该属性信息包括剪枝性。进一步地,可以根据操作节点的属性信息对数据处理模型进行序列化处理,得到用于指示数据处理模型中需剪枝的网络层的序列化结果,再按照该序列化结果对数据处理模型进行剪枝处理。整个过程是一个全自动化的过程,无需人为操作或干预,一方面,可以降低模型剪枝的使用门槛,降低人工成本;另一方面,能够提升模型剪枝效率,从而提升模型优化速度。
模型是用来描述客观世界的数学模型,它从数据中抽象出来,基于对大量数据进行分析时找到的数学规律,能够根据输入进行预测得到结果。模型优化是针对模型进行的一种后处理方法,包括对模型的参数集进行调整,具体包括模型剪枝和模型量化,其中,模型剪枝通过寻找一种有效的评判手段,来判断模型中参数的重要性,不重要的参数(例如权值)可以被裁剪,从而减少模型的冗余。本申请提供的方案是一种基于序列化的模型剪枝方案,通过序列化可以搜索出数据处理模型中需剪枝的网络层,从而对数据处理模型进行剪枝处理。
本申请中,数据处理模型是指具备预测能力的数学模型。按照数据类型,预测能力包括但不限于:图像识别能力、语音识别能力、文本处理能力、视频处理能力等等。对于数据处理模型的类型,基于不同的维度可以包括如下(1)-(4)几种划分方式:
(1)按照模型所处理的数据的数据类型进行划分,数据处理模型可以是以下任一种:图像处理模型、音频处理模型、自然语言处理模型、多模态数据模型等。其中,多模态数据模型是指能够处理多种模态的数据的模型,包括但不限于:图像、音频、文本等。该多模态数据模型能够建立两种或以上数据模态特征表示。本申请提供的模型处理方案中,若数据处理模型为图像处理模型,那么通过对图像处理模型进行自动化地分析和剪枝处理,可以提升图像处理模型的剪枝效率。基于剪枝后的图像处理模型对输入的图像进行处理,可以提升模型对图像的处理速度,实现更加高效地预测。若数据处理模型为音频处理模型,那么按照本方案对音频处理模型自动化剪枝之后,可以音频处理模型在实际应用中避免一些冗余计算,进而提升对音频的处理速度。若数据处理模型为自然语言处理模型,那么通过本方案对自然语言处理模型进行自动化剪枝之后,可以提升自然语言处理模型对各种自然语言任务的处理效率。
(2)按照模型大小进行划分,数据处理模型可以是大模型或者小模型。其中,大模型是一种具有大量参数和复杂结构的机器学习模型,它能够处理海量数据,并完成各种复杂的任务,如自然语言处理、计算机视觉、语音识别等。大模型诸如大规模语言模型和超大规模语言模型。大规模语言模型是指基于深度学习技术和大规模训练数据集的自然语言处理模型,例如GPT1(第一代生成式预训练模型);大规模语言模型具有大规模的参数和优异的计算能力,该类模型采用了大规模的文本数据进行预训练,能够学习到人类语言中丰富的语言知识和语义表示,在文本生成、对话问答、机器翻译等任务中表现优异。超大规模语言模型包括但不限于以下任一种:GPT4(***生成式预训练模型)、Claude2(一种预训练模型)等。小模型是指参数较少、层数较浅的模型,这类模型具有轻量级、高效率且易于部署的特点。它的规模比大模型的规模更小,模型结构比大模型的结构更简单,模型训练所使用的数据量也比大模型训练所使用的数据量更少。由于大模型往往具有更多的参数而存在参数的冗余量较高的问题,因此本申请提供的模型处理方案也可以应用于大模型,通过对大模型进行模型剪枝,能够减少模型冗余参数,有效地降低模型的冗余运算量,并且通过本方案无需人为分析找到模型剪枝方向,而是可以自动地识别出模型中需进行参数修剪的网络层,从而自动地找到需剪枝的模型参数进行剪枝操作,这样便实现全自动化地模型剪枝,进一步提升剪枝效率。
(3)按照模型训练的方式,数据处理模型可以是深度学习模型、强化学习模型或者是其他机器学习模型,该深度学习模型是指采用深度学习技术训练的模型,它的网络结构可以是多层神经网络的结构;例如深度学习的神经网络,它可以用于使得计算机以受人脑启发的方式去处理数据。强化学习模型是指采用强化学习技术训练的模型,其他机器学习模型可以是传统机器学习训练得到的模型,例如传统神经网络。若本申请中数据处理模型是深度学习模型,那么本方案可以对深度学习带有参数的网络层(例如卷积层、全连接层)是否需剪枝进行判别,从而确定出参数减少对模型精度影响在可接收范围内的网络层作为剪枝网络,并对其进行剪枝处理,这样在减小深度学习模型的参数量的同时,不影响模型精度。
(4)按照模型训练的完成度,数据处理模型可以是已训练好的模型或者是未训练好的模型。如果数据处理模型是未训练好的模型,那么在模型训练过程中可以结合本方案实现模型剪枝,这样,通过训练提升模型精度的同时,还可以通过模型剪枝对模型进行精简,从而提升模型的推理速度。举例来说,在大模型训练迭代预设次数(如100次)之后,可以将其作为待处理的数据处理模型,从而对数据处理模型进行一系列的分析并进行剪枝处理,得到剪枝后的数据处理模型,然后对剪枝后的数据处理模型继续训练,在训练迭代预设次数之后,可以再次对训练后的模型进行剪枝处理,以此类推,直至模型的精度和推理速度均达到预期,得到目标模型并将其应用到相应的业务场景中,比如数据处理模型为图像处理模型,那么可以应用到图像识别、图像分类、图像搜索等业务场景中。如果数据处理模型是已训练好的模型(例如预训练模型),那么也可以按照本申请提供的方案对其进行剪枝处理,这是对模型的一种后处理,可选地,在经过剪枝处理得到剪枝后的数据处理模型之后,也可以对剪枝后的数据处理模型进行再次训练,从而调整模型参数以提升模型精度。
本申请提供的模型处理方案,一方面,由于模型剪枝是一个全自动化的过程,无需人工分析模型结构、人工配置剪枝参数等,这样就使得模型剪枝的使用门槛降低,也降低了用户对于模型剪枝的学习成本。任何用户给定一个模型,便可以执行本方案以实现对模型的剪枝。另一方面,由于不需要依赖剪枝配置信息来查找要剪枝的节点,因此可以避免由于配置错误而导致无法正常剪枝的问题,保证剪枝的准确性,还可以避免剪枝配置不合理导致模型的精度大幅度下降的问题,保证模型的可用性。
本申请提供的模型处理方案涉及模型压缩,模型压缩旨在通过压缩的技术帮助减小模型大小和加速模型推理,从而降低模型在存储和计算方面的成本。模型压缩通常包括剪枝、低秩分解、知识蒸馏等;本申请中具体涉及模型压缩中的剪枝,通过剪枝可以减少模型参数量,从而加速模型的推理速度。
下面将结合附图,对本申请实施例提供的模型处理***的架构进行介绍。
请参见图1a,图1a是本申请一个示例性实施例提供的一种模型处理***的架构图。如图1a所示,该模型处理***包括计算机设备101和模型数据库102;计算机设备101和模型数据库102之间通过有线或无线的方式建立通信连接。其中,计算机设备包括终端设备和服务器中的一种或多种,终端设备包括但不限于:智能手机、平板电脑、智能可穿戴设备、智能语音交互设备、智能家电、个人电脑、车载终端、智能摄像头等等设备,本申请对此不作限制。对于终端设备的数量,本申请不做限制。服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式***,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN(ContentDelivery Network,内容分发网络)、以及大数据和人工智能平台等基础云计算服务的云服务器,但并不局限于此。对于服务器的数量,本申请不做限制。模型数据库用于存储至少一个数据处理模型,并且可以包括但不限于以下一种或多种类别:图像处理模型、自然语言处理模型、音频处理模型或者多模态处理模型。按照部署位置划分,模型数据库102可以是计算机设备101的本地数据库,也可以是能够与计算机设备101建立连接的云数据库。按照属性划分,模型数据库102可以是公有数据库,即向所有计算机设备开放的数据库;也可以是私有数据库,即仅向特定的计算机设备(如计算机设备101)开放的数据库。
计算机设备101可以执行本申请实施例提供的模型处理方法,该模型处理方法的具体流程包括以下(1)-(4)所示的内容:
(1)获取数据处理模型。
在一个实施例中,计算机设备101可以响应模型获取请求从模型数据库102中查找数据处理模型。在具体实现中,如果用户对某个数据处理模型存在剪枝需求,可以选择某个数据处理模型的模型标识并确认,计算机设备101根据确认指令可以生成模型获取请求,该模型获取请求中包括模型标识,模型标识例如是模型名称、模型ID或者模型代号。计算机设备101可以根据模型标识从模型数据库102查找数据处理模型,并将查找到的数据处理模型作为待处理的数据处理模型。在另一个实施例中,计算机设备101也可以从其他计算机设备中获取数据处理模型,例如,给定数据处理模型的存储地址,可以基于该存储地址从相应的服务器中获取该数据处理模型。
(2)分析数据处理模型的网络拓扑结构。
在具体实现中,由于数据处理模型中包括多个网络层,且每个网络层均可用于实现一种算法操作,因此,网络层可以理解成是算子。计算机设备101可以提取数据处理模型的网络拓扑结构,得到计算拓扑图。该计算拓扑图中包括操作节点,一个操作节点用于表示数据处理模型中的一个网络层。该计算拓扑图用于描述数据处理模型的网络拓扑结构,由于操作节点所表示的网络层用于实现相应的算法操作,因此操作节点也可称为计算节点。计算机设备101还可以提取操作节点的属性信息并添加到计算拓扑图中,由此计算拓扑图中包括操作节点的属性信息,该属性信息至少包括剪枝性。
可以理解的是,对于任何类型的数据处理模型,均可以通过网络拓扑结构的提取,统一地转换为计算拓扑图,这是一种固定的、可识别的格式,在模型剪枝过程中,针对这种固定结构的格式,在序列化操作的基础上加上剪枝处理流程,便可得到剪枝后的数据处理模型。如此不需再人为地对模型进行分析,而是可以自动化地进行模型分析,提升分析效率。
(3)序列化数据处理模型。
在具体实现中,计算机设备可以根据分析得到的操作节点的属性信息,对数据处理模型进行序列化处理,从而得到序列化结果以指示数据处理模型中需剪枝的网络层。此步骤也可以简称为模型序列化,在一个实施例中,可以包括模型分组和操作组包装,模型分组是指对表示网络层的操作节点进行分组,得到多个操作组,每个操作组包括至少一个操作节点。通过分组可以使得操作组之间的剪枝互不影响,并可保证模型剪枝的正确性。操作组包装是指对可剪枝的操作组添加剪枝控制变量以模拟剪枝效果,以便确定出合适的剪枝标记信息来识别出需剪枝的网络层。
(4)剪枝数据处理模型。
按照序列化结果的指示,可以对数据处理模型中需剪枝的网络层进行剪枝处理。在具体实现中,序列化结果所指示的需剪枝的网络层是包含网络参数的网络层,计算机设备101可以先根据序列化结果的指示从数据处理模型中确定出这些需剪枝的网络层作为目标网络层,之后,确定出目标网络层中需要修剪的参数层,再对需修剪的参数层所包括的参数进行修剪处理,减少目标网络层包含的网络参数,从而减少模型参数量,达到模型剪枝效果。
本申请提供的模型处理***中,可以由计算机设备对数据处理模型进行自动化地分析和序列化,从而实现模型的剪枝分析,再基于剪枝分析得到的结果进行剪枝处理。这是一个全自动化的过程,无需人工干预,能够提升剪枝处理效率。本申请可应用于辅助模型剪枝的实现中,并可解决模型剪枝中存在的一些问题,针对需要对数据处理模型进行剪枝的场景,可以提高模型剪枝的使用效率,降低模型剪枝的使用门槛。举例来说,如果一个深度学习模型需要上线应用,那么在上线之前,通过本方案便可自动搜索到需剪枝的网络层,并对需剪枝的网络层的网络参数进行剪枝处理以优化模型。
本申请还可以打破算法工程师和负责模型优化的工程师之间的技术壁垒。这是因为,从产品线的角度来说,如图1b所示的模型剪枝的场景示意图,算法工程师经过一系列的设计和实现,最后训练得到一个模型,但是由于通常比较关注于模型的进度,相对无法估计到模型的性能,使得在实际部署模型时会存在应用的问题:①模型太大,导致部署的模型需要消耗大量的资源。②模型的参数量偏大,在设计模型时为了达到较好的效果,往往会采取保守的方式使用较多的参数来得到数据的更多特征。这导致在实际应用AI时,出现模型推理速度过慢、推理时间过长的问题。针对以上问题,模型剪枝作为模型优化的方向之一,可以通过减少模型参数达到加速模型推理的效果;而由于算法工程师和负责模型优化的工程师之间的技术壁垒,需要其他人员人工地参与来做模型剪枝进而实现模型优化,但是,通过本方案可以在模型上线之前自动地搜索出需剪枝的网络层进行剪枝,这样无需模型优化的工程师对指定的模型进行分析,任何模型训练好之后或者是在训练过程中,通过本方案就可以自动地进行剪枝优化,避免了人工对模型剪枝的学习成本及人工分析的耗时,模型剪枝效率高。进一步地,通过模型剪枝可以减小模型大小,使得模型在实际应用中的推理速度能够得到提升。
接下来对本申请实施例提供的模型处理方法进行介绍。
请参见图2,是本申请一个示例性实施例提供的一种模型处理方法的流程示意图。该模型处理方法可以由计算机设备(如图1a中的计算机设备101)来执行,该模型处理方法可以包括以下步骤S201-S204。
S201,获取待处理的数据处理模型。
数据处理模型中包括多个网络层;网络层(layer)是指数据处理模型中用于实现算法操作(也可称为计算操作或者模型操作)的网络结构。举例来说,数据处理模型中可以包括如下网络层:全连接层(Dense层)、卷积层(Conv层)、维度转换层(如Reshape、Flatten层)、激活层(如Relu、Elu层)、联合层(如Concatenate层)等等;算法操作例如是卷积层实现的卷积计算操作,加法层实现的加法操作,Flatten层将多维的输入进行一维化的转换操作。算法操作具有相应的计算逻辑,因此,本申请中网络层也可以理解成是计算单元,这些计算单元也可称为算子(Operator,简称OP)。算子可以按照相应的计算逻辑实现算法计算,例如卷积层是一个算子,全连接层中的权值求和过程也可以是一个算子。
多个网络层中的至少一个网络层具有网络参数,网络参数是指网络层实现算法操作时所使用到的参数,包括但不限于:权重参数、偏置参数等。举例来说,在神经网络模型中,存在多个深度学习的网络层是带有参数的,比如全连接层、卷积层等等都带有权重参数。按照是否具有网络参数,网络层可以分为以下两类:第一计算算子和第二计算算子。第一计算算子是纯做计算的计算算子而不带有网络参数,而第二计算算子不仅可按照相应的计算逻辑进行计算,还带有网络参数。举例来说,数据处理模型为神经网络模型,该神经网络模型中包括Add层和Dense层,由于Add层只需将输入的数据进行加法计算即可,因此,Add层为第一计算算子,而Dense层则需要将输入的数据和该层的权重参数、偏置参数等进行计算,因此Dense层是第二计算算子。需说明的是,对于第一计算算子,可以设置为非剪枝网络,从而在实际剪枝过程中并不会对该第一计算算子的参数进行剪枝处理。
数据处理模型中的多个网络层之间具有连接顺序,基于网络层之间的连接顺序,多个网络层可以构成相应的网络拓扑结构,以实现数据处理。在数据处理模型中可以包括顺序连接的网络层和存在并列关系的网络层。示例性地,如图3a所示的数据处理模型的结构示意图中,图3a中的数据处理模型包括网络层为:四个全连接层(Dense_1、Dense_2_1、Dense_2_2、Dense_3)、一个加法层(Add)、一个扁平化层(flatten)及一个输入层(input)。这几个网络层之间的结构为:input层、flatten层、Dense_1层依次连接,Dense_2_1层和Dense_2_2层并列,并且Dense_2_1层、Dense_2_2层均和Add层顺序连接,Add层和Dense_3层顺序连接。基于上述网络结构,数据处理顺序为:input参数经过flatten层的处理,输出流向Dense_1层,Dense_1层基于flatten层的输出进行计算,得到的结果分别流入Dense_2_1层和Dense_2_2层,再由Add层分别对Dense_2_1层和Dense_2_2层的输出相加,相加的结果输入Dense_3层,得到最终的计算结果。顺序连接的网络层之间存在数据依赖,这是因为顺序连接的各个网络层中,一个网络层的算法操作需等到另一个或多个网络层计算完成之后才执行,如上述flatten层和Dense_1层之间存在数据依赖。
S202,对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图。
计算拓扑图中包括网络层对应的操作节点及操作节点的属性信息。在具体实现中,数据处理模型中的网络层之间具有连接顺序而构成相应的网络拓扑结构,而数据处理模型中存储的是网络层和网络层的网络参数,直接通过这些信息无法分析出哪些网络层需剪枝。因此,本申请可以通过模型拓扑分析(即对数据处理模型的网络拓扑结构进行分析),增加一些用于分析网络层剪枝的信息,从而实现自动化的剪枝分析。
在一种可实现的方式中,可以通过创建图(Graph)的形式,将数据处理模型的网络拓扑结构提取出来,得到计算拓扑图,该计算拓扑图可以理解成是一种计算图模型,即用图的形式来表示运算过程的模型;它可以用于描述数据处理模型的网络拓扑结构,并且可以节约***开销,提高资源的利用率,更加高效的进行运算。具体地,计算拓扑图中包括多个操作节点和至少一条有向边,每个操作节点均可以用于表示数据处理模型中的一个网络层,各个网络层和相应操作节点之间一一对应;任一条有向边用于连接两个操作节点,有向边的指向即为操作节点输出的数据的流向。
在提取网络拓扑结构的过程中,可以计算后续需要的一些拓扑信息,该拓扑信息包括但不限于:用于表示算子的操作节点、用于描述数据依赖的边等。此外,还可以提取操作节点的属性信息和边的属性信息,并添加到计算拓扑图中,从而计算拓扑图中包括操作节点的属性信息和边的属性信息。可选地,可采用图形数据库(例如基于内存的图形数据库networkx)存储计算拓扑图和分析得到的属性信息。
操作节点的属性信息至少包括操作节点的剪枝信息,该剪枝信息是指在剪枝过程中所具备的特性,也可称为剪枝特性。剪枝信息包括剪枝性和剪枝传递性,剪枝性用于指示是否允许被剪枝,剪枝传递性用于指示剪枝性是否允许跨层传播。比如某个操作节点的剪枝传递性指示操作节点的剪枝性允许跨层传播,那么与该操作节点跨层相隔的其他操作节点可以具备相同的剪枝性。对于不同类型的操作节点,在剪枝过程中其剪枝特性不同,而在数据处理模型中并未涉及到此类信息,为此本申请通过模型拓扑分析,可以提取出操作节点的节点类型,进而根据节点类型确定操作节点的剪枝信息。
边的属性信息用于记录操作节点之间的关联性,通过这种关联性,能够同步和更新操作节点之间的剪枝性,以便分析出数据处理模型中需剪枝的网络层。可选地,边的属性信息包括但不限于:输入节点标识、输出节点标识、输出数据类型、输入节点数和输出节点数等。其中,每个操作节点具有节点标识,该节点标识例如是节点ID或节点名称等。
如图3b是本申请一个示例性实施例提供的一种模型拓扑分析结果的示意图。以图3a所示的数据处理模型为基础,图3b中的(1)所示的数据处理模型经过分析处理可以转换为图3b中的(2)所示的计算拓扑图,该计算拓扑图可以视为数据处理模型的网络拓扑结构的映射,并且能够存储其他用于剪枝分析的属性信息,进而利用这些属性信息可以识别出需剪枝的网络层。图3b中的(2)所示的计算拓扑图中,0所标记的操作节点表示数据处理模型中的输入层(input),而1所标记的操作节点表示数据处理模型中的flatten层,2所标记的操作节点表示数据处理模型中的Dense_1层,依次类推,6所标记的操作节点表示数据处理模型中的Dense_3层,可见,可以将数据处理模型的网络拓扑结构抽象出来,以便实现更加高效的处理。通过拓扑提取处理,可以自动地识别出数据处理模型中哪些网络层之间存在依赖关系,这样可以替代具有模型压缩经验的人员的工作,由计算机设备对数据处理模型进行自动化地分析。可以理解的是,对于数据处理模型的网络拓扑结构的分析过程,可以理解成是一种网络拓扑结构的转换,通过将数据处理模型转换为描述网络拓扑结构的计算拓扑图,一方面能够得到网络拓扑结构以提升处理效率,另一方面能够提取出操作节点的剪枝信息,以便后续剪枝分析。
S203,基于计算拓扑图中操作节点的属性信息,对数据处理模型进行序列化处理,得到序列化结果。
本申请中,序列化结果用于指示数据处理模型中需剪枝的网络层。剪枝是指模型参数的修剪,数据处理模型中需剪枝的网络层可以称为剪枝网络,它是数据处理模型中需进行参数修剪的网络层。剪枝网络中需剪枝的参数层可以称为剪枝层。非剪枝网络是指数据处理模型中禁止进行参数修剪的网络层,非剪枝层是禁止进行剪枝的参数层,它是模型精度的基本保证。基于此,在序列化处理时,可以先将靠近模型输入和输出的两层参数层自动设置为非剪枝层,这样可以减少模型精度的下降。这是因为:靠近模型的输入层的参数中包含模型执行处理时所需的重要参数,如果剪枝会影响模型整体精度;对于模型输出则是因为有些输出具有固定维度的要求,如果剪枝会影响输出结果,从而影响模型输出的精度。
在序列化处理时,可以通过剪枝算法计算出数据处理模型中哪些网络层包含的网络参数的减少对模型精度的影响值(比如模型精度下降大小)在预设影响阈值内,这些网络层中包含的网络参数减少,对于模型精度的影响较小或者几乎没有影响,从而可以将其作为需剪枝的网络层。由此,序列化结果所指示的需剪枝的网络层是对数据处理模型的精度的影响值小于预设影响阈值的网络层;并且,序列化所指示的需剪枝的网络层均是带有网络参数的网络层。
操作节点的属性信息包括剪枝性,在一种实现方式中,在序列化处理时,计算机设备可以先按照操作节点之间的依赖关系,合并有关联的操作节点,得到操作组,然后以操作组为单位,结合操作节点的剪枝性分析相应网络层是否需被剪枝,从而确定出数据处理模型中需剪枝的网络层。这样也相当于对数据处理模型进行了一次序列化;对数据处理模型的序列化处理,也可以理解成是对数据处理模型的网络结构搜索,网络结构搜索的目的是为了自动化地查找数据处理模型中需剪枝的网络层。基于序列化处理对模型进行自动化地网络搜索,可以自动地找到数据处理模型中需要剪枝的网络结构是哪些,以进行更为准确地剪枝处理。
S204,按照序列化结果对数据处理模型进行剪枝处理。
在一种具体实现中,可以按照序列化结果的指示确定出需剪枝的网络层中需保留的网络参数;之后对序列化结果所指示的网络层进行重构处理,得到重构网络层,然后将需保留的网络参数拷贝到重构网络层中,这个重构网络可以替代数据处理模型中原有的网络层,从而完成数据处理模型的剪枝处理。
本申请实施例提供的模型处理方法,可以获取待处理的数据处理模型,该数据处理模型中包括多个网络层,之后,可以对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,该计算拓扑图中包括网络层对应的操作节点和操作节点的属性信息,该属性信息包括剪枝性。可见,通过拓扑自动化分析,可以得到数据处理模型中未涉及的属性信息,从而能够为模型序列化提供可靠的处理依据。进一步地,基于计算拓扑图中操作节点的属性信息,可以对数据处理模型进行序列化处理,得到序列化结果,该序列化结果用于指示数据处理模型中需剪枝的网络层。如此,通过模型序列化,可以自动地分析出数据处理模型中哪些网络层需剪枝,这个过程无需人工干预,并且拓扑分析和序列化作为剪枝分析的过程,由于自动化特点而具有高效率的优点,另外,基于属性信息包括的剪枝性,能够保证剪枝分析的准确度。之后,可以按照序列化结果对数据处理模型进行剪枝处理。基于序列化结果的指示,可以对数据处理模型进行准确地剪枝处理。由此可见,从获取模型到对模型进行剪枝的整个过程是一个全自动化的过程,无论是对数据处理模型中哪些网络层需要剪枝的分析,还是对数据处理模型进行真正地剪枝处理,均能够按照固定地流程实现自动化,这样一方面,可以降低模型剪枝的使用门槛和人工成本,另一方面,能够提升模型剪枝效率,从而提升模型优化速度。
请参见图4,是本申请一个示例性实施例提供的另一种模型处理方法的流程示意图。该模型处理方法可以由计算机设备(如图1a中的计算机设备101)来执行,该模型处理方法可以包括以下步骤S401-S406。
S401,获取待处理的数据处理模型。
S402,对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图。
在具体实现中,S402的实现方式可以包括如下(1)-(2)所示的内容。
(1)对数据处理模型的网络拓扑结构进行提取处理,得到计算拓扑图。
可以对数据处理模型中的各个网络层分别进行映射处理,得到多个操作节点,每个操作节点用于表示数据处理模型中的一个网络层;然后根据数据处理模型中的各个网络层之间的连接关系,生成至少一条有向边,每条有向边用于连接相关联的两个操作节点;再根据多个操作节点和至少一条有向边,得到计算拓扑图。由此,计算拓扑图中包括:多个操作节点和至少一条边。在网络拓扑结构的提取过程中,除了计算后续所需的拓扑信息,还可以过滤掉分析过程中的无用信息,比如TensorFlow中与计算算子无关的无用参数可以过滤掉,而与计算算子有关的参数,如权重参数可以保留在计算拓扑图中。
(2)对计算拓扑图中的每个操作节点进行属性提取处理,得到每个操作节点的属性信息。
在一种实现方式中,对操作节点的属性提取处理可以包括:识别节点类型和确定剪枝信息,这样提取得到的操作节点的属性信息包括节点类型和剪枝信息。基于此,对操作节点进行的属性提取处理的具体实现方式可以包括以下步骤1.1-步骤1.3。
步骤1.1、根据计算拓扑图中的每个操作节点所表示的网络层,对每个操作节点进行类型识别处理,得到每个操作节点的节点类型。
对于任一操作节点来说,计算机设备可以先对操作节点所表示的网络层所实现的算法操作的操作类型进行识别,然后将网络层的操作类型确定为该操作节点的节点类型。总的来说,按照操作节点所表示的网络层的功能,可以识别出操作节点的节点类型,操作节点的节点类型包括但不限于:Dense节点(全连接节点,对应全连接层)、Conv节点(卷积操作节点,对应卷积层)、Add节点(加法操作节点,对应加法层)、Concatenate节点(联合操作节点,对应联合层)、Reshape节点(维度转换节点,对应维度转换层)等等。
步骤1.2、按照节点类型和剪枝信息之间的对应关系,根据每个操作节点的节点类型确定每个操作节点的剪枝信息。
对于不同节点类型的操作节点,在剪枝过程中其剪枝的特性是不完全相同的。譬如有的节点类型的操作节点(如计算节点)允许剪枝,而有的节点类型的操作节点(如输入节点)禁止剪枝。节点类型和剪枝信息之间具有对应关系,该对应关系可以指示相应节点类型的剪枝信息;为此,可以根据操作节点的节点类型确定操作节点的剪枝信息,该剪枝信息包括剪枝性和剪枝传递性。剪枝性是指是否允许剪枝,剪枝传递性是指剪枝性是否允许跨层传播。举例来说,操作节点为输入节点,可以确定操作节点的剪枝性和剪枝传递性均为“unable”,从而表明该操作节点所表示的网络层禁止被剪枝,剪枝性禁止跨层传播;如果设置为“enable”,表明该操作节点所表示的网络层允许被剪枝,且剪枝性允许跨层传播。其中,剪枝传递性会影响节点之间剪枝性的同步和更新,在数据处理模型中,由于一些网络层的输入输出维度不做任何变换,比如在两个网络层中间间隔几个不变化的网络层(如reshape、relu层等),但这些网络层并不是真正地剪枝层,那么在这样的网络层可剪枝的情况下,通过剪枝传递性可以查找到真正需要剪枝的网络层。
剪枝信息除了包括剪枝性和剪枝传递性这两种特性之外,还可以包括其他特性,比如剪枝维度要求,如剪枝时要求输入输出维度保持一致,或者输出维度固定等。
步骤1.3、将每个操作节点的节点类型和每个操作节点的剪枝信息,添加至相应操作节点的属性信息中。
在具体实现中,通过将操作节点的节点类型和剪枝信息(包括剪枝性和剪枝传递性)添加到操作节点的属性信息中,操作节点的属性信息便可包括节点类型和剪枝信息。可选地,除了提取操作节点的节点类型和剪枝信息,计算机设备还可以提取出操作节点的其他属性并将其添加到属性信息中,其他属性可以包括:节点名称、输出边的ID等,从而属性信息还可以包括节点名称、操作节点的输出边标识等属性。
上述步骤1.1-步骤1.3提取操作节点的属性的实现方式,可以分析出操作节点的节点类型,并通过预先设定的节点类型与剪枝信息之间的对应关系,基于节点类型确定出操作节点的剪枝信息,从而将节点类型和剪枝信息都添加到属性信息中,这样可以得到数据处理模型中原本没有的剪枝信息,有利于后续对数据处理模型进行精确地序列化处理,提升剪枝精准度。
在一个实施例中,除了对计算拓扑图中的每个操作节点进行属性提取处理,还可以对计算拓扑图中的每条边进行属性提取处理,得到每条边的属性信息。基于每条边的属性信息,可以同步和更新操作节点之间的剪枝性,以保证操作节点的剪枝性的精确度。进一步地,可以将所述操作节点的属性信息添加到所述计算拓扑图中,以及将边的属性信息添加到计算拓扑图中,从而得到带有属性信息的计算拓扑图。
在一个实施例中,操作节点的数量包括多个,每个操作节点的剪枝性用于指示相应操作节点是否允许被剪枝,计算机设备在基于计算拓扑图中操作节点的属性信息,对数据处理模型进行序列化处理时,具体可以基于操作节点的剪枝性对数据处理模型进行序列化处理,包括如下步骤S403-S405。
S403,根据计算拓扑图中多个操作节点之间具备的依赖关系,对多个操作节点进行分组处理,得到K个操作组,K为正整数。
在剪枝过程中,数据处理模型中包括的多个网络层之间的网络参数会互相影响,并且这种影响可能会导致剪枝过程出错,举例来说,对于不同网络层输出的两个参数矩阵A和B进行点乘计算时,相应的计算公式为:。其中,两个参数矩阵分别如下所示:
假设在剪枝过程中对A进行剪枝而对B不进行剪枝,在剪枝处理后参数矩阵A的矩阵大小变为,参数矩阵B的矩阵大小仍然为/>,此时点乘计算公式不再成立,从而会导致剪枝过程出错。
基于这样的影响,操作节点之间存在的依赖关系是影响其他节点执行的一种计算依赖,这种依赖关系会影响操作节点所表示的算子的执行情况。该依赖关系可以用于指示操作节点之间的相关联,所以在剪枝过程中对于这类基于存在计算依赖的操作节点的输出所执行的计算操作(如点乘计算操作),其输入的多个参数矩阵均需剪枝,也即存在计算依赖的操作节点均需剪枝。为此,本申请提出了操作组(Group)的概念,通过操作组可以将存在依赖关系的操作节点合并,这样,具有相关特性的操作节点可以组合起来一并进行剪枝,保证剪枝过程的正确性。
在一种实现方式中,依赖关系用于指示计算依赖,计算依赖是指某个计算操作涉及的至少两个操作节点的输出之间存在依赖。计算机设备在执行S403时,可以:先对计算拓扑图中的各个操作节点分别进行初始化处理,得到各个初始操作组,每个初始操作组均包括一个操作节点。也就是说,通过初始化可以将每个操作节点都预先划分为一个操作组。之后,根据多个操作节点之间具备的计算依赖,对各个初始操作组中相关的初始操作组进行合并处理,得到K个操作组。具体来说,可以遍历各个初始操作组,根据遍历到的初始操作组中包括的操作节点的属性信息进行关联性查找,具体可从多个初始操作组中查找与之具有计算依赖的初始操作组,如果查找到,那么可将查找到的初始操作组与遍历到的初始操作组进行合并处理,从而将关联的操作节点合并为一个操作组;如果未查找到,遍历到的初始操作组即可作为一个操作组。
示例性地,如图5a是本申请一个示例性实施例提供的一种操作组的分组示意图,由于操作节点的分组也相当于对数据处理模型中网络层的分组,为便于理解,以原始的数据处理模型为辅助基础进行说明。图5a中的(1)所示的数据处理模型可以被序列化为图5a中的(3)所示的操作组,该数据处理模型是一个神经网络模型,由上述划分规则可知,通过定义的操作组,可以先将每个节点初始化表示为一个操作组(图5a中的(2)所示),再将相关联的初始操作组合并,得到操作组,由此可将一个多节点的神经网络计算图划分为多个操作组,而这些操作组之间的剪枝不会受到影响。对于input层在生成操作节点时可设置为非剪枝层,从而可以不将其计入操作组,这是因为对于靠近输入层和输出层的参数层,可以自动地设置为非剪枝层,从而在初始化各个操作节点时,这些网络层对应的操作节点可以不执行初始化处理。
在另一种实现方式中,在得到计算拓扑图和相应的属性信息之后,也可以遍历计算拓扑图中各个操作节点,然后针对遍历到的当前操作节点,根据操作节点之间的计算依赖查找与当前操作节点相关联的操作节点,若查找到,则将查找到的操作节点和当前操作节点合并,得到一个操作组,该操作组中包括至少两个操作节点;若未查找到,则根据当前操作节点生成一个操作组,该操作组中包括一个操作节点。这样,对于计算拓扑图中的每个操作节点,均可以分为相应的操作组中,从而得到至少一个操作组。
通过对操作节点进行分组处理,可以得到至少一个操作组,每个操作组中包括至少一个操作节点。具体地,多个操作节点中可以包括独立的操作节点,此处的独立是指对操作节点所表示的网络层进行单独地剪枝不会导致其他操作节点执行的计算操作出错,从而该操作节点可以单独地构成一个操作组,该操作组中包括一个操作节点。多个操作节点中可以包括两个或两个以上具有关联性的操作节点,这些操作节点可以具有相同的上游节点和下游节点,从而操作节点之间具有依赖关系。这些具有依赖关系的操作节点可以合并为一个操作组,从而操作组中包括两个或两个以上操作节点。
可见,本申请通过引入操作组的概念,可以将一个大的数据处理模型(例如深度学习模型)分解为多个小的操作组,这样各个操作组之间的剪枝是互不影响的,即不同操作组中操作节点所表示的网络层在剪枝过程中互相不会受到影响,由此,基于操作组对数据处理模型进行剪枝网络的搜索,能够更为准确且高效。
S404,根据每个操作组中包括的操作节点的剪枝性,从K个操作组中选取出目标操作组。
在一种实现方式中,计算机设备在执行S404时,可以按照如下逻辑执行:遍历K个操作组,当遍历到第k(k∈[1,K])个操作组,且第k个操作组中包括允许被剪枝的操作节点,那么可以将第k个操作组确定为目标操作组;可见,目标操作组是指存在允许被剪枝的操作节点的操作组;换个说法,目标操作组中包括具备目标剪枝性的操作节点,该目标剪枝性用于指示操作节点允许被剪枝。当遍历完K个操作组之后,可以得到至少一个目标操作组。即目标操作组的数量可以是至少一个,对于每个目标操作组均可以执行相同的操作。为便于理解,后续均是以一个目标操作组为例进行描述。
在另一种实现方式中,计算机设备在执行S404时,可以执行如下步骤2.1-步骤2.2:步骤2.1、根据每个操作组中包括的操作节点的剪枝性,对相应操作组进行剪枝性分析,得到每个操作组的剪枝性;步骤2.2、根据每个操作组的剪枝性,从K个操作组中选取出允许被剪枝的操作组作为目标操作组。
在一种具体实现中,对各个操作组的剪枝性分析可以包括如下内容:遍历K个操作组,并将遍历到的操作组作为第i个操作组,i∈[1,K];若第i个操作组中存在至少一个操作节点的剪枝性用于指示相应操作节点允许被剪枝,则生成第一剪枝性,并将第一剪枝性确定为第i个操作组的剪枝性,其中,第一剪枝性用于指示第i个操作组允许被剪枝;若第i个操作组中包括的每个操作节点的剪枝性均用于指示相应操作节点禁止被剪枝,则生成第二剪枝性,并将第二剪枝性确定为第i个操作组的剪枝性,其中,第二剪枝性用于指示第i个操作组禁止被剪枝;当遍历完K个操作组之后,得到每个操作组的剪枝性。
基于上述剪枝性分析的逻辑,对于任一操作组来说,如果操作组中存在至少一个允许被剪枝的操作节点,那么可确定该操作组的剪枝性为第一剪枝性,如果操作组中包括的操作节点的剪枝性均指示禁止被剪枝,那么可确定操作组的剪枝性为第二剪枝性。可选地,在遍历K个操作组时可以串行遍历或者并行遍历,在并行遍历时,可以对至少两个操作组的剪枝性进行并行地分析,从而提升整体操作组的剪枝性确定速度。在K个操作组的剪枝性都确定之后,每个操作组的剪枝性是确定的,进而可以利用操作组的剪枝性进行后续地分析处理。
上述步骤2.1-步骤2.2所描述的目标操作组的选取逻辑,先基于操作组中包括的操作节点的剪枝性分析出操作组的剪枝性,以操作组为单位进行剪枝性的确定,而无需遍历操作组中的操作节点以查找操作节点的剪枝性,这样能够根据操作组的剪枝性更快地选取出目标操作组。进一步地,由于目标操作组是允许被剪枝的操作组,后续以这些目标操作组为依据,能够查找数据处理模型中需剪枝的网络层。
操作组的剪枝性用于指示操作组是否允许被剪枝;可选地,操作组的剪枝性为第一剪枝性或第二剪枝性。针对任一操作组,如果操作组的剪枝性为第一剪枝性,说明操作组允许被剪枝,那么便可将该操作组确定为目标操作组,如果操作组的剪枝性为第二剪枝性,说明操作组禁止被剪枝,那么便可将该操作组过滤掉,从而不作为目标操作组。这样,基于操作组的剪枝性,可以从K个操作组中选取出具有第一剪枝性的操作组,也就将K个操作组中允许被剪枝的操作组选取出来作为目标操作组。
示例性地,如图5a所示的4个操作组分别记为Group1、Group2、Group3和Group4,Group1中的Dense_3节点的剪枝性指示允许被剪枝,因此,可以设置Group1的剪枝性为true,以表示Group1允许被剪枝,同理,Group2、Group3的剪枝性均可设置为true,而Group3中的flatten节点的剪枝性指示禁止被剪枝,由此,可以将Group4的剪枝性设置为false,以表示Group4禁止被剪枝。基于上述操作组的剪枝性分析,可以将剪枝性为“true”的操作组作为目标操作组,从而目标操作组包括Group1、Group2和Group3。
S405,按照目标操作组,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果,并根据剪枝识别结果确定序列化结果。
在一个实施例中,计算机设备在按照目标操作组,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果时,具体可以执行如下步骤(1)-步骤(3)。
步骤(1)、根据剪枝控制变量对目标操作组进行包装处理,得到包装操作组。
具体地,剪枝控制变量可以是一个包含参数的向量,可以记为mask=,并且mask中参数的具体取值可以为1,从而剪枝控制变量为单位向量。在包装处理时,可以选取出一个操作节点,并采用剪枝控制变量对其进行包装,从而得到带有剪枝控制变量的操作节点作为包装节点,以表示包装操作组(记为GroupWrapper)。
在一种实现方式中,包装处理的逻辑可以包括如下步骤3.1-步骤3.2。
步骤3.1、从目标操作组包括的至少一个操作节点中选取出输出操作节点。
具体地,若目标操作组中包括一个操作节点,那么可以将该操作节点确定为输出操作节点,若目标操作组中包括至少两个操作节点,那么可以从至少两个操作节点中确定出最下游操作节点作为输出操作节点,由于多个操作节点之间通过有向边进行连接,最下游操作节点是指操作组中指向顺序排列在最末的操作节点。沿用如图5a所示的4个操作组,其中目标操作组包括:Group1、Group2和Group3,而Group1和Group3包括一个操作节点,从而对于Group1和Group3来说,可以将相应的Dense节点确定为输出操作节点,Group2中包括三个操作节点,那么可以将多条有向边共同指向的Add节点确定为输出操作节点;该输出操作节点的下游节点与输出操作节点是不同操作组中的操作节点。这样,对于每个允许被剪枝的操作组来说,都能够找出一个操作节点作为目标操作组的输出操作节点。
步骤3.2、获取剪枝控制变量,并根据剪枝控制变量对输出操作节点进行装饰,得到包装操作组。
计算机设备在装饰时,可以将输出操作节点的输出矩阵与剪枝控制变量mask相乘,得到包装操作组;剪枝控制变量也可以视为对输出操作节点加上的Wrapper装饰。这样,通过从操作组中找出某个操作节点作为操作组的输出操作节点,再给输出操作节点加上Wrapper装饰,能够初始化剪枝模拟效果。可选地,序列化处理可以使用tensorflow的keras的模型编程方法,通过包装可以将操作节点转换为自定义的包装节点(即添加mask信息的输出操作节点)。
示例性地,如图5b是本申请一个示例性实施例提供的一种的操作组的包装示意图。数据处理模型为神经网络模型,它包括多个全连接层(Dense)、一个加法计算层(Add)、一个扁平化层(flatten)及一个输入层(input),通过对数据处理模型进行分析可以提取出计算拓扑图,然后基于计算拓扑图将神经网络模型划分为多个在剪枝过程中不受影响的操作组(Group),通过操作组中包括的操作节点的剪枝性,分析出各个操作组的剪枝性。如图5b中的(1)所示,包括4个操作组,每个操作组经过剪枝性分析后可得到true或者false的剪枝性,true代表操作组允许被剪枝,false代表操作组禁止被剪枝。对于剪枝性为true的操作组,可以选取出输出操作节点,找到对应的输出矩阵位置,然后对其添加mask信息,即对输出操作节点构建装饰体,完成对操作组的包装。如图5b中的(2)所示,Group1中给Dense_3节点加上了mask信息,得到包装操作组1(GroupWrapper1),Group2中给Add节点加上了mask信息,得到包装操作组2(GroupWrapper2),Group3中给Dense_1节点加上了mask信息,得到包装操作组3(GroupWrapper3)。假设输出操作节点对应的网络层为DNN层,DNN层的计算过程如下:。DNN层的输出结果Y与mask进行矩阵相乘的计算公式如下:。对于DNN层的剪枝过程,从矩阵上描述为:对于输入为/>的矩阵,W为待修剪的权重参数,Mask为剪枝控制变量(也可称为剪枝描述),/>为偏移量。
假设输入矩阵X、权重参数矩阵W和偏移量矩阵b具体为如下内容:
代入上述DNN层的计算过程,经过计算之后得到的结果Y为:
引入的mask变量可以先初始化为单位向量,即:
代入上述Y与mask进行矩阵相乘的计算公式,经过计算得到的结果Z为:
而此处计算得到的Z便可以作为包装操作组的表示。经过一系列处理之后,数据处理模型被转换为了Group的结构,并且相应Group中加入了剪枝控制变量来模拟剪枝的精度。通过将目标操作组的输出矩阵与剪枝控制变量相乘构建出的包装操作组,能够代表该目标操作组的剪枝模拟效果,后续修改所添加的剪枝控制变量,便可模拟对不同参数层的剪枝效果,从而确定出剪枝标记信息。
步骤(2)、根据包装操作组进行剪枝决策处理,得到目标操作组的第一剪枝标记信息。
在剪枝决策处理时,在一种实现方式中,可以调用剪枝算法确定各网络参数的重要程度,进而基于各网络参数的重要程度对剪枝控制变量进行修改,得到第一剪枝标记信息。在另一种实现方式中,可以根据剪枝控制变量确定至少一个候选剪枝标记信息,这些候选剪枝标记信息是对剪枝控制变量进行修改得到的,至少一个候选剪枝标记信息基于剪枝控制变量取不同值;然后将至少一个候选剪枝标记信息分别与输出操作节点对应的网络层的输出结果进行剪枝计算,得到至少一个模拟计算结果,再确定出每个模拟计算结果下数据处理模型的精度,并将最大精度对应的模拟计算结果所使用的候选剪枝标记信息确定为第一剪枝标记信息。可以理解的是,目标操作组的数量包括至少一个,对于每个目标操作组,按照上述方式均可以得到相应的第一剪枝标记信息;不同目标操作组的第一剪枝标记信息可以相同或不同。
第一剪枝标记信息用于标记需剪枝的参数维度。可选地,第一剪枝标记信息中包括以下至少一种标记值:第一标记值和第二标记值,第一标记值(例如数值“0”)用于标记需剪枝的参数维度,第二标记值(例如数值“1”)用于标记需保留的参数维度。其中,参数维度具体是指某个计算通道的参数,例如上述包装操作组的表达式Z中第一行参数为一个参数维度。通过第一剪枝标记信息对需剪枝的参数维度的标记,可以确定出哪些维度的参数需要剪枝,但实际上矩阵的参数量不会变化,这是一个剪枝模拟的过程,后续可以基于该第一剪枝标记信息删除所标记的参数维度,完成真正地剪枝。
示例性地,当需要对哪层参数进行剪枝时,只需将上述包装操作组的表示中对应的参数设置为0,便可得到相应的剪枝模拟结果。比如,当需要对第一层进行剪枝时,只需将m1设置为0,Z对应的输出结果便为:
经过mask的设置之后,DNN层的输出结构的第一层为0。可见,对于剪枝过程中每个需要修剪参数的网络层,在剪枝模拟过程中矩阵的参数量不会实际变化。后续保存模型时,可选取出第一维度的矩阵参数进行删除,完成最后的剪枝。可以理解的是,上述对于DNN层所应用的mask的具体参数值仅为示例,可以根据剪枝算法来进行剪枝决策,确定出最终应用的mask作为第一剪枝标记信息。
下面结合图5c所示的第一剪枝标记信息的结果示意图进行说明,通过剪枝模拟可以为相应的操作组确定出第一剪枝标记信息,以数据处理模型为一个相对复杂的神经网络为例进行说明。如图5c中的(1)所示,原始的神经网络被分为了4个Group,经过剪枝可行性分析之后,将可剪枝的Group的输出加上mask的信息,得到如图5c中的(2)所示的结果。可以发现,经过一系列的序列化处理之后,数据处理模型被序列化为了多个操作组,并且对于目标操作组,都通过与mask相乘来实现剪枝模拟效果,具体可以模拟剪枝过程中的精度下降,但是模型实际参数量还未减少;经过剪枝计算后可以得到初始的mask的单位矩阵,并且经过计算得到mask中为0的输出维度即为需要被剪掉。在Group中,剪枝层实际上还没有得到对应的mask信息,并且一些目标操作组未标记出mask信息,例如Dense_2节点未标记给出mask信息,这表明目标操作组的mask中的参数值均1,以表示没有剪枝的参数层,即Dense_2层无需剪枝权重参数。
步骤(3)、按照目标操作组的第一剪枝标记信息,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果。
在一种实现方式中,第一剪枝标记信息包括第一标记值和第二标记值中的一种或多种。如果目标操作组的第一剪枝标记信息mask中包括第二标记值(例如数值“1)”,即便目标操作组的剪枝性指示允许剪枝,但目标操作组中的操作节点的权重参数并不会被剪枝。如果目标操作组中的操作节点接收到透传的剪枝标记信息,且该剪枝标记信息包括第一标记值(例如数值“0”),可以对操作节点的输入参数进行剪枝。
在识别处理时,可以将第一剪枝标记信息更新到整个网络中,这样目标操作组中各个操作节点便能够得到用于模拟剪枝的第二剪枝标记信息,从而可以基于第二剪枝标记信息确定目标操作节点所表示的网络层是否为剪枝网络。进一步地,基于第二剪枝标记信息还可以确定目标操作节点所表示的网络层中需剪枝的网络参数。比如,若任一目标操作节点的第二剪枝标记信息中包括第一标记值(例如数值0),那么可以确定目标操作节点所表示的网络层需剪枝,由于第一标记值所在的参数维度为需剪枝的参数维度,从而可以确定出需剪枝的网络参数。
上述步骤(1)-(3)所示的步骤,通过对目标操作组进行包装处理,并基于包装的结果进行剪枝模拟,从而可以决策出目标操作组的剪枝标记信息,再基于剪枝标记信息可以准确地识别网络层是否需进行剪枝,得到剪枝识别结果。
在一种实现方式中,计算机设备在执行上述步骤(3)时,具体可以执行如下步骤①-步骤②。
步骤①、根据目标操作组的第一剪枝标记信息进行透传处理,以使至少一个目标操作节点得到第二剪枝标记信息。
目标操作节点是指用于表示具有网络参数的网络层的操作节点。由于目标操作节点所表示的网络层具有网络参数,因此,目标操作节点也可以称为权重节点,即带有参数的操作节点。具体的,目标操作节点可以是目标操作组中带有参数的操作节点,也可以是其他操作组中带有参数的操作节点。通过透传目标操作组的第一剪枝标记信息,可以使得目标操作节点得到第二剪枝标记信息。该第二剪枝标记信息和第一剪枝标记信息可以相同或不同。
本申请中,将操作节点的节点类型收敛为六种剪枝类型,如下表1所示:
表1
由表1可知,对于原始种类繁多的节点类型,本申请对其进行了收敛,并归为了以上几种剪枝类型。包括但不限于:剪枝节点、元素节点、被动剪枝节点、连接节点、过滤节点和复杂节点。对于数据处理模型中新增的计算操作,只需按照相应的规则进行分类即可,可扩展性强,并且灵活度高。其中,被动剪枝节点和剪枝节点均是带有参数的节点,对于被动剪枝节点来说,并没有为其设置剪枝标记信息,从而确定出剪枝哪些网络参数的过程,它是由于剪枝节点需剪枝导致参数维度发生变换,为保持维度一致性而被动剪枝的节点。
基于表1所示的内容,目标操作节点是目标剪枝类型的操作节点,目标剪枝类型包括:剪枝节点和被动剪枝节点。在实际剪枝过程中,按照节点类型所对应的剪枝类型进行处理便可,这样能够减少模型的计算量,在具体处理时,可以将剪枝节点和被动剪枝节点作为目标操作节点,从而实现对模型参数的剪枝。
在确定出操作组的剪枝标记信息之后,模型需要持久化,这时对于每个带参数的操作节点(包括剪枝节点、被动剪枝节点)需计算相应的参数量,这样在模型持久化时,能够计算得到输入非零的参数量和输出非零的参数量,从而有利于后续的剪枝处理。而这个参数量可以是权重参数,但权重参数的参数量不仅与自身的输出mask有关,并且也与前一层的mask参数有关。因此,本申请通过剪枝类型可以设计透传计算的方法,后续基于透传的剪枝标记信息可以确定出每个操作节点的输入和输出。通过透传可以更新所有操作节点的mask信息,使得操作节点的mask信息是全面且准确的,以保证计算操作执行的正确性。
在一种实现方式中,透传处理可以包括以下一种或多种:a、目标操作组内部反向回溯更新剪枝标记信息;b、外部传递剪枝标记信息;c、向前查找剪枝标记信息。因此,计算机设备在执行上述步骤①时,具体可以执行如下a-c中的一种或多种。
a、若目标操作组包括多个操作节点,则根据目标操作组的第一剪枝标记信息进行反向回溯处理,使目标操作组中除输出操作节点之外的其他操作节点得到输出剪枝标记信息。
具体地,反向回溯处理时,可以根据目标操作组的第一剪枝标记信息和目标操作节点的节点类型,确定出输出剪枝标记信息,然后根据目标操作节点中操作节点之间的拓扑关系,将输出剪枝标记信息传递给目标操作组中的目标操作节点。输出剪枝标记信息与目标操作组的第一剪枝标记信息相同或不同,这取决于目标操作节点的节点类型以及与目标操作组中其他操作节点之间的依赖关系。
举例来说,目标操作组的第一剪枝标记信息mask为[1,0,1,0],而目标操作组中包括以下几种节点:Add、Dense、flatten和Conv节点。Add节点的计算依赖Dense节点和flatten节点的输出,而flatten的输入依赖Conv的输出。假设输出操作节点Add的mask为[1,0,1,0],可以确定Dense节点和flatten节点的输出剪枝标记信息mask均为[1,0,1,0],Conv节点的输出剪枝标记信息mask为[1,0]。目标操作节点的第二剪枝标记信息包括输出剪枝标记信息。
可以理解的是,若目标操作组中包括一个操作节点,那么可以执行下述(2)所描述的外部传递或者(3)所描述的向前查找,进而得到对应的剪枝标记信息。另外,如果目标操作组中包括多个操作节点,也可以执行外部传递处理或者向前查找。
b、若目标操作组中输出操作节点的下游节点为预设类型的节点,则根据目标操作组的第一剪枝标记信息进行外部传递处理,使下游节点得到输出剪枝标记信息。
具体地,输出操作节点的下游节点是指输出操作节点的有向边指向的操作节点。输出操作节点的下游节点与该输出操作节点属于不同的操作组,如果输出操作节点的下游节点为预设类型的节点,比如预设类型的节点为flatten节点,那么可以将目标操作组的第一剪枝标记信息向外部传递,从而使得下游节点得到输出剪枝标记信息。可以理解的是,在向外部传递时,也可以根据第一剪枝标记信息和下游节点的节点类型确定输出剪枝标记信息。例如Conv节点的输出作为flatten节点的输入,那么在Conv节点的mask信息为[1,1,0]时,flatten节点的mask信息为[1,1,0,1,1,0]。如果输出操作节点的下游节点为特殊类型的节点,例如reshape,input,output节点等特殊节点,那么不向外部传递目标操作组的第一剪枝标记信息。
c、若目标操作组中包括的目标操作节点的上游节点所属的操作组与目标操作组不同,则从上游节点处查找剪枝标记信息,并将查找到的剪枝标记信息确定为该目标操作节点的输入剪枝标记信息。
具体地,目标操作组中包括的目标操作节点的上游节点是指有向边指向该目标操作节点的起始节点。即上游节点的有向边指向目标操作节点,假设目标操作节点为输出操作节点,那么输出操作节点的上游节点是有向边指向该输出操作节点的其他操作节点。如果目标操作组中的目标操作节点的上游节点所属的操作组是与目标操作组区别的其他操作组,那么可以从上游节点处查找剪枝标记信息。由于经过内部反向回溯、向外传递等方式,上游节点可能已经得到输出剪枝标记信息或本身就带有第一剪枝标记信息,如上游节点为其他操作组的输出操作节点,因此,通过对目标操作节点的上游节点进行剪枝标记信息的查找,如果它的上游节点具有剪枝标记信息,便可查找到并将查找到的剪枝标记信息作为目标操作节点的输入剪枝标记信息,而查找到的剪枝标记信息可以是上游节点的输出剪枝标记信息或者上游节点的第一剪枝标记信息,其可以作为当前操作节点的输入剪枝标记信息。举例来说,假设目标操作组Group2中的操作节点为Dense,并且其上游节点为Group1中的Add节点,而Add节点具有mask信息[1,0,1,0],从而Add节点的mask信息可以作为Dense节点的输入剪枝标记信息input_mask,即input_mask为[1,0,1,0]。
如果目标操作组中包括的目标操作节点的上游节点所属的操作组与目标操作组相同,或者目标操作节点的上游节点未被归为操作组,那么该目标操作节点的第二剪枝标记信息包括输出剪枝标记信息,而不会向前查找得到输入剪枝标记信息。
可以理解的是,在目标操作组完成透传处理之后,目标操作节点具有第二剪枝标记信息,并且第二剪枝标记信息包括以下一种或多种:输出剪枝标记信息和输入剪枝标记信息。
对于上述a-c所描述的透传逻辑,可以基于图5c所示的mask信息提供如图5d所示的透传剪枝标记信息的示意图,由于剪枝层还未得到mask信息,因此,需要进行透传处理将mask信息更新到整个神经网络中。在透传处理的过程中,可以根据操作节点的剪枝类型(除reshape等特殊的计算节点无法预测输出导致其无法进行剪枝)和操作组Group的mask信息,将操作组的mask信息更新至整个神经网络,最后对权重节点(包括剪枝节点、被动剪枝节点)向前一个节点查找到对应的输出mask信息,从而更新权重节点的输入mask信息(input_mask)。图5d中的(1)为目标操作组内部反向回溯得到的透传结果,图5d中的(2)为目标操作组的mask信息向外传递的透传结果,图5d中的(3)为各个权重节点向前查找得到input_mask信息的透传结果。
步骤②、若任一目标操作节点的第二剪枝标记信息包括第一标记值,则将任一目标操作节点所表示的网络层确定为需剪枝的网络层,并将目标操作节点的节点标识添加至剪枝识别结果中。
如果任一目标操作节点的第二剪枝标记信息包括第一标记值(例如数值“0”),那么说明该任一目标操作节点所表示的目标网络层是需剪枝的网络层,从而可以将目标操作节点的节点标识添加到剪枝识别结果中;可选地,该目标操作节点的节点标识可以是目标网络层的网络名称或者网络ID。若任一目标操作节点的第二剪枝标记信息均包括第二标记值(例如数值“1”),那么说明该任一目标操作节点所表示的目标网络层是无需剪枝的网络层,从而目标操作节点的节点标识可不添加到剪枝识别结果中。可以理解的是,目标操作节点的数量包括至少一个,按照上述方式,对于每个目标操作节点所表示的目标网络层,均可以根据每个目标操作节点的第二剪枝标记信息确定出所表示的目标网络层是否需要剪枝。
进一步地,由于第一标记值所标记的参数维度为需剪枝的参数维度,因此基于第二剪枝标记信息与目标操作节点的输出结果进行剪枝计算,还可以确定出目标网络层中需剪枝的网络参数。基于上述处理,剪枝识别结果包括至少一个节点标识,且均指示需剪枝的网络层,根据剪枝识别结果所指示的需剪枝的网络层,可以得到序列化结果。
上述步骤①-步骤②所示的剪枝识别处理,能够通过目标操作组的第一剪枝标记信息的透传,实现整个网络中剪枝标记信息的更新,从而基于更新后的剪枝标记信息,自动识别出需剪枝的网络层,以便后续进行自动化地剪枝处理。
若剪枝识别结果用于指示相应网络层是否需剪枝,根据剪枝识别结果筛选出需剪枝的网络层,从而得到序列化结果;若剪枝识别结果指示需剪枝的网络层,那么可以直接将剪枝识别结果确定为序列化结果。
可见,通过序列化处理可以得到优化后的模型,该优化后的模型是透传了mask信息的参数节点模型,参数节点模型中包括序列化得到的包装操作组(GroupWrapper,可以视为自定义的神经元合并后的结果)。在实际应用时,还需持久化模型,因此,需将优化后的模型进行反序列化处理,将自定义的神经元(对应操作组)转换为原始的神经元结构,得到剪枝后的数据处理模型。
S406、按照序列化结果对数据处理模型进行剪枝处理。
按照前述序列化处理的介绍,序列化结果可以包括至少一个节点标识。在一种实现方式中,多个网络层中的至少一个网络层具有网络参数,该序列化结果所指示的需剪枝的网络层包括目标操作节点所表示的目标网络层,目标网络层具有网络参数;目标操作节点具有第二剪枝标记信息。基于此,计算机设备在按照序列化结果对数据处理模型进行剪枝处理时,具体可以执行如下步骤4.1-步骤4.3。
步骤4.1、根据目标操作节点的第二剪枝标记信息和目标网络层的网络参数,确定目标参数矩阵。
具体的,第二剪枝标记信息包括以下一种或多种:输出剪枝标记信息(或可称为权重剪枝标记信息)和输入剪枝标记信息input_mask;目标网络层的网络参数至少包括权重参数。在一个实施例中,目标操作节点的第二剪枝标记信息包括的输入剪枝标记信息中的参数值存在第一标记值(例如数值0),而输出剪枝标记信息中的参数值均为第二标记值(例如数值1),这可以理解为第二剪枝标记信息包括输入剪枝标记信息input_mask,那么根据输入剪枝标记信息和目标网络层的网络参数进行剪枝模拟计算,得到目标参数矩阵。如果第二剪枝标记信息包括输出剪枝标记信息,并且输出剪枝标记信息中包括第一标记值,那么根据输出剪枝标记信息和目标网络层的网络参数进行剪枝模拟计算,得到目标参数矩阵。可选地,目标参数矩阵包括非零的矩阵维度,非零的矩阵维度对应的参数层为非剪枝层,零矩阵维度对应的参数层为剪枝层。
在另一个实施例中,第二剪枝标记信息包括输入剪枝标记信息input_mask和输出剪枝标记信息,目标网络层的网络参数包括权重参数,那么计算机设备在执行步骤4.1时,可以根据输入剪枝标记信息和输出剪枝标记信息,与目标网络层的网络参数进行剪枝模拟计算,得到目标参数矩阵,具体包括如下步骤①-②:①根据目标操作节点的输入剪枝标记信息对目标网络层的输入参数进行剪枝模拟计算处理,得到剪枝后的输入参数;②根据剪枝后的输入参数、目标操作节点的输出剪枝标记信息和目标网络层的权重参数进行剪枝模拟计算处理,得到目标参数矩阵。具体地,目标网络层的输入参数是指其他网络层输入该目标网络层的参数,通常是目标网络层的上游网络层的输出,例如上游网络层的输出参数矩阵中的参数可作为目标网络层的输入参数。输入剪枝标记信息input_mask可以和该输出参数矩阵相乘,所得到的参数矩阵中包括剪枝后的输入参数。进一步地,剪枝后的输入参数、目标操作节点的输出剪枝标记信息和目标网络层的权重参数相乘的结果,可以作为目标参数矩阵。
举例来说,目标网络层为DNN层,对于持久化过程中所执行剪枝模拟过程,假设DNN层的输出剪枝标记信息为[1,0,1],经过上述处理得到剪枝后的DNN层的计算公式如下:
其中,为DNN层的输入参数,W为权重参数矩阵,其中包括多个权重参数。且W/>。
假设DNN层得到的输入剪枝标记信息input_mask为[0,1,1],那么上述计算公式中x1作为输入为0,并且可以将上述公式转换为下式:
其中,是输入剪枝标记信息与输入参数矩阵中包括的输入参数进行计算后得到的剪枝后的输入参数,W为权重参数矩阵,按照上述计算结果可以得到如下目标参数矩阵/>:
基于该目标参数矩阵可知,0所标记的参数为冗余参数,即需剪枝的网络参数,其他非零参数即为需保留的网络参数,目标参数矩阵中的非零参数可以用于重新构建出DNN层。
步骤4.2、根据目标参数矩阵对目标网络层进行重构处理,得到重构网络层。
在一种实现方式中,目标参数矩阵中包括第一标记值(如数值“0”),该第一标记值所在的参数维度即为所标记的参数维度。因此,在重构处理时,可以将目标参数矩阵中第一标记值所标记的参数维度对应的参数,确定为目标网络层中需被剪枝的目标网络参数;例如上述示例中目标参数矩阵中零参数所在维度的参数,便可确定为需被剪枝的目标网络参数。根据目标参数矩阵中第二标记值所标记的参数维度,构建剪枝后的目标网络层,然后可以将目标参数矩阵中除目标网络参数之外的网络参数拷贝到剪枝后的目标网络层中,得到重构网络层。具体地,第二标记值例如为数值“1”,那么所标记的参数维度即为非零参数维度。依旧以上述示例的目标参数矩阵/>为例,通过目标参数矩阵中非零参数维度,可以重新构建一个剪枝后的目标网络层,重新构建的DNN层的计算公式如下:
其中,为重构DNN层的输入参数,且重构DNN层的权重参数矩阵。
通过上述公式可知,原先的DNN层中的W变量参数从剪枝前的3x3维的矩阵,减少到了2x2维的矩阵。并且输入参数矩阵也从3x3维减少到了2x2维的矩阵。目标参数矩阵中非零参数,包括均可以拷贝到剪枝后的目标网络层中,从而得到重构网络层。
步骤4.3、采用重构网络层对数据处理模型中的目标网络层进行替换处理。
具体地,通过重构网络层替换掉数据处理模型中的目标网络层,便可实现数据处理模型剪枝后的持久化,从而将剪枝后保留下来的网络参数持久化应用到模型中,完成反序列化过程,实现对数据处理模型实际地剪枝处理,这样剪枝后的数据处理模型中的参数量得到了实际地减少。
需说明的是,上述步骤4.1-步骤4.3所示的剪枝处理,是对数据处理模型进行真正地剪枝,能够减小模型参数量大小。在剪枝完成之后,还需删除mask变量等,将包装操作组所定义的包装节点通过反序列化处理,反向地转换为对应的网络层,从而实现模型持久化。
基于上述方案,可以提供如图6所示的模型处理方法的流程图,该流程图中包括以下几个功能模块:转换模块(Converter模块)、分组模块(Group模块)、包装模块(Wrapper模块)、剪枝模块(pruner模块)、存储模块(Saver模块)。各个模块的功能如下:①转换模块用于对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图和属性信息。②分组模块用于根据操作节点之间的依赖关系对多个操作节点进行分组处理,得到多个操作组,并根据属性信息包括的剪枝性,分析操作组的剪枝性。③包装模块用于根据操作组的剪枝性,从至少一个操作组中选取出目标操作组,并对目标操作组的输出操作节点进行包装处理,得到包装操作组,构建出带有mask信息的参数节点模型。④剪枝模块可以根据包装操作组进行剪枝模拟,确定出目标操作组的剪枝标记信息。⑤存储模块可用于透传目标操作组的剪枝标记信息,进而基于透传的剪枝标记信息,确定出哪些网络层需进行参数修剪,并可确定出需剪枝的参数层。具体实现中,可以根据剪枝标记信息计算非零矩阵维度,并根据计算出的非零矩阵维度重新构造剪枝后的网络层,然后将需保留的网络参数拷贝到剪枝后的网络层中,从而实现模型持久化,完成数据处理模型的剪枝。
对于各个模块之间的交互流程包括如下内容:首先,计算机设备可以获取数据处理模型,该数据处理模型是一种原始模型。计算机设备可以调用转换模块,通过对网络拓扑结构的分析,将数据处理模型转换为计算拓扑图以描述原始模型的网络拓扑结构。该计算拓扑图是一种简化后的模型图(Model Graph),其中包括的操作节点用于表示数据处理模型中的算子。之后,可以调用分组模块,对计算拓扑图中的操作节点进行分组,得到多个操作组(Multi Group),并且可以根据Converter模块提取出的操作节点的剪枝性,对操作组的剪枝性进行分析。接着,包装模块可以从多个操作组中选取出允许剪枝的操作组作为目标操作组,并从目标操作组中选取出输出操作节点,为输出操作节点添加mask信息(为单位向量),得到包装操作组(Group Wrapper)。之后,可以调用剪枝模块,根据包装操作组进行剪枝模拟处理,决策出剪枝标记信息,以便根据该剪枝标记信息确定出需剪枝的网络层。最后可以调用保存模块,将剪枝标记信息进行透传处理,基于透传的剪枝标记信息可以计算出哪些网络层需进行剪枝以及哪些网络参数需剪枝,从而通过重构网络层并拷贝需保留的网络参数,持久化参数到应用的模型中,得到剪枝后的数据处理模型。
本申请提供的方案可以应用于各种AI模型优化领域中,并且具体可以落地到模型剪枝领域,通过模型剪枝能够减少冗余度,从而加速模型的推理性能。在对模型进行优化时,无需掌握足够多的模型优化经验,也避免了人工干预的方式对模型进行剪枝分析之后再剪枝,这样可以降低模型优化门槛,并且全自动化地实现从模型的输入到模型的剪枝输出过程,无需加上人工干预的方式进行模型的持久化。并且,由于本申请中针对开源的深度学习操作进行了收敛,对各种各样的深度学习计算统一分类为几种剪枝类型,在拓展性和开源性的深度学习框架(例如tensorflow)的兼容性上能够有效地、快速地收敛。
请参见图7,图7是本申请实施例提供的一种模型处理装置的结构示意图,该模型处理装置可以设置于本申请实施例提供的计算机设备中。图7所示的模型处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),该模型处理装置可以用于执行图2或图4所示的方法实施例中的部分或全部步骤。请参见图7,该模型处理装置可以包括如下单元:
获取单元701,用于获取待处理的数据处理模型;数据处理模型中包括多个网络层;
处理单元702,用于对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,计算拓扑图中包括网络层对应操作节点及操作节点的属性信息,属性信息包括剪枝性;基于计算拓扑图中操作节点的属性信息,对数据处理模型进行序列化处理,得到序列化结果,序列化结果用于指示数据处理模型中需剪枝的网络层;按照序列化结果对数据处理模型进行剪枝处理。
在一个实施例中,处理单元702在对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图时,具体用于:对数据处理模型的网络拓扑结构进行提取处理,得到计算拓扑图,计算拓扑图中包括:多个操作节点和至少一条边;每个操作节点用于表示数据处理模型中的一个网络层,每条边用于连接相关联的两个操作节点;对计算拓扑图中的每个操作节点进行属性提取处理,得到每个操作节点的属性信息,并将每个操作节点的属性信息添加到计算拓扑图中。
在一个实施例中,处理单元702在对计算拓扑图中的每个操作节点进行属性提取处理,得到每个操作节点的属性信息时,具体用于:根据计算拓扑图中的每个操作节点所表示的网络层,对每个操作节点进行类型识别处理,得到每个操作节点的节点类型;按照节点类型和剪枝信息之间的对应关系,根据每个操作节点的节点类型确定每个操作节点的剪枝信息;剪枝信息包括剪枝性和剪枝传递性;将每个操作节点的节点类型和每个操作节点的剪枝信息,添加至相应操作节点的属性信息中。
在一个实施例中,计算拓扑图中包括多个操作节点;每个操作节点的剪枝性用于指示相应操作节点是否允许被剪枝;处理单元702在基于计算拓扑图中操作节点的属性信息,对数据处理模型进行序列化处理,得到序列化结果时,具体用于:根据计算拓扑图中多个操作节点之间具备的依赖关系,对多个操作节点进行分组处理,得到K个操作组;每个操作组中包括至少一个操作节点;K为正整数;根据每个操作组中包括的操作节点的剪枝性,从K个操作组中选取出目标操作组;其中,目标操作组是指存在允许被剪枝的操作节点的操作组;按照目标操作组,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果,并根据剪枝识别结果确定序列化结果。
在一个实施例中,依赖关系用于指示计算依赖,处理单元702在根据计算拓扑图中多个操作节点之间具备的依赖关系,对多个操作节点进行分组处理,得到K个操作组时,具体用于:对计算拓扑图中各个操作节点分别进行初始化处理,得到各个初始操作组,一个初始操作组中包括一个操作节点;根据多个操作节点之间具备的计算依赖,对各个初始操作组中相关的初始操作组进行合并处理,得到K个操作组。
在一个实施例中,处理单元702在根据每个操作组中包括的操作节点的剪枝性,从K个操作组中选取出目标操作组时,具体用于:根据每个操作组中包括的操作节点的剪枝性,对相应操作组进行剪枝性分析,得到每个操作组的剪枝性;操作组的剪枝性用于指示操作组是否允许被剪枝;根据每个操作组的剪枝性,从K个操作组中选取出允许被剪枝的操作组作为目标操作组。
在一个实施例中,处理单元702在根据每个操作组中包括的操作节点的剪枝性,对相应操作组进行剪枝性分析,得到每个操作组的剪枝性时,具体用于:遍历K个操作组,并将遍历到的操作组作为第i个操作组,i∈[1,K];若第i个操作组中存在至少一个操作节点的剪枝性用于指示相应操作节点允许被剪枝,则生成第一剪枝性,并将第一剪枝性确定为第i个操作组的剪枝性,其中,第一剪枝性用于指示第i个操作组允许被剪枝;若第i个操作组中包括的每个操作节点的剪枝性均用于指示相应操作节点禁止被剪枝,则生成第二剪枝性,并将第二剪枝性确定为第i个操作组的剪枝性,其中,第二剪枝性用于指示第i个操作组禁止被剪枝;当遍历完K个操作组之后,得到每个操作组的剪枝性。
在一个实施例中,处理单元702在按照目标操作组,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果时,具体用于:根据剪枝控制变量对目标操作组进行包装处理,得到包装操作组;根据包装操作组进行剪枝决策处理,得到目标操作组的第一剪枝标记信息;第一剪枝标记信息用于标记需剪枝的参数维度;按照目标操作组的第一剪枝标记信息,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果。
在一个实施例中,处理单元702在按照目标操作组的第一剪枝标记信息,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果时,具体用于:对目标操作组的第一剪枝标记信息进行透传处理,以使至少一个目标操作节点得到第二剪枝标记信息;目标操作节点是指用于表示具有网络参数的网络层的操作节点;若任一目标操作节点的第二剪枝标记信息包括第一标记值,则将任一目标操作节点所表示的目标网络层确定为需剪枝的网络层,并将目标操作节点的节点标识添加至剪枝识别结果中。
在一个实施例中,处理单元702在对目标操作组的第一剪枝标记信息进行透传处理,以使至少一个目标操作节点得到第二剪枝标记信息时,具体用于:若目标操作组包括多个操作节点,则根据目标操作组的第一剪枝标记信息进行反向回溯处理,使目标操作组中除所输出操作节点之外的其他操作节点得到输出剪枝标记信息;若目标操作组中输出操作节点的下游节点为预设类型的节点,则根据目标操作组的第一剪枝标记信息进行外部传递处理,使下游节点得到输出剪枝标记信息;若目标操作组中包括的目标操作节点的上游节点所属的操作组与目标操作组不同,则从上游节点处查找第一剪枝标记信息,并将查找到的第一剪枝标记信息确定为目标操作节点的输入剪枝标记信息;其中,第二剪枝标记信息包括以下一种或多种:输出剪枝标记信息和输入剪枝标记信息。
在一个实施例中,多个网络层中的至少一个网络层具有网络参数;序列化结果所指示的需剪枝的网络层包括目标操作节点所表示的目标网络层,目标网络层具有网络参数,目标操作节点具有第二剪枝标记信息;处理单元702在按照序列化结果对数据处理模型进行剪枝处理时,具体用于:根据目标操作节点的第二剪枝标记信息和目标网络层的网络参数,确定目标参数矩阵;根据目标参数矩阵对目标网络层进行重构处理,得到重构网络层;采用重构网络层对数据处理模型中的目标网络层进行替换处理。
在一个实施例中,第二剪枝标记信息包括:输入剪枝标记信息和输出剪枝标记信息;目标网络层的网络参数包括权重参数;处理单元702在根据目标操作节点的第二剪枝标记信息和目标网络层的网络参数,确定目标参数矩阵时,具体用于:根据目标操作节点的输入剪枝标记信息对目标网络层的输入参数进行剪枝模拟计算处理,得到剪枝后的输入参数;根据剪枝后的输入参数、目标操作节点的输出剪枝标记信息和目标网络层的权重参数进行剪枝模拟计算处理,得到目标参数矩阵。
在一个实施例中,目标参数矩阵包括第一标记值;处理单元702在根据目标参数矩阵对目标网络层进行重构处理,得到重构网络层时,具体用于:将目标参数矩阵中第一标记值所标记的参数维度对应的参数,确定为目标网络层中需被剪枝的目标网络参数;根据目标参数矩阵中第二标记值所标记的参数维度,构建剪枝后的目标网络层;将目标参数矩阵中除目标网络参数之外的参数拷贝到剪枝后的目标网络层中,得到重构网络层。
可以理解的是,本申请实施例所描述的模型处理装置的各单元的具体功能,可根据上述方法实施例中的方法具体实现,其具体实现过程可以参照上述方法实施例的相关描述,此处不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
接下来对本申请实施例提供的计算机设备进行相关阐述。
本申请实施例还提供了一种计算机设备的结构示意图,该计算机设备的结构示意图可参见图8;该计算机设备可以包括:处理器801、输入设备802,输出设备803和存储器804。上述处理器801、输入设备802、输出设备803和存储器804通过总线连接。存储器804用于存储计算机可读存储介质,该计算机可读存储介质包括计算机程序,处理器801用于执行存储器804存储的计算机程序。
在一个实施例中,处理器801通过运行存储器804中的计算机程序,执行如下操作:获取待处理的数据处理模型;数据处理模型中包括多个网络层;对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,计算拓扑图中包括网络层对应的操作节点及操作节点的属性信息,属性信息包括剪枝性;基于计算拓扑图中操作节点的属性信息,对数据处理模型进行序列化处理,得到序列化结果,序列化结果用于指示数据处理模型中需剪枝的网络层;按照序列化结果对数据处理模型进行剪枝处理。
在一个实施例中,处理器801在对数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图时,具体用于:对数据处理模型的网络拓扑结构进行提取处理,得到计算拓扑图,计算拓扑图中包括:多个操作节点和至少一条边;每个操作节点用于表示数据处理模型中的一个网络层,每条边用于连接相关联的两个操作节点;对计算拓扑图中的每个操作节点进行属性提取处理,得到每个操作节点的属性信息,并将每个操作节点的属性信息添加到计算拓扑图中。
在一个实施例中,处理器801在对计算拓扑图中的每个操作节点进行属性提取处理,得到每个操作节点的属性信息时,具体用于:根据计算拓扑图中的每个操作节点所表示的网络层,对每个操作节点进行类型识别处理,得到每个操作节点的节点类型;按照节点类型和剪枝信息之间的对应关系,根据每个操作节点的节点类型确定每个操作节点的剪枝信息;剪枝信息包括剪枝性和剪枝传递性;将每个操作节点的节点类型和每个操作节点的剪枝信息,添加至相应操作节点的属性信息中。
在一个实施例中,计算拓扑图中包括多个操作节点;每个操作节点的剪枝性用于指示相应操作节点是否允许被剪枝;处理器801在基于计算拓扑图中操作节点的属性信息,对数据处理模型进行序列化处理,得到序列化结果时,具体用于:根据计算拓扑图中多个操作节点之间具备的依赖关系,对多个操作节点进行分组处理,得到K个操作组;每个操作组中包括至少一个操作节点;K为正整数;根据每个操作组中包括的操作节点的剪枝性,从K个操作组中选取出目标操作组;其中,目标操作组是指存在允许被剪枝的操作节点的操作组;按照目标操作组,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果,并根据剪枝识别结果确定序列化结果。
在一个实施例中,依赖关系用于指示计算依赖,处理器801在根据计算拓扑图中多个操作节点之间具备的依赖关系,对多个操作节点进行分组处理,得到K个操作组时,具体用于:对计算拓扑图中各个操作节点分别进行初始化处理,得到各个初始操作组,一个初始操作组中包括一个操作节点;根据多个操作节点之间具备的计算依赖,对各个初始操作组中相关的初始操作组进行合并处理,得到K个操作组。
在一个实施例中,处理器801在根据每个操作组中包括的操作节点的剪枝性,从K个操作组中选取出目标操作组时,具体用于:根据每个操作组中包括的操作节点的剪枝性,对相应操作组进行剪枝性分析,得到每个操作组的剪枝性;操作组的剪枝性用于指示操作组是否允许被剪枝;根据每个操作组的剪枝性,从K个操作组中选取出允许被剪枝的操作组作为目标操作组。
在一个实施例中,处理器801在根据每个操作组中包括的操作节点的剪枝性,对相应操作组进行剪枝性分析,得到每个操作组的剪枝性时,具体用于:遍历K个操作组,并将遍历到的操作组作为第i个操作组,i∈[1,K];若第i个操作组中存在至少一个操作节点的剪枝性用于指示相应操作节点允许被剪枝,则生成第一剪枝性,并将第一剪枝性确定为第i个操作组的剪枝性,其中,第一剪枝性用于指示第i个操作组允许被剪枝;若第i个操作组中包括的每个操作节点的剪枝性均用于指示相应操作节点禁止被剪枝,则生成第二剪枝性,并将第二剪枝性确定为第i个操作组的剪枝性,其中,第二剪枝性用于指示第i个操作组禁止被剪枝;当遍历完K个操作组之后,得到每个操作组的剪枝性。
在一个实施例中,处理器801在按照目标操作组,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果时,具体用于:根据剪枝控制变量对目标操作组进行包装处理,得到包装操作组;根据包装操作组进行剪枝决策处理,得到目标操作组的第一剪枝标记信息;第一剪枝标记信息用于标记需剪枝的参数维度;按照目标操作组的第一剪枝标记信息,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果。
在一个实施例中,处理器801在按照目标操作组的第一剪枝标记信息,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果时,具体用于:对目标操作组的第一剪枝标记信息进行透传处理,以使至少一个目标操作节点得到第二剪枝标记信息;目标操作节点是指用于表示具有网络参数的网络层的操作节点;若任一目标操作节点的第二剪枝标记信息包括第一标记值,则将任一目标操作节点所表示的目标网络层确定为需剪枝的网络层,并将目标操作节点的节点标识添加至剪枝识别结果中。
在一个实施例中,处理器801在对目标操作组的第一剪枝标记信息进行透传处理,以使至少一个目标操作节点得到第二剪枝标记信息时,具体用于:若目标操作组包括多个操作节点,则根据目标操作组的第一剪枝标记信息进行反向回溯处理,使目标操作组中除所输出操作节点之外的其他操作节点得到输出剪枝标记信息;若目标操作组中输出操作节点的下游节点为预设类型的节点,则根据目标操作组的第一剪枝标记信息进行外部传递处理,使下游节点得到输出剪枝标记信息;若目标操作组中包括的目标操作节点的上游节点所属的操作组与目标操作组不同,则从上游节点处查找第一剪枝标记信息,并将查找到的第一剪枝标记信息确定为目标操作节点的输入剪枝标记信息;其中,第二剪枝标记信息包括以下一种或多种:输出剪枝标记信息和输入剪枝标记信息。
在一个实施例中,多个网络层中的至少一个网络层具有网络参数;序列化结果所指示的需剪枝的网络层包括目标操作节点所表示的目标网络层,目标网络层具有网络参数,目标操作节点具有第二剪枝标记信息;处理器801在按照序列化结果对数据处理模型进行剪枝处理时,具体用于:根据目标操作节点的第二剪枝标记信息和目标网络层的网络参数,确定目标参数矩阵;根据目标参数矩阵对目标网络层进行重构处理,得到重构网络层;采用重构网络层对数据处理模型中的目标网络层进行替换处理。
在一个实施例中,第二剪枝标记信息包括:输入剪枝标记信息和输出剪枝标记信息;目标网络层的网络参数包括权重参数;处理器801在根据目标操作节点的第二剪枝标记信息和目标网络层的网络参数,确定目标参数矩阵时,具体用于:根据目标操作节点的输入剪枝标记信息对目标网络层的输入参数进行剪枝模拟计算处理,得到剪枝后的输入参数;根据剪枝后的输入参数、目标操作节点的输出剪枝标记信息和目标网络层的权重参数进行剪枝模拟计算处理,得到目标参数矩阵。
在一个实施例中,目标参数矩阵包括第一标记值;处理器801在根据目标参数矩阵对目标网络层进行重构处理,得到重构网络层时,具体用于:将目标参数矩阵中第一标记值所标记的参数维度对应的参数,确定为目标网络层中需被剪枝的目标网络参数;根据目标参数矩阵中第二标记值所标记的参数维度,构建剪枝后的目标网络层;将目标参数矩阵中除目标网络参数之外的参数拷贝到剪枝后的目标网络层中,得到重构网络层。
应当理解,本申请实施例中所描述的计算机设备可执行前文所对应实施例中对该模型处理方法的描述,也可执行前文对应实施例中对该模型处理装置的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且计算机可读存储介质中存储有计算机程序,且该计算机程序包括程序指令,当处理器执行上述程序指令时,能够执行前文图2和图4所对应实施例中的方法,因此,这里将不再进行赘述。
根据本申请的一个方面,提供了一种计算机程序产品,该计算机程序产品包括计算机程序,该计算机程序存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机程序,处理器执行该计算机程序,使得该计算机设备可以执行前文图2和图4所对应实施例中的方法,因此,这里将不再进行赘述。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(RandomAccess Memory,RAM)等。
以上所揭露的仅为本申请一种较佳实施例而已,当然不能以此来限定本申请之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本申请权利要求所作的等同变化,仍属于本申请所涵盖的范围。
Claims (16)
1.一种模型处理方法,其特征在于,所述方法包括:
获取待处理的数据处理模型;所述数据处理模型中包括多个网络层;
对所述数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,所述计算拓扑图中包括所述网络层对应的操作节点及所述操作节点的属性信息,所述属性信息包括剪枝性;所述计算拓扑图中包括多个操作节点;每个操作节点的剪枝性用于指示相应操作节点是否允许被剪枝;
根据所述计算拓扑图中多个操作节点之间具备的依赖关系,对所述多个操作节点进行分组处理,得到K个操作组;每个所述操作组中包括至少一个操作节点;K为正整数;
根据每个所述操作组中包括的操作节点的剪枝性,从所述K个操作组中选取出目标操作组;其中,所述目标操作组是指存在允许被剪枝的操作节点的操作组;
按照所述目标操作组,对所述数据处理模型中的网络层进行识别处理,得到剪枝识别结果,并根据剪枝识别结果确定序列化结果,所述序列化结果用于指示所述数据处理模型中需剪枝的网络层;
按照所述序列化结果对所述数据处理模型进行剪枝处理。
2.如权利要求1所述的方法,其特征在于,所述对所述数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,包括:
对所述数据处理模型的网络拓扑结构进行提取处理,得到计算拓扑图,所述计算拓扑图中包括:多个操作节点和至少一条边;每个所述操作节点用于表示所述数据处理模型中的一个网络层,每条所述边用于连接相关联的两个操作节点;
对所述计算拓扑图中的每个所述操作节点进行属性提取处理,得到每个所述操作节点的属性信息,并将每个所述操作节点的属性信息添加到所述计算拓扑图中。
3.如权利要求2所述的方法,其特征在于,所述对所述计算拓扑图中的每个所述操作节点进行属性提取处理,得到每个所述操作节点的属性信息,包括:
根据所述计算拓扑图中的每个所述操作节点所表示的网络层,对每个所述操作节点进行类型识别处理,得到每个所述操作节点的节点类型;
按照节点类型和剪枝信息之间的对应关系,根据每个所述操作节点的节点类型确定每个所述操作节点的剪枝信息;所述剪枝信息包括剪枝性和剪枝传递性;
将每个所述操作节点的节点类型和每个所述操作节点的剪枝信息,添加至相应操作节点的属性信息中。
4.如权利要求1所述的方法,其特征在于,所述依赖关系用于指示计算依赖,所述根据所述计算拓扑图中多个操作节点之间具备的依赖关系,对所述多个操作节点进行分组处理,得到K个操作组,包括:
对所述计算拓扑图中各个操作节点分别进行初始化处理,得到各个初始操作组,一个初始操作组中包括一个操作节点;
根据所述多个操作节点之间具备的计算依赖,对所述各个初始操作组中相关的初始操作组进行合并处理,得到K个操作组。
5.如权利要求1所述的方法,其特征在于,所述根据每个所述操作组中包括的操作节点的剪枝性,从所述K个操作组中选取出目标操作组,包括:
根据每个所述操作组中包括的操作节点的剪枝性,对相应操作组进行剪枝性分析,得到每个所述操作组的剪枝性;所述操作组的剪枝性用于指示所述操作组是否允许被剪枝;
根据每个所述操作组的剪枝性,从所述K个操作组中选取出允许被剪枝的操作组作为目标操作组。
6.如权利要求5所述的方法,其特征在于,所述根据每个所述操作组中包括的操作节点的剪枝性,对相应操作组进行剪枝性分析,得到每个所述操作组的剪枝性,包括:
遍历所述K个操作组,并将遍历到的操作组作为第i个操作组,i∈[1,K];
若所述第i个操作组中存在至少一个操作节点的剪枝性用于指示相应操作节点允许被剪枝,则生成第一剪枝性,并将所述第一剪枝性确定为所述第i个操作组的剪枝性,其中,所述第一剪枝性用于指示所述第i个操作组允许被剪枝;
若所述第i个操作组中包括的每个操作节点的剪枝性均用于指示相应操作节点禁止被剪枝,则生成第二剪枝性,并将所述第二剪枝性确定为所述第i个操作组的剪枝性,其中,所述第二剪枝性用于指示所述第i个操作组禁止被剪枝;
当遍历完所述K个操作组之后,得到每个所述操作组的剪枝性。
7.如权利要求1所述的方法,其特征在于,所述按照所述目标操作组,对所述数据处理模型中的网络层进行识别处理,得到剪枝识别结果,包括:
根据剪枝控制变量对所述目标操作组进行包装处理,得到包装操作组;
根据所述包装操作组进行剪枝决策处理,得到所述目标操作组的第一剪枝标记信息;所述第一剪枝标记信息用于标记需剪枝的参数维度;
按照所述目标操作组的第一剪枝标记信息,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果。
8.如权利要求7所述的方法,其特征在于,所述按照所述目标操作组的第一剪枝标记信息,对数据处理模型中的网络层进行识别处理,得到剪枝识别结果,包括:
对所述目标操作组的第一剪枝标记信息进行透传处理,以使至少一个目标操作节点得到第二剪枝标记信息;所述目标操作节点是指用于表示具有网络参数的网络层的操作节点;
若任一目标操作节点的第二剪枝标记信息包括第一标记值,则将所述任一目标操作节点所表示的目标网络层确定为需剪枝的网络层,并将所述目标操作节点的节点标识添加至剪枝识别结果中。
9.如权利要求8所述的方法,其特征在于,所述对所述目标操作组的第一剪枝标记信息进行透传处理,以使至少一个目标操作节点得到第二剪枝标记信息,包括:
若所述目标操作组包括多个操作节点,则根据所述目标操作组的第一剪枝标记信息进行反向回溯处理,使所述目标操作组中除所输出操作节点之外的其他操作节点得到输出剪枝标记信息;
若所述目标操作组中输出操作节点的下游节点为预设类型的节点,则根据所述目标操作组的第一剪枝标记信息进行外部传递处理,使所述下游节点得到输出剪枝标记信息;
若所述目标操作组中包括的目标操作节点的上游节点所属的操作组与所述目标操作组不同,则从所述上游节点处查找第一剪枝标记信息,并将查找到的第一剪枝标记信息确定为所述目标操作节点的输入剪枝标记信息;
其中,所述第二剪枝标记信息包括以下一种或多种:输出剪枝标记信息和输入剪枝标记信息。
10.如权利要求1所述的方法,其特征在于,所述多个网络层中的至少一个网络层具有网络参数;所述序列化结果所指示的需剪枝的网络层包括目标操作节点所表示的目标网络层,所述目标网络层具有网络参数,所述目标操作节点具有第二剪枝标记信息;
所述按照所述序列化结果对所述数据处理模型进行剪枝处理,包括:
根据所述目标操作节点的第二剪枝标记信息和所述目标网络层的网络参数,确定目标参数矩阵;
根据所述目标参数矩阵对所述目标网络层进行重构处理,得到重构网络层;
采用所述重构网络层对所述数据处理模型中的目标网络层进行替换处理。
11.如权利要求10所述的方法,其特征在于,所述第二剪枝标记信息包括:输入剪枝标记信息和输出剪枝标记信息;所述目标网络层的网络参数包括权重参数;所述根据所述目标操作节点的第二剪枝标记信息和所述目标网络层的网络参数,确定目标参数矩阵,包括:
根据所述目标操作节点的输入剪枝标记信息对所述目标网络层的输入参数进行剪枝模拟计算处理,得到剪枝后的输入参数;
根据所述剪枝后的输入参数、所述目标操作节点的输出剪枝标记信息和所述目标网络层的权重参数进行剪枝模拟计算处理,得到目标参数矩阵。
12.如权利要求10所述的方法,其特征在于,所述目标参数矩阵包括第一标记值;所述根据所述目标参数矩阵对所述目标网络层进行重构处理,得到重构网络层,包括:
将所述目标参数矩阵中第一标记值所标记的参数维度对应的参数,确定为所述目标网络层中需被剪枝的目标网络参数;
根据所述目标参数矩阵中第二标记值所标记的参数维度,构建剪枝后的目标网络层;
将所述目标参数矩阵中除所述目标网络参数之外的参数拷贝到所述剪枝后的目标网络层中,得到重构网络层。
13.一种模型处理装置,其特征在于,包括:
获取单元,用于获取待处理的数据处理模型;所述数据处理模型中包括多个网络层;
处理单元,用于对所述数据处理模型的网络拓扑结构进行分析处理,得到计算拓扑图,所述计算拓扑图中包括所述网络层对应的操作节点及所述操作节点的属性信息,所述属性信息包括剪枝性;所述计算拓扑图中包括多个操作节点;每个操作节点的剪枝性用于指示相应操作节点是否允许被剪枝;
所述处理单元,还用于根据所述计算拓扑图中多个操作节点之间具备的依赖关系,对所述多个操作节点进行分组处理,得到K个操作组;每个所述操作组中包括至少一个操作节点;K为正整数;根据每个所述操作组中包括的操作节点的剪枝性,从所述K个操作组中选取出目标操作组;其中,所述目标操作组是指存在允许被剪枝的操作节点的操作组;按照所述目标操作组,对所述数据处理模型中的网络层进行识别处理,得到剪枝识别结果,并根据剪枝识别结果确定序列化结果,所述序列化结果用于指示所述数据处理模型中需剪枝的网络层;
所述处理单元,还用于按照所述序列化结果对所述数据处理模型进行剪枝处理。
14.一种计算机设备,其特征在于,包括:
处理器,适用于执行计算机程序;
计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被所述处理器执行时,执行如权利要求1-12任一项所述的模型处理方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机程序,所述计算机程序被处理器执行时,执行如权利要求1-12任一项所述的模型处理方法。
16.一种计算机程序产品,其特征在于,所述计算机程序产品包括计算机程序或计算机指令,所述计算机程序或计算机指令被处理器执行实现如权利要求1-12任一项所述的模型处理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410241105.XA CN117829242B (zh) | 2024-03-04 | 2024-03-04 | 模型处理方法及相关设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410241105.XA CN117829242B (zh) | 2024-03-04 | 2024-03-04 | 模型处理方法及相关设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117829242A CN117829242A (zh) | 2024-04-05 |
CN117829242B true CN117829242B (zh) | 2024-05-03 |
Family
ID=90521309
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410241105.XA Active CN117829242B (zh) | 2024-03-04 | 2024-03-04 | 模型处理方法及相关设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117829242B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112001483A (zh) * | 2020-08-14 | 2020-11-27 | 广州市百果园信息技术有限公司 | 一种剪枝神经网络模型的方法和装置 |
CN112487033A (zh) * | 2020-11-30 | 2021-03-12 | 国网山东省电力公司电力科学研究院 | 一种面向数据流及构建网络拓扑的业务可视化方法及*** |
CN113657896A (zh) * | 2021-08-20 | 2021-11-16 | 成都链安科技有限公司 | 一种基于图神经网络的区块链交易拓扑图分析方法和装置 |
CN116915450A (zh) * | 2023-06-30 | 2023-10-20 | 西安理工大学 | 基于多步网络攻击识别和场景重构的拓扑剪枝优化方法 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200234129A1 (en) * | 2019-01-22 | 2020-07-23 | Nvidia Corporation | Techniques for removing masks from pruned neural networks |
US20230153623A1 (en) * | 2021-11-18 | 2023-05-18 | GM Global Technology Operations LLC | Adaptively pruning neural network systems |
-
2024
- 2024-03-04 CN CN202410241105.XA patent/CN117829242B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112001483A (zh) * | 2020-08-14 | 2020-11-27 | 广州市百果园信息技术有限公司 | 一种剪枝神经网络模型的方法和装置 |
CN112487033A (zh) * | 2020-11-30 | 2021-03-12 | 国网山东省电力公司电力科学研究院 | 一种面向数据流及构建网络拓扑的业务可视化方法及*** |
CN113657896A (zh) * | 2021-08-20 | 2021-11-16 | 成都链安科技有限公司 | 一种基于图神经网络的区块链交易拓扑图分析方法和装置 |
CN116915450A (zh) * | 2023-06-30 | 2023-10-20 | 西安理工大学 | 基于多步网络攻击识别和场景重构的拓扑剪枝优化方法 |
Non-Patent Citations (1)
Title |
---|
基于PLS快速剪枝法的神经网络盲均衡;李振兴 等;四川兵工学报;20100125(第01期);第133-135、147页 * |
Also Published As
Publication number | Publication date |
---|---|
CN117829242A (zh) | 2024-04-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112633010B (zh) | 基于多头注意力和图卷积网络的方面级情感分析方法及*** | |
CN111462137A (zh) | 一种基于知识蒸馏和语义融合的点云场景分割方法 | |
CN109086683A (zh) | 一种基于点云语义增强的人手姿态回归方法和*** | |
CN105550746A (zh) | 机器学习模型的训练方法和训练装置 | |
EP4350572A1 (en) | Method, apparatus and system for generating neural network model, devices, medium and program product | |
CN112101525A (zh) | 一种通过nas设计神经网络的方法、装置和*** | |
CN104866310B (zh) | 知识数据的处理方法和*** | |
CN115017178A (zh) | 数据到文本生成模型的训练方法和装置 | |
CN114528898A (zh) | 基于自然语言命令的场景图修改 | |
CN111738435A (zh) | 一种基于移动设备的在线稀疏训练方法及*** | |
CN109657794A (zh) | 一种基于指令队列的分布式深度神经网络性能建模方法 | |
CN116912629A (zh) | 基于多任务学习的通用图像文字描述生成方法及相关装置 | |
CN112528108A (zh) | 一种模型训练***、模型训练中梯度聚合的方法及装置 | |
CN111935005B (zh) | 数据传输方法、装置、处理设备及介质 | |
CN112748953B (zh) | 基于神经网络模型的数据处理方法、装置及电子设备 | |
CN115618532A (zh) | 一种网络***仿真方法及相关装置 | |
CN108053033A (zh) | 一种函数调用序列生成方法和*** | |
CN112132281A (zh) | 一种基于人工智能的模型训练方法、装置、服务器及介质 | |
CN117829242B (zh) | 模型处理方法及相关设备 | |
CN115905924B (zh) | 基于人工智能物联网的数据处理方法、***及云平台 | |
CN116738983A (zh) | 模型进行金融领域任务处理的词嵌入方法、装置、设备 | |
CN116663523A (zh) | 多角度增强网络的语义文本相似度计算方法 | |
WO2023122854A1 (zh) | 数据处理的方法和装置 | |
CN114900435B (zh) | 一种连接关系预测方法及相关设备 | |
CN109711543A (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 |