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