AI技術愈來愈受歡迎,在汽車、視覺處理和電信等領域的應用也越來越多。目前,AI 正在通過實現眾多新功能來取代許多傳統算法,例如為智能手機攝像頭提供去噪和圖像穩定功能。
在眾多實施 AI 的產品都將數據發送到云數據中心的同時,也凸顯出一些主要缺點:延遲增加、隱私風險以及需要互聯網連接。
設計人員希望創建一些 AI 系統,使其在通常采用電池供電的邊緣設備上運行,但這也帶來了新的挑戰,既實現需求的性能和功能與功耗之間的平衡,尤其是在持續快速且越來越多的需要更多計算能力的情況下。
AI 處理挑戰
雖然眾多不同邊緣設備的要求都各不相同,但它們基本上都是為了最大程度地提高性能,降低功耗,并盡量減少所需的物理空間。設計工程師如何作出合適的權衡才能應對這些挑戰?
現有 AI 處理器的性能往往受到帶寬限制,并且在將數據移入和移出外部內存時也會遇到瓶頸,導致系統利用率低,這也就意味著性能/功率數值(以 TOPS/Watt 為單位)受到限制。
另一個重要問題是如何提前計劃滿足未來需求。由于 AI 處理器芯片的部署周期通常較長,因此 AI 解決方案必須能夠適應未來的新要求,包括支持尚未定義的新神經網絡。這意味著所有解決方案都必須足夠靈活、可擴展,才能隨著性能需求的增加而提升。
AI 系統還必須安全,并且必須符合最高的質量和安全標準,尤其是對于汽車應用和其他人工智能系統可能涉及生命攸關的決策的應用。例如,如果一位行人走到自動駕駛汽車前面,留給司機的反應時間是非常短的。
為了幫助克服這些挑戰,就需要一個全面的軟件工具鏈,簡化客戶實施,減少開發時間。
AI 處理器逐步提升
讓我們以視覺機器學習為例,看看 AI 解決方案提供商如何應對這些挑戰。
圖 1:NeuPro-M AI 處理器框圖,顯示內存架構
首先,如果我們考慮帶寬限制性能和內存訪問權限問題,可以通過動態配置的兩級內存體系架構來加以解決(參見圖 1)。這樣可以最大限度地降低與外部 SDRAM進行數據傳輸產生的功耗。通過以分層方式使用本地內存資源,實現 90% 以上的利用率,防止協處理器和加速器出現“數據匱乏”情形,同時還可使每個引擎獨立處理。
優化 AI 處理的另一種方法是通過使處理器架構支持混合精度的神經引擎。這種方法可以處理 2 到 16 位的數據,減少系統帶寬消耗,除此之外,還能按每個用例靈活運行混合精度網絡。此外,當數據從外部內存寫入或讀取時,數據壓縮之類的帶寬減少機制還能實時壓縮數據和權重。這種方法減少了所需的內存帶寬,進一步提高了性能,顯著降低了總功耗。
圖2:四引擎內核細分
這是 CEVA的 NeuPro-M AI 處理器采用的方法,是一種用于 AI/ML 推理工作負載的獨立異構處理器架構。以此解決方案為例,圖 2 顯示了如何在四 AI 引擎之間分割機器視覺應用,在本案例中是對前方道路進行車道檢測。圖像數據從外部內存或外部接口加載,然后分成四個拼圖,每個拼圖由不同的引擎處理。換句話說,每個引擎可以各自承擔一個子圖或不同的任務,例如物體檢測和車道識別,以便優化特定應用的性能。
每個引擎都有自己的片上 L1 內存,以便最大程度地減少瓶頸或延遲。這也意味著,一旦配置好,AI 處理器就幾乎可以完全獨立地運行了,并且在大多數情況下,可以運行“從頭到尾”的“融合”操作流水線,完全無需訪問內部內存且幾乎很少訪問外部內存。如此一來,AI 處理器將變得更加靈活,并有助于提高能效。
我們在本文開始時討論的要求還包括提供面向未來的靈活解決方案。完全可編程的矢量處理單元 (VPU) 可以在同一引擎 L1 數據上與協處理器并行工作,確保新的神經網絡拓撲以軟件方式提供支持
機器視覺優化
有許多優化可以提升特定 AI 應用的性能。在視覺處理過程中,Winograd 轉換就屬于這種優化之一。這是執行卷積(例如傅里葉變換)的另一種高效方法,只需使用以前所需的 MAC(乘累加運算)數量的一半。
對于 3x3 卷積層而言,Winograd 轉換可以將性能提高一倍,同時保持與原始卷積方法相同的精度。
另一個基本的優化是使用稀疏化,即能夠忽略數據或權重中的零。通過避免乘以零,性能得到了改善,同時保持了準確性。雖然某些處理器需要結構化數據才能享受稀疏化帶來的好處,但使用完全支持非結構化稀疏化的處理器可以獲得更好的結果。
通常,AI 系統需要將某些優化功能或網絡固有操作(如 Winograd 轉換、稀疏機制、自關注操作和縮放)交給專門的引擎。這意味著需要先卸載數據,然后在處理后再重新加載數據,這樣一來就會增加延遲并降低性能。對比之下,更好的選擇就是將加速器直接連接到引擎本地共享 L1 內存,或者在大多數情況下,進行融合操作,即從一個協處理器到另一個協處理器的即時端到端處理,而不需要在執行過程中訪問任何內存。
這些優化有多重要?圖 3 顯示,與 CEVA 的上一代 AI 處理器相比,單引擎 NPM11 內核在典型的 ResNet50 實施中實現了性能提升。您可以看到,基本的、原生的操作實現了近五倍的性能提升。
添加 Winograd 轉換,然后添加稀疏引擎可以進一步提高性能,最高可達上一代處理器的 9.3 倍。最后,對一些網絡層使用混合精度(8x8 和低分辨率 4x4)權重和激活,在可以忽略不計的精度損失的情況下,進一步提高了性能--實現了比上一代處理器近15倍的性能提升,比原生處理快 2.9 倍。
圖 3:NPM11(單引擎內核)性能改進
結論
我們已經看到了新內存架構和本地“負載平衡”控制實現(流水線處理對比連續處理相同數據),最大限度地減少外部訪問的情形,并充分利用了硬件,可以在不需要更多功耗的情況下提高性能,以及 Winograd 轉換和稀疏性等優化進一步提升性能的方法。
總而言之,現代 AI 處理器可以提供完全可編程的硬件/軟件開發環境,具有要求苛刻的邊緣 AI 應用所需的性能、能效和靈活性,這使設計工程師能夠從其系統內的有效AI實現中受益,而不會增加超出其便攜式邊緣設備預算的功耗。
審核編輯:彭靜