您现在的位置是:首页 > 快讯

EdgeBoard中“活灵活现”的算子

2019-12-28 04:35:16

背景介绍
数据、算法和算力是人工智能技术的三大要素。其中,算力体现着人工智能(AI)技术具体实现的能力,实现载体主要有CPUGPUFPGAASIC四类器件。CPU基于冯诺依曼架构,虽然灵活,却延迟很大,在推理和训练过程中主要完成其擅长的控制和调度类任务。GPU以牺牲灵活性为代价来提高计算吞吐量,但其成本高、功耗大,尤其对于推理环节,并行度的优势并不能完全发挥。专用ASIC芯片开发周期长,资金投入大,由于其结构固化无法适应目前快速演进的AI算法。FPGA因其高性能、低功耗、低延迟、灵活可重配的特性,被广泛地用作AI加速,开发者无需更换芯片,即可实现优化最新的AI算法,为产品赢得宝贵的时间。

由此,百度基于FPGA打造了EdgeBoard嵌入式AI解决方案,能够提供强大的算力,支持定制化模型,适配各种不同的场景,并大幅提高设备端的AI推理能力,具有高性能、高通用、易集成等特点。本文将主要介绍EdgeBoard中神经网络算子在FPGA中的实现。
FPGA加速的关键因素
FPGA实现AI加速有两大关键因素,一是FPGA内部资源,二是内存访问带宽。FPGA内部资源主要包括LUT,FF,RAM以及DSP等,FPGA本质上是可编程逻辑电路,可用逻辑电路的多少取决于芯片内部资源,这也就决定了芯片的峰值算力和可容纳的算子种类数。

深度学习中,90%以上的计算都集中在conv、dw-conv和pooling等少数的几个算子上。所以,并不是FPGA中添加的加速算子数量越多越好,而是要注重算子的加速质量:一是用更少的资源实现更多的功能;二是提高耗时占比大的算子性能。

在实践中,添加新算子前需要平衡该算子在网络中所耗时间的占比以及其在FPGA中所消耗的资源。当然可以通过选取更大规模的片子来突破这种限制,但是端上设备受限于成本、功耗等因素,只能平衡多种因素选择一个合适规模的芯片,然后通过多种设计方法和技巧来提高加速性能。本文接下来就将介绍在EdgeBoard中如何优化设计DSP资源提升算力,以及如何通过算子复用和融合技术实现对多算子的支持。

提升内存访问带宽是提高AI加速性能的另一关键因素,因为FPGA与内存的数据交互在整个计算过程中占比很高,有时甚至超过了计算本身所消耗的时间。直接提高内存访问带宽的方法包括提高DDR位宽、增加传输所用的高速接口资源、提高DMA传输的时钟频率等。另外也可以通过复用FPGA芯片上的内存资源(RAM)以及计算和传输交叠执行(overlap)等方法,减少与外部DDR存储的交互,降低数据传输的开销。这些设计方法较为常见,本文不做详细介绍。
两大关键技术实现四倍算力提升
FPGA中的计算主要依靠DSP实现,高效使用DSP是保证FPGA算力的关键。EdgeBoard FPGA中的DSP采用DSP48E2架构,如图1所示,包括一个27-bit的预加法器(pre-adder),一个27x18的乘法器(mult)和一个48-bit的ALU。
style="text-align: center;"> 图1. DSP48E2结构图
?