本申请提供一种模型训练方法、装置、电子设备及计算机可读存储介质,方法包括:获取对于原始模型在本轮训练中得到的模型参数;对模型参数进行量化,得到量化参数;将并行模型的模型参数更新为量化参数,并将原始模型在本轮训练中的输入数据,输入至并行模型中进行训练;其中,并行模型与原始模型的模型结构一致;根据原始模型在本轮训练中的损失值,和并行模型在本轮训练中的损失值,确定出本轮训练的综合损失值;在综合损失值不满足预设结束条件时,对原始模型的模型参数进行更新。该方案在训练过程中考虑了模型参数被量化后所产生的损失,使得最终训练得到的模型在被量化后,其损失也在可接受范围内,从而降低了模型量化后的精度损失。
背景技术
随着AI(Artificial Intelligence,人工智能)技术的不断发展,深度神经网络也被不断应用于诸如人脸识别、智能导航、智能问诊、远程通信等等场景中。
为了满足各种AI应用场景对检测精度的要求,深度神经网络结构的宽度、层数、深度以及各类参数等数量急速上升,导致深度学习模型对于空间的需求变大,推理效率变低。同时商业对模型应用越来越倾向于从云端部署到边缘侧,受限于边缘侧设备的计算资源,需要考虑设备存储、内存、功耗及时延性等问题,特别是在移动终端和嵌入式设备等应用场景更加需要优化。
作为通用的深度学习优化的手段之一,模型量化将深度学习模型量化为更小的定点模型和更快的推理速度,其适用于绝大数模型和使用场景。
模型量化以损失推理精度为代价,将网络中连续取值或离散取值的浮点型参数(权重或张量)线性映射为定点近似的离散值,取代原有的float32格式数据,同时保持输入输出为浮点型,从而达到减少模型尺寸大小、减少模型内存消耗及加快模型推理速度等目标。
但是,目前的量化方式是直接对训练得到的模型进行量化。通过将模型的模型参数从fp32进行同分布转换到fp16,或者通过预先准备的数据集,结合权重值分布将fp32的模型转换到int8,实现模型量化。但是,目前直接对训练得到的模型进行量化后,会存在一定程度上的精度损失。
实现思路