神经网络、边缘计算(学习笔记)

神经网络、边缘计算(学习笔记)

本文摘自这里,侵删
深度神经网络的训练与应用只能在高性能的计算机集群上进行,为此各大科技巨头们都搭建了高性能深度学习平台来处理海量数据。所以最初人们对人工智能和物联网的规划是,大量的数据在云端的数据中心被分析并决策后,再将结果发还给终端。也就是说,云端负责人工智能的部分,边缘端负责数据采集及执行。

但在实际应用中,在云端做智能处理的设想遇到很多问题。

首先,数据传输成本高。随着数据量激增传输带宽压力也不断增加,边缘端的无线传输模块必须支持高速无线传输,这就需要更大的功耗,这与边缘端低功耗的需求是冲突的。

其次,无法接受网络延时。许多终端应用场景对延时非常敏感,比如自动驾驶、智能安防等场景下的网络传输带来的延时(几十毫秒、几秒甚至掉线)是无法被接受的。

还有,工业物联网中对于安全和隐私的需求,也使得云计算在物联网时代的发展受限。边缘计算可以保护隐私,并且做到自主操作,无需依赖网络连接情况。

边缘计算可以很好地解决这些问题,根据实际应用需求,边缘端既可以独立作为智能处理模块,也可以和云端配合(边缘端做一些分析处理和过滤,再交给云端)。这样的解决方案在延时、带宽和功耗等方面都有明显优势。因此,边缘计算是智能化发展的必经之路。

边缘计算的挑战和应对措施

边缘计算在实际应用终端需要深度神经网络满足存储占用小、网络精度高、计算速度快、电量消耗低、低延时等诸多条件才能真正发挥作用,因此,边缘计算的技术核心是高算力、低成本、体积小、低功耗、低延时

高算力容易理解,随着深度神经网络模型变得越来越复杂,其参数和运行时间也相应增加(以AlexNet为例,该神经网络包含超过六千万个参数,对于单幅图像进行分类的过程就涉及到多达7.3亿次浮点运算)。出于成本和体积的考虑,边缘端不宜加DRAM(动态随机存储);要实现低功耗、低延时,则需要考虑内存内计算——这样既可减少DRAM,也可以节省内存存取的额外开销,但同样首先需要减少网络计算量。

由此可知,如何解决深度神经网络的加速与压缩,是边缘计算实现落地的核心问题之一。

同时,如何在网络精度保持不变或略有下降的前提下减少网络的计算量和存储,从而实现更加有效的加速压缩,也存在着许多困难和挑战。

有些压缩方法,虽然能降低存储,但由于其特殊存储方式,需要解码操作后才能用于网络计算,该类压缩方法只能降低网络对磁盘的占用,不能减少网络对内存的消耗,因此不能降低功耗,也没有真正做到加速。

对于目前基于CPU的计算平台,许多加速方法虽然能达到很高理论加速比,但实际加速效果远低于理论。以网络稀疏的加速方法为例,由于大部分元素为零,因此理论上有效计算量小,但由于无规则稀疏,非零元素在内存不连续,因此仍然需要频繁访问内存。

除此之外,内存内计算面临的挑战是,目前内存内计算的实现方案本质上是做模拟计算,因此计算精度有限,浮点32位的高精度(神经网络普遍使用全精度)是无法实现的。

定点量化计算方式的明显优势

面对以上挑战,定点量化的方式表现出明显优势,体现在三个方面。一、网络在训练好后,实际应用中并不需要全精度,而量化恰是用更低的数值精度实现神经网络的加速压缩;二、量化的方式有多种,但由于定点量化在硬件如FPGA上能够取得很高的运行效率,因此更为有效;三、使用比特位数越低,加速效果越明显。

然而,目前常用的定点量化方法,尤其是当量化比特数非常低的时候,如1比特或者2比特量化,很难达到与全精度(FP32)相近的性能,这也是量化技术发展过程中所面临的挑战。

你可能感兴趣的:(深度学习)