今天我們周圍的一切都在變得更加智能。人工智能(AI)不僅僅是一種數據中心應用,在我們日常與之交互的各種嵌入式系統(tǒng)中也能夠發(fā)現AI。我們希望與這些系統(tǒng)進行對話和手勢交流,期待它們能夠識別和理解我們,這種智能不僅使這些系統(tǒng)的功能更加完善、使用更為便捷,同時更加安全和可靠。
?
所有這些智能都來源于深度神經網絡的進步。神經網絡的關鍵挑戰(zhàn)之一是計算復雜度。小型神經網絡可能需要數百萬次的乘積累加運算(MAC)才能產生結果,而大型神經網絡則可能需要數十億次,像大語言模型等復雜網絡可能需要達到萬億級的計算量。這種級別的計算需求超出了嵌入式處理器的承載能力。
?
在某些情況下,這些推理計算可以通過網絡被轉移到數據中心。越來越多的設備擁有快速且可靠的網絡連接,使得這種方式成為許多系統(tǒng)的可行之選。然而,也有很多系統(tǒng)具有嚴格的實時要求,即使是最快最可靠的網絡也無法滿足。例如,任何有自動化能力的系統(tǒng)(如自動駕駛汽車或無人機)都需要比離線數據中心更快地做出決策。還有一些系統(tǒng)處理了不應該通過網絡傳輸的敏感數據,而且傳輸內容會增加黑客攻擊的風險。由于性能、隱私和安全等原因,某些推理操作需要在嵌入式系統(tǒng)上完成。
?
對于簡單的網絡來說,嵌入式 CPU 就可以處理這些任務,例如,一個樹莓派就能部署一個簡單的物體識別算法。而對于更復雜的任務,嵌入式 GPU 以及針對嵌入式系統(tǒng)的神經處理單元(NPU)可以提供更強的計算能力。但是,要想獲得更高水平的性能和效率,需要構建一個定制化的 AI 加速器。
?
無論是針對 ASIC 還是 FPGA,設計新的硬件都是一項艱巨的任務,但它能使開發(fā)者能夠取得現成組件無法達到的性能和效率水平。和有著多代產品設計經驗的設計師相比,普通開發(fā)團隊如何才能構建一個更好的AI加速器呢?其中一個方法是通過針對正在執(zhí)行的特定推理來定制實施方案,這樣的效果會比通用解決方案更勝一籌。
?
在開發(fā)者通用 AI 加速器構建 NPU 時,其目標是支持任何可能的神經網絡。他們希望獲得盡可能多的設計輸入,因此必須使設計盡可能通用,不僅如此,他們還希望在設計中內置一定程度的“future proofing”,以支持幾年后可能出現的任何網絡。而在技術快速發(fā)展的背景下,這并非易事。
?
一個定制化加速器只需支持一個或幾個特定的網絡。這種自由度允許將在加速器實施過程中的可編程元素固定在硬件中,使得硬件比通用硬件更小且更快。在圖像和濾波器尺寸固定的情況下,一個專用卷積加速器的速度可比設計良好的通用 TPU 快上 10 倍。
通用加速器通常使用浮點數。這是因為幾乎所有神經網絡都是在使用浮點數的通用計算機上用 Python 開發(fā)的。為了正確支持這些神經網絡,加速器必須支持浮點數。然而,大多數神經網絡使用接近 0 的數值,并且需要較高的精度,而浮點乘法器體積龐大,如果不需要它們,從設計中去除可以節(jié)省大量面積和功耗。
?
一些 NPU 支持整數表示法,有時還支持多種大小。然而,支持多種數值表示格式會增加電路復雜性,進而消耗電力并加大傳播延遲。選擇一種表示格式并專門使用,可以實現更小、更快的實現。
?
在構建定制化加速器時,并不局限于 8 位或 16 位,任何尺寸都可以使用。選擇正確的數字表示,或對神經網絡進行 “量化”,可以優(yōu)化數據和運算器的大小。量化可以顯著減少需要存儲、傳輸和操作的數據量。減少權重數據庫的內存占用和縮小乘法器的尺寸可以顯著改善設計的面積和功耗。例如,一個 10 位定點乘法器比一個 32 位的浮點乘法器小約 20 倍,功耗約為后者的 1/20。這意味著設計可以更小巧、更節(jié)能。使用更小的乘法器,設計人員也可以選擇使用該區(qū)域,部署 20 個可以并行運行的乘法器,從而在使用相同資源的情況下產生更高的性能。
?
在構建定制化機器學習加速器時,有一個挑戰(zhàn)是創(chuàng)建神經網絡的數據科學家通常不了解硬件設計,而硬件設計師也不了解數據科學。在傳統(tǒng)設計流程中,他們會通過“會議”和“規(guī)范”來傳遞知識和分享想法,但顯然,這些方法也并不會通過信息交流得到有效傳遞。
?
通過高階綜合(High-Level Synthesis, HLS),數據科學家生成的實施方案不僅可以作為可執(zhí)行參考,還可以作為硬件設計流程的機器可讀輸入。這就避免了在設計流程中手動重新解釋算法,從而避免既緩慢又易出錯的手動過程。HLS 從算法描述中合成 RTL 實現。一般來說,算法用 C++ 或 SystemC 描述,但像 HLS4ML 這樣的設計流程能使 HLS 工具能夠直接從機器學習框架中獲取神經網絡描述。
?
HLS 能夠以一種在機器學習框架中尚不普及的方式對量化進行實際探索。為了充分理解量化的影響,需要對算法進行微精確的實現,包括溢出、飽和和舍入等影響的特征描述。目前,這只適用于硬件描述語言(HDL)或 HLS 微精確數據類型。隨著機器學習的普及,更多的嵌入式系統(tǒng)將需要部署推理加速器。HLS 是一種實用且行之有效的構建定制加速器的方法,加速器針對特定應用進行了優(yōu)化,提供比通用 NPU 更高的性能和效率。
?
了解更多信息:高階綜合推動下一代邊緣 AI 加速器的發(fā)展
?
?
?
