人工智能(AI),,特別是機器學習正在重塑世界的運作方式,,也為工業(yè)和商業(yè)帶來了無數(shù)的機會,,但支持神經(jīng)網(wǎng)絡演進,、多樣性,、訓練和推理的最佳硬件架構尚未確定,。本文針對這一領域,,就嵌入式FPGA(eFPGA)的應用做一些探討。
人工智能應用領域涵蓋多個不同的市場,,如自動駕駛,、醫(yī)療診斷、家用電器,、工業(yè)自動化,、自適應網(wǎng)站、財務分析和網(wǎng)絡基礎設施,。
這些應用(特別是在邊緣實施時)需要高性能和低延遲才能成功響應實時變化,。它們還需要低功耗,,這就使能源密集型云解決方案無法使用。另外,,更深層的要求是:這些嵌入式系統(tǒng)即使在沒有網(wǎng)絡連接到云的情況下,,也總是處于開啟狀態(tài)并準備好進行響應。這些因素的加在一起,,需要改變傳統(tǒng)的硬件設計方式,。
神經(jīng)網(wǎng)絡
許多算法可用于機器學習,但當今最成功的算法是深度神經(jīng)網(wǎng)絡,。受生物處理過程和結構的啟發(fā),,深度神經(jīng)網(wǎng)絡可以在前饋中采用10層或更多層。 每一層使用虛擬神經(jīng)元對一組輸入執(zhí)行加權求和,,然后將結果傳遞給下一層中的一個或多個神經(jīng)元,。
雖然有一種常見的核心方法來構建最深的神經(jīng)網(wǎng)絡,但目前還沒有一種適用于深度學習的通用體系結構,。 越來越多的深度學習應用將合并不基于模擬神經(jīng)元的元素,。 隨著技術的不斷發(fā)展,許多不同的架構將會出現(xiàn),。 就像有機大腦本身一樣,,可塑性是任何旨在將機器學習融入其產(chǎn)品設計的組織的主要要求。
訓練和推理
有機大腦和人工智能之間的一個重要差異是,,當訓練好的網(wǎng)絡被要求作出決定時,能夠區(qū)分諸如訓練和推理階段等活動,。 在2000~2010年,,人們發(fā)現(xiàn)了有效的技術,可以一次對多個層次進行訓練,。這些技術依賴于通常由使用許多處理器來完成任務的服務器提供的巨大計算能力,。訓練過程在后臺進行 - 通常在云端進行 - 不需要實時生成結果。
對于推理,,計算需求低于訓練,,但通常需要在大多數(shù)現(xiàn)實世界的應用程序中提供實時響應。 高能效并行處理是推理系統(tǒng)的關鍵要求,,因為許多系統(tǒng)不具備永久的外部電源,。
通常,訓練要求用于計算神經(jīng)權重的浮點運算具有高精度,,在大多數(shù)情況下,,32位浮點已被證明是足夠的精度需求。
對于推理來說,,錯誤累積的可能性較小,,通常,,8位定點算術就足夠了,對于某些連接,,4位分辨率不會顯著增加錯誤,,系統(tǒng)將受益于重新配置數(shù)據(jù)路徑的能力,以便他們能夠以4位或8位的精度并行處理多個數(shù)據(jù)流,。但是,,設計人員希望保留在需要的地方結合高精度算術執(zhí)行單元的能力。
顯然,,機器學習系統(tǒng)需要提供高性能和可塑性組合的硬件基質,。
機器學習基質
許多處理結構可用于支持高性能機器學習,但是對于實時嵌入式系統(tǒng)來說,,由于功耗和性能的原因,,有些將在早期階段被排除。
在2010~2015年期間,,通用圖形處理單元(GPGPU)成為訓練和推理的熱門選擇,。GPGPU提供數(shù)百個片上浮點單元,能夠并行處理多個神經(jīng)元的輸入,,比通用CPU集群的輸入快得多,。
然而,將GPGPU應用于深度學習架構存在一些缺點,,這些設備主要用于加速2D和3D圖形應用程序,,這些應用程序使用均勻且可預測的內存訪問模式,它們的結構支持算術運算密集型算法,,這些算法可以很容易地在存儲器中緊密地組合在一起,,然后可以合理高效地處理卷積神經(jīng)網(wǎng)絡層。然而,,其他類型的層可能會有麻煩,,因為他們更加強調神經(jīng)元之間的數(shù)據(jù)傳輸,從而使本地存儲器架構效率降低,,這樣就降低了性能和能效,。
具有定制邏輯和內存管理器的ASIC可以克服GPGPU在實施深度學習系統(tǒng)時存在的挑戰(zhàn)和瓶頸。ASIC針對神經(jīng)網(wǎng)絡代碼中遇到的不同訪問模式進行調整的內存管理單元可以在提高整體速度方面做得更好,。在諸如卷積神經(jīng)網(wǎng)絡(CNN)層的結構中,,通過不將數(shù)據(jù)傳入和傳出本地或中間存儲器的方式,可以實現(xiàn)節(jié)能,。
與基于軟件的處理器相比,,ASIC的問題是其相對不靈活。我們可以對多種深度學習結構進行原型設計,然后選擇基于硅集成的優(yōu)化選項,。一個特定的應用程序可能需要部署更多的卷積層或增加濾波器內核的復雜性來處理特定類型的輸入,,支持這種復雜性可能需要相對于其他硬件加速器而言增加數(shù)量龐大的濾波器內核處理器,這種結構可以通過ASIC實現(xiàn),,但它很可能不適合改變算法或相鄰應用,。
FPGA具有實現(xiàn)定制處理器和內存管理技術的諸多優(yōu)勢,它不需要將實現(xiàn)局限在特定的不變硬件結構,。今天,,許多FPGA架構提供了完全可定制的邏輯和數(shù)字信號處理(DSP)引擎的整合,可支持固定和浮點運算,。在許多情況下,,DSP引擎采用由8位或16位單元組成的構建塊方法,這些方法可以將它們組合起來以支持更高精度的數(shù)據(jù)類型,,通過在查找表(LUT)中實現(xiàn)的邏輯,,可以適應低精度需求。
對邏輯陣列進行返工的能力使FPGA很容易調整并行處理器的結構和它們之間的路由,,以滿足應用的特定需求,。如果訓練結果指出如何擴展或重新布置圖層以提高性能,那么其自由度仍然有調整空間,。然而,,可編程邏輯陣列相對低的效率可能意味著,當應用程序確實需要網(wǎng)絡的某些高吞吐量專用功能時,,用戶必須在神經(jīng)網(wǎng)絡內不同層之間的性能共享功能上妥協(xié),。 一種方法是使用更小的ASIC來擴展FPGA,從而為常用功能(例如卷積內核或max-pooling計算)提供加速,。
將FPGA架構嵌入片上系統(tǒng)(SoC)可以克服獨立FPGA和ASIC的缺點,,以及在它們之間傳遞數(shù)據(jù)的問題。 嵌入到ASIC中的一個或多個FPGA提供了動態(tài)調整神經(jīng)網(wǎng)絡性能的能力,,提供了充分利用定制引擎所需的高數(shù)據(jù)傳輸帶寬。
eFPGA橫空出世
基于此,,嵌入式FPGA應運而生,。eFPGA概念第一次進入大眾視野是在2014年,由UCLA的Cheng C. Wang,,F(xiàn)ang-Li Yuan和Dejan Markovic等人在ISSCC發(fā)表的文章,,“A Multi-Granularity FPGA With Hierarchical Interconnects for Efficient and Flexible Mobile Computing”。
這篇文章中,,作者通過創(chuàng)造性地設計互聯(lián)單元,,一舉解決了FPGA的功耗、性能和成本受到布線資源限制的問題,從而使得eFPGA集成到SoC中真正變?yōu)榭赡?,而該論文也因其突出貢獻獲得了ISSCC Lewis Award,。之后,Cheng C. Wang,,F(xiàn)ang-Li Yuan和Dejan Markovic就利用該論文中的成果成立了Flex Logix,,并推廣eFPGA的概念,力爭使其實現(xiàn)商用化,。
到了2017年,,eFPGA的概念已經(jīng)獲得了業(yè)界的廣泛認可,而該領域的公司也在慢慢變多,。到目前為止,,業(yè)界主要供應商包括:Flex Logix、Achronix,、Menta,、QuickLogic、NanoXplore,、Efinix和Adicsys,。
以上這7家公司采采取3種商業(yè)模式和技術發(fā)展途徑:Achronix同時提供FPGA和eFPGA;Menta,、NanoXplore和Adicsys提供軟IP eFPGA,,F(xiàn)lex Logix全部是硬核eFPGA,QuickLogic采用了GloablFoundry工藝的硬IP,,Efinix是硬IP技術,。
據(jù)悉,中芯國際已經(jīng)與QuickLogic合作,,基于中芯國際40nm低漏電 (40LL) 工藝,,推出了ArcticPro 嵌入式 FPGA技術,是業(yè)界首個在中芯國際40LL技術節(jié)點上提供的eFPGA IP,。
與傳統(tǒng)實現(xiàn)方案相比,,eFPGA可以實現(xiàn)吞吐量和可重編程性之間的最佳平衡,并提供真實世界機器學習系統(tǒng)所需的性能,。
片上集成FPGA模塊的能力還通過以下方式節(jié)省了大量的硅片面積:
1)去除了與獨立FPGA關聯(lián)的耗電量大的I / O
2)將固定功能移至更高效的ASIC模塊
3)將重復功能轉換為自定義塊,。
機器學習中的eFPGA
由于AI/機器學習屬于高端應用,其面臨著算法的變化,,是一個高計算需求的應用,。
eFPGA是一種高度靈活的解決方案,可支持高性能機器學習應用程序所需的數(shù)據(jù)吞吐量,。 不同的架構為設計人員提供了按照應用程序的要求混合和匹配eFPGA功能的能力,。 一些核心功能,,包括基于四輸入LUT的邏輯,用于寄存器文件和類似用途的小型面向邏輯的存儲器(LRAM),,較大的塊RAM(BRAM)以及可配置的DSP模塊,。
核心功能還可以通過定制模塊進行增強,這些定制模塊提供了更多專用功能,,這些功能在可編程邏輯中是硅密集型的,,例如為流水線訪問優(yōu)化的三態(tài)內容尋址存儲器,超寬多路復用器和存儲器模塊,。
通過可嵌入架構,,SoC中的定制內核可以訪問可編程架構,而無需犧牲片外訪問的能耗和性能,,無需FPGA架構周圍的可編程I / O緩沖器,,因此,解決方案內的整個裸片面積就會減少,。 此外,,該架構的模塊化特性使得將該技術移植到各種工藝技術中變得很輕松,即使是新興的7nm節(jié)點也沒問題,。
這些功能是為嵌入式系統(tǒng)提供實時AI加速的最佳起點,,這些嵌入式系統(tǒng)涵蓋從消費類電子電器到高級機器人和自動駕駛汽車。
機器學習技術代表了嵌入式系統(tǒng)的新領域,,實時人工智能將擴大各種應用,,但只有在能夠以經(jīng)濟高效的方式執(zhí)行時才能實現(xiàn)市場化量產(chǎn)。諸如多核CPU,、GPGPU和獨立FPGA之類的現(xiàn)有解決方案可用于支持高級AI算法,,如深度學習,但它們無法滿足開發(fā)人員隨著機器學習體系結構發(fā)展而增加的硬件需求,。
AI需要對數(shù)據(jù)和性能,、內存延遲以及吞吐量進行仔細的平衡,這需要基于將盡可能多的功能引入ASIC或SoC的方法,。 但是單芯片器件需要可塑性來處理機器學習項目中不可避免的結構變化,。eFPGA技術則為市場所需的定制邏輯提供了靈活性和支持能力的完美整合。
eFPGA在AI應用中的挑戰(zhàn)
eFPGA有諸多優(yōu)點,,但作為一種新型技術,,其在具體應用中,同樣面臨著一些挑戰(zhàn),,特別是對于AI而言,人工智能本身就是新興應用,,它們組合在一起,,在實踐當中自然會遇到一些難題。
比如,可靠性和良率問題,,工程師在這方面有擔憂,,純邏輯制程在這方面的優(yōu)勢還需要進一步觀察;測試也是個問題,,客戶需要用戶筆記來幫助設置,、調試FPGA設計,當然,,eFPGA在這方面是有先天優(yōu)勢的,,可以測完再配置為需要的文件;另外還有時序問題,,集成硬核很容易,,但是時鐘同步很難,因為不同于硅SoC的時序是不變的,,eFPGA的時序是變化的,,如何匹配是個問題。