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