一种基于ONNX的通用模型剪枝适配方法

    专利2026-03-09  7


    本发明属于模型压缩与部署,特别是涉及一种基于onnx的通用模型剪枝适配方法。


    背景技术:

    1、近年来,深度学习在许多领域取得了显著的成功。然而,由于深度神经网络参数量大和计算密集的原因,限制了在实际端侧设备上的部署引用。为了缓解这些限制,并在保持模型性能的同时加快推理速度,研究人员设计了许多dnn模型压缩方法。

    2、在各种模型压缩方法中,模型剪枝以其快速和可移植性强的特定被广泛应用。模型剪枝方法主要分为两类。一类是非结构化修剪,它通过将不太重要的过滤器的权重置零来创建稀疏模型,但这需要专门的硬件和软件来有效地处理稀疏矩阵。另一种是结构化剪枝,它通过整体去除不重要或冗余的过滤器来实现模型压缩,该方法与计算框架和硬件特性无关,得到了更广泛的应用。

    3、然而,结构化剪枝技术在应用于端侧部署时主要面临两个挑战。首先,现有的剪枝算法通常与特定的深度学习框架绑定,很难在不同的平台上进行转换。例如,开发人员需要为每个框架(如keras、pytorch、paddlepaddle等)重新适配修剪算法,然后将它们转换为onnx(open neural network exchange)格式,再通过编译器部署在端侧设备上。这个过程耗时耗力。其次,由于dnn中节点间复杂的内部连接,开发人员必须针对不同的模型结构量身定制剪枝程序。尽管一些研究试图通过构建修剪节点和关联节点之间的关系链来解决这一问题,但它们通常缺乏明确的建模,并且需要向模型中插入额外的组件和操作。

    4、针对上述挑战,本发明提出了一种基于onnx的通用模型剪枝适配方法,即onnxpruner,基于onnx的开发框架,以增强应用系统中修剪算法的互操作性。onnx是一种跨平台的深度学习模型交换格式,可以很容易地在不同的深度学习框架和硬件平台之间转换和部署。

    5、而且,该格式已经得到了各种深度学习框架和硬件加速平台的支持。因此,在onnx模型上进行剪枝研究,以提高剪枝算法应用的灵活性。其次,为了解决节点间的级联效应,onnxpruner为模型中每个剪枝节点构建了节点关联树,使剪枝算法能够自动适应各种模型结构。此外,在结构化剪枝中,剪枝节点与关联节点的参数同时被移除。然而,现有的剪枝算法只对剪枝节点进行评估,并不能反映其正确性。为了解决这个问题,本发明设计了一种基于节点关联树的树级别剪枝方法,更安全地去除不重要的权重,可以在不引入任何额外组件或操作的情况下处理复杂的节点关联结构。


    技术实现思路

    1、发明目的:本发明针对模型剪枝技术在端侧模型部署应用时面临的开发框架强绑定和模型结构不通用问题,提出了一种基于onnx的通用模型剪枝适配方法。本发明直接面向端侧部署深度学习模型,不受开发框架种类的限制。并通过构建节点关联树和设计树级别评估方法,实现任意模型结构的自动化剪枝和优化。

    2、本发明为解决上述背景技术中存在的技术问题,提供一种基于onnx的通用模型剪枝适配方法,包括:

    3、s1,onnx模型结构自动识别,具体包括:

    4、s1.1,根据所述onnx模型中节点的算子类型,构建节点属性库:其中,所述节点分为pruned、next-no-process、next-process和stop-process四种属性,并将pruned的属性归类为剪枝节点,将next-no-process、next-process和stop-process的属性归类为关联节点;

    5、s1.2,基于所述s1.1的所述节点属性库,对所述剪枝节点构建节点关联树;

    6、s2,通过树级别评估方法优化所述剪枝适配方法;具体包括:

    7、s2.1,对每个所述节点关联树进行树级别重要性评估;

    8、s2.2,对所述onnx模型进行剪枝并微调。

    9、优选的是,所述剪枝节点是指所述onnx模型中需要剪枝的层,所述关联节点是指被剪枝后进行相应修改的节点,以及链中的所有节点。

    10、优选的是,所述s1.2具体包括:

    11、s1.2.1,将所述剪枝节点构建为所述节点关联树的根节点;

    12、s1.2.2,根据节点属性库,找出所述剪枝节点的所有所述关联节点,将属性为next-no-process和next-process的所述关联节点设置为所述节点关联树的孩子节点;将属性为stop-process的所述关联节点设置为所述节点关联树的叶子节点。

    13、优选的是,所述树级别评估方法使用所述节点关联树上的树级别剪枝结构,分为四种情况:一对一连接、一对多连接、多对一连接和多对多连接;

    14、所述一对一连接包括:

    15、对输入特征fn,进行卷积,输出第i特征图作为下一层的计算;

    16、下一层卷积层为输出通道对应的滤波器;

    17、其中对所述剪枝节点评估的计算形式如下:

    18、

    19、其中,是所述剪枝节点的第i个权值,表示所述关联节点的第k个权值的第i个通道,j表示wn+1的个数;

    20、所述一对多连接是指一个所述剪枝节点对应多个所述关联节点,包括:

    21、对输入特征fn,进行卷积,输出特征图作为下一层的计算;

    22、在下一个卷积层中,和是输出通道对应的滤波器;

    23、其中对所述剪枝节点评估的计算形式如下:

    24、

    25、其中j1为的个数,j2为的个数;

    26、所述多对一连接包括:

    27、对于输入特征fn,会有一个耦合节点fn―1,将和分别与fn和fn―1进行卷积,生成两个输出特征图;

    28、将所生成的两个输出特征图相加作为下一层的计算;

    29、其中对所述剪枝节点评估的计算形式如下:

    30、

    31、其中j是的个数;

    32、所述多对多连接为所述一对多连接和所述多对一连接的融合,其中对所述剪枝节点评估的计算形式如下:

    33、

    34、本发明的有益效果:

    35、1.本发明提出了一种基于onnx的通用模型剪枝适配方法,增强了端侧部署应用中剪枝算法的互操作性。具有使用简单、性能高效的特点,使开发人员可以将剪枝算法快速部署应用到端侧设备上;

    36、2.提出节点关联树来显式地构建修剪节点和关联节点之间的关系,使本发明能够处理不同的模型结构;

    37、3.提出基于节点关联树的树级别评估方法。该方法可以在不引入额外组件的情况下评估各种节点连接结构,具有更好的性能。



    技术特征:

    1.一种基于onnx的通用模型剪枝适配方法,其特征在于,包括:

    2.根据权利要求1所述的一种基于onnx的通用模型剪枝适配方法,其特征在于,所述剪枝节点是指所述onnx模型中需要剪枝的层,所述关联节点是指被剪枝后进行相应修改的节点,以及链中的所有节点。

    3.根据权利要求1所述的一种基于onnx的通用模型剪枝适配方法,其特征在于,所述s1.2具体包括:

    4.根据权利要求1所述的一种基于onnx的通用模型剪枝适配方法,其特征在于,所述树级别评估方法使用所述节点关联树上的树级别剪枝结构,分为四种情况:一对一连接、一对多连接、多对一连接和多对多连接;


    技术总结
    本发明公开了一种基于ONNX的通用模型剪枝适配方法,属于模型压缩与部署技术领域。包括:S1,ONNX模型结构自动识别,具体包括:S1.1,根据ONNX模型中节点的算子类型,构建节点属性库:其中,节点分为pruned、next‑no‑process、next‑process和stop‑process四种属性,并将pruned的属性归类为剪枝节点,将next‑no‑process、next‑process和stop‑process的属性归类为关联节点;S1.2,基于S1.1的节点属性库,对剪枝节点构建节点关联树;S2,通过树级别评估方法优化剪枝适配方法;具体包括:S2.1,对每个节点关联树进行树级别重要性评估;S2.2,对ONNX模型进行剪枝并微调。本发明增强端侧部署应用中剪枝算法的互操作性;节点关联树使本发明适应不同模型结构;树级别评估方法在不引入额外组件的情况下评估各种节点连接结构。

    技术研发人员:李文斌,任东东,高阳,霍静,潘红兵,解宇,刘思源,高子涵
    受保护的技术使用者:南京大学
    技术研发日:
    技术公布日:2024/4/29
    转载请注明原文地址:https://wp.8miu.com/read-96295.html

    最新回复(0)