當前位置:
首頁 > 最新 > FPGA開啟基於雲的「硬體微服務」新時代

FPGA開啟基於雲的「硬體微服務」新時代

微軟人工智慧和研究部門負責人哈里·舒姆(Harry Shum)在今年早些時候召開的微軟Build大會上發表主題演講時透露了口風:微軟Azure雲服務會在某個時候讓廣大開發人員能夠享用現場可編程門陣列(FPGA)。 Azure首席技術官馬克·拉西諾維奇(Mark Russinovich)也談到了Azure「會在將來某個時候將[FPGA]作為一項服務提供給大家。」

FPGA驅動的未來將會是什麼樣子?開發人員會如何使用它?

FPGA無論如何都不是一項新技術;在過去,FPGA專門用於這類特殊的應用:對定製處理硬體的需要在重要性方面壓倒硬體編程的複雜性(要求非常苛嚴的演算法不斷演變時,可以更新這種處理硬體)。

拉西諾維奇聊到處理器時向The New Stack解釋道:「通常情況下,通用性越強,靈活性就越強,可以扔給計算引擎來處理的程序和演算法的種類就越多,不過犧牲了效率。」

構成FPGA的門陣列可加以編程以便運行某種特定的演算法,結合使用邏輯門(通常被實現為查詢表)、運算單元以及數字信號處理器(DSP)來進行乘法運算,使用靜態RAM用於臨時存儲那些計算的結果,並使用可以控制可編程模塊之間聯繫的開關模塊。一些FPGA實際上就是片上系統(SoC),擁有CPU、PCI Express和DMA連接以及乙太網控制器,將可編程陣列轉變成CPU上運行的代碼眼裡的定製加速器。

這種結合意味著FPGA可提供僅僅針對特定演算法的大規模並行機制,而且功耗比GPU低得多。而且它們不像專用集成電路(ASIC),如果你想要改變該演算法(這就是現場可編程這部分的由來),可以重新編程。

FPGA的數據並行機制比CPU強大得多

拉西諾維奇解釋道:「FPGA正合需要,它們能夠非常快速地並行處理數據流。它們像GPU或CPU那樣可以編程,不過針對諸如推理和深度神經網路之類應用的這種並行低延遲環境;如果你需要進行在線語音識別和圖像識別,擁有這種低延遲確實很重要。」

缺點在於,編程和重新編程是用Verilog等複雜的低級硬體定義語言來完成的。ReconfigureIO是一家初創公司,計劃提供雲端硬體加速技術,讓開發人員可以使用Go語言為FPGA編程。公司首席執行官羅布·泰勒(Rob Taylor)告訴The New Stack,熟悉這方面技能的硬體工程師根本就不多。

大多數FPGA開發工作在處理器研發公司進行。而對於習慣使用較高級語言的開發人員來說,這種全然不同的編程模式(你實際上要配置硬體)頗具挑戰性。

泰勒說:「作為一名軟體工程師,你可以開始為簡單硬體編程,但是為功能強大的硬體編程需要幾年的時間才能學會熟練操作。」在極少數情況下,為FPGA編程甚至可能對它造成永久性損壞,不過為硬體編程的工具鏈應該會發出警告。

泰勒表示,這是FPGA從來沒有進入主流的諸多原因之一。「這是搞FPGA技術的代價。如果你只能聘請幾個薪資不菲的工程師,那麼能做的事情很有限。你到頭來獲得的只是應用範圍非常狹窄的特定解決方案,無法享用雲計算帶來的創新成果。」

不過,泰勒認為FPGA是一種很好的解決方法,可以解決一系列問題。「凡是這種情況:你有不斷移動的數據,你在處理這些數據,要獲得答案,或者與別處的人分享該答案。那麼你可以在FPGA上搭建一個內存資料庫,異常快速地進行統計分析,不用接近CPU。這類應用可能包括圖像及視頻處理、實時數據分析、廣告技術、音頻、電信,甚至軟體定義網路(SDN);他特別指出,SDN「仍然大量地消耗資源。」

