模型大小不斷增長(cháng)給現有架構帶來(lái)了挑戰 Achronix 白皮書(shū) 深度學(xué)習對計算能力的需求正以驚人的速度增長(cháng),其近年來(lái)的發(fā)展速度已從每年翻一番縮短到每三個(gè)月翻一番。深度神經(jīng)網(wǎng)絡(luò )(DNN)模型容量的不斷提升,表明從自然語(yǔ)言處理到圖像處理的各個(gè)領(lǐng)域都得到了改進(jìn)——深度神經(jīng)網(wǎng)絡(luò )是諸如自動(dòng)駕駛和機器人等實(shí)時(shí)應用的關(guān)鍵技術(shù)。例如,Facebook的研究表明,準確率與模型大小的比率呈線(xiàn)性增長(cháng),通過(guò)在更大的數據集進(jìn)行訓練,準確率甚至可以得到進(jìn)一步提高。 目前在許多前沿領(lǐng)域,模型大小的增長(cháng)速度遠快于摩爾定律,用于一些應用的萬(wàn)億參數模型正在考慮之中。雖然很少有生產(chǎn)系統會(huì )達到同樣的極端情況,但在這些示例中,參數數量對性能的影響將在實(shí)際應用中產(chǎn)生連鎖反應。模型大小的增長(cháng)給實(shí)施者帶來(lái)了挑戰。如果不能完全依靠芯片擴展路線(xiàn)圖,就需要其他解決方案來(lái)滿(mǎn)足對模型容量增加部分的需求,而且成本要與部署規模相適應。這種增長(cháng)要求采用定制化的架構,以最大限度地發(fā)揮每個(gè)可用晶體管的性能。 ![]() image001.jpg 圖1:模型大小的增長(cháng)速度(來(lái)源:Linley Group) Parameters (log scale):參數(對數刻度) Image-processing models:圖像處理模型 Language-processing models:語(yǔ)言處理模型 隨著(zhù)參數數量快速增長(cháng),深度學(xué)習架構也在快速演進(jìn)。當深度神經(jīng)網(wǎng)絡(luò )繼續廣泛使用傳統卷積、全連接層和池化層的組合時(shí),市場(chǎng)上也出現了其它結構,諸如自然語(yǔ)言處理(NLP)中的自注意力網(wǎng)絡(luò )。它們仍然需要高速矩陣和面向張量的算法,但是存儲訪(fǎng)問(wèn)模式的變化可能會(huì )給圖形處理器(GPU)和當前現有的加速器帶來(lái)麻煩。 結構上的變化意味著(zhù)諸如每秒萬(wàn)億次操作(TOps)等常用指標的相關(guān)性在降低。通常情況下,處理引擎無(wú)法達到其峰值TOps分數,因為如果不改變模型的處理方式,存儲和數據傳輸基礎設施就無(wú)法提供足夠的吞吐量。例如,批處理輸入樣本是一種常見(jiàn)的方法,因為它通?梢蕴岣咴S多架構上可用的并行性。但是,批處理增加了響應的延遲,這在實(shí)時(shí)推理應用中通常是不可接受的。 數值靈活性是實(shí)現高吞吐量的一種途徑 提高推理性能的一種途徑是使計算的數值分辨率去適應各個(gè)獨立層的需求,這也代表了與架構的快速演進(jìn)相適應。一般來(lái)說(shuō),與訓練所需的精度相比,許多深度學(xué)習模型在推理過(guò)程中可以接受明顯的精度損失和增加的量化誤差,而訓練通常使用標準或雙精度浮點(diǎn)算法進(jìn)行。這些格式能夠在非常寬的動(dòng)態(tài)范圍內支持高精度數值。這一特性在訓練中很重要,因為訓練中常見(jiàn)的反向傳播算法需要在每次傳遞時(shí)對許多權重進(jìn)行細微更改,以確保收斂。 通常來(lái)說(shuō),浮點(diǎn)運算需要大量的硬件支持才能實(shí)現高分辨率數據類(lèi)型的低延遲處理,它們最初被開(kāi)發(fā)用來(lái)支持高性能計算機上的科學(xué)應用,完全支持它所需的開(kāi)銷(xiāo)并不是一個(gè)主要問(wèn)題。 許多推理部署都將模型轉換為使用定點(diǎn)運算操作,這大大降低了精度。在這些情況下,對準確性的影響通常是最小的。事實(shí)上,有些層可以轉換為使用極其有限的數值范圍,甚至二進(jìn)制或三進(jìn)制數值也都是可行的選擇。 然而,整數運算并不總是一種有效的解決方案。有些濾波器和數據層就需要高動(dòng)態(tài)范圍。為了滿(mǎn)足這一要求,整數硬件可能需要以24位或32位字長(cháng)來(lái)處理數據,這將比8位或16位的整數數據類(lèi)型消耗更多的資源,這些數據類(lèi)型很容易在典型的單指令多數據(SIMD)加速器中得到支持。 一種折衷方案是使用窄浮點(diǎn)格式,例如適合16位字長(cháng)的格式。這種選擇可以實(shí)現更大的并行性,但它并沒(méi)有克服大多數浮點(diǎn)數據類(lèi)型固有的性能障礙。問(wèn)題在于,在每次計算后,浮點(diǎn)格式的兩部分都需要進(jìn)行調整,因為尾數的最高有效位沒(méi)有顯式存儲。因此,指數的大小需要通過(guò)一系列的邏輯移位操作來(lái)調整,以確保隱含的前導“1”始終存在。這種規范化操作的好處是任何單個(gè)數值都只有一種表示形式,這對于用戶(hù)應用程序中的軟件兼容性很重要。然而,對于許多信號處理和人工智能推理常規運算來(lái)說(shuō),這是不必要的。 這些操作的大部分硬件開(kāi)銷(xiāo)都可以通過(guò)在每次計算后無(wú)需標準化尾數和調整指數來(lái)避免。這是塊浮點(diǎn)算法所采用的方法,這種數據格式已被用于標準定點(diǎn)數字信號處理(DSP),以提高其在移動(dòng)設備的音頻處理算法、數字用戶(hù)線(xiàn)路(DSL)調制解調器和雷達系統上的性能。 ![]() image003.jpg 圖2:塊浮點(diǎn)計算示例 mantissa:尾數 block exponent:塊指數 使用塊浮點(diǎn)算法,無(wú)需將尾數左對齊。用于一系列計算的數據元素可以共享相同的指數,這一變化簡(jiǎn)化了執行通道的設計。對占據相似動(dòng)態(tài)范圍的數值進(jìn)行四舍五入造成的精度損失可被降到最小。在設計時(shí)就要為每個(gè)計算塊選擇合適的范圍。在計算塊完成后,退出函數就可以對數值進(jìn)行四舍五入和標準化處理,以便在需要時(shí)將它們用作常規的浮點(diǎn)值。 支持塊浮點(diǎn)格式是機器學(xué)習處理器(MLP)的功能之一。Achronix的Speedster7t FPGA器件和Speedcore eFPGA架構提供了這種高度靈活的算術(shù)邏輯單元。機器學(xué)習處理器針對人工智能應用所需的點(diǎn)積和類(lèi)似矩陣運算進(jìn)行了優(yōu)化。相比傳統浮點(diǎn),這些機器學(xué)習處理器對塊浮點(diǎn)的支持提供了實(shí)質(zhì)性的改進(jìn)。16位塊浮點(diǎn)運算的吞吐量是傳統的半精度浮點(diǎn)運算的8倍,使其與8位整數運算的速度一樣快,與僅以整數形式的運算相比,有功功耗僅增加了15%。 另一種可能很重要的數據類(lèi)型是TensorFloat 32(TF32)格式,與標準精度格式相比,該格式的精度有所降低,但保持了較高的動(dòng)態(tài)范圍。TF32也缺乏塊指數處理的優(yōu)化吞吐量,但對于一些應用是有用的,在這些應用中,使用TensorFlow和類(lèi)似環(huán)境所創(chuàng )建的模型的易于移植性是很重要的。Speedster7t FPGA中機器學(xué)習處理器所具有的高度靈活性使得使用24位浮點(diǎn)模式來(lái)處理TF32算法成為可能。此外,機器學(xué)習處理器的高度可配置性意味著(zhù)可以支持一個(gè)全新的、塊浮點(diǎn)版本的TF32,其中四個(gè)樣本共享同一個(gè)指數。機器學(xué)習處理器支持的塊浮點(diǎn)TF32,其密度是傳統TF32的兩倍。 ![]() image005.jpg 圖3:機器學(xué)習處理器(MLP)的結構 Wireless:無(wú)線(xiàn) AI/ML:人工智能/機器學(xué)習 Input Values:輸入值 Input Layer:輸入層 Hidden Layer 1:隱藏層1 Hidden Layer 2:隱藏層2 Output Layer:輸出層 處理靈活性?xún)?yōu)化了算法支持 雖然機器學(xué)習處理器能夠支持多種數據類(lèi)型,這對于推理應用而言是至關(guān)重要的,但只有成為FPGA架構的一部分,它的強大功能才能釋放出來(lái)?奢p松定義不同互連結構的能力使FPGA從大多數架構中脫穎而出。在FPGA中同時(shí)定義互連和算術(shù)邏輯的能力簡(jiǎn)化了構建一種平衡架構的過(guò)程。設計人員不僅能夠為自定義數據類(lèi)型構建直接支持,還可以去定義最合適的互連結構,來(lái)將數據傳入和傳出處理引擎?芍鼐幊痰奶匦赃M(jìn)一步提供了應對人工智能快速演進(jìn)的能力。通過(guò)修改FPGA的邏輯可以輕松支持自定義層中數據流的變化。 FPGA的一個(gè)主要優(yōu)勢是可以輕松地在優(yōu)化的嵌入式計算引擎和由查找表單元實(shí)現的可編程邏輯之間切換功能。一些功能可以很好地映射到嵌入式計算引擎上,例如Speedster7t MLP。又如,較高精度的算法最好分配給機器學(xué)習處理器(MLP),因為增加的位寬會(huì )導致功能單元的大小呈指數增長(cháng),這些功能單元是用來(lái)實(shí)現諸如高速乘法之類(lèi)的功能。 較低精度的整數運算通?梢杂行У胤峙浣oFPGA架構中常見(jiàn)的查找表(LUT)。設計人員可以選擇使用簡(jiǎn)單的位串行乘法器電路來(lái)實(shí)現高延遲、高并行性的邏輯陣列;蛘,他們可以通過(guò)構建進(jìn)位保存和超前進(jìn)位的加法器等結構來(lái)為每個(gè)功能分配更多的邏輯,這些結構通常用來(lái)實(shí)現低延遲的乘法器。通過(guò)Speedster7t FPGA器件中獨特的LUT配置增強了對高速算法的支持,其中LUT提供了一種實(shí)現Booth編碼的高效機制,這是一種節省面積的乘法方法。 結果是,對于一個(gè)給定的位寬,實(shí)現整數乘法器所需的LUT數量可以減半。隨著(zhù)機器學(xué)習中的隱私和安全性等問(wèn)題變得越來(lái)越重要,應對措施可能是在模型中部署同態(tài)加密形式。這些協(xié)議通常涉及非常適合于LUT實(shí)現的模式和位域操作,有助于鞏固FPGA作為人工智能未來(lái)驗證技術(shù)的地位。 數據傳輸是吞吐量的關(guān)鍵 為了在機器學(xué)習環(huán)境中充分利用數值自定義,周?chē)募軜嬕餐瑯又匾。在越?lái)越不規范的圖形表示中,能隨時(shí)在需要的地方和時(shí)間傳輸數據是可編程硬件的一個(gè)關(guān)鍵優(yōu)勢。但是,并非所有的FPGA架構都是一樣的。 傳統FPGA架構的一個(gè)問(wèn)題是,它們是從早期應用演變而來(lái)的;但在早期應用中,其主要功能是實(shí)現接口和控制電路邏輯。隨著(zhù)時(shí)間的推移,由于這些器件為蜂窩移動(dòng)通信基站制造商提供了一種從愈發(fā)昂貴的ASIC中轉移出來(lái)的方法,FPGA架構結合了DSP模塊來(lái)處理濾波和信道估計功能。原則上,這些DSP模塊都可以處理人工智能功能。但是,這些模塊最初設計主要是用于處理一維有限沖激響應(1D FIR)濾波器,這些濾波器使用一個(gè)相對簡(jiǎn)單的通道通過(guò)處理單元傳輸數據,一系列固定系數在該通道中被應用于連續的樣本流。 傳統的處理器架構對卷積層的支持相對簡(jiǎn)單,而對其他的則更為復雜。例如,全連接層需要將一層中每個(gè)神經(jīng)元的輸出應用到下一層的所有神經(jīng)元上。其結果是,算術(shù)邏輯單元之間的數據流比傳統DSP應用中的要復雜得多,并且在吞吐量較高的情況下,會(huì )給互連帶來(lái)更大的壓力。 盡管諸如DSP內核之類(lèi)的處理引擎可以在每個(gè)周期中生成一個(gè)結果,但FPGA內部的布線(xiàn)限制可能導致無(wú)法足夠快速地將數據傳遞給它。通常,對于專(zhuān)為許多傳統FPGA設計的、通信系統中常見(jiàn)的1D FIR濾波器來(lái)說(shuō),擁塞不是問(wèn)題。每個(gè)濾波階段所產(chǎn)生的結果都可以輕松地傳遞到下一個(gè)階段。但是,張量操作所需的更高的互連以及機器學(xué)習應用較低的數據局部性,使得互連對于任何實(shí)現而言都更加重要。 ![]() image007.jpg 圖4:濾波器和人工智能數據流 Memory Cascade Out:存儲級聯(lián)輸出 Operand Cascade in:操作數級聯(lián) Register File:寄存器文件 Fracturable:可分割 Adder/Accumulator:加法器/累加器 Memory Cascade in:存儲級聯(lián) 機器學(xué)習中的數據局部性問(wèn)題需要注意多層級的互連設計。由于在最有效的模型中參數數量龐大,片外數據存儲通常是必需的。關(guān)鍵要求是可以在需要時(shí)以低延遲傳輸數據的機制,并使用靠近處理引擎的高效便箋式存儲器,以最有效地利用預取以及其他使用可預測訪(fǎng)問(wèn)模式的策略,來(lái)確保數據在合適的時(shí)間可用。 在Speedster7t架構中,有以下三項用于數據傳輸的創(chuàng )新: ·優(yōu)化的存儲層次結構 ·高效的本地布線(xiàn)技術(shù) ·一個(gè)用于片內和片外數據傳輸的高速二維片上網(wǎng)絡(luò )(2D NoC) 傳統的FPGA通常具有分布在整個(gè)邏輯架構上的片上RAM塊,這些RAM塊被放置在距離處理引擎有一定距離的地方。對于典型的FPGA設計來(lái)說(shuō),這種選擇是一種有效的架構,但在人工智能環(huán)境中,它帶來(lái)了額外的和不必要的布線(xiàn)開(kāi)銷(xiāo)。在Speedster7t架構中,每個(gè)機器學(xué)習處理器(MLP)都與一個(gè)72kb的雙端口塊RAM(BRAM72k)和一個(gè)較小的2kb的雙端口邏輯RAM(LRAM2k)相關(guān)聯(lián),其中LRAM2k可以作為一個(gè)緊密耦合的寄存器文件。 可以通過(guò)FPGA布線(xiàn)資源分別訪(fǎng)問(wèn)機器學(xué)習處理器(MLP)及其相關(guān)聯(lián)的存儲器。但是,如果一個(gè)存儲器正在驅動(dòng)關(guān)聯(lián)的MLP,則它可以使用直接連接,從而卸載FPGA布線(xiàn)資源并提供高帶寬連接。 在人工智能應用中,BRAM可以作為一個(gè)存儲器,用于存儲那些預計不會(huì )在每個(gè)周期中發(fā)生變化的值,諸如神經(jīng)元權重和激活值。LRAM更適合存儲只有短期數據局部性的臨時(shí)值,諸如輸入樣本的短通道以及用于張量收縮和池化活動(dòng)的累積值。 該架構考慮到需要能夠將大型復雜的層劃分為可并行操作的段,并為每個(gè)段提供臨時(shí)數據值。BRAM和LRAM都具有級聯(lián)連接功能,可輕松支持機器學(xué)習加速器中常用的脈動(dòng)陣列的構建。 ![]() image009.jpg 圖5:具有存儲和級聯(lián)連接功能的MLP MLP可以從邏輯陣列、共享數據的級聯(lián)路徑以及關(guān)聯(lián)的BRAM72k和LRAM2k逐周期驅動(dòng)。這種安排能夠構建復雜的調度機制和數據處理通道,使MLP持續得到數據支持,同時(shí)支持神經(jīng)元之間盡可能廣泛的連接模式。為MLP持續提供數據是提高有效TOps算力的關(guān)鍵。 MLP的輸出具有同樣的靈活性,能夠創(chuàng )建脈動(dòng)陣列和更復雜的布線(xiàn)拓撲,從而為深度學(xué)習模型中可能需要的每種類(lèi)型的層提供優(yōu)化的架構。 ![]() image011.jpg 圖6:具有端點(diǎn)和I/O塊的NoC Multiplier / multiplicand fractions after converting inputs to have the same exponent:將輸入轉換為具有相同指數后的乘數/被乘數分數 Multiplier block exponent:乘數塊指數 Multiplicand block exponent:被乘數塊指數 Integer Multiply / Add Tree:整數乘法/加法樹(shù): Convert to Floating Point:轉換為浮點(diǎn) Floating Point Accumulation:浮點(diǎn)累加 Round to desired precision:四舍五入到所需精度 Speedster7t架構中的2D NoC提供了從邏輯陣列的可編程邏輯到位于I/O環(huán)中的高速接口子系統的高帶寬連接,用于連接到片外資源。它們包括用于高速存儲訪(fǎng)問(wèn)的GDDR6和諸如PCIe Gen5和400G以太網(wǎng)等片內互連協(xié)議。這種結構支持構建高度并行化的架構,以及基于中央FPGA的高度數據優(yōu)化的加速器。 通過(guò)將高密度數據包路由到分布在整個(gè)邏輯陣列上的數百個(gè)接入點(diǎn),2D NoC使得大幅增加FPGA上的可用帶寬成為可能。傳統的FPGA必須使用數千個(gè)單獨編程的布線(xiàn)路徑來(lái)實(shí)現相同的吞吐量,而這樣做會(huì )大量吃掉本地的互連資源。通過(guò)網(wǎng)絡(luò )接入點(diǎn)將千兆數據傳輸到本地區域,2D NoC緩解了布線(xiàn)問(wèn)題,同時(shí)支持輕松而快速地將數據傳入和傳出MLP和基于LUT的定制化處理器。 相關(guān)的資源節省是相當可觀(guān)的——一個(gè)采用傳統FPGA軟邏輯實(shí)現的2D NoC具有64個(gè)NoC接入點(diǎn)(NAP),每個(gè)接入點(diǎn)提供一個(gè)運行頻率為400MHz的128位接口,將消耗390kLUT。相比之下,Speedster 7t1500器件中的硬2D NoC具有80個(gè)NAP,不消耗任何FPGA軟邏輯,并且提供了更高的帶寬。 使用2D NoC還有其他的一些優(yōu)勢。由于相鄰區域之間互連擁塞程度較低,因此邏輯設計更易于布局。因為無(wú)需從相鄰區域分配資源來(lái)實(shí)現高帶寬路徑的控制邏輯,因此設計也更加有規律。另一個(gè)好處是極大地簡(jiǎn)化了局部性重新配置——NAP支持單個(gè)區域成為有效的獨立單元,這些單元可以根據應用的需要進(jìn)行交換導入和導出。這種可重配置的方法反過(guò)來(lái)又支持需要在特定時(shí)間使用的不同模型,或者支持片上微調或定期對模型進(jìn)行再訓練這樣的架構。 結論 隨著(zhù)模型增大和結構上變得更加復雜,FPGA正成為一種越來(lái)越具吸引力的基礎器件來(lái)構建高效、低延遲AI推理解決方案,而這要歸功于其對多種數值數據類(lèi)型和數據導向功能的支持。但是,僅僅將傳統的FPGA應用于機器學(xué)習中是遠遠不夠的。機器學(xué)習以數據為中心的特性需要一種平衡的架構,以確保性能不受人為限制?紤]到機器學(xué)習的特點(diǎn),以及不僅是現在,而且在其未來(lái)的開(kāi)發(fā)需求,Achronix Speedster7t FPGA為AI推理提供了理想的基礎器件。 |