百度EdgeBoard为AI推理实现更强大的算力

2019-12-30来源: 益群网关键字:百度  EdgeBoard

背景介绍

 

数据、算法和算力是人工智能技术的三大要素。其中,算力体现着人工智能(AI)技术具体实现的能力,实现载体主要有CPU、GPU、FPGA和ASIC四类器件。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。

 

 

图1. DSP48E2结构图

 

在EdgeBoard的FPGA设计中,充分利用DSP48E2本身的特点,采用supertile和INT8移位计算技术,实现了四倍算力提升。

 

一. Supertile

 

一般来讲,Xilinx Ultrascale系列FPGA运行的最高频率在300MHz到400MHz之间,但DSP是FPGA中的硬核,可以运行在更高的频率上。如图2所示,SLB-M与DSP这样构成的基本单元,被称之为Supertile,FPGA内部Supertile的布局如图3所示。Supertile技术的核心在于使DSP运行于两倍逻辑频率上,使整个系统算力达到倍增的效果。这主要得益于芯片结构中SLICEM与DSP位置临近,使用专有的布线资源,延迟缩短,可以支撑SLICEM以双倍逻辑运行的频率向DSP提供数据。另外,神经网络中存在着数据复用,通过filter和image数据的复用和交织,一次取数多次使用,从而减少数据的搬运次数,提升计算效率。

 

 

图2. Supertile结构

 

 

图3. DSP和SLICEM在FPGA中的位置

 

二. INT8移位计算技术

 

利用DSP48E2的结构特点,一个DSP完成两路INT8的乘加。在进行8bit数据计算时,将a左移18位,置于输入的高8位,低19位补0,从DSP的A端输入,b维持在低8位,从DSP的D端输入,如图4所示。a与b两者先进行累加,然后与c相乘后,结果将分别位于输出的高(a*c)、低(b*c)两部分,该计算过程如图5所示。

 

 

图4。 DSP移位示意图

 

 

图5。 单DSP实现两路INT8相乘

 

在实践中,我们把a,b两路作为filter数据输入,c作为image数据输入。这样DSP在一个时钟周期内就同时完成了两路的计算,再次使算力翻倍。结合前面提到的supertile倍频设计,两种设计使得单个DSP的算力提升四倍。因为一次计算过程有乘、加两个操作(operations),所以单个DSP在一个时钟周期高效的完成了8个operations。

 

多算子复用

 

深度学习中主要有两类运算,一类是指数运算,另一类是乘加运算。前者主要位于激活函数层,后者是深度学习涉及最多也是最基础的运算。乘加运算根据kernel的维度不同,又可分为向量型和矩阵型,在EdgeBoard中划分为三个运算单元,分别为向量运算单元(VPU: vector processing unit)、矩阵运算单元(MPU: matrix processing unit)和指数激活运算单元(EXP-ACT: exponential activation unit)。

 

一. 向量运算单元

 

向量运算单元VPU负责实现dw-conv(depth-wise convolution),完成3维输入图像(H x W x C)和3维卷积核(K1 x K2 x C)的乘加操作。其中一个卷积核负责输入图像的一个通道,卷积核的数量与上一层的通道数相同,该过程如图6所示。图7表示的是一个通道内以kernel 2x2和stride 2为例的计算过程。

 

 

图6. dw-conv示意图

 

 

图7. dw-conv的计算

 

EdgeBoard通过复用VPU一套计算资源实现了average/max pooling,elementwise add/sub,scale,batch-normalize,elementwise-mul和dropout等多种算子。

 

Average pooling可以看作是卷积核参数固定的dw-conv,即将求和后取平均(除以卷积核面积)的操作转换成先乘以一个系数(1/卷积核面积)再求和。如图8所示,该例子中卷积核大小为2x2,卷积核参数即为1/4。卷积核固定的参数可以类似于dw-conv下发卷积核的方式由SDK封装后下发,也可以通过SDK配置一个参数完成,然后在FPGA中计算转换,这样节省卷积核参数传输的时间。另外,max-pooling算子与average pooling的计算过程类似,只需要将求均值操作换成求最大值的操作,其余挖窗、存取数等过程保持不变。

 

 

图8. Pooling复用dw-conv

 

Elementwise add/sub完成两幅图像对应元素的相加或相减,不同于dw-conv的是它有两幅输入图像。如果我们控制两幅图像的输入顺序,将两幅图像按行交错拼成一幅图像,然后取卷积核为2x1,行stride为1,列stride为2,pad均设置成0,则按照dw-conv的计算方式就完成了elementwise的计算。通过在FPGA中设置当前像素对应的kernel值为1或-1,就可以分别实现对应elementwise add和elementwise sub两个算子。该过程如图9所示。

 

 

图9. ew-add/sub复用dw-conv

 

Scale算子主要在图像预处理时使用,将输入图像每一个通道的全部像素点乘以该通道对应的scale值,然后加上bias。如果我们将dw-conv的卷积核大小设成1x1,行列stride都设置成1,pad设置成0,卷积核参数值设成scale,就可以通过dw-conv完成scale算子的功能。通过分析发现,batch-normalize,elementwise-mul和dropout等算子都可以通过scale算子来实现。

 

二. 矩阵运算单元

 

矩阵运算单元MPU负责实现convolution,完成3维输入图像(H x W x C)和4维卷积核(N x K1 x K2 x C)的乘加操作,单个卷积核的通道数和输入图像的通道数相同,而卷积核的数量N决定了输出的通道数,如图10所示。full connection 算子实现的1维输入数组(长度C)和2维权重(N x C)的乘加操作。将 full connection输入数组扩展成 H x W x C, 输出扩展成 N x K1 x K2 x C, 其中H, W, K1和K2均设置成1,这样 full connection就可以调用convolution来实现。另外,在计算 deconv 时,通过SDK对卷积核进行分拆、重排,就可以通过调用conv来实现deconv,同样带来了极大的收益。

 

 

图10. Conv算子示意图

 

三.指数激活运算单元

 

指数激活运算单元EXP-ACT实现的基础是sigmoid,由于在FPGA中进行指数型运算比较耗资源,如何复用该计算单元就变得非常有意义。通过分析发现,可以把 tanh 和两通道softmax转换成 sigmoid 的形式,这样一个指数运算单元就支持了3种算子,实现资源利用的最大化。

 

多算子融合

 

在推理时做BatchNorm运算非常耗时,通过SDK将BatchNorm+Scale的线性变换参数融合到卷积层,替换原来的weights和bias,这样4个算子可以融合成单个算子conv + batchnorm + scale + relu,对于dw-conv同样如此。相对于每计算完一个算子就将数据送回内存,这种算子融合大大减少了内存的读写操作,有效提高了处理帧率。

 

此外,我们将scale、bias和relu为代表的激活函数层放到各算子之后的链路上,然后统一送到DMA传输模块,如图11所示。这不仅使得各算子复用了这些逻辑,节省了大量片内资源,也使得各算子都可以具备这些功能,且都能以最大带宽进行DMA传输。在实践中,我们将这些功能做成可选项,由软件根据当前网络算子的需要进行选择,在节省资源的同时,既保证了通用性,又兼顾了灵活性。

 

 

图11. EdgeBoard内部结构和链路图


关键字:百度  EdgeBoard 编辑:muyan 引用地址:http://news.nvwayi.com/qrs/ic484165.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:SimpleLink MCU—可在各个频带和协议间实现创新、加速及连接
下一篇:2019年全球前五大服务器品牌排名:华为No.1

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