ReconfigureIO採用的方法使用Go Channels(https://gobyexample.com/channels),泰勒表示Go Channels適合FPGA管道的模式,「不過我們正致力於一個中間層(intermediate layer),我們想讓中間層成為標準化、開源,好讓人們可以隨意使用自己青睞的任何一種語言。」

為FPGA編程很複雜,這就是為什麼讓你可以為賽靈思FPGA編程的亞馬遜網路服務(AWS)FPGAEC2 F1實例針對這群客戶:已經使用FPGA設備來處理基因組學、分析、加密或金融服務等垂直應用領域的工作負載,而且想把那些工作負載引入到雲端。AWS實際上為FPGA配置提供了一種硬體開發套件。其中一些設備生產商(比如Ryft)將會提供API,以便將AWS FPGA實例與其分析平台整合起來,就像它們的FPGA設備已經採用的方式那樣。

Azure內兩個虛擬機之間的帶寬只有每秒4Gbps左右,哪怕每個虛擬機上使用40 gigabit的網路適配器;如果採用FPGA加速網路技術,這個速度可提升到25Gbps。

FPGA廠商開始提供更高級的編程語言供開發人員選擇,比如C、C ++和OpenCL。AWS依賴OpenCLFPGA編程,以便將來吸引更多的開發人員,不過這仍需要大量的專業知識,而且未必與FPGA編程模式很匹配。

拉西諾維奇特別指出:「這仍然是一種非常深奧的開發環境;但我認為,資源會變得越來越易於訪問/享用,這個趨勢很明顯。我認為,你可以設想在將來,開發人員使用不同的語言,藉助相應工具來編寫程序;這些工具會查看你使用的演算法,然後根據剖析或分析結果,確定你所編寫程序的這部分在FPGA上運行更高效,那部分在GPU或CPU上運行更高效,開發人員完全充分利用了平台提供的最佳功能。」

智能網路

微軟在採取一種大不相同的方法。在Azure上,你實際上已經可以使用FPGA驅動的服務,只不過不知道自己在使用FPGA罷了――就像你使用Cosmos DB時不知道自己在使用快閃記憶體SSD,或者使用微軟認知服務(MicrosoftCognitive Services)時,不知道自己在使用GPU,這是同一個道理。實際上,整個Azure網路依賴FPGA驅動的軟體定義網路。

微軟首次開始將FPGA整合到Azure時,初衷是將低延遲和高吞吐量的優點引入到數據非常多、流量非常大的系統,比如必應(Bing)搜索引擎使用的索引伺服器。最初,那些FPGA有自己的網路連接,但是為了簡化網路拓撲,微軟改而將它們連接到與它們所在伺服器同樣的網卡。一旦FPGA直接連接到那些網卡上,它們還可以加速Azure用來路由和負載均衡的軟體定義網路。

FPGA給必應的查詢延遲帶來的影響;即便在查詢負載加倍的情況下,FPGA加速的排名其延遲也要比任何負載下的軟體定義的排名來得低。

與旨在安裝到網卡上的定製矽片一樣,這些FPGA智能網卡(SmartNIC)比CPU更高效,而且耗電量較少。但是隨著微軟改進這個軟體定義網路架構,以便與即將推出的50GB和100GB網路適配器兼容,FPGA可以重新編程,而換成定製晶元就做不到。

這些SmartNIC已經實施了作為Azure軟體定義網路基礎的流表(flow table);將來,它們還可能實施服務質量或RDMA,通過卸載加密計算和錯誤檢查來加快存儲速度。

AzureAccelerated Networking(https://azure.microsoft.com/en-us/updates/accelerated-networking-in-preview/)自去年以來就出現在較龐大的Azure虛擬機上,既適用於Windows Server,又適用於Ubuntu,不過該服務仍處於預覽版狀態,存在拉西諾維奇所說的「極其罕見的兼容性問題」,所以要不要使用得慎重選擇。它還存在一些局限性,比如說,如果你想要將它用於Windows Server和Linux,就需要單獨的Azure訂閱。Azure內兩個虛擬機之間的帶寬只有每秒4Gbps左右,哪怕每個虛擬機上使用40gigabit的網路適配器;如果採用FPGA加速網路,這個速度可達到25Gbps,延遲只有原來的1/5到1/10(具體取決於你的應用)。

FPGA加速的SDN帶來的影響(圖片來源:微軟)

下一步就是為使用那些FPGA的開發人員構建服務,即使FPGA是間接連接的。拉西諾維奇解釋道:「有多種方法可以讓開發人員使用FPGA,將它們用於給使用我們雲的每個開發人員帶來的基礎設施方面的改進,比如SDN。我們想讓開發人員可以使用易於部署和易於使用的深度神經網路(DNN)和推理模型,並在FPGA上運行DNN,那樣他們就能獲得最佳性能。比如說,他們可以在GPU上進行訓練,為我們帶來模型。開發人員不知道底層是FPGA;他們只管將DNN模型交給平台,平台就會以最高效的方式來執行模型。

開發人員會以不同的方式使用Azure中的FPGA(圖片來源:微軟)

拉西諾維奇在Build大會上,用他所說的「數十到數百tera-operations(萬億運算)」演示了FPGA的優勢,「那樣你就能得到真正高效的推理。」他在24個FPGA上而不是在24個CPU上運行同樣的機器學習演算法,表明了延遲縮短至原來的1/150到1/200,能效提高了50倍左右。

開發人員已經可以藉助微軟認知服務API來充分利用這一點。「我們已經將該技術運用於生產環境中的必應,以此作為針對認知服務訓練以及必應索引排名的下一個加速階段的一部分。」

硬體微服務

雖然Azure中部署的每塊FPGA都與CPU裝在同一塊主板上,並作為硬體加速器連接到CPU,但它們也直接連接到Azure網路,那樣它們可以連接到其他FPGA,延遲非常低,而不是數據通過CPU來傳輸而減慢了速度。

這讓你得以極高有效地利用FPGA,還可以靈活地將其用於加速,作為也在CPU上運行的分布式應用的一部分,或者用於嘗試演算法,獲得你仍在開發的加速機制。拉西諾維奇告訴我們:「如果你不確定什麼演算法是壓縮或加密所處理數據的最佳演算法,或者數據形狀會逐漸變化,因而你不想冒將FPGA焊到矽片上這個風險,就可以在FPGA上進行嘗試,並且獲得敏捷性。」

一種管理架構將負責協調那些直接連接的FPGA,所以針對之前用TensorFlow或微軟認知工具包(CNTK)預先訓練的模型而言,DNN的不同層可以放在不同的FPGA上,這讓你有辦法將一個非常深的網路分布在多個設備上,從而避免了許多DNN框架的擴展問題。

將DNN分布在Azure FPGA硬體微服務架構上(圖片來源:微軟)

拉西諾維奇告訴我們:「這對於FPGA來說是普遍得多的用法,我們認為有望在這方面看到大量創新,我們稱之為硬體微服務(hardware microservice)。如果你有大批的FPGA,它們又直接連接到網路,並通過網路可進行編程,那麼你可以構建用我們在如今擁有的標準硬體上無法實現的方式來加速的哪些類別的應用?我們先將該基礎設施用於我們的DNN,但我們預計它會成為一種通用平台。」

他談到了該架構可通過編程將互聯網搜索排名、深度神經網路、SQL加速和SDN卸載等特性納入進來。「AzureData Lake Analytics在考慮將機器學習也納入到FPGA。」

開發人員到頭來會編寫自己的應用程序,以便在該硬體微服務可重新配置計算層上運行?還是他們會以任何方式廣泛地使用FPGA?拉西諾維奇預測,開發人員會結合多種方式來使用FPGA。

「將來開發人員會直接充分利用這種晶元,不過我認為,許多開發人員最終會間接地利用這種晶元,為此充分利用已包括FPGA的代碼庫和框架,或者使用獨立軟體開發商(ISV)或開源社區提供的微服務模式。」將來,他認為其方式會與容器如出一轍。

「如今在開發領域,如果我想要一個REST前端,只需要獲取一個node.js Docker容器。我沒必要自己編寫,只需使用它。我認為,你們會看到同一種模式,到時你會說我想要這個演算法,我想要最有效地部署該演算法,我可以部署到FPGA上,儘管我並不直接編寫進入到FPGA上的代碼,說不定我甚至可以從Docker存儲庫中獲得它!」

對於擁有相應專長來使用FPGA的雲提供商來說,FPGA大有意義,但是它們也可能出現在你收集大量數據的任何地方。「我堅信,FPGA在邊緣有一席之地,因為會有大量的推理工作在邊緣處進行。不是將數據發送到雲端,你可以直接在邊緣處進行處理,可以在FPGA上進行增量式訓練,並隨著在邊緣處使用的數據日漸增多,讓模型日趨完善。」

拉西諾維奇特別指出,離這個目標還有一段時間,不過由於摩爾定律在CPU領域放緩了腳步,GPU成為解決某些問題的一種標準開發工具,FPGA可能也會成為這樣的工具――無論開發人員有沒有意識到自己在使用FPGA。

「我們現處於早期階段,擴大這項技術的應用領域,讓它不僅可以為賽靈思和Altera之類的廠商所使用,還可以為替FPGA尋找更高級編程語言的初創公司所使用。我認為,我們現處於這新一代技術的第一波浪潮,這波浪潮似乎稍縱即逝;每隔5年到10年就會出現一種熱門技術,然後偃旗息鼓,但我認為FPGA眼下立穩了腳跟。」


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 雲頭條 的精彩文章:

Oracle 使用 Kubernetes 來管理其雲容器
雙喜臨門:駐雲科技完成C輪近億元融資,同時發布新品
融合 CDN 服務商星雲完成 Pre-A 輪融資
沒有一家廠商從伺服器上賺到錢!
開源專業高考題出爐,真假開源從業者一測便知!

TAG:雲頭條 |

您可能感興趣

微服務架構中基於DNS的服務發現
簡單才是王道?剛開源的微服務任務調度平台SIA—TASK初探
微服務:API網關在API安全中的作用
DevOps和微服務助攻,新一代容器PaaS平台成數字化轉型利器
融數數據CTO王東:6步建立一個基於微服務的APM平台!
NET Core微服務之服務間的調用方式
OFO小黃車微服務架構演進實踐
微服務構建持久 API 的7大規則
當微服務架構邂逅DevOps
淺談微服務之API網關
SpringCloud微服務實戰開發系列(4)調用微服務
微軟開源旗下的Service Fabric微服務平台
如何基於Golang設計一套微服務架構
別再管你的 API 叫微服務了
SpringCloud實戰開發系列課程-創建部門微服務
中軟國際哈爾濱ETC:六種常用的微服務架構設計模式
下一代的微服務架構基礎是ServiceMesh?
開發機在VPN環境打通雲端微服務集群的實戰技巧
微軟Service Fabric正式開源,入局第三代微服務框架爭霸!
FreeWheel業務系統微服務化過程經驗分享