一种神经网络模型混合精度方案搜索方法及系统

文档序号:32692500发布日期:2022-12-27 19:28阅读:72来源:国知局
一种神经网络模型混合精度方案搜索方法及系统

1.本发明涉及神经网络模型技术领域,具体涉及一种神经网络模型混合精度方案搜索方法及系统。


背景技术:

2.随着神经网络的规模增加,越来越多的降低模型尺寸的方法被提出。其中用低精度计算替代高精度计算是一种有效的方法。但由于神经网络包含各种类型的算子,而不同类型的算子对于精度的敏感性并不一致,纯低精度计算有可能会明显地降低神经网络模型的性能,甚至输出异常值。因此更为常用的是混合精度计算,即部分算子采用高精度,部分算子采用低精度。
3.但如何确定算子哪些采用低精度是一个亟待解决的问题。这是因为算子之间的不同组合可能导致精度的损失被成倍扩大;神经网络混合精度方案目前有大量的应用场景,但如何将一个高精度模型转为混合精度模型还没有通用的方法,现有的方法更多采用暴力搜索或启发式算法进行搜索,非常耗时或难以找到最优解,非常低效。为此,提出一种神经网络模型混合精度方案搜索方法。


技术实现要素:

4.本发明所要解决的技术问题在于:如何解决采用暴力搜索或启发式算法进行搜索,存在的非常耗时或难以找到最优解,非常低效的问题,提供了一种神经网络模型混合精度方案搜索方法,通过误差预测模型避免暴力算法中每次反复执行神经网络模型来验证结果,同时通过实际执行的结果反过来提升误差预测模型的准确度,进一步减少实际执行神经网络模型的次数。
5.本发明是通过以下技术方案解决上述技术问题的,本发明包括以下步骤:
6.步骤一:模型预处理
7.将待优化的神经网络模型抽象为算子序列;
8.步骤二:模型执行
9.执行原始高精度的神经网络模型(即经过抽象处理的待优化的神经网络模型),得到期望输出;
10.步骤三:低精度转化
11.将原始高精度的神经网络模型整体转化为低精度的神经网络模型,加入待验证模型队列;
12.步骤四:模型正确性验证
13.从待验证模型队列中取一个神经网络模型进行正确性验证;
14.步骤五:混合精度神经网络模型输出
15.若神经网络模型正确性验证通过,则说明当前神经网络模型目前的低精度部分优化方案正确,然后判断通过正确性验证的神经网络模型的高精度部分是否还可以切分;若
是则将其高精度部分取出进行切分,分别对每一部分保留高精度,其余部分转化为低精度(其余部分指的是除切分之后被保留高精度的剩余部分),得到多个模型,加入待验证模型队列,继续执行步骤四至五,直至神经网络模型的高精度部分无法切分,输出模型,即得到待优化神经网络模型的混合精度方案;否则,直接输出模型,即得到待优化神经网络模型的混合精度方案。
16.更进一步地,在所述步骤一中,待优化的神经网络模型是一个计算图模型,其中的每一个节点都是一个算子,对计算图模型进行拓扑排序后即可得到一个算子序列。
17.更进一步地,在所述步骤四中,对神经网络模型进行正确性验证的过程具体如下:
18.s41:利用误差预测模型预测神经网络模型的输出是否正确,如正确则进入步骤五,否则继续进行二次验证;
19.s42:实际执行神经网络模型,即进行二次验证,判断神经网络模型的实际执行结果是否正确,同时将实际执行结果作为训练数据,训练误差预测模型;
20.s43:如果神经网络模型输出结果正确,则表示通过二次验证,进入步骤五,否则表示未通过二次验证,说明当前神经网络模型的低精度部分优化方案存在问题,放弃当前神经网络模型,并重新从待验证模型队列中取一个神经网络模型进行步骤s41-s43。
21.更进一步地,在步骤s41中,误差预测模型为xgboost模型,误差预测模型的输入为算子序列,输出为对应算子序列的执行结果是否正确的预测结果。
22.更进一步地,算子序列中每个算子均包括两个属性:算子类型和算子精度,其中算子类型表示算子的类型,采用独热编码;算子精度表示算子采用的计算精度,采用二值编码。
23.更进一步地,在所述步骤s42中,实际执行是执行onnx格式的神经网络模型,得到实际执行结果。
24.更进一步地,在所述步骤五中,当神经网络模型的高精度部分中连续的高精度算子数量大于一,则认为该高精度部分仍可再切分,否则认为不可再切分。
25.本发明还提供了一种神经网络模型混合精度方案搜索系统,采用上述的方法对神经网络模型混合精度方案进行搜索确定,包括:
26.预处理模块,用于将待优化的神经网络模型抽象为算子序列;
27.执行模块,用于执行原始高精度的神经网络模型,得到期望输出;
28.精度转化模块,用于将原始高精度的神经网络模型整体转化为低精度的神经网络模型,加入待验证模型队列;
29.正确性验证模块,用于从待验证模型队列中取一个神经网络模型进行正确性验证;
30.输出模块,用于在神经网络模型正确性验证通过后,判断通过正确性验证的神经网络模型的高精度部分是否还可以切分;若是则将其高精度部分取出进行切分,分别对每一部分保留高精度,其余部分转化为低精度,得到多个模型,加入待验证模型队列,继续执行步骤四至五,直至神经网络模型的高精度部分无法切分,输出模型;否则直接输出模型;
31.控制处理模块,用于向其他模块发出指令,完成相关动作;
32.所述预处理模块、执行模块、精度转化模块、正确性验证模块、输出模块均与中央处理模块通信连接。
33.本发明相比现有技术具有以下优点:该神经网络模型混合精度方案搜索方法及系统,基于模型预测的方式,用历史算子组合以及执行结果作为训练数据,训练误差预测模型预测低精度后的神经网络模型误差,只有通过误差预测模型预测的神经网络模型低精度方案才会实际执行,并将实际执行结果加入误差预测模型的训练数据中,这样大大减少了神经网络模型的执行次数,有效提高了搜索效率,值得被推广使用。
附图说明
34.图1是本发明实施例一中神经网络模型混合精度方案搜索方法的流程示意图。
具体实施方式
35.下面对本发明的实施例作详细说明,本实施例在以本发明技术方案为前提下进行实施,给出了详细的实施方式和具体的操作过程,但本发明的保护范围不限于下述的实施例。
36.实施例一
37.本实施例提供一种技术方案:一种神经网络模型混合精度方案搜索方法,包括以下步骤:
38.步骤一:模型预处理
39.将待优化的神经网络模型抽象为算子序列;
40.步骤二:模型执行
41.执行原始高精度的神经网络模型(即经过抽象处理的待优化的神经网络模型),得到期望输出;
42.步骤三:低精度转化
43.将原始高精度的神经网络模型整体转化为低精度的神经网络模型,加入待验证模型队列;
44.步骤四:模型正确性验证
45.从待验证模型队列中取一个神经网络模型进行正确性验证;
46.步骤五:混合精度神经网络模型输出
47.若神经网络模型正确性验证通过,则说明当前神经网络模型目前的低精度部分优化方案正确,然后判断通过正确性验证的神经网络模型的高精度部分是否还可以切分,若是则将其高精度部分取出进行切分,分别对每一部分保留高精度,其余部分转化为低精度(其余部分指的是除切分之后被保留高精度的剩余部分),得到多个模型,加入待验证模型队列,继续执行步骤四至五,直至神经网络模型的高精度部分无法切分,输出模型,即得到待优化神经网络模型的混合精度方案;否则,直接输出模型,即得到待优化神经网络模型的混合精度方案。
48.在步骤一中,在所述步骤一中,待优化的神经网络模型是一个计算图模型,其中的每一个节点都是一个算子,对计算图模型进行拓扑排序后即可得到一个算子序列。
49.在步骤三中,硬件厂商会提供针对同一种算子的不同精度实现方式(软件框架进行二次封装),只需要将输入数据转换为对应精度,并调用对应精度的函数,即可实现不同精度的计算。
50.在步骤四中,对神经网络模型进行正确性验证的过程具体如下:
51.s41:利用误差预测模型预测神经网络模型的输出是否正确,如正确则进入步骤五,否则继续由评估模块进行二次验证;
52.s42:评估模块实际执行神经网络模型,即进行二次验证,判断神经网络模型的实际执行结果是否正确,同时将实际执行结果作为训练数据,训练误差预测模型;
53.s43:如果神经网络模型输出结果正确,则表示通过二次验证,进入步骤五,否则表示未通过二次验证,说明当前神经网络模型的低精度部分优化方案存在问题,放弃当前神经网络模型,并重新从待验证模型队列中取一个神经网络模型进行步骤s41-s43。
54.在步骤s41中,误差预测模型为xgboost模型,误差预测模型的输入为算子序列,输出为对应算子序列的执行结果是否正确的预测结果。
55.在本实施例中,算子序列中每个算子均包括两个属性:op_type(算子类型)和precision(算子精度),其中算子类型采用独热编码,比如神经网络中共有四种算子,则四种算子分别编码为1000,0100,0010,0001;算子精度表示算子采用的计算精度,采用二值编码。
56.在步骤s42中,评估模块用于执行onnx格式的神经网络模型,输出实际执行结果。
57.在步骤五中,当神经网络模型的高精度部分中连续的高精度算子数量大于一,则认为该高精度部分仍可再切分,否则认为不可再切分。
58.实施例二
59.本实施例中,对现有技术中常用算法与本发明方法在多种常用模型上的搜索模型进行对比,结果如下表所示。
60.表1本发明方法与常用方法在常用模型上搜索时间上的对比
61.模型常用算法(小时)本发明方法(小时)resnet-5030.1mobilenet2.50.1vgg-1610.03lstm0.20.3bert360.3gpt-2280.25
62.综上所述,上述实施例的神经网络模型混合精度方案搜索方法,基于模型预测的方式,用历史算子组合以及执行结果作为训练数据,训练误差预测模型预测低精度后的神经网络模型误差,只有通过误差预测模型预测的神经网络模型低精度方案才会实际执行,并将实际执行结果加入误差预测模型的训练数据中,这样大大减少了神经网络模型的执行次数,有效提高了搜索效率,值得被推广使用。
63.尽管上面已经示出和描述了本发明的实施例,可以理解的是,上述实施例是示例性的,不能理解为对本发明的限制,本领域的普通技术人员在本发明的范围内可以对上述实施例进行变化、修改、替换和变型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1