FPGA加速:面向數據中心和雲服務的探索和實踐


歡迎大家前往騰訊雲+社區,獲取更多騰訊海量技術實踐干貨哦~

本文由columneditor 發表於雲+社區專欄

作者介紹:章恆——騰訊雲FPGA專家,目前在騰訊架構平台部負責FPGA雲的研發工作,探索FPGA加速數據中心的應用,包括:圖像處理、深度學習、SDN等。

為了進一步加速雲計算的創新發展、建立雲計算信任體系、規范雲計算行業、促進市場發展、提升產業技術和服務水平,由中國信息通信研究院、中國通信標准化協會主辦的“2018可信雲大會”於2018年8月14日-8月15日在北京國際會議中心召開。

雲計算已經發展了十余個年頭,並逐漸形成龐大的產業規模,企業“上”雲也並非難事。但不斷出現的信息數據泄露事件給火爆的雲計算敲響了警鍾,企業開始逐漸意識到雲計算存在的風險,明白部署哪一種雲都有可能受到黑客攻擊。雖然雲計算可帶來顯著的優勢,但潛在的風險也不容忽視。“2018可信雲大會”將邀請行業內多位大咖人物共同探索可信雲與雲計算的創新發展路徑。

img

以下是騰訊雲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管腳,低延時的特性,端側和雲側相結合的場景將會有非常大的發展空間。

問答

AI開發的語言要求是什么?

相關閱讀

如何在Ubuntu上搭建Minecraft服務器

如何在Ubuntu上搭建方舟:生存進化服務器

使用Patroni和HAProxy創建高度可用的PostgreSQL集群

雲學院 · 課程推薦 | 騰訊高級工程師,帶你快速入門機器學習

此文已由作者授權騰訊雲+社區發布,原文鏈接:https://cloud.tencent.com/developer/article/1188496?fromSource=waitui

搜索關注公眾號「雲加社區」,第一時間獲取技術干貨,關注后回復1024 送你一份技術課程大禮包!

海量技術實踐經驗,盡在雲加社區


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM