作者介紹:章恒——騰訊云FPGA專家,目前在騰訊架構(gòu)平臺部負(fù)責(zé)FPGA云的研發(fā)工作,探索FPGA加速數(shù)據(jù)中心的應(yīng)用,包括:圖像處理、深度學(xué)習(xí)、SDN等。
為了進一步加速云計算的創(chuàng)新發(fā)展、建立云計算信任體系、規(guī)范云計算行業(yè)、促進市場發(fā)展、提升產(chǎn)業(yè)技術(shù)和服務(wù)水平,由中國信息通信研究院、中國通信標(biāo)準(zhǔn)化協(xié)會主辦的“2018可信云大會”于2018年8月14日-8月15日在北京國際會議中心召開。
云計算已經(jīng)發(fā)展了十余個年頭,并逐漸形成龐大的產(chǎn)業(yè)規(guī)模,企業(yè)“上”云也并非難事。但不斷出現(xiàn)的信息數(shù)據(jù)泄露事件給火爆的云計算敲響了警鐘,企業(yè)開始逐漸意識到云計算存在的風(fēng)險,明白部署哪一種云都有可能受到黑客攻擊。雖然云計算可帶來顯著的優(yōu)勢,但潛在的風(fēng)險也不容忽視?!?018可信云大會”將邀請行業(yè)內(nèi)多位大咖人物共同探索可信云與云計算的創(chuàng)新發(fā)展路徑。
以下是騰訊云FPGA專家章恒在“2018可信云大會”上做的——《FPGA加速:面向數(shù)據(jù)中心和云服務(wù)的探索和實踐》的演講全文:
章恒:各位嘉賓下午好,我是來自騰訊的章恒,今天分享的主題是《FPGA加速:面向數(shù)據(jù)中心和云服務(wù)上的探索和實踐》。之前各位專家已經(jīng)從學(xué)術(shù)界、標(biāo)準(zhǔn)化的方面講述了高性能計算的應(yīng)用、發(fā)展,我今天主要從工業(yè)界的角度來看,我們是在哪些實際場景里面,是如何應(yīng)用FPGA進行加速的。
今天演講主要分為三個部分,FPGA加速的原因,F(xiàn)PGA加速在數(shù)據(jù)中心的應(yīng)用,和FPGA云服務(wù)的應(yīng)用。
前面各位專家已經(jīng)介紹了在數(shù)據(jù)中心里數(shù)據(jù)的快速增長。我們也看到了,在云上數(shù)據(jù)的增長每年呈30%左右,同時AI的快速發(fā)展也帶來了對數(shù)據(jù)高性能計算的要求。這一方面導(dǎo)致數(shù)據(jù)呈指數(shù)增長發(fā)展,另一方面對這些數(shù)據(jù)處理需要的計算資源也相應(yīng)的增長。傳統(tǒng)的計算是用CPU來處理,而面臨后摩爾時代,CPU的發(fā)展是停滯的,像以前兩年翻一倍的性能增長,現(xiàn)在已經(jīng)基本不可能。那如何解決計算性能的問題就需要我們尋找更高性能的芯片,GPU、FPGA、ASIC從而進入了大家的眼簾。
高性能的計算芯片,可以概括為兩方面要求:第一是高吞吐能力,可以處理數(shù)據(jù)的增長。第二是低延時,對實時連接設(shè)備進行響應(yīng),提升用戶體驗,特別是5G和物聯(lián)網(wǎng)的發(fā)展,帶來了一方面是數(shù)據(jù)的增長,另一方面是對低延時的要求。
前面講了幾種計算芯片,CPU到FPGA到ASIC,它們有什么樣的特點,是什么本質(zhì)原因使得它們能達到高性能?在這幾種計算芯片中,越往左編程的靈活性越高,越往右晶體管的效率越高。CPU是軟件可以編程的,通用性非常高,可以面向各種軟件算法。而ASIC電路是專有的硬件電路,是不可編程的,也就是說ASIC只能夠針對該算法加速,這也是為什么它可以做到高性能,因為它上面每個晶體管都是為這個算法服務(wù)的。
GPU也是軟件可編程,相比于CPU的不同之處在于,GPU有很多計算單元,對于可以并行、同時需要大量計算的算法來說,GPU相比CPU的計算效率是高的。FPGA是一個硬件電路可編程,和ASIC相同之處在于它也是針對算法構(gòu)建的硬件電路,但是它是可以編程的硬件電路,也就是說可以針對每一種算法都搭建一個硬件電路,進行硬件加速。從整體來看,計算能力一方面是摩爾定律帶來的,另一方面是計算芯片的硬件架構(gòu)帶來的,雖然摩爾定律走到了盡頭,但我們可以通過計算芯片硬件架構(gòu)的創(chuàng)新來提高整體的計算性能。
從整個產(chǎn)業(yè)界來看,在ASIC芯片方面,谷歌做出TPU芯片,用來做AI算法的加速,目前已經(jīng)是第三代芯片了。Intel收購的Nervana、Mobileye芯片都是做AI方面的加速,國內(nèi)寒武紀(jì)、地平線都有推出自己的AI算法芯片。
在FPGA方面,微軟做到每一臺服務(wù)器都帶有一個FPGA,用作數(shù)據(jù)中心的應(yīng)用加速,國內(nèi)百度、阿里、騰訊都有用FPGA做應(yīng)用加速。所以我們看到整個產(chǎn)業(yè)界呈現(xiàn)出異構(gòu)計算百花齊放,軟硬件結(jié)合,從通用到專用的發(fā)展趨勢。
前面講了各種計算芯片的特點,現(xiàn)在我們來說FPGA在數(shù)據(jù)中的加速有哪些優(yōu)勢。最右邊是FPGA底層芯片的特點,F(xiàn)PGA里面有片上緩存的RAM,有計算資源還有一些邏輯資源,擁有這些資源以后可以針對每一種算法都搭建一個硬件電路來進行加速。
它的優(yōu)勢體現(xiàn)在:
1、高性能低延時,可以針對每一種應(yīng)用算法定制硬件架構(gòu)。
2、靈活可擴展,F(xiàn)PGA本身具備可編程性和豐富的IO管腳,使得FPGA在數(shù)據(jù)中心里面不僅在計算方面,也可以在存儲、網(wǎng)絡(luò)方面做到算法的演進發(fā)展。
3、FPGA本身的低功耗、低成本、高可靠性可以在數(shù)據(jù)中心里面方便部署和運維。
4、軟硬結(jié)合。對于一個算法,并不是所有功能都要放到FPGA里面做加速,可以將適合CPU做的部分功能放到CPU上來做,適合FPGA做的,放到FPGA做加速。可以做到CPU+FPGA結(jié)合的方式,充分發(fā)揮相互的優(yōu)勢,從而達到系統(tǒng)的最優(yōu)。
我們雖然看到了每種計算芯片各自的優(yōu)勢,但也看到計算芯片之間也是相互融合的,也就是說FPGA可以吸收ASIC的優(yōu)勢,CPU也可以吸收FPGA的優(yōu)勢。目前FPGA會融合ASIC的計算硬核,來提高整個計算性能;GPU也融合了矩陣計算的ASIC張量硬核,在V100里面已經(jīng)做到這一點了,可以達到更高的AI的計算性能。所以說未來會不會有CPU、GPU、FPGA、ASIC全芯片融合?讓我們拭目以待。
接下來我們介紹一下騰訊內(nèi)部的FPGA加速,在實際場景里面的應(yīng)用。我們于2014年開始用FPGA做加速,剛開始主要應(yīng)用場景在QQ相冊、微信朋友圈做圖片轉(zhuǎn)碼的加速,后面也用FPGA做AI算法的加速。圖片轉(zhuǎn)碼和AI加速獲得了騰訊卓越研發(fā)獎,2017年,我們是國內(nèi)第一家發(fā)布FPGA云服務(wù)器的廠商,我們也參加了FPGA頂級會議參展:FPGA2018。
接下來我們介紹一下在QQ圖片轉(zhuǎn)碼場景下怎么用FPGA做加速。眾所周知,騰訊是個社交媒體的平臺,像QQ、微信每天有大量的圖片進行收發(fā)、傳播,如果用戶上傳的Jpeg圖片,在用戶下載瀏覽的時候原封不動的傳過去,對騰訊的CDN傳輸帶寬壓力很大,而且也沒有必要。首先用戶瀏覽圖片的終端可能不同,有的通過PC來看,有的通過手機來看,手機終端的屏幕是相對來說比較小的,但是PC機屏幕是非常大的,所以沒有必要在尺寸非常小的終端上傳個大圖,而可以傳一個適配該屏幕大小的圖片,這樣CDN傳輸帶寬就會減小。除了Jpeg,還有其他的圖片格式,比如Webp、Hevc,這些格式相比Jpeg來說有更小的體積,所以當(dāng)用戶傳Jpeg格式的圖片時,我們可以轉(zhuǎn)為Hevc格式或者Webp格式,讓用戶進行下載和體驗。海量圖片的處理包括多種圖片格式的轉(zhuǎn)化,還包括多尺寸、裁剪、銳化、旋轉(zhuǎn)等操作。在未使用FPGA加速之前,用戶通過PC終端或者手機終端上傳它的圖片,經(jīng)過騰訊后臺的接入層處理以后進行圖片轉(zhuǎn)碼,多種圖片格式、多個圖片尺寸的轉(zhuǎn)碼結(jié)果存儲在分布式存儲系統(tǒng)里面,當(dāng)用戶在終端瀏覽的時候,對應(yīng)的從分布式存儲系統(tǒng)里面取出相應(yīng)格式或者尺寸的圖片給用戶看。那為什么圖片處理是在用戶上傳端進行轉(zhuǎn)碼,而不是在用戶需要的時候轉(zhuǎn)碼呢?主要是用戶瀏覽圖片的時候是希望點擊即能看到,這就需要一個非常低的延時,低延時就是用戶的體驗要求。
我們用FPGA進行圖片轉(zhuǎn)碼以后,可以充分利用FPGA低延時的處理特點,在整個圖片轉(zhuǎn)碼的時候,不再需要存儲不同格式的圖片,而只要將一種格式、一種尺寸的圖片存儲在分布式系統(tǒng)里面,用戶需要瀏覽的時候會根據(jù)用戶終端進行實時轉(zhuǎn)碼,將轉(zhuǎn)碼的圖片再發(fā)給用戶,這樣節(jié)省系統(tǒng)中分布式存儲的壓力。
在FPGA里面是如何做到的這一點的呢?我們在FPGA里面實現(xiàn)了幾種圖片格式的編解碼核,確保圖片可以進行流水并行和數(shù)據(jù)并行的處理,從而提升圖片轉(zhuǎn)碼的性能,做到高吞吐低延時,我們做到了相比CPU延時降低3倍,吞吐增加6倍的效果。
這幾年業(yè)內(nèi)大家聽到最多的名詞就是人工智能,在人工智能這個場景騰訊的戰(zhàn)略是AI in ALL,把各種AI技術(shù)和各種應(yīng)用場景結(jié)合,比如醫(yī)療影像、信息安全、語音翻譯等。在信息安全場景上是如何用FPGA進行加速的?首先QQ、微信上每時每刻都有大量的UGC圖片上傳,這些UGC圖片比較少的是違禁圖片,大量的是正常圖片,對于比較少的違禁圖片如何進行打擊,我們也采用AI技術(shù),并且結(jié)合FPGA高性能低延時的優(yōu)勢。這里展示了我們的整個處理邏輯,首先每天有上億張圖片上傳到處理系統(tǒng),會經(jīng)過AI的極速模型,把正常圖片過濾出來,對于少量的可疑圖片留下來,經(jīng)過二級AI極優(yōu)模型來做判斷,到底是不是有惡意的圖片,通過兩個AI模型和FPGA的加速達到高性能處理的效果。
具體在FPGA里面是如何做到AI算法的加速的?在FPGA里面實現(xiàn)了AI算法的基本算子操作,包括卷積、池化、歸一化、激活函數(shù),通過對這些基本算子的支持,做到對AI算法實時的處理。數(shù)據(jù)流水的輸入和處理,F(xiàn)PGA中所有的計算單元都會同一時間內(nèi)處理同一層的數(shù)據(jù),這樣可以達到低延時。以具體的Googlenet的算法模型為例,對比CPU、GPU和FPGA, 可以看到FPGA剛開始的時候就能夠達到最大吞吐,GPU需要拼湊更大的數(shù)據(jù)做到高吞吐,但是它的batchsize越大延時越大,所以FPGA在跟GPU吞吐性能一樣的情況下,F(xiàn)PGA延時比GPU降低10倍,整體的TCO可以達到50%的降低。
FPGA在加速AI方面具體有哪些方面的優(yōu)勢?總結(jié)來說主要有三個方面:
1、靈活可擴展,因為FPGA的可編程性,它可以快速支持AI算法的快速演進,支持DNN、CNN、LSTM以及決策樹等,支持任意精度的比特,可以用任何比特來表征你的數(shù)據(jù)。同時還可以支持模型的壓縮、稀疏網(wǎng)絡(luò)等模型的構(gòu)件。2、高性能低延時,可以構(gòu)建實時的AI處理能力,特別到以后“端云結(jié)合”的應(yīng)用場景,對于低延時的要求會更高。前面也介紹了,F(xiàn)PGA可以做到與GPU相媲美的吞吐性能,較GPU數(shù)量級提升的低延時推斷能力。
3、開發(fā)環(huán)境持續(xù)優(yōu)化。用戶用verilog這種語言做FPGA開發(fā)是比較困難的,那如何在AI場景上,降低FPGA使用門檻呢?一方面是把FPGA里面的AI基本算子做進一步的優(yōu)化,提供更加完善的算子庫,另一方面是提供編譯器給用戶。這個編譯器在使用的時候,用戶只需要把AI模型通過編譯器轉(zhuǎn)化成FPGA認(rèn)識的指令,通過這些指令來指導(dǎo)FPGA加速,通過這種方法使FPGA的易用性提高。
第三部分介紹一下在FPGA云服務(wù)方面的發(fā)展。
首先FPGA整個產(chǎn)業(yè)鏈?zhǔn)谴嬖诙鄠€環(huán)節(jié)的,包括芯片原廠、硬件生產(chǎn)廠商、IP開發(fā)商、方案集成商。硬件生產(chǎn)商主要指生產(chǎn)板卡的,IP開發(fā)商是提供IP方案的,方案集成商是把方案、硬件板卡、方案打包的。FPGA云服務(wù)需要把這些技術(shù)資源整合,對用戶形成最終服務(wù)。相比整個GPU產(chǎn)業(yè)鏈來說,GPU是從芯片制造到板卡,到最終的編程框架都提供解決方案,F(xiàn)PGA云服務(wù)也是想通過云服務(wù)的場景把以前碎片化的使用方式平臺化的,降低FPGA的使用門檻。
這里介紹一下FPGA服務(wù)本身的價值:對于傳統(tǒng)供應(yīng)商來說,比如xilinx和altera芯片原廠,原來是對大客戶直供方式,對中小客戶是由代理商分銷,他們不直接接觸中小客戶,F(xiàn)PGA銷售增長緩慢;對于IP開發(fā)商來說以出售IP方式,不提供其他服務(wù),IP只是零部件,并不是最終行業(yè)的解決方案。同時,因為IP本身擔(dān)心產(chǎn)權(quán)泄露,一般要簽署NDA并且要付費,所以整個交付周期是非常長,過程非常繁瑣的,反過來會限制IP出售;對于方案集成商來說,原來的方式是技術(shù)人員帶硬件設(shè)備拜訪客戶,現(xiàn)場演示講解,最終把硬件設(shè)備留下來給用戶進行驗證測試,整個運營推廣周期非常長,過程也是非常繁瑣,硬件維護也非常麻煩。這是傳統(tǒng)供應(yīng)商的問題和痛點。對于用戶的痛點來說,想使用FPGA開發(fā),需要解決FPGA板卡的生產(chǎn)制造,有了硬件板卡還要有做FPGA的軟件開發(fā),整個硬件制造和軟件開發(fā)的周期特別長,帶來使用FPGA的決策成本特別高,試錯成本也特別高。對于不自己做開發(fā)而是直接購買解決方案的方式,用戶相對來說更依賴方案集成商,方案價格貴、升級改造也慢。綜上所述,F(xiàn)PGA本身沒有成熟的開發(fā)生態(tài),整個開發(fā)門檻高,反過來限制了FPGA生態(tài)的發(fā)展。
所以前面介紹的這些問題都是說,我們需要通過FPGA云平臺的方式來打通FPGA的各個環(huán)節(jié),包括硬件生產(chǎn)商、方案集成商、IP開發(fā)商和芯片原廠,通過在云平臺上做出行業(yè)解決方案,對用戶提供服務(wù)。這樣用戶使用FPGA的門檻就會降低,而且整個使用也會容易很多。
那通過這樣一個FPGA云平臺對前面的傳統(tǒng)供應(yīng)商有哪些價值,對用戶有哪些價值。對于傳統(tǒng)供應(yīng)商來說,芯片原廠可以解決支持中小客戶的難題,聚焦FPGA生態(tài)發(fā)展,新模式帶來新的用戶增長。IP開發(fā)商提供了在線的驗證和測試,整個交付周期短,通過云覆蓋更多的用戶,增加銷量。對于方案集成商來說就不再需要提供硬件售賣了,只需要通過FPGA云服務(wù)器的方式提供給用戶購買,按需購買,運營推廣周期會縮短,硬件平臺也由云平臺廠商負(fù)責(zé)。
對于想用FPGA的用戶來說,它的開發(fā)周期會縮短,同時因為云平臺是相對來說非常公開的技術(shù)競技場所,如果你的方案做不到最優(yōu)或者別人比你更好的話,這個方案別人也不會使用,所以一般來說云平臺上都會使用最新的技術(shù),這帶來用戶整個生產(chǎn)效率的提高。在解決方案方面,在云平臺上直接購買解決方案,跟云用戶的生產(chǎn)環(huán)境相結(jié)合,驗證周期會縮短,試錯成本低,決策成本會降低,同時云自身帶來的彈性擴容和收縮,這些都給用戶帶來了價值。
騰訊的FPGA云服務(wù)是在2017年1月份國內(nèi)第一家發(fā)布的FPGA云服務(wù)器,發(fā)布以后主要集中在自研和引入更多第三方方案提供商,提供更多的行業(yè)解決方案,包括圖片處理、圖片鑒黃和基因測序,讓用戶直接使用到行業(yè)解決方案。在硬件板卡上,之前是KU115,VU9P和Intel Stratix 10即將上線。對于FPGA開發(fā)者來說,如果想用FPGA云服務(wù)器做自己的FPGA開發(fā),我們提供了FPGA開發(fā)平臺,上面集成了PCLE通路和DDR控制器的HDK,在軟件CPU側(cè)有驅(qū)動的SDK,用戶只需要關(guān)注自己邏輯的開發(fā)和軟件側(cè)應(yīng)用程序的開發(fā),可以節(jié)省整個開發(fā)周期。
前面講的都是FPGA云服務(wù)本身。我們在通過FPGA云服務(wù),跟各行各業(yè)相接觸的過程中,我們也針對各個行業(yè)中,需要做高性能計算的場景做具體的應(yīng)用加速。其中在基因測序方面,隨著測序成本逐漸降低,數(shù)據(jù)分析成本在總體成本的占比提高。隨著近年基因數(shù)據(jù)的爆發(fā)式增長,整個數(shù)據(jù)分析層面遭遇計算瓶頸。因此,我們通過FPGA對基因測序里面一些耗時長的算法進行加速,可以提高計算速度,降低成本。右圖就是我們在二代基因測序的應(yīng)用場景里面針對標(biāo)準(zhǔn)WGS流程,采用BWA和GATK的算法,針對人的全基因組的測序,用CPU需要30小時,用CPU+FPGA可以做到2.8小時,可以做到10倍的提升,現(xiàn)在這樣一個行業(yè)解決方案已經(jīng)在騰訊基因產(chǎn)品里面,完成了產(chǎn)品化,提供給用戶使用。
最后談一下針對FPGA云服務(wù)和FPGA行業(yè)自己的思考,F(xiàn)PGA云服務(wù)是個新生事物,雖然前面介紹了在各種應(yīng)用場景下,使用FPGA加速獲得很多好處,但是它的困難也有很多。
第一方面,目前各家云平臺廠商都有提供FPGA云平臺,而平臺本身沒有統(tǒng)一標(biāo)準(zhǔn),相當(dāng)于各家都在按照自己的思路做FPGA平臺的開發(fā)。這就帶來了一個問題,整個平臺的碎片化特別嚴(yán)重,對于想要提供FPGA行業(yè)解決方案的廠商來說,需要根據(jù)各家云平臺做適配,行業(yè)解決方案在FPGA云平臺上的遷移成本非常高。當(dāng)然,后面可能有FPGA云行業(yè)的標(biāo)準(zhǔn),我也非常期待。
第二方面,它的開發(fā)門檻高,行業(yè)解決方案少。FPGA開發(fā)所使用的編程語言,相對來說還是非常底層的硬件電路的描述語言,編程語言的抽象化是比較低的。
第三方面,F(xiàn)PGA云的生態(tài)不太完善,沒有形成正向循環(huán),從開發(fā)者到行業(yè)解決方案、到客戶使用、到更多開發(fā)者這樣一個正向循環(huán),導(dǎo)致行業(yè)解決方案還是各家云平臺商在自研,沒有發(fā)揮行業(yè)的力量。
目前騰訊FPGA云服務(wù)規(guī)劃是:1、在FPGA云平臺建設(shè)方面,硬件平臺的升級和IP市場的推出,有更多AI等行業(yè)解決方案的推出。2、FPGA生態(tài)發(fā)展,我們希望能夠連接開發(fā)者和使用者建立一個評價體系,推動FPGA解決方案的迭代。
最后FPGA在端側(cè)也大有所為,因為FPGA本身有豐富的IO管腳,低延時的特性,端側(cè)和云側(cè)相結(jié)合的場景將會有非常大的發(fā)展空間。