FPGA加速:面向数据中心和云服务的探索和实践
欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~
本文由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,有计算资源还有一些逻辑资源,拥有这些资源以后可以针对每一种算法都搭建一个硬件电路来进行加速。
它的优势体现在:
1、高性能低延时,可以针对每一种应用算法定制硬件架构。
2、灵活可扩展,FPGA本身具备可编程性和丰富的IO管脚,使得FPGA在数据中心里面不仅在计算方面,也可以在存储、网络方面做到算法的演进发展。
3、FPGA本身的低功耗、低成本、高可靠性可以在数据中心里面方便部署和运维。
4、软硬结合。对于一个算法,并不是所有功能都要放到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方面具体有哪些方面的优势?总结来说主要有三个方面:
1、灵活可扩展,因为FPGA的可编程性,它可以快速支持AI算法的快速演进,支持DNN、CNN、LSTM以及决策树等,支持任意精度的比特,可以用任何比特来表征你的数据。同时还可以支持模型的压缩、稀疏网络等模型的构件。2、高性能低延时,可以构建实时的AI处理能力,特别到以后“端云结合”的应用场景,对于低延时的要求会更高。前面也介绍了,FPGA可以做到与GPU相媲美的吞吐性能,较GPU数量级提升的低延时推断能力。
3、开发环境持续优化。用户用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云服务规划是:1、在FPGA云平台建设方面,硬件平台的升级和IP市场的推出,有更多AI等行业解决方案的推出。2、FPGA生态发展,我们希望能够连接开发者和使用者建立一个评价体系,推动FPGA解决方案的迭代。
最后FPGA在端侧也大有所为,因为FPGA本身有丰富的IO管脚,低延时的特性,端侧和云侧相结合的场景将会有非常大的发展空间。
问答
相关阅读
此文已由作者授权腾讯云+社区发布,原文链接:https://cloud.tencent.com/dev...
搜索关注公众号「云加社区」,第一时间获取技术干货,关注后回复1024 送你一份技术课程大礼包!
海量技术实践经验,尽在云加社区!