一种神经网络终端部署微调训练方法技术

技术编号:24578010 阅读:83 留言:0更新日期:2020-06-21 00:39
本发明专利技术公开了一种神经网络终端部署微调训练方法。本发明专利技术方法具体步骤是:S0生成原始模型;S1生成原始推断模型;S2编译优化;S3部署模型运行测试集;S4测试准确率是否达到目标,若未达到则执行S5;S5部署模型运行训练集;S6原模型进行训练,结果用部署模型结果替代;S7生成新模型,执行步骤S2。本发明专利技术方法修改简单可以降低开发神经网络部署准确率微调训练工程的难度和工作量,并且通用性好,对于各种编译优化导致的推断误差都可以进行训练从而提高部署模型的准确率。

A fine tuning training method for terminal deployment of neural network

【技术实现步骤摘要】
一种神经网络终端部署微调训练方法
本专利技术属于计算机
,尤其是神经网络训练
,具体涉及一种神经网络终端部署微调训练方法,具体是神经网络在设备端部署微调准确率的训练方法。
技术介绍
近些年来随着神经网络算法的发展,其准确率在诸多领域已经大幅超过传统算法。但是由于神经网络算法对部署系统的算力以及带宽有非常高的要求。因此神经网络算法的运行功耗也会较高。在部署到设备端时一般需要进行大幅度的优化,以此降低神经网络算法在部署时对算力,带宽和功耗的消耗。常见的优化包括量化,剪枝,压缩,算子合并,激活函数拟合,动态数据剪枝等。这些优化手段中比如量化,剪枝,激活函数拟合,动态数据剪枝等都是对神经网络计算精度有损的方法。但这对于需要高准确率,高精度场合就较难直接采用这些优化手段。通过微调重训练提升部署模型的准确率的方法,与部署设备神经网络算子实现方式紧密相关。举例而言,如果部署设备支持的激活函数的实现方式和训练平台中的实现方式有差异从而导致最终结果准确率下降,那么就需要在对这种情况进行微调训练。由于这种微调训练的实现由于涉及硬件实现的细节,一般需要有设备设计者提供训练工具。但这种训练工具的设计有几个设计难点:一、现在算法设计人员所采用的神经网络训练平台种类繁多。比如Tensorflow,Pytorch,Keras,Mxnet等。设备提供商需要设计不同的平台的微调部署工具。对平台底层代码改动较多的话还很可能会涉及到各训练平台不同版本的兼容性问题。这会带来巨大的工作量和维护成本。二、需要修改的算子类型较多。一般神经网络设备会支持几十个以上的算子。如果这些算子都涉及精度问题,则需要的修改工作量非常大。三、微调工具需要较好的易用性。易用性的目的是方便算法人员快速搭建微调重训练的工程,降低算法从训练平台到设备端的移植的成本。
技术实现思路
本专利技术的目的就是为了解决上述难点,提供一种神经网络终端部署微调训练方法。本专利技术方法具体是:S0.神经网络训练平台生成原始高精度神经网络训练模型;S1.去除原始高精度神经网络训练模型中推断无关算子,生成原始高精度神经网络推断模型;S2.编译生成部署神经网络模型;其第一次运行载入的模型为原始高精度神经网络推断模型,之后运行载入的模型为步骤S7生成的新高精度神经网络推断模型;S3.在部署平台上运行部署神经网络模型,计算结果的准确率,其输入为测试集;S4.如果准确率达到设定目标则结束训练过程;如果准确率未达到目标则继续训练,执行步骤S5;S5.在部署平台上运行部署神经网络模型,得到部署神经网络模型结果,其输入数据为训练输入样本;S6.在神经网络训练平台对高精度神经网络训练模型进行训练,其输入数据为训练输入样本;第一次训练时载入的模型为原始高精度神经网络训练模型,之后训练时载入的模型为前一轮生成新高精度神经网络训练模型;修改训练结果用部署神经网络模型结果进行替代。S7.训练完成后得到新高精度神经网络训练模型,去除推断不相关算子,生成新高精度神经网络推断模型,执行步骤S2。各模型和平台具体是:原始高精度神经网络推断模型:神经网络训练平台训练得到原始高精度神经网络训练模型删除推断不相关的算子得到的高精度推断模型。新高精度神经网络推断模型:神经网络训练平台训练得到新高精度神经网络训练模型删除推断不相关的算子得到的高精度推断模型。部署神经网络模型:高精度神经网络模型通过编译优化后得到的用于部署的神经网络模型,该模型的输出相对于高精度模型输出具有误差。神经网络训练平台:指可以通过梯度反向传播算法训练神经网络的平台。部署平台:指可以运行神经网络推断过程的平台,部署平台支持编译优化后的部署神经网络模型的运行。例如:专用神经网络加速芯片平台,神经网络加速芯片仿真平台,神经网络加速FPGA平台等。进一步,步骤S5和S6中的训练输入样本在同一轮部署微调训练过程中采用相同的训练输入样本,在不同轮之间采用相同或不同的训练输入样本。进一步,步骤S6中修改训练结果用部署神经网络模型结果进行替代的方法是:在训练开始前修改高精度神经网络训练模型,在高精度神经网络模型输出节点和损失函数之间添加一个替换算子,替换算子在神经网络推断过程中,直接使用部署神经网络模型的结果替代高精度神经网络模型训练结果;替换算子的反向梯度传播过程为直通前级算子的梯度到下一级算子,即前级梯度输入等于后级梯度输出。同一轮部署微调训练过程是以步骤S7为界,执行完步骤S7后为下一轮微调过程。在高精度神经网络模型输出节点和损失函数之间加入一种新的算子不属于推断相关算子,该算子不包含在步骤S7所生成的高精度神经网络推断模型中。本专利技术方法和训练平台之间的耦合度较低,通用性较强并且简单易用。从而大幅降低了设计微调工具的工作量,维护成本以及微调训练工程的搭建难度。本专利技术方法有益效果在于:1、修改简单,只需要在原高精度神经网络训练工程中进行两处修改就可以基本完成了微调训练工程搭建,大幅降低算法设计人员搭建微调训练工程的难度和工作量。2、通用性强,对于大多数部署优化导致的精度损失原理上都适用。附图说明图1为本专利技术方法的框架图;图2为本专利技术方法的流程图。具体实施方案下面结合附图,借助实施例详细描述本专利技术。但应注意到:除非另外特殊说明,否则在实施例中阐述涉及的相对设置、数字表达式、字母表达式和数值不限定本专利技术的范围,提供这写实施例仅为了让相关人员更便于理解本专利技术。对相关领域的技术人员公知的技术方法可能不做过多描述。但一定条件下,本专利技术所述技术、方法和系统应当被视为说明书的一部分。如图1所示,一种神经网络终端部署微调训练方法的框架,其涉及的主要元素有神经网络训练平台100、部署编译器200,神经网络部署平台300。神经网络训练平台100中包含神经网络训练所需要的必要元素,包括训练输入样本10,高精度神经网络模型20,替换算子30,损失函数40,训练输出标签50。在神经网络部署平台300中包含部署神经网络模型60。神经网络训练平台100是指可以通过梯度反向传播算法训练神经网络的平台。例如:Tensorflow,Pytorch,Keras,Mxnet等神经网络训练平台;训练输入样本10在训练过程中输出给高精度神经网络训练模型和部署神经网络模型。输出给两者的样本完全相同。高精度神经网络训练模型20是指该模型包含了训练所需的算子,在输出到部署编译器时需要去除推断不相关的算子。替换算子30也是一个训练相关算子,一般可训练的算子需要包括推断实现和梯度反向传播实现两部分。该算子的推断实现是把前级高经典神经网络训练模型的输出,替换成部署神经网络模型的输出。该算子的梯度反向传播实现是,把后级算子输入给该算子的梯度反向传播的值不进行任何修改直接传递给前级算子。在图2中所示的是一种常见的结构,即后级损失函数40将梯本文档来自技高网
...

