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,有計算資源還有一些邏輯資源,擁有這些資源之後能夠針對每一種算法都搭建一個硬件電路來進行加速。

它的優點體如今:

一、高性能低延時,能夠針對每一種應用算法定製硬件架構。

二、靈活可擴展,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管腳,低延時的特性,端側和雲側相結合的場景將會有很是大的發展空間。

問答

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

相關閱讀

如何在Ubuntu上搭建Minecraft服務器

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

使用Patroni和HAProxy建立高度可用的PostgreSQL集羣

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

此文已由做者受權騰訊雲+社區發佈,原文連接:https://cloud.tencent.com/developer/article/1188496?fromSource=waitui

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

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

相關文章
相關標籤/搜索