Page 36 - 《软件学报》2020年第10期
P. 36
3012 Journal of Software 软件学报 Vol.31, No.10, October 2020
3.5 训练优化技术
模型压缩 [23] 是常用的减少神经网络模型复杂度的方式,包括模型剪枝、量化、参数共享、知识蒸馏等具体
方案.AutLearn 中采用了基于 magnitude 的参数剪枝方案 [18] :每一轮选择一个卷积层(CONV)或者全连接层(FC),
然后将 L2-norm magnitude 最小的 K 个卷积核(FC 可视为特殊的 CONV,同样具有卷积核)去掉,这里,K 的大小取
决于最后想要压缩得到模型的复杂度大小.在多次迭代之后,可以获取一个或多个压缩后的模型,适用于不同的
终端设备.为了减少开发者负担,无需手动选择哪些网络层可以进行剪枝,AutLearn 中内置了一个模型自动剪枝
模块,即一种特殊形式的神经网络结构自动搜索算法(NAS),可以从一个大模型出发,自动地生成一系列针对不
同资源状况的优化后模型.如下面公式所示,这里,Accuracy 用于计算一个模型的准确率,通过在验证集上测得;
Resource 用于计算一个模型资源的消耗情况(例如延迟、能耗、内存占用等),可以通过根据模型结构建模的方
式获得 [24,25] ,也可以通过真机实测获得 [26,27] ,本文为了获取更加真实、准确的资源数据采用了后者;Budget 为用
户设定的可使用资源上限.这里,资源类型可以是模型的计算复杂度(FLOPs)、模型的推断时间、模型的推断能
耗、模型的内存占用等,由开发者控制.
)
argmax Accuracy (Model
Model
)
subject to Resource (Model < Budget .
目前,AutLearn 的剪枝是在云端完成的,主要原因是云端具有更多的数据对剪枝之后的模型进行重新训练,
同时减小终端的计算负载.但在终端进行模型剪枝也有一定的优势,主要是可以直接利用终端的数据进行剪枝
训练和测试,得到更加准确的剪枝方案.本文使用基于 magnitude 剪枝技术的原因是这种技术已得到广泛证明且
使用,但其他类型的剪枝技术同样与 AutLearn 系统兼容,例如文献[28]中使用的根据剪枝操作对 feature map 的
影响来判定最优剪枝方案.相较于这些更加复杂的剪枝算法,基于 magnitude 的剪枝方案计算复杂度更低,因此
更有利于在终端设备上进行.
此外,AutLearn 针对在线学习场景,设计了推断-训练缓存复用技术以减少模型训练的开销.如图 5 所示,在
线学习中,模型会在实时的输入数据上做推断运算,根据用户的反馈生成标签,与原数据组成训练数据,用于训
练模型.推断与训练以流水线方式进行.其中,神经网络训练的本质其实就是在推断结果的基础上计算损失函
数,然后做后向传播.因此,AutLearn 会将预测的结果进行复用,直接在其基础上根据用户的反馈行为(真实标签)
进行模型训练.具体地,需要在模型推断中进行缓存的数据为推断预测结果(用于生成 loss)以及产生的中间结果
(即特征图 feature map,用于反向传播过程中的参数更新).由于自治学习中使用迁移学习技术,只需要更新模型
尾部少部分参数,假设需要更新的网络层是从第 K 层起至最后一层,则只需要保存第 K−1 层至最后一层中产生
的中间向量,极大地减小了运行时缓存的内存开销.为了进一步减小单个数据的性能开销,AutLearn 会等待多个
数据产生达到一个 batch 后一起训练(默认的 batch size 是 16,可由开发者调节设置).
Fig.5 Workflow of inference results reuse in online learning
图 5 在线学习中的推断-训练缓存复用流程图