掌桥专利:专业的专利平台
掌桥专利
首页

技术领域

本发明涉及计算机技术领域,尤其是涉及一种基于动态DNN的推理方法、设备、存储介质。

背景技术

神经架构搜索(NAS)是一种设计神经网络结构的技术。它可以基于平台和数据库,通过算法搜索合适的网络结构,有效降低设计网络结构的成本。NAS的原理是利用策略在给定的网络结构空间中搜索合适的神经网络。通过一定的精度、延迟等指标来衡量神经网络结构的优劣,称为性能评价。

然而,NAS在运行环境不同的情况下,仍然存在反复搜索和训练不同网络结构的问题。在搜索空间中寻找最优网络结构以及搜索后的训练过程无疑是耗费时间和计算资源的。其中OFA(once-for-all)提案在一定程度上弥补了NAS的不足。

通常,静态网络方法只能针对特定平台进行部署和推理。对于不同的平台,往往需要重新训练。这种方法无疑需要足够的计算资源和时间才能运行。所以OFA从这个角度将搜索过程和训练分开,可以节省训练成本。

然而,尽管OFA节省了模型的训练时间,但要在部署平台上实现动态化仍然不切实际。原因如在于,与真实条件下的模型切换相比,OFA的搜索过程和校准batch-norm参数仍然很耗时,一个需要GPU执行几分钟,另一个需要CPU执行几个小时。

综上,当前缺少一种优选子网的推理方法,以克服或部分克服前述问题。

发明内容

本发明的目的就是为了克服上述现有技术存在的缺陷而提供一种基于动态DNN的推理方法、设备、存储介质,通过将动态DNN部署在推理引擎上以解决或部分解决网络传输模型参数的压力和成本较高的问题。

本发明的目的可以通过以下技术方案来实现:

本发明的一个方面,提供了一种基于动态DNN的推理方法,包括如下步骤:

针对目标动态DNN网络,通过子网结构搜索得到多个备选的静态子网;

将所述多个备选的静态子网作为推理引擎的输入,完成所述目标动态DNN网络的训练,得到静态子网的网络参数以及对应的性能评价指标值;

根据目标硬件设备的需求参数,从所述目标动态DNN网络中,选取性能评价指标值最优的静态子网作为优选的静态子网。

作为优选的技术方案,将所述多个备选的静态子网作为推理引擎的输入之后,还包括:

利用所述推理引擎,通过压缩和量化优化推理速度。

作为优选的技术方案,所述的需求参数包括目标硬件设备的延迟和/或能量,所述的性能评价指标值包括精度和/或延迟。

作为优选的技术方案,所述的推理方法应用于服务端,所述的推理方法还包括:

将优选的静态子网的网络参数发送至所述目标硬件设备。

作为优选的技术方案,利用遗传算法取性能评价指标值最优的静态子网作为优选的子网。

作为优选的技术方案,基于渐进收缩算法完成所述目标动态DNN网络的训练

作为优选的技术方案,所述的推理引擎为Pytorch Mobile。

作为优选的技术方案,所述的动态DNN网络为DynamicOFA网络。

本发明的另一个方面,提供了一种电子设备,包括:一个或多个处理器以及存储器,所述存储器内储存有一个或多个程序,所述一个或多个程序包括用于执行上述基于动态DNN的推理方法的指令。

本发明的另一个方面,提供了一种计算机可读存储介质,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行上述基于动态DNN的推理方法的指令。

与现有技术相比,本发明具有以下有益效果:

(1)改善网络传输模型参数的压力和成本:本申请将动态DNN有效地部署在推理引擎上,将大大降低网络传输模型参数的压力和成本,有效延长硬件的寿命。

(2)自适应计算资源分配:动态DNN能够根据实时的计算需求对计算资源进行动态分配。这意味着系统可以根据当前的负载情况自动调整计算资源的使用,避免了资源的浪费。通过精准的资源分配,可以有效降低硬件的使用成本和能耗。

(3)延长硬件寿命:由于动态DNN能够有效利用计算资源和优化网络传输,硬件在长期运行过程中的负担大大减轻。这不仅可以减少硬件损耗,延长硬件的使用寿命,还可以降低硬件维护和更换的成本。因此,动态DNN的部署有助于保护和延长硬件的寿命,降低企业的总体运营成本。

