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   在线学习中的推断-训练缓存复用流程图
   31   32   33   34   35   36   37   38   39   40   41