关键词:
深度学习
模型压缩
分布式训练
嵌入式系统
摘要:
随着深度学习的快速发展,涌现出各种先进的模型和算法,在使用各种改进或优化算法不断刷新精度上限的同时,往往忽视了推理速率的问题。随着神经网络应用到更加复杂的问题中,网络规模也越来越大,计算的复杂度随之增加,对硬件的性能和存储的要求也越来越高。实际应用中,由于考虑到功耗、尺寸等问题,边缘设备往往内存空间和计算能力有限,神经网络并不能很好地在此类场景中部署。在整个模型训练过程中,模型内的参数权重一直在的不断更新,当模型训练完成后其模型参数已经固定,于是,这样的模型中一般会存在许多冗余参数。对这些训练成功的模型进行合理的参数删减可以大大减少计算量,进而对模型进行压缩实现减少边缘设备的内存使用、能耗大小以及通信时延。模型的大小很大程度上决定了模型在不同硬件平台上实用性和部署的可靠性。因此,对于部署在嵌入式端上的神经网络模型,应该更多关注算法的推理速度以及在嵌入式硬件平台上的移植性、有效性。基于此,本文首先介绍了一些模型压缩的方案,其次介绍本文的核心工作对残差网络的压缩方法,实现了在分布式场景中训练模型并部署的方法,具体内容如下:第一,在深度学习持续发展的这几年中,科学工作者们逐渐意识到复杂的深度学习模型难以部署到边缘设备上,模型压缩的方法开始流行起来。本文首先概述了一些基本模型压缩方法,如剪枝、量化、权重分解、轻量化结构设计、混合方式和模型自动压缩等。接着,对各种嵌入式平台进行了对比,如FPGA与GPU在深度学习领域的应用对比,介绍了Hi3516a和树莓派等设备的性能。第二,残差网络自被提出后在机器学习领域有着广泛的应用。该网络模型通过多层神经网络的叠加从而有效地从输入数据中提取特征,因此在许多应用中都能达到很高的准确率。然而,多层神经网络叠加增加了它们的计算成本。为此,本文提出了一种层删除技术的模型压缩方法,在不降低准确率的情况下,从残差网络中删除多个神经网络层。关键思想是引入一个优先级项来识别每个神经网络层的重要性,然后在训练过程中根据优先级的神经网络层选择删除不重要的层。此外,本文还对网络模型进行再训练,以避免网络层被删除后造成准确率下降。在CIFAR10/100和Image Net上进行分类时,网络规模可以减少24.00%-42.86%的层数,而不会降低分类准确率。第三,本文实现了一种面向嵌入式平台的分布式神经网络部署方法,依据设备端的算力对不同数据源进行模型推理能力计算后,将本文提出的压缩后的模型分割给各个设备端,使得每一分配到各自的压缩后模型。在每一设备端上以自身输出和设定的迭代次数对分割模型训练,并在迭代完成后将模型参数上传至服务端,服务端获取各个设备端的加密信息并解析得到模型参数,利用各个设备端的模型参数对原始深度模型进行更新,完成分布式训练。