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

騰訊雲加社群發表於2019-03-04

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

本文由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叢集

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

此文已由作者授權騰訊雲+社群釋出,原文連結:cloud.tencent.com/developer/a…

搜尋關注公眾號「雲加社群」,第一時間獲取技術乾貨,關注後回覆1024 送你一份技術課程大禮包!

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

相關文章