欢迎你们前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~算法
本文由columneditor 发表于云+社区专栏编程
做者介绍:章恒——腾讯云FPGA专家,目前在腾讯架构平台部负责FPGA云的研发工做,探索FPGA加速数据中心的应用,包括:图像处理、深度学习、SDN等。缓存
为了进一步加速云计算的创新发展、创建云计算信任体系、规范云计算行业、促进市场发展、提高产业技术和服务水平,由中国信息通讯研究院、中国通讯标准化协会主办的“2018可信云大会”于2018年8月14日-8月15日在北京国际会议中心召开。安全
云计算已经发展了十余个年头,并逐渐造成庞大的产业规模,企业“上”云也并不是难事。但不断出现的信息数据泄露事件给火爆的云计算敲响了警钟,企业开始逐渐意识到云计算存在的风险,明白部署哪种云都有可能受到黑客攻击。虽然云计算可带来显著的优点,但潜在的风险也不容忽视。“2018可信云大会”将邀请行业内多位大咖人物共同探索可信云与云计算的创新发展路径。服务器
如下是腾讯云FPGA专家章恒在“2018可信云大会”上作的——《FPGA加速:面向数据中心和云服务的探索和实践》的演讲全文:微信
章恒:各位嘉宾下午好,我是来自腾讯的章恒,今天分享的主题是《FPGA加速:面向数据中心和云服务上的探索和实践》。以前各位专家已经从学术界、标准化的方面讲述了高性能计算的应用、发展,我今天主要从工业界的角度来看,咱们是在哪些实际场景里面,是如何应用FPGA进行加速的。网络
今天演讲主要分为三个部分,FPGA加速的缘由,FPGA加速在数据中心的应用,和FPGA云服务的应用。架构
前面各位专家已经介绍了在数据中内心数据的快速增加。咱们也看到了,在云上数据的增加每一年呈30%左右,同时AI的快速发展也带来了对数据高性能计算的要求。这一方面致使数据呈指数增加发展,另外一方面对这些数据处理须要的计算资源也相应的增加。传统的计算是用CPU来处理,而面临后摩尔时代,CPU的发展是停滞的,像之前两年翻一倍的性能增加,如今已经基本不可能。那如何解决计算性能的问题就须要咱们寻找更高性能的芯片,GPU、FPGA、ASIC从而进入了你们的眼帘。框架
高性能的计算芯片,能够归纳为两方面要求:第一是高吞吐能力,能够处理数据的增加。第二是低延时,对实时链接设备进行响应,提高用户体验,特别是5G和物联网的发展,带来了一方面是数据的增加,另外一方面是对低延时的要求。运维
前面讲了几种计算芯片,CPU到FPGA到ASIC,它们有什么样的特色,是什么本质缘由使得它们能达到高性能?在这几种计算芯片中,越往左编程的灵活性越高,越往右晶体管的效率越高。CPU是软件能够编程的,通用性很是高,能够面向各类软件算法。而ASIC电路是专有的硬件电路,是不可编程的,也就是说ASIC只可以针对该算法加速,这也是为何它能够作到高性能,由于它上面每一个晶体管都是为这个算法服务的。
GPU也是软件可编程,相比于CPU的不一样之处在于,GPU有不少计算单元,对于能够并行、同时须要大量计算的算法来讲,GPU相比CPU的计算效率是高的。FPGA是一个硬件电路可编程,和ASIC相同之处在于它也是针对算法构建的硬件电路,可是它是能够编程的硬件电路,也就是说能够针对每一种算法都搭建一个硬件电路,进行硬件加速。从总体来看,计算能力一方面是摩尔定律带来的,另外一方面是计算芯片的硬件架构带来的,虽然摩尔定律走到了尽头,但咱们能够经过计算芯片硬件架构的创新来提升总体的计算性能。
从整个产业界来看,在ASIC芯片方面,谷歌作出TPU芯片,用来作AI算法的加速,目前已是第三代芯片了。Intel收购的Nervana、Mobileye芯片都是作AI方面的加速,国内寒武纪、地平线都有推出本身的AI算法芯片。
在FPGA方面,微软作到每一台服务器都带有一个FPGA,用做数据中心的应用加速,国内百度、阿里、腾讯都有用FPGA作应用加速。因此咱们看到整个产业界呈现出异构计算百花齐放,软硬件结合,从通用到专用的发展趋势。
前面讲了各类计算芯片的特色,如今咱们来讲FPGA在数据中的加速有哪些优点。最右边是FPGA底层芯片的特色,FPGA里面有片上缓存的RAM,有计算资源还有一些逻辑资源,拥有这些资源之后能够针对每一种算法都搭建一个硬件电路来进行加速。
它的优点体如今:
一、高性能低延时,能够针对每一种应用算法定制硬件架构。
二、灵活可扩展,FPGA自己具有可编程性和丰富的IO管脚,使得FPGA在数据中内心面不只在计算方面,也能够在存储、网络方面作到算法的演进发展。
三、FPGA自己的低功耗、低成本、高可靠性能够在数据中内心面方便部署和运维。
四、软硬结合。对于一个算法,并非全部功能都要放到FPGA里面作加速,能够将适合CPU作的部分功能放到CPU上来作,适合FPGA作的,放到FPGA作加速。能够作到CPU+FPGA结合的方式,充分发挥相互的优点,从而达到系统的最优。
咱们虽然看到了每种计算芯片各自的优点,但也看到计算芯片之间也是相互融合的,也就是说FPGA能够吸取ASIC的优点,CPU也能够吸取FPGA的优点。目前FPGA会融合ASIC的计算硬核,来提升整个计算性能;GPU也融合了矩阵计算的ASIC张量硬核,在V100里面已经作到这一点了,能够达到更高的AI的计算性能。因此说将来会不会有CPU、GPU、FPGA、ASIC全芯片融合?让咱们拭目以待。
接下来咱们介绍一下腾讯内部的FPGA加速,在实际场景里面的应用。咱们于2014年开始用FPGA作加速,刚开始主要应用场景在QQ相册、微信朋友圈作图片转码的加速,后面也用FPGA作AI算法的加速。图片转码和AI加速得到了腾讯卓越研发奖,2017年,咱们是国内第一家发布FPGA云服务器的厂商,咱们也参加了FPGA顶级会议参展:FPGA2018。
接下来咱们介绍一下在QQ图片转码场景下怎么用FPGA作加速。众所周知,腾讯是个社交媒体的平台,像QQ、微信天天有大量的图片进行收发、传播,若是用户上传的Jpeg图片,在用户下载浏览的时候原封不动的传过去,对腾讯的CDN传输带宽压力很大,并且也没有必要。首先用户浏览图片的终端可能不一样,有的经过PC来看,有的经过手机来看,手机终端的屏幕是相对来讲比较小的,可是PC机屏幕是很是大的,因此没有必要在尺寸很是小的终端上传个大图,而能够传一个适配该屏幕大小的图片,这样CDN传输带宽就会减少。除了Jpeg,还有其余的图片格式,好比Webp、Hevc,这些格式相比Jpeg来讲有更小的体积,因此当用户传Jpeg格式的图片时,咱们能够转为Hevc格式或者Webp格式,让用户进行下载和体验。海量图片的处理包括多种图片格式的转化,还包括多尺寸、裁剪、锐化、旋转等操做。在未使用FPGA加速以前,用户经过PC终端或者手机终端上传它的图片,通过腾讯后台的接入层处理之后进行图片转码,多种图片格式、多个图片尺寸的转码结果存储在分布式存储系统里面,当用户在终端浏览的时候,对应的从分布式存储系统里面取出相应格式或者尺寸的图片给用户看。那为何图片处理是在用户上传端进行转码,而不是在用户须要的时候转码呢?主要是用户浏览图片的时候是但愿点击即能看到,这就须要一个很是低的延时,低延时就是用户的体验要求。
咱们用FPGA进行图片转码之后,能够充分利用FPGA低延时的处理特色,在整个图片转码的时候,再也不须要存储不一样格式的图片,而只要将一种格式、一种尺寸的图片存储在分布式系统里面,用户须要浏览的时候会根据用户终端进行实时转码,将转码的图片再发给用户,这样节省系统中分布式存储的压力。
在FPGA里面是如何作到的这一点的呢?咱们在FPGA里面实现了几种图片格式的编解码核,确保图片能够进行流水并行和数据并行的处理,从而提高图片转码的性能,作到高吞吐低延时,咱们作到了相比CPU延时下降3倍,吞吐增长6倍的效果。
这几年业内你们听到最多的名词就是人工智能,在人工智能这个场景腾讯的战略是AI in ALL,把各类AI技术和各类应用场景结合,好比医疗影像、信息安全、语音翻译等。在信息安全场景上是如何用FPGA进行加速的?首先QQ、微信上每时每刻都有大量的UGC图片上传,这些UGC图片比较少的是违禁图片,大量的是正常图片,对于比较少的违禁图片如何进行打击,咱们也采用AI技术,而且结合FPGA高性能低延时的优点。这里展现了咱们的整个处理逻辑,首先天天有上亿张图片上传处处理系统,会通过AI的极速模型,把正常图片过滤出来,对于少许的可疑图片留下来,通过二级AI极优模型来作判断,究竟是不是有恶意的图片,经过两个AI模型和FPGA的加速达到高性能处理的效果。
具体在FPGA里面是如何作到AI算法的加速的?在FPGA里面实现了AI算法的基本算子操做,包括卷积、池化、归一化、激活函数,经过对这些基本算子的支持,作到对AI算法实时的处理。数据流水的输入和处理,FPGA中全部的计算单元都会同一时间内处理同一层的数据,这样能够达到低延时。以具体的Googlenet的算法模型为例,对比CPU、GPU和FPGA, 能够看到FPGA刚开始的时候就可以达到最大吞吐,GPU须要拼凑更大的数据作到高吞吐,可是它的batchsize越大延时越大,因此FPGA在跟GPU吞吐性能同样的状况下,FPGA延时比GPU下降10倍,总体的TCO能够达到50%的下降。
FPGA在加速AI方面具体有哪些方面的优点?总结来讲主要有三个方面:
一、灵活可扩展,由于FPGA的可编程性,它能够快速支持AI算法的快速演进,支持DNN、CNN、LSTM以及决策树等,支持任意精度的比特,能够用任何比特来表征你的数据。同时还能够支持模型的压缩、稀疏网络等模型的构件。二、高性能低延时,能够构建实时的AI处理能力,特别到之后“端云结合”的应用场景,对于低延时的要求会更高。前面也介绍了,FPGA能够作到与GPU相媲美的吞吐性能,较GPU数量级提高的低延时推断能力。
三、开发环境持续优化。用户用verilog这种语言作FPGA开发是比较困难的,那如何在AI场景上,下降FPGA使用门槛呢?一方面是把FPGA里面的AI基本算子作进一步的优化,提供更加完善的算子库,另外一方面是提供编译器给用户。这个编译器在使用的时候,用户只须要把AI模型经过编译器转化成FPGA认识的指令,经过这些指令来指导FPGA加速,经过这种方法使FPGA的易用性提升。
第三部分介绍一下在FPGA云服务方面的发展。
首先FPGA整个产业链是存在多个环节的,包括芯片原厂、硬件生产厂商、IP开发商、方案集成商。硬件生产商主要指生产板卡的,IP开发商是提供IP方案的,方案集成商是把方案、硬件板卡、方案打包的。FPGA云服务须要把这些技术资源整合,对用户造成最终服务。相比整个GPU产业链来讲,GPU是从芯片制造到板卡,到最终的编程框架都提供解决方案,FPGA云服务也是想经过云服务的场景把之前碎片化的使用方式平台化的,下降FPGA的使用门槛。
这里介绍一下FPGA服务自己的价值:对于传统供应商来讲,好比xilinx和altera芯片原厂,原来是对大客户直供方式,对中小客户是由代理商分销,他们不直接接触中小客户,FPGA销售增加缓慢;对于IP开发商来讲以出售IP方式,不提供其余服务,IP只是零部件,并非最终行业的解决方案。同时,由于IP自己担忧产权泄露,通常要签署NDA而且要付费,因此整个交付周期是很是长,过程很是繁琐的,反过来会限制IP出售;对于方案集成商来讲,原来的方式是技术人员带硬件设备拜访客户,现场演示讲解,最终把硬件设备留下来给用户进行验证测试,整个运营推广周期很是长,过程也是很是繁琐,硬件维护也很是麻烦。这是传统供应商的问题和痛点。对于用户的痛点来讲,想使用FPGA开发,须要解决FPGA板卡的生产制造,有了硬件板卡还要有作FPGA的软件开发,整个硬件制造和软件开发的周期特别长,带来使用FPGA的决策成本特别高,试错成本也特别高。对于不本身作开发而是直接购买解决方案的方式,用户相对来讲更依赖方案集成商,方案价格贵、升级改造也慢。综上所述,FPGA自己没有成熟的开发生态,整个开发门槛高,反过来限制了FPGA生态的发展。
因此前面介绍的这些问题都是说,咱们须要经过FPGA云平台的方式来打通FPGA的各个环节,包括硬件生产商、方案集成商、IP开发商和芯片原厂,经过在云平台上作出行业解决方案,对用户提供服务。这样用户使用FPGA的门槛就会下降,并且整个使用也会容易不少。
那经过这样一个FPGA云平台对前面的传统供应商有哪些价值,对用户有哪些价值。对于传统供应商来讲,芯片原厂能够解决支持中小客户的难题,聚焦FPGA生态发展,新模式带来新的用户增加。IP开发商提供了在线的验证和测试,整个交付周期短,经过云覆盖更多的用户,增长销量。对于方案集成商来讲就再也不须要提供硬件售卖了,只须要经过FPGA云服务器的方式提供给用户购买,按需购买,运营推广周期会缩短,硬件平台也由云平台厂商负责。
对于想用FPGA的用户来讲,它的开发周期会缩短,同时由于云平台是相对来讲很是公开的技术竞技场所,若是你的方案作不到最优或者别人比你更好的话,这个方案别人也不会使用,因此通常来讲云平台上都会使用最新的技术,这带来用户整个生产效率的提升。在解决方案方面,在云平台上直接购买解决方案,跟云用户的生产环境相结合,验证周期会缩短,试错成本低,决策成本会下降,同时云自身带来的弹性扩容和收缩,这些都给用户带来了价值。
腾讯的FPGA云服务是在2017年1月份国内第一家发布的FPGA云服务器,发布之后主要集中在自研和引入更多第三方方案提供商,提供更多的行业解决方案,包括图片处理、图片鉴黄和基因测序,让用户直接使用到行业解决方案。在硬件板卡上,以前是KU115,VU9P和Intel Stratix 10即将上线。对于FPGA开发者来讲,若是想用FPGA云服务器作本身的FPGA开发,咱们提供了FPGA开发平台,上面集成了PCLE通路和DDR控制器的HDK,在软件CPU侧有驱动的SDK,用户只须要关注本身逻辑的开发和软件侧应用程序的开发,能够节省整个开发周期。
前面讲的都是FPGA云服务自己。咱们在经过FPGA云服务,跟各行各业相接触的过程当中,咱们也针对各个行业中,须要作高性能计算的场景作具体的应用加速。其中在基因测序方面,随着测序成本逐渐下降,数据分析成本在整体成本的占比提升。随着近年基因数据的爆发式增加,整个数据分析层面遭遇计算瓶颈。所以,咱们经过FPGA对基因测序里面一些耗时长的算法进行加速,能够提升计算速度,下降成本。右图就是咱们在二代基因测序的应用场景里面针对标准WGS流程,采用BWA和GATK的算法,针对人的全基因组的测序,用CPU须要30小时,用CPU+FPGA能够作到2.8小时,能够作到10倍的提高,如今这样一个行业解决方案已经在腾讯基因产品里面,完成了产品化,提供给用户使用。
最后谈一下针对FPGA云服务和FPGA行业本身的思考,FPGA云服务是个新生事物,虽然前面介绍了在各类应用场景下,使用FPGA加速得到不少好处,可是它的困难也有不少。
第一方面,目前各家云平台厂商都有提供FPGA云平台,而平台自己没有统一标准,至关于各家都在按照本身的思路作FPGA平台的开发。这就带来了一个问题,整个平台的碎片化特别严重,对于想要提供FPGA行业解决方案的厂商来讲,须要根据各家云平台作适配,行业解决方案在FPGA云平台上的迁移成本很是高。固然,后面可能有FPGA云行业的标准,我也很是期待。
第二方面,它的开发门槛高,行业解决方案少。FPGA开发所使用的编程语言,相对来讲仍是很是底层的硬件电路的描述语言,编程语言的抽象化是比较低的。
第三方面,FPGA云的生态不太完善,没有造成正向循环,从开发者到行业解决方案、到客户使用、到更多开发者这样一个正向循环,致使行业解决方案仍是各家云平台商在自研,没有发挥行业的力量。
目前腾讯FPGA云服务规划是:一、在FPGA云平台建设方面,硬件平台的升级和IP市场的推出,有更多AI等行业解决方案的推出。二、FPGA生态发展,咱们但愿可以链接开发者和使用者创建一个评价体系,推进FPGA解决方案的迭代。
最后FPGA在端侧也大有所为,由于FPGA自己有丰富的IO管脚,低延时的特性,端侧和云侧相结合的场景将会有很是大的发展空间。
问答
相关阅读
此文已由做者受权腾讯云+社区发布,原文连接:https://cloud.tencent.com/developer/article/1188496?fromSource=waitui
搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!
海量技术实践经验,尽在云加社区!