這次Intel Innovation(英特爾on技術創新大會)上,Intel發布的Meteor Lake處理器里面有一個AI推理加速單元:NPU。這東西對PC究竟有什么用?
這篇文章,我們來聊聊Meteor Lake的NPU(Neural Processing Unit)。此系列文章另外包含Meteor Lake的關鍵技術點介紹,以及Intel 4制造工藝和Foveros封裝技術介紹。
其實在代號為Meteor Lake的酷睿Ultra第1代處理器技術要點介紹里,Intel就明確突出了這代PC處理器在SoC tile部分搭載了NPU單元,用于AI本地推理加速。這算是相當符合潮流的設定吧,一方面在于主流PC處理器供應商普遍開始這么做,另一方面則是今年Intel正在宣導對于端側設備而言,AI技術的重大價值。
XPU的一個組成部分
其實有關Meteor Lake跑AI的消息,最初是在今年年中就做了預告的。不過當時Intel提的是CPU、GPU、VPU。而且早在Raptor Lake(13代酷睿)時期,Movidius VPU也作為獨立芯片,成為13代酷睿筆記本的可選項。
Intel Innovation(英特爾on技術創新大會)前夕的媒體分享會上,Intel提及的這枚NPU可能就是此前所說的VPU。原因很簡單。Intel在分享會上,再度提到了用Meteor Lake跑Stable Diffusion的例子,用以體現當前Intel XPU的實踐。

這個過程是這樣的:Stable Diffusion本身的網絡結構分成了幾個部分,前端是個文本編碼器——文生圖首先要輸入prompt提示詞,例如“帶著粉色蝴蝶結的可愛小貓”,則提示文字首先要通過CLIP模型轉換到“一個隱藏空間”。
第二步則有兩個Unet參與。Intel解釋說:“Unet網絡結構一個做正向提示詞,一個做負向提示詞,完成所謂擴散的步驟。這個步驟是比較重載的,在Stable Diffusion的整個處理流程中,是計算量較高的步驟。”“重復大概20步,就能得到質量還不錯的圖。”
最后一步“還是在隱藏空間,通過圖像編碼器VAE,還原到像素空間,成為輸出的圖像”。
這樣一套流程,如果都跑在CPU上,Unet+/-迭代20次,大約需要43秒,功耗40W——設定此能效值為單位1。而如果改由GPU來跑,耗時僅需14.5秒,功耗37W。

若將Unet+/-都跑在NPU上(猜測GPU可能參與了編碼器工作),則全流程需要20.7秒——雖然速度相比完全由GPU來跑稍慢,但功耗僅10W,能效達成了7.8倍。另外若考慮讓GPU跑Unet+,NPU跑Unet-,流程耗時更短,但能效會不及第三種方案。
這個例子Intel前幾個月就提過,調度工作由OpenVINO完成,實現在不同處理器上的深度學習部署。可見Meteor Lake上的NPU有可能就是此前宣傳中的VPU了。
基于Intel此前一直在宣導XPU的策略,就端側AI推理這一特性,Intel對于CPU、GPU和NPU的定位分別是下面這樣的:

在Intel看來,做AI推理這活兒,三顆U都得參與:要么分工合作,要么選出最適合自己的工作。上個月我們才剛剛報道過,就生成式AI生態構建上,Intel為讓CPU去跑生成式AI在做的各種工作。
GPU適合高并發、高吞吐需求的AI工作;順帶給一張GPU支持DP4a指令,每個周期執行64次Int8運算的介紹圖(下圖)。從Meteor Lake關鍵技術一文介紹里,應該能預設Meteor Lake核顯的AI性能——畢竟這次的矢量引擎相比上一代還是增加了不少的。

