機器學習 ML 記憶體 雲端資料中心 MAC SDRAM

優化晶片引擎架構及演算法 邊緣裝置AI達陣高效能低功耗

2022-06-03
人工智慧(AI)技術越來越熱門,在汽車、視覺處理和電信等產業的相關應用與日俱增,AI促成許多新功能,也取代許多傳統演算法,例如為智慧型手機的相機提供去雜訊和影像穩定功能。只不過,許多AI應用都會將資料傳送到雲端資料中心,因而造成一些重大的缺點,包括延遲提高、增加隱私風險,以及需要網際網路連線。

為了替代這種做法,設計師們希望能創造出可在邊緣裝置上執行的AI系統。但是,這類裝置通常是以電池供電,因此也帶來新的挑戰,如何在效能表現與能源耗用之間取得平衡,以及如何在運算能力需求持續快速攀升的當下維繫此平衡。 

AI處理兩大挑戰頻寬限制/記憶體存取

邊緣裝置種類不勝枚舉,其需求也各有不同,但基本上,這些裝置的目標都是在最大化效能的同時減少耗電量,並且將所需的實體物理空間降到最低。對此,設計工程師應做出哪些取捨,才能有效因應這些挑戰。以現有的AI處理器而言,限制效能的因素通常有兩個,頻寬以及從外部記憶體移出或移入資料的各項瓶頸,這導致系統使用率低落,也使效能/功率比(衡量單位為TOPS/瓦)受限。

另一個重要的考量,則是如何針對未來需求預做準備。AI處理器晶片通常有較長的部署期,而AI解決方案必須能夠適應未來的新需求,包括支援目前尚未定義的新神經網路,這表示任何解決方案都必須有足夠的彈性,而且要能隨著效能需求的增長而擴充規模。

AI系統也必須安全無虞,且符合最高的品質與安全標準,在汽車應用等AI系統決策可能左右性命的使用情境當中尤是如此。舉例來說,如果行人忽然出現在自動駕駛車輛的前方,這種情況下只有極短的時間能做出反應,為協助克服這些挑戰,因此需要全方位的軟體工具鏈,讓使用者能更輕鬆地導入並縮短開發時間。

動態設定強化AI處理器

以視覺機器學習為例,看看AI解決方案供應商如何因應這些挑戰。首先,如果考慮到記憶體存取以及頻寬限制效能的問題,這些問題可以用動態設定的兩層式記憶體架構來解決(圖1)。這可以將資料由外部SDRAM傳出或傳入外部SDRAM時的耗電量降至最低。透過階層方式使用區域記憶體資源,能達到90%以上的使用率,並保護共同處理器和加速器免受資料飢餓(Data Starvation)現象影響,同時讓每個引擎都能獨立處理。

圖1 NeuPro-M AI處理器的記憶體架構

最佳化AI處理的另一種方式是讓處理器架構得以支援混合精度(Mixed Precision)神經引擎。若是能處理從2位元到16位元的資料,代表處理每個使用案例時,不僅可彈性執行混合精度網路,更可降低系統消耗的頻寬。此外,資料壓縮等頻寬縮減機制讓系統能在從外部記憶體進行寫入或讀取的同時,即時壓縮資料和權重,這可減少所需的記憶體頻寬,進一步提升效能並大幅降低整體耗電量。

對此,業界已有例如廠商CEVA透過NeuPro-M AI處理器所採取的解決方法,此處理器採用獨立的異質運算處理器架構,專為AI/ML推論工作負載所設計。以此解決方案為範例,圖2顯示機器視覺應用程式如何在四個AI引擎之間分割,將偵測前方車道方向的工作加以切分。影像資料會從外部記憶體或外部介面載入,然後分割為四個區塊,每個區塊由不同的引擎處理。相對的,每個引擎可能各自處理子圖形或不同的工作(例如物體偵測和車道方向識別),以讓特定應用程式的效能得以最佳化。

圖2 機器視覺應用程式在四個AI引擎之間進行分割

每個引擎都有各自的晶片內建L1記憶體,以便將任何瓶頸或延遲降到最低,這也表示AI處理器在設定後幾乎可以完全獨立執行,而且在大多數情況下,可以執行完全不需要存取內部記憶體、僅鮮少存取外部記憶體的頭對尾(Head-to-Tail)融合式作業管線,這讓它更有彈性,也有助於改善用電效率。

本文一開始所討論到的需求還包括了提供具前瞻性、有彈性的解決方案。若一個完全可程式化的向量處理單元(VPU)可和共同處理器平行處理相同引擎的L1資料,便能藉由確保在軟體上支援新的神經網路拓撲以及AI工作負載的發展,來滿足這項需求。

卷積運算有效支援機器視覺

有許多最佳化方式可以提升特定AI應用程式的效能。在視覺處理中,其中一種最佳化方式就是Winograd轉換,這是執行卷積運算(例如傅立葉轉換)時一種有效率的替代方法,只使用先前所需的乘積累加運算(MAC)數量的一半。 

對於3×3卷積層,Winograd轉換可使效能加倍,同時保持與原始卷積方法相同的精確度。另一項重要的最佳化方式是活用稀疏性,也就是在資料或權重中忽略零。藉由避免零的乘法運算,效能得以提升,同時維持準確性。部分處理器只有在處理結構化的資料時才能自稀疏獲益,但若處理器能夠完整支援非結構化稀疏,便可獲得更好的結果。

一般而言,AI系統需要將這當中的部分最佳化功能或網路固有操作(例如Winograd轉換、稀疏機制或提取、自注意力操作和縮放等)交給專門的引擎處理。這代表資料必須先卸載,然後在處理後再載入,而這會增加延遲並降低效能。更好的替代方案是直接將加速器連接到引擎的區域共用L1記憶體,甚至在大多數情況下,執行融合作業會更佳理想,也就是從一個共同處理器到另一個共同處理器執行即時的端對端管線處理,而不需要在執行時存取任何記憶體。

這些最佳化有多重要?圖3顯示單一引擎NPM11核心相較於CEVA上一代的AI處理器,在典型的ResNet50應用中能達到的效能提升,可以發現執行基本的原生作業時,效能提升了將近五倍。

圖3 單一引擎NPM11核心在ResNet50應用中,相比上一代的AI處理器效能提升許多

再加入Winograd轉換和稀疏引擎後,會進一步提升效能,達到前一代程序的9.3倍。最後,在部分網路層採用混合精度(8×8與低解析度4×4)權重與激勵函數,能再進一步將效能提升,達到前一代處理器效能的近15倍,以及原生應用效能的2.9倍,且損失的精確度幾可忽略不計。

AI處理器提升軟硬體環境

透過本文,讀者已知道新的記憶體架構和區域負載平衡控管應用(相同資料的管線處理vs.連續處理),藉由將外部存取最小化和充分利用硬體,能如何在不需要更多電力的情況下提升效能,也知道Winograd轉換和稀疏性等最佳化技術能如何進一步提升效能。

整體而言,現代的AI處理器可提供完全可程式化的硬體和軟體開發環境,並具有高需求邊緣AI應用程式所需的效能、用電效率和彈性,這讓設計工程師可以在其系統內建置有效的AI應用,而且不會讓耗電量超出可攜式邊緣裝置的容許限額。

(本文作者為CEVA人工智慧與影像業務發展暨產品行銷總監)

本站使用cookie及相關技術分析來改善使用者體驗。瞭解更多

我知道了!