当前位置: 首页 > 科技观察

边缘计算探索:处理器、算法和内存

时间:2023-03-20 19:38:32 科技观察

什么是边缘计算?近来,边缘计算已经成为人工智能和物联网领域非常热门的关键词。人们对人工智能和物联网最初的设想是在云端有一个极其强大的数据中心,物联网的每个节点负责收集数据并发送到云端,云端将结果发送出去根据数据分析决策后返回终端。在该模型中,云端负责智能计算,终端节点负责数据采集和决策执行。然而,这样的构想在实际实现中遇到了很多困难。第一个困难来自数据传输的开销。物联网节点通常使用无线网络和云端进行数据传输,如果物联网节点将所有未经处理的原始数据传输到云端,带宽需求将呈爆炸式增长,而网络基础设施无法支持如此高的带宽。另一部分开销是无线传输的功耗。如果数据不经过任何处理就传输到云端,终端节点的无线传输模块必须支持高速无线传输,这意味着无线模块需要大量的功耗。物联网节点的低功耗假设不匹配。第二个困难是延迟。许多节点执行的任务对延迟非常敏感,例如无人驾驶,例如安全。在这些应用中,无法接受网络传输带来的延迟(十几毫秒,有时延迟几秒甚至因网络信号差而掉线)。考虑到这些问题,边缘计算就是解决方案。在边缘计算中,终端节点根本不再负责计算,而是做一定的计算和数据处理,然后将处理后的数据传输到云端。这样就可以解决延迟和带宽的问题,因为计算是本地的,处理后的数据必须是从原始数据中提炼出来的数据,所以数据量会小很多。当然,在边缘做多少计算也取决于计算功耗和无线传输功耗之间的权衡——终端计算越多,计算功耗越大,而无线传输功耗通常可以更小.不同的最大值。对于边缘计算系统来说,处理器、算法和内存是整个系统中最关键的三个要素。让我们详细分析这些要素。边缘计算处理器:用途广泛吗?您想使用专用加速器吗?传统的物联网终端节点的处理器是一个简单的MCU,主要用于控制目的,计算能力相对较弱。如果想给终端节点增加边缘计算能力,有两种方式。最好的是加强这个MCU,比如使用新的指令集增加对向量计算的支持,使用多核构建类似SIMD的架构等;二是采取异构计算的思路。MCU依然保持简单的控制目的,计算部分交给了专门的加速器IP。事实上,目前大部分的AI芯片都在做这样一个专用的人工智能算法加速器。知识产权。显然,前一种思路具有良好的通用性,而第二种思路具有较高的计算效率。未来,预计这两种想法将并行存在。平台化产品会采用第一个通用的思路,而针对某些大规模应用的定制化产品会采用专用加速器IP的思路。但是,物联网终端专用加速器IP的设计会因为内存限制,而与其他领域(如手机)专用加速器的设计有所区别(见下文分析)。算法与内存众所周知,目前最主流的深度神经网络模型的规模通常为几MB甚至上百MB,这给物联网节点侧的部署带来了挑战。出于成本和体积的考虑,DRAM不能添加到物联网节点端。一般采用FLASH(用于存放操作系统等)作为系统内存。我们可以考虑使用FLASH来存储模型权重信息,但是必须在处理器芯片上做缓存,因为FLASH的写入速度比较慢。由于缓存大小一般在几百KB到1MB量级,这就限制了模型的大小,所以算法必须能够把模型做得非常小,这也是为什么“模型压缩”这个话题变得如此最近流行。如果算法不能使模型变小,则需要考虑内存计算。内存计算是一种不同于传统冯诺依曼架构的计算方式。冯·诺依曼体系结构的做法是将处理器计算单元与内存分离。需要时,处理器从内存中读取数据,处理器处理完数据后再写回内存。因此,传统上采用冯诺依曼架构的专用加速器大多也需要配合DRAM内存使用,使得这种方案难以部署在无法添加DRAM的物联网节点上。内存计算是直接在内存中进行计算,而不需要向处理器取数据,从而节省了访问内存的额外开销。内存计算加速器的主体是一块大的SRAM或Flash,然后在内存中加入一些计算电路,直接在内存中进行计算。理想情况下,相关算法可以在没有DRAM的情况下运行。当然,内存计算也有其自身的挑战。除了编程模型的慎重考虑,目前内存计算的实现本质上是模拟计算,所以计算精度有限,FP32这样的高精度肯定是做不到的。这需要人工智能模型和算法进行相应的配合,对低精度计算(即量化计算)有很好的支持,避免在低精度计算下丢失过多的精度。目前出现了很多二值神经网络(BNN),即计算时只有一位精度为0或1,仍能保持合理的分类精度。另一方面,除了使用模型压缩来解决物联网节点终端内存不足的问题,另一种方式是使用新的内存方案来实现片上内存的高密度,或者加速片外的读写非易失性存储器。速度,降低读写功耗。因此,边缘计算也将催生出新的存储设备,如MRAM、ReRAM等。结束语边缘计算是人工智能与物联网相结合的产物,是未来的重要趋势。未来边缘计算的关键技术,包括新处理器(强大的通用处理器或专用加速器)、内存计算、网络模型压缩和新内存。喜欢新技术的朋友不妨多关注一下这些领域。预计会出现许多有趣的公司和技术。