【技术保护点】
1.一种神经网络终端部署微调训练方法,其特征在于,该方法具体是:/nS0.神经网络训练平台生成原始高精度神经网络训练模型;/nS1.去除原始高精度神经网络训练模型中推断无关算子,生成原始高精度神经网络推断模型;/nS2.编译生成部署神经网络模型;其第一次运行载入的模型为原始高精度神经网络推断模型,之后运行载入的模型为步骤S7生成的新高精度神经网络推断模型;/nS3.在部署平台上运行部署神经网络模型,计算结果的准确率,其输入为测试集;/nS4.如果准确率达到设定目标则结束训练过程;如果准确率未达到目标则继续训练,执行步骤S5;/nS5.在部署平台上运行部署神经网络模型,得到部署神经网络模型结果,其输入数据为训练输入样本;/nS6.在神经网络训练平台对高精度神经网络训练模型进行训练,其输入数据为训练输入样本;第一次训练时载入的模型为原始高精度神经网络训练模型,之后训练时载入的模型为前一轮生成新高精度神经网络训练模型;修改训练结果用部署神经网络模型结果进行替代;/nS7.训练完成后得到新高精度神经网络训练模型,去除推断不相关算子,生成新高精度神经网络推断模型,执行步骤S2。/n

【技术特征摘要】
1.一种神经网络终端部署微调训练方法,其特征在于,该方法具体是:
S0.神经网络训练平台生成原始高精度神经网络训练模型;
S1.去除原始高精度神经网络训练模型中推断无关算子,生成原始高精度神经网络推断模型;
S2.编译生成部署神经网络模型;其第一次运行载入的模型为原始高精度神经网络推断模型,之后运行载入的模型为步骤S7生成的新高精度神经网络推断模型;
S3.在部署平台上运行部署神经网络模型,计算结果的准确率,其输入为测试集;
S4.如果准确率达到设定目标则结束训练过程;如果准确率未达到目标则继续训练,执行步骤S5;
S5.在部署平台上运行部署神经网络模型,得到部署神经网络模型结果,其输入数据为训练输入样本;
S6.在神经网络训练平台对高精度神经网络训练模型进行训练,其输入数据为训练输入样本;第一次训练时载入的模型为原始高精度神经网络训练模型,之后训练时载入的模型为前一轮生成新高精度神经网络训练模型;修改训练结果用部署神经网络模型结果进行替代;
S7.训练完成后得到新高精度神经网络训练模型,去除推断不相关算子,生成新高精度神经网络推断模型,执行步骤S2。


2.如权利要求1所述的一种神经网络终端部署微调训练方法,其特征在于:
所述的原始高精度神经网络推断模型为神经网络训练平台训练得到原始高精度神经网络训练模型删除推断不相关的算子得到的高精度推断模型;
所述的新高精度神经网络推断模型为神经网络训练平台训练得到新高精度神经网络训练模型删除推断不相关的算子得到的高精度推断模型;
所述的部署神经网络模型为高精度神经...

【专利技术属性】
技术研发人员:钟宇清梁骏宋一平郑迪黄磊杨常星宋蕴
申请(专利权)人:杭州国芯科技股份有限公司
类型:发明
国别省市:浙江;33

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1