(4)实时适应需求:由于动态DNN可以实时适应不同场景的需求,它能够在面对不同的数据类型、传输环境和计算条件时做出合适的调整。这使得系统能够更加灵活地应对不断变化的需求,提高系统的适应性和鲁棒性,同时降低了因需求变化而带来的额外成本。

附图说明

图1为实施例中基于动态DNN的推理方法的流程示意图;

图2为动态DNN和静态DNN的示意图;

图3为实施例中性能评价过程的示意图;

图4为实施例中渐进搜索算法的示意图;

图5为本申请方案与直接进行硬件的推理结果的对比结果示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都应属于本发明保护的范围。

实施例1

参见图2展示了动态DNN(左侧)和静态DNN(右侧),动态DNN可以根据硬件类型自动调整其结构,比静态DNN更灵活。在实际应用中,运行资源会被共享,静态DNN可能得不到自己需要的运行资源。例如,静态DNN需要10%的CPU运行资源,但由于其他应用程序占用了CPU运行资源,剩余的资源不足以推理静态DNN。但是当模型是动态DNN时,动态DNN可以调整其结构以适应当前的运行资源。因此,一般情况下,静态网络无法获得预共享资源。动态DNN更具适应性。

神经架构搜索(NAS)是一种设计神经网络结构的技术。它可以基于平台和数据库,通过算法搜索合适的网络结构,有效降低设计网络结构的成本。参见图3,NAS的原理是利用搜索策略(search strategy)和性能评价策略(Performance evaluation strategy)在给定的网络结构空间(search space)中,进行多次网络结构搜索-网络结构评价,以得到合适的神经网络。通过一定的精度、延迟等指标来衡量神经网络结构的优劣,称为性能评价。

在搜索过程的每次迭代中,通过从搜索空间生成“样本”来获得神经网络结构,称为“子网络”。子网络在训练样本集上进行训练,其性能在验证集上进行评估。NAS算法的三个核心要素是搜索空间、搜索策略和性能评估。搜索空间给出一组可能的神经网络结构,然后利用搜索策略和性能评估得到最优网络结构。为了提高搜索效率,有时会限制或简化搜索空间。在某些NAS实现中,网络被划分为基本单元(单元或块),这些单元堆叠起来形成更复杂的网络。基本单元由多个节点(神经网络的层)组成,这些节点在整个网络中重复但具有不同的权重参数。通过堆叠和拼接组合成一个完整的大网络。搜索空间的复杂性决定了网络结构的潜力。最近的一些工作表明,设计良好的搜索空间可以大大提高网络性能的下限。

参见图1,本实施例提供了一种基于动态DNN的推理方法,目的是实现动态DNN在推理平台上的有效部署。通过将动态DNN有效地部署在推理机上,能够大大降低网络传输模型参数的压力和成本,有效延长硬件的寿命,推理方法包括如下步骤:

S1,针对给定或输入的目标动态DNN网络(Dynamic DNNs),通过子网结构搜索(Architecture search)得到多个备选的静态子网(Static DNN)。

本实施例中目标动态DNN网络采用DynamicOFA网络实现,通常,静态网络方法只能针对特定平台进行部署和推理。对于不同的平台,往往需要重新训练。这种方法无疑需要足够的计算资源和时间才能运行。所以OFA从这个角度将搜索过程和训练分开,可以节省训练成本。

S2,将备选的静态子网作为推理引擎(Inference Engine)的输入,推理引擎通过压缩和量化处理优化推理速度,基于渐进收缩算法完成目标动态DNN网络的训练,得到静态子网的网络参数以及对应的性能评价指标值。

本实施例中推理引擎采用Pytorch Mobile,其支持静态DNN的优化,而一般的移动推理引擎只支持CPU。Dynamic OFA在mobileNetV3的基础上提供了7组适合CPU的子网。

优化过程包括对子网进一步的压缩,量化(int8),再将子网参数进行存储(table),这样可以减少子网络的搜索时间。

具体的,优化过程包括:

量化操作:

量化是指以低于浮点精度的位宽执行计算和存储张量的技术。量化模型以降低的精度而不是全精度(浮点)值对张量执行部分或全部运算。这允许更紧凑的模型表示以及在许多硬件平台上使用高性能矢量化操作。与典型的FP32模型相比,使用INT8量化,从而使模型大小减少4倍,内存带宽要求减少4倍。与FP32计算相比,对INT8计算的硬件支持通常快2到4倍。量化主要是一种加速推理的技术,量化运算符仅支持前向传递。在本申请中使用的是INT8量化。

