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

EdgeBoard多并发高性能通用CNN架构分析

时间:2023-03-15 10:37:22 科技观察

人工智能领域的边缘侧应用场景多种多样,在功能、性能、功耗、成本等方面有着差异化的需求。因此,一个优秀的人工智能边缘计算平台应该具备灵活快速适配所有场景的能力,能够在安防、医疗、教育、零售等多维度行业应用中实现快速部署。  百度大脑EdgeBoard嵌入式AI解决方案,以其丰富的硬件产品矩阵、自主研发的多并发高性能通用CNN(卷积神经网络)设计架构、灵活多样的软算力配置、移动轻量级PaddleLite高效预测框架,通过百度定制的MODA(ModelDrivenArchitecture)工具链,根据每个应用场景的特点定制模型和算法,为用户提供高性价比的软硬件解决方案,同时开发与百度大脑模型平台(AIStudio、EasyDL)深度连接,实现模型训练、部署、推理等一站式服务。  1。EdgeBoard计算平台多产品矩阵  EdgeBoard是一款基于Xilinx16nm工艺ZynqUltraScale+MPSoC的嵌入式AI解决方案,利用Xilinx异构多核平台对四核ARMCortex-A53处理器进行编程,FPGA逻辑集成在一颗芯片,高性能计算板配备丰富的对外接口和设备,包括开发板、边缘计算盒、抓包机、小型服务器、定制化解决方案等。  EdgeBoard计算卡产品分为三个系列:FZ9、FZ5、FZ3。它们是基于XilinxXCZU9EG、XAZU5EV和XAZU3EG开发的。它们具有高性能、视频硬件解码和低成本的特点。它们也有不同的DDR容量版本。以上三个版本的PS端同样采用了四核Cortex-A53、双核Cortex-R5、GPUMali-400MP2处理器配置。PS到PL的接口是12x32/64/128bAXIPorts。主要区别在于PL端。芯片的逻辑资源大小不同,如下表所示。  使用以上三款标准产品的硬件板卡或一致的硬件参考设计,用户可以无缝适配运行EdgeBoard发布的最新版标准镜像,也可以根据自己的项目需求定制相关的硬件设计,进一步根据性能、成本和功耗要求,以及其他功能模块的集成要求,单独配置软核的计算能力和资源。(各种开发板适配视频教程:https://ai.baidu.com/forum/topic/show/957750)  2。高性能通用CNN设计架构  2.1CNN加速整体软核设计框架  EdgeBoard的CNN加速软核(整体加速方案称为软核)提供了一套计算资源和性能优化的AI软件栈,包括应用层软件API和计算加速单元自上而下的SDK调度管理,PaddleLite预测框架基础管理器,Linux操作系统,负责设备管理和内存分配的驱动层,以及CNN算子专用的硬件加速单元,用于完成加载、解析、优化等功能。  这些主要组件在软件栈中功能和功能相互依赖,承载着数据流、计算流和控制流。基于以上设计框架,EdgeBoard的AI软件栈主要分为四个层次:  应用使能层  面向用户的应用级(APP)封装,主要为计算机领域提供图像处理和神经网络vision用于推理的业务执行API。  ExecutionFrameworkLayer  PaddleLite预测框架提供神经网络的执行能力,支持模型加载、卸载、解析和推理计算执行。  SchedulingEnablementLayer  SDK调度使能单元,负责将算子层面的任务调度到硬件。算子完成相应任务的调度、管理和分配后,由计算资源层启动具体计算任务的执行。  计算资源层  专用计算加速单元,带有操作系统和驱动程序,作为CNN软核的计算资源层,主要承载部分CNN算子的高密度矩阵计算,可视为硬件计算EdgeboardBase的力量。  2.2CNN算子的加速分类  专用计算加速单元是基于FPGA的可编程逻辑资源开发实现的。采用ARMCPU和FPGA共享内存,通过高带宽DMA(DirectMemoryAccess)实现两者之间的高速数据交互。共享内存也被用作异构计算平台。CPU和FPGA协同处理算子数据的桥梁,减少了CPU和FPGA之间重复的数据传输。此外,CNN算子功能模块可以直接发起DDR读写操作,充分发挥了FPGA的实时响应特性,减少了CPU中断等待的时间消耗。  根据CNN算子的计算特点,EdgeBoard的算子加速单元可以分为以下两类:  复杂算子加速单元  顾名思义就是矩阵计算规则比较复杂并且处理的数据量大,由于片上存储资源的限制,通常需要一个多次读写DDR并进行批处理的算子加速单元。  (1)卷积:包括常规卷积、空洞卷积、组卷积、转置卷积,全连接(FullConnection)也可以通过调用卷积算子来实现。  (2)Pooling:包括Max和Averagepooling方法。  (3)Depth-wiseConvolution:类似Pooling的处理特性,复用相同的硬件加速单元,提高资源利用率。  (4)矩阵元素点运算(Element-wiseOP):可以转化为具有特定参数的池化运算,因此可以复用同一个硬件加速单元,提高资源利用率。  (5)归一化函数(L2-Normalize):处理精度高,实现资源优化设计。  (6)复杂激活函数(Softmax):类似Normalize的处理特性,复用相同的硬件加速单元和处理流程,提高资源利用率。  l通道算子加速单元  通道算子是指在复杂算子加速单元的计算数据回写到DDR的流水线路径上实现的算子。用于流数据的简单运算符。  (1)各种简单的激活函数(Relu、Relu6、Leaky-Relu、Sigmoid、Tanh):基本涵盖了CNN网络中常见的激活函数类型。  (2)归一化(Batchnorm/Scale):通常用于卷积算子之后的流水线处理,也可以支持其他算子之后的流水线处理。  另一种分类方法是根据算子在CNN网络中的常用程度,将算子分为强制算子和可选算子。前者是指CNN软核所必需的算子单元,通常对应于大多数网络中涉及的算子。或者是芯片资源消耗极少的算子;后者是指可以由CNN软核选择性配置的算子单元,通常是特定网络的特定算子。这样划分的好处是用户可以根据MODA工具链自定义选择,减少了逻辑资源的开销和模型中无用算子带来的功耗增加。  必选算子:Convolution、Pooling、Element-Wise、Depth-WiseConvolution、BN/Scale、Relu、Relu6  可选算子:Normalize、Softmax、Leaky-Relu、Sigmoid、Tanh2.3设计思路卷积计算加速单元  作为CNN网络中最大最核心的卷积计算加速单元,是CNN软核性能加速的关键,也占据了大部分算力分配和FPGA芯片的逻辑。如果。下面将简单介绍一下EdgeBoard卷积计算加速单元的设计思路。本章也是理解CNN软核算力灵活配置的技术基础。  网络每一层的卷积操作有M个输入图像(称为featuremaps,对应一个输入通道),N个输出featuremaps(N个输出通道),M个输入将分别进行卷积运算,然后是求和以获得输出映射。那么需要的卷积核个数就是M*N。  根据以上计算特点,EdgeBoard的卷积单元采用脉动数组的数据流结构,通过寄存器对PE之间的数据进行节拍操作,从而完成第二个PE的计算结果与上一个同时。PE的总和。这样数据可以在计算单元数组中流动,减少内存访问次数,结构更规则,布线更统一,提高系统运行频率,高扇出避免了加法树等并行结构带来的问题。  因此,如上图所示,我们可以分别从FeatureMap和Kernel两个维度来定义脉动数组的并行结构。从FeatureMap的角度来看,垂直行和行直接卷积窗口是相互独立的,即每个输出行对应的数据计算互不干扰。这个维度定义的多并发计算称为Window维度的并行度。.从Kernel的角度来看,为了实现计算结果的快速流出,减少片内缓存的使用,我们在各个Kernel核之间设计了多个并发计算,称为Kernel维度的并行性。以上两个维度的同时并发,不仅可以提高整体的并行计算效率,还可以充分利用脉动数组的数据管道特性。  2.4卷积计算加速单元的通用扩展  上一章详细介绍了基于PL的卷积计算加速单元的设计原理。网络参数支持范围小。EdgeBoard将如何扩展CNN软核的网络支持通用性?我们可以使用灵活的SDK调度管理单元,将FeatureMap或者Kernel数据提前拆分,然后执行算子任务的下发。  一个滑动窗口链的FeatureMap数据不够存储  SDK可以将一个滑动窗口链的FeatureMap数据分成B块,告诉卷积计算加速单元B块的个数和数据量每个block的,则后者可以批量依次从DDR中读取B次FeatureMap数据,每次的数据量可以存储在ImageSRAM中。  Kernel的整体数据不够存储  SDK可以将Kernel的个数分成S份,这样可以将分割后的Kernel的个数发送到PL端的FilterSRAM,然后SDK调度S卷积计算分别子执行操作,所有数据返回到DDR后,再从通道(Channel)维度对S计算结果做数据拼接(Concat)。但是需要注意的是,我们的FilterSRAM虽然不需要存储所有Kernel的数据量,但是至少要能够存储一个Kernel的数据量。  从这点来看,EdgeBoard三兄弟中最小的FZ3虽然片上存储资源极其有限,但可以很好的完成大部分CNN网络的参数适配。  3。软算力弹性配置  Edgeboard的CNN软核除了公开发布的标准版外,用户还可以根据自己的机型需求和FPGA芯片选型,自定义配置CNN卷积计算单元的计算能力。配置计算能力的两个关键指标是Window维度并行度和Kernel维度并行度。具体含义参见2.3章节,此处不再赘述。  我们以卷积计算加速单元核心矩阵乘加运算消耗的DSP硬核(hardcores)数量作为CNN软核核心计算能力的考察指标。当然,这还不包括卷积预处理、后处理模块以及其他算子加速单元或用户自定义功能模块所消耗的DSP量,所以这不是FPGA内部整个方案的DSP资源消耗芯片。我们的设计可以支持Windowparallelism1-8任意整数,支持Kernelparallelism包括4、8、16。具体卷积双维配置组合对应的coreDSP消耗如下表。  目前EdgeBoard公版对卷积计算加速单元Window维度和Kernel维度的并行配置,以及核心矩阵乘加运算的DSP硬核消耗如下表。  EdgeBoard的CNN软核,以其计算能力的灵活组合和可定制的算子,可以根据特定模型的算子组合和比例,在一定的成本和资源条件下使用芯片性能。极致来说,还能在满足场景所需性能的前提下,减少不必要的功耗支出。此外,它还可以让开发者减少软核的体积,将芯片资源应用到自定义功能的IP上,极大地增强了EdgeBoard的人工智能。具备智能多场景覆盖能力。  福利  据可靠八卦:EdgeBoard开售,史上最低价,降价1000元,火爆购买地址:https://aim.baidu.com/product/5b8d8817-9141-4cfc-ae58-640e2815dfd4