Resource-Efficient Neural Networks for Embedded Systems
标题(Title)
Resource-Efficient Neural Networks for Embedded Systems
基于嵌入式系统的高效神经网络,看标题应该是在嵌入式系统资源受限的情况下,部署合适的神经网络。
Submitted 8/18; Revised 12/23; Published 2/24
摘要(Abstract)
深度学习,特别是当下的大模型对资源的消耗是巨大的。而嵌入式设备天然又具备资源受限的属性,那么如何平衡性能和资源消耗就成了嵌入式设备利用人工智能成果的一项重大挑战。显然未来当AI发展到一定程度,一定时需要大规模部署到嵌入式设备中,让其更好的服务于人类社会的,由此看来,此项研究意义重大。
本文是综述,主要研究了目前DNN模型压缩的方法,以及在一些硬件上的兼容情况,详细说明如下;
DNN模型压缩方法
- 量化神经网络:通过减少权重和激活值的位数来降低内存和计算需求。
- 网络剪枝:通过移除不必要的权重或神经元来减少计算和内存需求。
- 结构效率:通过优化神经网络的结构来提高资源利用率,例如知识蒸馏、权重共享和特殊矩阵结构。
技术应用与优化
这些技术可以在训练期间或作为后处理步骤应用,以减少计算需求,提高内存占用效率和推理速度,降低能源消耗。
嵌入式硬件兼容性
文献还讨论了不同类型的嵌入式硬件(如CPU、GPU和FPGA)与DNN的兼容性,及其在能量和延迟方面的潜力和限制。
背景(Background)
进一步说,嵌入式环境下,深度学习面临三方面的挑战,分别是:表示效率(内存)、计算效率(推理速度)、预测质量(准确性),嵌入式环境下,我们需要找到嵌入式资源下能够达到的最佳状态,显然是极具挑战的。
目前的主要解决方案如下:
文献识别了增强深度神经网络(DNN)资源效率的三大主要研究方向,分别是量化神经网络、网络剪枝和结构效率。下面详细介绍这三个研究方向:
量化神经网络(Quantized Neural Networks)
量化是通过减少权重和激活值的位数来降低内存占用和计算需求的方法。传统DNN使用32位浮点数来存储和计算权重,而量化技术则将这些数值压缩为更少的位数,例如16位、8位,甚至1位或2位。主要技术包括:
- 定点数和浮点数量化:将32位浮点数量化为更少位数的定点数或浮点数。例如,8位定点数量化在不显著损失精度的情况下大幅减少了存储需求和计算复杂度。
- 二值化和三值化:将权重和激活值量化为二值(-1, 1)或三值(-1, 0, 1)。这可以显著减少乘法运算,许多计算可以通过简单的逻辑运算(如XNOR和bitcount)来实现,从而大幅提高计算效率。
- 逐层量化:对每一层使用不同的量化级别,以在不显著影响整体性能的情况下进一步优化资源使用。
网络剪枝(Network Pruning)
剪枝是通过移除神经网络中的某些权重或神经元来减少模型复杂度和计算需求的方法。剪枝技术可以在训练过程中或训练后进行,主要技术包括:
- 非结构化剪枝:删除权重值较小的个别连接。这种方法较为灵活,但需要稀疏矩阵操作来实际获得计算性能的提升。
- 结构化剪枝:删除整个神经元、通道或层,这使得剩余部分的结构仍然保持致密,便于利用现有的高效密集矩阵运算库。这种方法在删除大块冗余部分时更高效,但可能对精度有更大影响。
- 动态剪枝:根据输入数据的特性,动态决定计算哪些部分。这种方法可以在推理过程中根据需要进行剪枝,从而提高计算效率。
结构效率(Structural Efficiency)
结构效率是通过优化神经网络的结构设计以提高资源利用率的方法。主要技术包括:
- 知识蒸馏:将大模型(教师模型)中的知识转移到小模型(学生模型)中,使得学生模型在保持高精度的同时,具有更低的复杂度和资源需求。学生模型通过模仿教师模型的输出软标签进行训练。
- 权重共享:在网络中共享部分权重,以减少参数数量。例如,使用哈希函数将网络连接分组到相同的权重“桶”中,这样可以大幅减少需要存储和计算的独立权重数量。
- 特殊矩阵结构:利用特定的矩阵结构来减少参数和计算量。例如,使用稀疏矩阵或低秩分解的方法,减少全连接层或卷积层中的参数数量和计算复杂度。
主要内容(Main Content)
硬件平台介绍
- CPU(中央处理器):多线程和向量化提升性能,适合处理稀疏矩阵操作。
- GPU(图形处理单元):具有高并行性和大内存带宽,适合结构化计算。
- FPGA(现场可编程门阵列):高度灵活,可定制化,适合压缩的DNNs。
- 专用领域加速器(TPU等):专门为特定任务优化的硬件,如TPU适合密集计算。
- 回路架构:固定处理器和内存系统,适合通用计算但频繁片外内存访问。
- 数据流架构:可重构处理器和内存系统,实现高效流水线推理,但开发成本高。
实验设置
研究方向总结
- 量化(Quantization):
- 发现:成功的方法通常将实值表示与量化相结合,以增强计算密集操作的效率。混合精度量化(bit widths在训练期间确定)是一个新兴的主题。
- 剪枝(Pruning):
- 发现:趋势正在向结构化剪枝发展,这种方法得到的较小模型的数据结构兼容于高度优化的密集张量操作。
- 结构效率(Structural Efficiency):
- 发现:在DNN结构层面上,已经取得了很大进展,开发出既能保持高表达能力又能显著减少计算开销的特定架构。新兴的神经架构搜索(NAS)方法有望自动设计特定应用的高效架构,减少用户干预。
实验结果和硬件目标
- 实验结果:在两个基准数据集上展示了在预测质量、表示效率和计算效率之间找到良好折衷方案的难度。实验表明,推理效率需要大量的并行性,并且量化和结构化剪枝在这些加速器上映射良好。
- 硬件属性:硬件特性和相应的计算效率构成了资源效率的很大一部分,这突显了在寻找资源高效的机器学习模型时需要考虑特定的硬件目标。
评价和感想(Evaluation and Reflections)
这是一个很有前景的研究方向,但我对模型提升资源利用率方面还没有任何接触,这篇文献算是初步对这个方向有一些认识,了解一些主流的方案。
未来研究方向(Future Research Directions)
- 混合量化精度
- 结构化剪枝
- 神经架构搜索(NAS)方法
参考文献(References)
https://www.jmlr.org/papers/volume25/18-566/18-566.pdf
Roth, W., Schindler, G., Klein, B., Peharz, R., Tschiatschek, S., Fröning, H., … & Ghahramani, Z. (2024). Resource-efficient neural networks for embedded systems. Journal of Machine Learning Research, 25(50), 1-51.