百度最新版本Apollo6.0发布,百度自动驾驶技术的更迭
9月15日,百度联手央视新闻全程直播“万物智能—百度世界2020”大会。在大会主论坛的主播中,央视新闻主播宝晓峰与百度集团副总裁、智能驾驶事业群组总经理李震宇在“2022年冬奥会组委会”所在地首钢园区体验了“主驾无人”的自动驾驶车辆。Apollo以成熟的无人化技术与5G平行驾驶,实现了全新的技术跨越。百度Apollo再次见证了自动驾驶的历史性时刻。在紧接着的自动驾驶分论坛上,百度Apollo平台研发总经理王京傲宣布了百度Apollo最新版本——Apollo6.0的发布,并就百度自动驾驶技术的更迭做出了详细解答。在自动驾驶分论坛上,王京傲公布了百度Apollo“成绩单”:自Apollo平台自2017年宣布以来,经历了九个版本迭代
发表于 2020-09-17
<font color='red'>百度</font>最新版本Apollo6.0发布,<font color='red'>百度</font>自动驾驶技术的更迭
百度昆仑1已经量产,7nm工艺昆仑2明年上半年量产
9月15日,“万物智能——百度世界2020”大会召开。据央广网报道,在当天下午的百度大脑分论坛上,百度智能芯片总经理欧阳剑透露了百度昆仑芯片的进展。据透露,百度昆仑1已量产,已在百度搜索引擎及云计算用户部署2万片,相比T4 GPU 性能在不同模型下提升1.5-3倍。在本次会议上,同时预发布了采用7nm 先进工艺的百度昆仑2,性能比百度昆仑1 提升3倍,2021年上半年量产等重要内容。百度最早在2010年开始用FPGA做AI架构的研发,2011年开展小规模部署上线,2017年部署超过了1万片FPGA,2018年发布自主研发AI芯片,2019年下半年流片成功,2020年开始量产,以及预计2021年第二代百度昆仑量产。根据欧阳剑给出
发表于 2020-09-17
正部署于百度阿波罗实现目标检测任务,启明920芯片发布
9月15日,2020西安全球硬科技创新大会分论坛——“下一代AI 芯片产业发布暨Chiplet产业联盟启动成立圆桌会议”上,“启明920”AI加速芯片正式发布。8月20日,“启明920”由清华大学交叉信息研究院马恺声教授领衔的西安交叉核心院芯片中心研发成功并完成测试。“启明920”AI加速芯片可面向高能效的低速无人车、AGV、计算机视觉加速等AI应用场景,目前正部署于百度阿波罗无人车系统上实现目标检测任务。2019年12月,“启明910”人工智能加速芯片在西安研发成功。据当时中国青年网报道,作为交叉核心院芯片中心团队设计的第一款人工智能芯片,“启明910”可以基本完成面向神经网络计算的专门优化,创造了交叉核心院芯片中心人工智能芯片
发表于 2020-09-17
百度最新版本Apollo6.0发布,经历九个版本迭代
  百度联手央视新闻全程直播“万物智能—百度世界2020”大会。在大会主论坛的主播中,央视新闻主播宝晓峰与百度集团副总裁、智能驾驶事业群组总经理李震宇在“2022年冬奥会组委会”所在地首钢园区体验了“主驾无人”的自动驾驶车辆。Apollo以成熟的无人化技术与5G平行驾驶,实现了全新的技术跨越。百度Apollo再次见证了自动驾驶的历史性时刻。在紧接着的自动驾驶分论坛上,百度Apollo平台研发总经理王京傲宣布了百度Apollo最新版本——Apollo6.0的发布,并就百度自动驾驶技术的更迭做出了详细解答。  百度Apollo平台研发总经理王京傲介绍Apollo6.0  在自动驾驶分论坛上,王京傲公布了百度Apollo“成绩单
发表于 2020-09-17
<font color='red'>百度</font>最新版本Apollo6.0发布,经历九个版本迭代
威马汽车与百度Apollo共同开发的AVP自主泊车技术亮相
  中国造车新势力威马汽车9月15日在“2020百度世界大会“上发布了其与百度共同开发的AVP自主泊车技术,并亮相了首款搭载AVP自主泊车技术的全新量产车型,成为全球最快落地、最快量产L4级自动驾驶技术的品牌。  AVP自主泊车技术由威马汽车与其盟友百度Apollo共同研发,致力于通过L4级无人驾驶技术和实时大数据,实现停车场景下的高度智能化、无人化,打造“最后一公里问题“的终极解决方案。  威马创始人、董事长兼CEO沈晖表示:“作为IdeaL4全新科技战略中的重要一环,AVP自主泊车技术充分践行了威马汽车‘人—车—环境’相互融合的智能出行服务生态设想,同时也展现出威马汽车盟友的技术实力。威马汽车将持续把最前沿的科技应用于市场
发表于 2020-09-16
vivo与百度携手合作,共同打造CarLife+“一键联”智能车载
  北京 —— 2020 百度世界大会上,vivo 正式宣布与百度达成 CarLife+合作,共同打造安全、高效信息服务的智慧车载解决方案——智能车载,真正实现 vivo 手机和百度 CarLife+车载系统的“一键联”,未来将为用户提供人 - 车 - 家的全场景互联体验。  卓越互联科技,联手打造 vivo 全场景智能车载体验  百度车联网事业部总经理苏坦(左)、vivo 软件产品策略总监欧阳坤(右)  会上,vivo 软件产品策略总监欧阳坤、百度车联网事业部总经理苏坦共同展示了由 vivo 手机与百度 CarLife+跨平台合作带来的独特驾驶体验。依靠便捷、流畅的连接体验,vivo
发表于 2020-09-16
vivo与<font color='red'>百度</font>携手合作,共同打造CarLife+“一键联”智能车载
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2020 nvwayi.com, Inc. All rights reserved
微信群算账机器人 银行卡送彩金 澳客彩票 申请送彩金的网站 2019年无需申请送彩金 2019白菜网送彩金 2019送彩金的娱乐场 送彩金棋牌游戏 彩票大赢家 彩票大赢家