本文概要
從深度嵌入式系統(tǒng)到超大規(guī)模數(shù)據(jù)中心部署,人工智能(AI)和機器學(xué)習(xí)(ML)技術(shù)正在為其中迅速擴展的一系列的產(chǎn)品和應(yīng)用提供支持。盡管支持這些應(yīng)用的硬件設(shè)計存在很大程度的差異,但都需要硬件加速。
深度學(xué)習(xí)技術(shù)需要大量的張量算術(shù)運算(tensor arithmetic operation)。為了支持實時執(zhí)行,存儲器和處理器的性能必須滿足比標(biāo)準(zhǔn)軟件驅(qū)動架構(gòu)盡可能高得多的性能目標(biāo)。這種需求導(dǎo)致去使用基于專用硬件加速器的設(shè)計,來執(zhí)行并行化和高度流水線化的張量算術(shù)運算。為了避免通道阻塞,數(shù)據(jù)必須在合適的位置,合適的時間,以合適的格式出現(xiàn)。專用的數(shù)據(jù)編排硬件避免了加速器通道阻塞,從而支持以最高效率運行。
數(shù)據(jù)編排包括預(yù)處理和后處理操作,確保數(shù)據(jù)以最佳速度和最適合進行高效處理的格式傳輸?shù)綑C器學(xué)習(xí)引擎中。操作范圍從資源管理和使用規(guī)劃,到I/O適配、轉(zhuǎn)碼、轉(zhuǎn)換和傳感器融合,再到共享存儲陣列內(nèi)的數(shù)據(jù)壓縮和重新排列。如何部署這些功能將取決于目標(biāo)應(yīng)用的性能和成本要求,但對于大多數(shù)應(yīng)用場景而言,針對數(shù)據(jù)攝取、轉(zhuǎn)換和傳輸進行優(yōu)化的可編程邏輯平臺為機器學(xué)習(xí)加速器提供了最佳的數(shù)據(jù)編排策略。
引言
深度學(xué)習(xí)給計算硬件帶來了巨大的壓力。向?qū)S眉铀倨鞯霓D(zhuǎn)變?yōu)?a target="_blank">芯片技術(shù)提供了一種與人工智能發(fā)展保持同步的方法,但這些單元本身并不能夠滿足以更低的成本獲得更高性能的需求。
可以理解的是,集成電路(IC)供應(yīng)商和系統(tǒng)公司一直專注于其矩陣和張量處理陣列的原始性能。在峰值吞吐量下,這些架構(gòu)可以輕松達到以每秒萬億次操作(TOPS)衡量的性能水平,即使對于旨在用于邊緣計算的系統(tǒng)也是如此。盡管可以理解,但如果由于數(shù)據(jù)不可用或需要為每個模型層轉(zhuǎn)換為正確的格式而導(dǎo)致延遲,那么對峰值TOPS的關(guān)注會帶來硬件利用率不足的風(fēng)險。
系統(tǒng)必須對網(wǎng)絡(luò)和存儲延遲進行補償,并確保數(shù)據(jù)元素的格式和位置合適,同時以一致的速率傳入和傳出人工智能加速器。數(shù)據(jù)編排提供了在每個時鐘周期上確保數(shù)據(jù)格式和位置合適的方法,從而最大限度地提高系統(tǒng)吞吐量。
由于典型人工智能實現(xiàn)的復(fù)雜性,所以無論是位于數(shù)據(jù)中心、邊緣計算環(huán)境還是實時嵌入式應(yīng)用,如自動駕駛輔助系統(tǒng)(ADAS)設(shè)計,有許多任務(wù)必須由數(shù)據(jù)編排引擎處理,這些任務(wù)包括:
- 數(shù)據(jù)操作(manipulation)
- 在多個矢量單元之間進行調(diào)度和負載平衡
- 數(shù)據(jù)損壞的數(shù)據(jù)包檢查,例如由傳感器故障造成的數(shù)據(jù)損壞
盡管可以通過向核心處理陣列添加數(shù)據(jù)控制和異常處理硬件來實現(xiàn)這些功能,但是由于可能需要的操作種類繁多,以及隨著人工智能模型的發(fā)展對靈活性的需求也越來越高,這使得將這些功能硬連線到核心加速器芯片中可能成為一種昂貴的短期選擇。例如,在一些應(yīng)用環(huán)境中,加密支持正迅速成為確保高數(shù)據(jù)安全性的需求,但根據(jù)每層數(shù)據(jù)的應(yīng)用敏感性,可能會使用不同級別的加密。固定架構(gòu)解決方案存在著無法適應(yīng)不斷變化的需求的風(fēng)險。
一種可能的方法是使用一個可編程的微處理器來控制通過加速器的數(shù)據(jù)流。這種方法的問題在于軟件執(zhí)行根本無法滿足加速器硬件的需求。需要一個更加以硬件為中心的數(shù)據(jù)編排響應(yīng),這使得加速器設(shè)計完全專注于核心通道效率成為可能。外部數(shù)據(jù)編排可以處理所有的存儲和I/O管理,確保操作數(shù)和權(quán)重的傳輸不間斷。由于數(shù)據(jù)編排引擎必須處理應(yīng)用程序和模型設(shè)計的修訂和更改,因此硬連線邏輯不是一種合適的方法。可編程邏輯支持修改,并避免了數(shù)據(jù)編排引擎無法更新的風(fēng)險。
原則上,現(xiàn)場可編程邏輯門陣列(FPGA)結(jié)合了分布式存儲器、算術(shù)單元和查找表,從而提供了組合功能,該組合功能非常適合人工智能驅(qū)動的應(yīng)用程序所需的流數(shù)據(jù)實時重組、重新映射和存儲器管理。FPGA支持創(chuàng)建定制的硬件電路,支持深度流水線化人工智能加速器的密集數(shù)據(jù)流,同時使用戶能夠根據(jù)需要改變實現(xiàn)方式以適應(yīng)新的架構(gòu)。然而,數(shù)據(jù)編排的性能要求需要新的FPGA設(shè)計方法。
數(shù)據(jù)編排的應(yīng)用場景
在數(shù)據(jù)中心、邊緣計算和嵌入式系統(tǒng)部署等應(yīng)用場景中,有許多不同類型的數(shù)據(jù)編排架構(gòu)。例如,在數(shù)據(jù)中心應(yīng)用環(huán)境中,多個加速器可以部署在單個模型上,它們的數(shù)據(jù)吞吐量由一個或多個數(shù)據(jù)編排引擎管理。
推理系統(tǒng)需要數(shù)據(jù)編排來確保每個工作引擎的最大效用,以避免瓶頸,并確保盡可能快地處理輸入的數(shù)據(jù)樣本。分布式訓(xùn)練增加了對神經(jīng)元權(quán)重快速更新的要求,這些更新必須盡快分配給處理相關(guān)模型部件的其他工作引擎,以避免停滯。
FPGA中的數(shù)據(jù)編排邏輯支持處理廣泛的權(quán)重分配和同步協(xié)議,以支持高效的運行,同時減輕加速器本身的數(shù)據(jù)組織負擔(dān)。下圖展示了一種可能的實現(xiàn)方法,使用一個FPGA器件管理同一塊電路板上的多個人工智能引擎。使用一種合適的低噪聲通信協(xié)議,單個機器學(xué)習(xí)專用集成電路(ASIC)不需要存儲控制器。相反,數(shù)據(jù)編排引擎在本地存儲器中組織所有的權(quán)重和數(shù)據(jù)元素,并簡單地將它們以合適的順序傳輸?shù)剿芾淼拿總€ASIC。其結(jié)果是通過減少重復(fù)的存儲和接口邏輯,以更低的總體成本獲得高性能。
圖1:數(shù)據(jù)編排可以為并行化的人工智能實現(xiàn)應(yīng)用快速地提供負載平衡和其他數(shù)據(jù)轉(zhuǎn)發(fā)功能
利用數(shù)據(jù)編排,硬件可以在不增加成本的情況下進一步提高性能。一種選擇是利用網(wǎng)絡(luò)或系統(tǒng)總線數(shù)據(jù)的壓縮,避免使用更昂貴的互連。FPGA的邏輯層面可編程性支持通過網(wǎng)絡(luò)接口對數(shù)據(jù)進行壓縮和解壓縮。數(shù)據(jù)編排硬件還支持使用前向糾錯協(xié)議來確保以全流水線速度傳輸有效數(shù)據(jù)。在大多數(shù)設(shè)計中,損壞事件通常很少發(fā)生,但是如果沒有外部的糾錯支持,那么對于高度流水線化的加速器設(shè)計來說,恢復(fù)成本將會很高。
圖2展示了數(shù)據(jù)編排引擎可以通過多種方式優(yōu)化數(shù)據(jù)流和給機器學(xué)習(xí)引擎提供的呈現(xiàn)結(jié)果。例如,單個數(shù)據(jù)元素的格式和結(jié)構(gòu)為利用數(shù)據(jù)編排的優(yōu)勢提供了一個重要的機會,因為源數(shù)據(jù)通常必須以一種適合深度神經(jīng)網(wǎng)絡(luò)(DNN)進行特征提取的格式來表示。
在圖像識別和分類應(yīng)用中,像素數(shù)據(jù)通常被通道化,以便在通過提取形狀和其他高級信息的池化層進行聚合結(jié)果之前,可以單獨處理每個顏色平面。通道化有助于識別邊緣和其他特征,這些特征可能不易于用組合的RGB表示法識別。在語音和語言處理中會執(zhí)行更廣泛的轉(zhuǎn)換。數(shù)據(jù)通常被映射成一種更容易被DNN處理的形式。由于不是直接處理ASCII或Unicode字符,而是將模型中要處理的詞和子詞轉(zhuǎn)換為向量和one-hot表示。類似地,語音數(shù)據(jù)可能不會以原始時域樣本的形式呈現(xiàn),而是轉(zhuǎn)換為聯(lián)合時頻表示,從而使重要特征更容易被早期DNN層識別。
盡管數(shù)據(jù)轉(zhuǎn)換可以通過人工智能加速器中的算術(shù)內(nèi)核來執(zhí)行,但它可能不太適合張量引擎。重新格式化的性質(zhì)使其適合由基于FPGA的模塊進行處理。FPGA能夠有效地以線速度進行轉(zhuǎn)換,而不會出現(xiàn)在通用處理器上運行軟件時所產(chǎn)生的延遲。
在涉及傳感器的實時和嵌入式應(yīng)用中,預(yù)處理數(shù)據(jù)可以帶來更多的好處。例如,雖然可以通過訓(xùn)練DNN以消除噪聲和環(huán)境條件變化的影響,但使用前端信號處理對數(shù)據(jù)進行去噪或歸一化處理,可提高其可靠性。在汽車先進駕駛輔助系統(tǒng)(ADAS)實現(xiàn)中,攝像頭系統(tǒng)必須處理照明條件的變化。通常,通過使用亮度和對比度調(diào)整,可以利用傳感器中高水平的動態(tài)范圍。FPGA可以執(zhí)行必要的操作,為DNN提供變化較少的像素流。
傳感器融合是ADAS設(shè)計日益重要的一個方面,有助于提高終端系統(tǒng)的性能。由于環(huán)境條件會使單個傳感器數(shù)據(jù)難以解讀,因此人工智能模型必須有效地從眾多不同類型的傳感器(包括攝像頭、激光雷達和雷達)中獲取輸入。
格式轉(zhuǎn)換是至關(guān)重要的。例如,激光雷達(LIDAR)為笛卡爾空間中的目標(biāo)物體提供深度信息,而雷達在極坐標(biāo)系統(tǒng)上運行。許多模型通過將一個坐標(biāo)空間轉(zhuǎn)換為另一個坐標(biāo)空間,更容易地進行傳感器融合。類似地,來自多個攝像頭的圖像數(shù)據(jù)必須拼接在一起,并使用投影進行轉(zhuǎn)換,從而將最有用的信息傳遞給人工智能模型。
較低級別的轉(zhuǎn)換也同樣需要。汽車原始設(shè)備制造商(OEM)從不同的供應(yīng)商那里購買傳感器模塊,每個供應(yīng)商都以自己的方式解讀連接通信標(biāo)準(zhǔn)。這需要一些功能來解析這些傳感器通過車載網(wǎng)絡(luò)發(fā)送的數(shù)據(jù)包,并將數(shù)據(jù)轉(zhuǎn)換為DNN可以處理的標(biāo)準(zhǔn)格式。出于安全考慮,模塊也必須向ADAS單元進行身份驗證,在某些情況下,還要發(fā)送加密數(shù)據(jù)。數(shù)據(jù)編排芯片支持從人工智能加速器引擎上卸載解密和格式轉(zhuǎn)換功能。
通過使用在數(shù)據(jù)編排子系統(tǒng)中實現(xiàn)的前端信號處理功能來去除不必要的數(shù)據(jù),可以實現(xiàn)進一步的優(yōu)化。例如,用于處理來自麥克風(fēng)和其他一維傳感器輸入的傳感器,可以消除靜音時或低級背景時的噪音,并減少車輛靜止時傳送的視頻幀數(shù)量,從而減輕人工智能引擎的負載。
圖2:數(shù)據(jù)編排為人工智能功能加速提供了多種選擇
一種針對數(shù)據(jù)編排而優(yōu)化的架構(gòu)
盡管FPGA內(nèi)可配置互連和可編程邏輯的結(jié)合有助于數(shù)據(jù)編排任務(wù),但FPGA架構(gòu)則天生各不相同,它們?nèi)绾翁幚韺Ω邘挃?shù)據(jù)的需求是關(guān)鍵。傳統(tǒng)上,F(xiàn)PGA并不被期望作為數(shù)據(jù)路徑的核心元素,而是主要為與存儲和I/O交互的處理器提供控制平面輔助。數(shù)據(jù)編排需要代表處理器和加速器去實現(xiàn)內(nèi)核接收、轉(zhuǎn)換和管理數(shù)據(jù)元素,這給傳統(tǒng)的FPGA架構(gòu)帶來了巨大的壓力。
為了支持?jǐn)?shù)據(jù)編排的帶寬要求,傳統(tǒng)的FPGA需要極寬的總線來處理通過PCI Express和千兆以太網(wǎng)接口的多個數(shù)據(jù)流。例如,為了支持超過400Gb/s以太網(wǎng)數(shù)據(jù)的傳輸,設(shè)計人員必須使用可編程的互連電路,來對大約2048位寬的總線進行布線,以可靠地滿足時序要求,這通常需要一個運行頻率為幾百兆赫茲的時鐘。由于這種大型結(jié)構(gòu)的擁塞和時序收斂問題,這樣如此寬的互連是非常難以布線的?;ミB可能會消耗數(shù)十萬個查找表(LUT),因為它們是無法用于執(zhí)行數(shù)據(jù)編排或格式轉(zhuǎn)換任務(wù)的。
Achronix Speedster7t系列FPGA器件克服了傳統(tǒng)FPGA所面臨的問題,其中部分原因是它采用了一種專用的二維片上網(wǎng)絡(luò)(2D NoC),通過在網(wǎng)絡(luò)的不同部分進行多個并行操作,這種互連可以實現(xiàn)高達20Tb/s的總帶寬。相對于FPGA架構(gòu)互連,二維片上網(wǎng)絡(luò)不僅在速度上有了巨大的提升,而且能夠在多個PCIe Gen5、400Gbps以太網(wǎng)端口和GDDR6存儲器接口之間以更高的速率傳輸大量的數(shù)據(jù),而不會消耗任何FPGA的可編程資源。
在Speedster7t FPGA器件中,片上網(wǎng)絡(luò)在FPGA的整個表面提供了一個二維互連架構(gòu)。它使用專用的網(wǎng)絡(luò)接入點(NAP)將數(shù)據(jù)包發(fā)送到器件內(nèi)任何位置的軟核。每個NAP通過行業(yè)標(biāo)準(zhǔn)的AXI端口結(jié)構(gòu)提供對FPGA內(nèi)可編程邏輯模塊或硬件資源的訪問。東西向和南北向數(shù)據(jù)流都有獨立的NAP,為訪問二維片上網(wǎng)絡(luò)的邏輯提供了額外的靈活性和性能。這種定向分割有助于優(yōu)化在相同的二維片上網(wǎng)絡(luò)路徑上開始和結(jié)束的傳輸延遲。在一個正交的二維片上網(wǎng)絡(luò)路徑上走線會增加一個小的、確定性的延遲。
二維片上網(wǎng)絡(luò)提供的一項重要功能是分組模式(Packet Mode),該模式旨在更容易地將到達高帶寬端口(如以太網(wǎng))的數(shù)據(jù)重新排列為多個數(shù)據(jù)流。分組模式可以分離到達速率為200Gb/s或400Gb/s以太網(wǎng)端口的數(shù)據(jù)包,并將它們傳輸?shù)讲煌能浐?。這種數(shù)據(jù)包分離如下圖所示,連續(xù)的數(shù)據(jù)包被分布到FPGA的不同部分。因此,分組模式可以輕松創(chuàng)建負載平衡架構(gòu),而使用傳統(tǒng)FPGA是難以實現(xiàn)這樣的功能。
圖3:片上網(wǎng)絡(luò)的分組模式支持將網(wǎng)絡(luò)有效負載自動分配到架構(gòu)的不同部分
另一個好處是,二維片上網(wǎng)絡(luò)更容易支持部分重新配置:二維陣列中的每個邏輯模塊都能作為一個可隔離的資源,可以在不影響任何其他邏輯模塊的情況下完成交換新功能。由二維片上網(wǎng)絡(luò)和接入點控制器實現(xiàn)的虛擬化和轉(zhuǎn)換邏輯進一步增強了此功能。
地址轉(zhuǎn)換表的作用類似于微處理器中的存儲管理單元,以防止任務(wù)之間的數(shù)據(jù)相互干擾。接入點中的地址轉(zhuǎn)換表意味著每個軟核可以訪問相同的虛擬地址范圍,但訪問外部物理存儲的范圍完全不同。訪問保護位提供了進一步的安全性,防止內(nèi)核訪問受保護的地址范圍。在一系列基于人工智能的應(yīng)用中,這種級別的保護很可能變得極其重要。在這些應(yīng)用中,數(shù)據(jù)編排和其他可編程邏輯功能在集成到最終產(chǎn)品之前由不同的團隊實現(xiàn)。
除了高度靈活的數(shù)據(jù)路由,數(shù)據(jù)編排還需要去應(yīng)用快速算術(shù)功能來增強核心人工智能加速器。Speedster7t FPGA部署了一系列機器學(xué)習(xí)處理器(MLP)模塊。每個MLP都是一個高度可配置的、計算密集型的模塊,最多可配置32個乘法器,提供高達60 TOPS的性能。MLP支持4到24位的整數(shù)格式和各種浮點模式,包括直接支持Tensorflow的bfloat16格式和塊浮點(BFP)格式。周圍的可編程邏輯架構(gòu)提供了多種方法來優(yōu)化數(shù)據(jù)流,以充分利用MLP提供的數(shù)據(jù)重用和吞吐量機會。
由于數(shù)據(jù)編排硬件需要適用于各種應(yīng)用環(huán)境,因此對靈活部署有著明確的需求。數(shù)據(jù)中心應(yīng)用可能需要使用一個或多個分立的、大容量器件(例如Speedster7t FPGA器件),來為單個電路板上或分布在一個托盤或機架內(nèi)的多個機器學(xué)習(xí)引擎路由和預(yù)處理數(shù)據(jù)流。對于尺寸、功耗和成本是主要限制因素的邊緣計算應(yīng)用來說,采用系統(tǒng)級芯片(SoC)解決方案存在明顯的爭論。
Achronix是唯一一家能夠同時提供獨立FPGA芯片和嵌入式FPGA(eFPGA)半導(dǎo)體知識產(chǎn)權(quán)(IP)技術(shù)的公司,因此在支持成本降低計劃方面具有獨特的優(yōu)勢,其中可編程邏輯和互連功能可以集成到一個SoC中,如下圖所示。Speedcore eFPGA IP使用與Speedster7t FPGA相同的技術(shù),支持從Speedster7t FPGA到集成Speedcore模塊的ASIC的無縫轉(zhuǎn)換。當(dāng)使用Speedcore IP將Speedster7t FPGA轉(zhuǎn)換為ASIC時,客戶有望降低高達50%的功耗和節(jié)省高達90%的單位成本。
另一種選擇是在多芯片模塊中使用多芯片合封chiplets。這在基于FPGA的合封的數(shù)據(jù)編排模塊和機器學(xué)習(xí)引擎之間提供了高速互連的好處。Achronix支持所有這些實現(xiàn)選項。
圖4:嵌入式FPGA技術(shù)能夠?qū)?shù)據(jù)編排集成到加速器芯片中
結(jié)論
深度學(xué)習(xí)的快速發(fā)展給大規(guī)模實現(xiàn)該技術(shù)所需的硬件架構(gòu)帶來了巨大壓力。盡管由于意識到性能是一個絕對要求,因此業(yè)界高度關(guān)注峰值TOPS分?jǐn)?shù),但智能數(shù)據(jù)編排和管理策略提供了一種用于交付高成本效益和高能效系統(tǒng)的方法。
數(shù)據(jù)編排包括許多預(yù)處理和后處理操作,確保了數(shù)據(jù)以最佳速度和最適合進行高效處理的格式傳輸?shù)綑C器學(xué)習(xí)引擎。操作范圍從資源管理和使用規(guī)劃,到I/O適配、轉(zhuǎn)碼、轉(zhuǎn)換和傳感器融合,再到共享存儲陣列內(nèi)的數(shù)據(jù)壓縮和重新排列。一些編排引擎根據(jù)目標(biāo)機器學(xué)習(xí)架構(gòu)的核心需求使用這些功能的子集。
Achronix Speedster7t FPGA架構(gòu)為這些數(shù)據(jù)編排策略提供了高度靈活的平臺。這種FPGA具有高吞吐量、低延遲和極高靈活性等特點,其數(shù)據(jù)傳輸形式可使即使是高度專業(yè)化的加速器也能去適應(yīng)不斷變化的需求。此外,Speedster7t FPGA廣泛的邏輯和算術(shù)能力加上高吞吐量互連,使得前端信號調(diào)節(jié)和后端機器學(xué)習(xí)的整體設(shè)計能夠最大限度地提高整體效率。
評論
查看更多