C++转换部署:

在低延迟和严格部署要求的环境中例如生产环境,通过torch script tracing技术,从现有Python模型到可以纯粹从C++加载和执行的序列化表示的路径,而不依赖于Python,从而加快模型的推理速度,即低inference_lantency。

模型压缩:

将模型层与层之间进行压缩融合,极大减少模型占用内存空间。

Conv2D+BatchNorm融合,此方法将Conv2d-BatchNorm2d折叠到Conv2d中Conv2d中的权重和偏差也相应更新。

ReLU/Hardtanh融合,任何的ReLU/Hardtanh融合操作都跟在Conv2D/linear操作之后。

Dropout removal,因无需进行模型训练,而是直接用于推理,所以部署时删除dropout节点。

卷积打包参数:此优化过程将卷积打包参数移动到根模块,以便可以删除卷积结构。这可以减小模型大小而不影响数值。

Add/ReLU fusion:此过程查找紧随add操作的relu操作实例,并将它们融合为单个add_relu。

参见图4,在训练过程中,采用渐进收缩算法训练整个动态DNN网络,以最大核,最宽通道,最深深度,可变核大小的顺序进行训练,每次采样一个子网,使用0.96的初始学习率训练125个epochs。训练弹性深度,采样两个子网,并为每次更新收集两个子网的梯度。第一阶段使用0.08的学习率训练25个epoch;之后,使用0.24的学习率训练125个epoch。使用可变宽度进行训练,对四个子网进行采样,并为每次更新收集四个子网梯度。第一阶段训练了25个epochs,学习率为0.08;在那之后,它是以0.24的学习率训练了125个epoch。

S3,根据目标硬件设备的需求参数,从目标动态DNN网络中,利用遗传算法选取性能评价指标值最优的静态子网作为优选的静态子网。进一步的,将优选的静态子网的网络参数发送到对应的目标硬件设备(Hardware platform)。

训练完OFA模型后,根据不同硬件设备的需求搜索合适的子网络。需求包括延迟、能量等。搜索基于预先建立的准确度预测器和延迟查找表。分辨率变化使用每16步建表,缺失的分辨率通过加权计算。采用三层前馈网络的小型准确度预测器(输入是one-hot编码网络结构和输入大小)减少搜索时间。提取16K个子网络,然后使用从原始训练集中提取的10K个测试集图像训练精度预测器。然后在每个硬件上生成一个latency lookup table,得到latency,即延迟。这样就可以找到最优的网络结构。配合精度预测器和延迟查找表,评估每个网络结构的成本将会更小。

S4,对比S3的结果与对动态DNN网络直接推理的结果。

本步骤将没有推理引擎优化的准确率和推理速度与前述方案优化过的子网结构的推理的准确率和速度进行比较,证明了本申请方案的有效性。

部分实验数据如图5所示,根据实验结果显示,图中The saved network表示没有推理引擎优化的结果,The saved quantized network代表经过推理引擎优化后的模型。The saved quantized network:0和6经过了量化和剪枝,C++转换部署,模型压缩技术,极大的减少了模型参数数量,在准确率和延迟方面,相比较于没有推理引擎优化的方案,本发明的方案准确率和延迟基本没有变动。说明我们的方案具有优化性能。

本申请将动态DNN有效地部署在推理引擎上,将大大降低网络传输模型参数的压力和成本,有效延长硬件的寿命。将动态DNN网络如DynamicOFA网络在有限计算资源的情况下的子网进行存储优化,并可支持CPU的推理,保证了模型在各种有限资源环境和准确度的情况下仍然能在线推理。

实施例2

本实施例提供了一种电子设备,包括:一个或多个处理器以及存储器,所述存储器内储存有一个或多个程序,所述一个或多个程序包括用于执行如实施例1所述基于动态DNN的推理方法的指令。

实施例3

本实施例提供了一种计算机可读存储介质,包括供电子设备的一个或多个处理器执行的一个或多个程序,所述一个或多个程序包括用于执行如实施例1所述基于动态DNN的推理方法的指令。

本发明中,动态DNN能够根据网络传输的状况调整模型参数的传输策略,它可以根据当前的带宽和延迟情况,采取最优的压缩和传输方式,从而降低网络传输过程中对带宽的压力。这样可以提高传输的效率,减少传输成本,并确保在网络质量不佳甚至在没有网络(预下载)的情况下仍能有效传输或者使用模型参数。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

技术分类

06120116525887