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

2021-09-11 11:00:17 字數 4806 閱讀 7492

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

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

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

今天演講主要分為三個部分,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裡面有片上快取的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進行轉碼以後,可以充分利用fpga低延時的處理特點,在整個轉碼的時候,不再需要儲存不同格式的,而只要將一種格式、一種尺寸的儲存在分布式系統裡面,使用者需要瀏覽的時候會根據使用者終端進行實時轉碼,將轉碼的再發給使用者,這樣節省系統中分布式儲存的壓力。

在fpga裡面是如何做到的這一點的呢?我們在fpga裡面實現了幾種格式的編譯碼核,確保可以進行流水並行和資料並行的處理,從而提公升轉碼的效能,做到高吞吐低延時,我們做到了相比cpu延時降低3倍,吞吐增加6倍的效果。

具體在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雲服務和fpga行業自己的思考,fpga雲服務是個新生事物,雖然前面介紹了在各種應用場景下,使用fpga加速獲得很多好處,但是它的困難也有很多。

第一方面,目前各家雲平台廠商都有提供fpga雲平台,而平台本身沒有統一標準,相當於各家都在按照自己的思路做fpga平台的開發。這就帶來了乙個問題,整個平台的碎片化特別嚴重,對於想要提供fpga行業解決方案的廠商來說,需要根據各家雲平台做適配,行業解決方案在fpga雲平台上的遷移成本非常高。當然,後面可能有fpga雲行業的標準,我也非常期待。

第二方面,它的開發門檻高,行業解決方案少。fpga開發所使用的程式語言,相對來說還是非常底層的硬體電路的描述語言,程式語言的抽象化是比較低的。

第三方面,fpga雲的生態不太完善,沒有形成正向迴圈,從開發者到行業解決方案、到客戶使用、到更多開發者這樣乙個正向迴圈,導致行業解決方案還是各家雲平台商在自研,沒有發揮行業的力量。

最後fpga在端側也大有所為,因為fpga本身有豐富的io管腳,低延時的特性,端側和雲側相結合的場景將會有非常大的發展空間。

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

如何在ubuntu上搭建minecraft伺服器

如何在ubuntu上搭建方舟:生存進化伺服器

使用patroni和haproxy建立高度可用的postgresql集群

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

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

本文由columneditor 發表於雲 社群專欄 為了進一步加速雲計算的創新發展 建立雲計算信任體系 規範雲計算行業 促進市場發展 提公升產業技術和服務水平,由中國資訊通訊研究院 中國通訊標準化協會主辦的 2018可信雲大會 於2018年8月14日 8月15日在北京國際會議中心召開。雲計算已經發展...

資料中心與雲資料中心

資料中心與雲資料中心 資料中心 dc,datacenter 是指在乙個物理空間內實現資訊的集中處理 儲存 傳輸 管理等功能,它包括伺服器 儲存 網路等關鍵裝置和這些關鍵裝置執行所需要的環境因素,如供電 製冷 消防 監控等關鍵基礎設施。雲資料中心是一種基於雲計算架構的,計算 儲存及網路資源松耦合,完全...

雲資料中心與傳統資料中心

雲資料中心是一種基於雲計算架構的,計算 儲存及網路資源松耦合,完全虛擬化各種it裝置 模組化程度較高 自動化程度較高 具備較高綠色節能程度的新型資料中心。雲資料中心的特點 高度的虛擬化,這其中包括伺服器 儲存 網路 應用等虛擬化,使使用者可以按需呼叫各種資源 自動化管理程度,包括對物理伺服器 虛擬伺...