而NPU是個低功耗的AI引擎,用于持續性的AI負載,比如說視頻會議時,需求AI實現眼神矯正、畫面超分或語音降噪之類的工作,則NPU更合適;CPU的特點是響應快,則對于輕量級、低延遲需求的推理工作,就很適用。
有關NPU架構
這次媒體分享會上,Intel還是比較罕見地給出了NPU架構的,只是不知道具體規模如何。NPU首先位于SoC tile之上。既然SoC tile又被Intel稱作低功耗島,那么這片區塊的設計必然是沖著低功耗和高能效去的。

NPU這類加速器通常就包括MAC、精度轉換之類。其算力主體部分由兩個Neural Compute Engine(神經計算引擎)構成;這類專注于并行能力的加速器往往都能相對方便地做模塊彈性縮放。

這兩個引擎支持Int8, FP16運算,配有專門的data conversion數據轉換單元,“支持量化網絡的數據類型轉換和融合操作”“支持輸出數據的重新布局”;硬件層面“支持FP精度下的多種激活函數(avtiviation function)”,如ReLU。
MAC陣列用以支持矩陣乘法和卷積運算,“支持最佳數據重用,以降低功耗”,單個引擎算力2048 MAC/周期。每個引擎配一個DSP,用于更多精度數據的支持。
其余部分包括MMU訪問系統內存、DMA直接內存讀取、片內存儲資源(Scrachpad RAM)。針對類似Resnet50網絡達成卷積→ReLU→量化,是個AI加速的標準流程了。
就軟件堆棧部分,比較值得一提的是Intel的NPU驅動符合微軟MCDM框架(Microsoft Compute Device Manager)。則故此,從Windows的資源管理器里,就能直接看到NPU作為一個計算設備存在,包括其負載情況。

據說特別針對XPU的AI Benchmark基準測試工具已經在路上。未來的PC處理器也要開始卷AI推理能力了。
AI軟件堆棧與PC上的實際應用
這里再花點篇幅談談Intel于端側AI生態的軟件堆棧。在Windows上做AI應用開發,可選的API算是比較多樣,包括了微軟的WinML,以及更低層級的DirectML;也可以選擇開源的ONNX RT,還有Intel的OpenVINO。

中間層相關的庫,以及驅動程序層具體如圖。談個應用案例,Intel和微軟合作,在偏上層應用層出了個Windows Studio Effects——相當于一個虛擬攝像頭,對原始攝像頭的視頻做AI處理,可用于背景替換、模糊、人臉追蹤等。Windows Studio Effects下層本身是基于OpenVINO的。
對于應用開發者而言,只需要調用Windows Studio Effects,就能直接獲得這些效果。比如像微軟的Teams就是直接調用Windows Studio Effects,那么這些AI特效實現就能跑在NPU上。其軟件棧路徑大致如下:

其他開發者,比如Adobe傾向于選擇DirectML去做各種內容創作的AI實現。Intel說部分視頻分析類、圖像類應用開始大量基于OpenVINO去做了。上面這些,應該能夠給到各位技術愛好者,或開發者以參考;這些也是構建AI生態的重要組成部分。
更多開發生態相關的構成,此前我們談得也挺多了,這里就不再贅述了。但能看得出來,在Meteor Lake加入NPU以后,配合其他XPU,Intel是期望在端側將AI技術真正實現普及的,即便這個生態的建設工作現在還算是早期。
“我們現在有超過100多家合作伙伴在做各種各樣的終端側AI應用,豐富PC用戶的使用體驗。”就CCG業務的生態,主要還是Intel和微軟合作構建。
NPU已經支持的神經網絡和應用包含如下這些:

“我們感覺終端側AI目前的發展還是非常快的。我們借助于Meteor Lake引入XPU的能力,讓產品能夠更好地支撐起整個生態系統;讓開發者將一些AI workload在PC端引入,提升用戶體驗。”
感覺端側NPU的應用命題并不易解,連蘋果做了這么久的NPU,Mac端的AI生態也相當得不豐滿。不過Intel這次考慮構建的AI生態是走開放開源路線的,目前等待的大概是開發者真正能夠基于酷睿處理器資源所做的爆款,并令其足夠成為PC用戶的剛需了。