
作者|MNN團隊
出品|阿裡巴巴新零售淘系技術部
AI 晶片時代
2016 - 2017年,AlphaGo 先後戰勝李世石和柯潔,随着深度學習進入公衆視野的,還有 Google 的 TPU 。
之後,Qualcomm、Apple 等晶片廠商也相繼進入了這個戰場。一時間,APU、TPU、NPU 成了科技媒體的寵兒,各大廠商在釋出會上的跑分比武應接不暇。
而 XPU 們也确實憑借着為深度學習定制的向量、矩陣、張量計算單元和更高效的緩存設計等,實作了數倍于 CPU、GPU 的性能。
以麒麟 NPU 為例,從18年7月的麒麟970到19年9月的麒麟 990 ,短短兩年就實作了數倍的性能提升,是不是有一種摩爾定律再臨的感覺?
除了性能強勁之外,XPU 的功耗相比于 CPU、GPU 也要更低。依然以麒麟810和990為例,接近1/10的功耗表現,可以和我的電量恐懼症說再見了!
MNN + HUAWEI HiAI
MNN 作為阿裡巴巴開源的端側推理引擎,已經支撐了兩屆淘寶雙十一。我們以輕量級的推理引擎和配套工具,支援 Caffe、TensorFlow、PyTorch 訓練架構和端側 CPU、GPU、NPU 上的高效推理。
手機淘寶中有許多對實時性和精度要求都比較高業務,例如視訊流檢測、拍立淘等等。在算力有限的情況下,性能和精度往往不可兼得 —— 要麼接受更慢的響應速度,保障精度,例如放棄視訊流,隻支援圖檔;要麼舍棄一部分精度,用更小的模型換取更快的速度。
HiAI 是華為端側 AI 能力開放平台,通過 HiAI Foundation 晶片能力開放,可以借助異構排程和 NPU 加速, 獲得更佳的性能和功耗,有了這樣性能和功耗同時得以提升的方案, MNN 就可以在配備了 NPU 的裝置上啟用那個名場面 —— 我全都要!
那麼,究竟要怎麼做呢?畢竟NPU是完全不同于CPU和GPU的計算裝置。在這裡,就需要簡單回顧一下 MNN 對計算裝置的抽象了。
計算裝置在 MNN 中,被抽象為 Backend ,即後端;每一種後端都有三種職責:計算資源的配置設定、計算任務的排程、資料拷貝(含必要的格式轉換)。 MNN 在實作對華為 NPU 支援的時候,就依賴了這種抽象設計。
具體來說,建立會話階段,我們會在 NPUExecution 的 onCreate 方法中,将 MNN 的 Op 轉換為 HiAI 的 OM Op ,逐漸建構出 OM 的模型圖;資源配置設定階段,我們會在 NPUBackend 的 onResizeEnd 方法中,編譯 OM 的模型圖,生成 NPU 可用的 IR 模型,并預留出輸入輸出相關的 AI Tensor ;在推理運作階段,我們會借助 NPUBackend 的 onCopyBuffer 方法,将輸入資料從 MNN Tensor 拷貝到 AITensor ,而後利用華為 NPU 執行推理計算,再将結果從 AITensor 拷貝到 MNN Tensor。
整個過程看上去還是非常複雜的,但是 MNN 把絕大部分複雜的工作隐藏在了後端的抽象設計中。使用者在使用的時候,隻需要将 backend 的 type 設定為 NPU ,就可以實作對 NPU 的調用。同時,如果裝置不支援 NPU ,還可以自動将計算回退到 CPU 上來實作。
雙十一NPU實戰
在今年的雙十一中,拍立淘率先使用了 MNN + NPU 的能力。我們和天貓以及其他商家展開深度合作,推出了商家掃 Logo 活動 —— 使用者可以像掃二維碼一樣,在掃描商家 Logo 後,擷取商家發放的權益。在 NPU 加速之後,商家 Logo 在手機上隻需要幾毫秒的時間,就可以精準識别。是的,就是如此絲滑。
拍立淘在雙十一期間開啟了數十個品牌的 Logo 掃描,相關招商管道建設中,敬請關注拍立淘官方管道。準備好你的腦洞吧。
現在想試一試的話,還可以掏出你的手機,打開手機淘寶掃一掃,下列Logo都可以玩起來啦~
寄望未來
筆者和 Apple、Arm、華為等公司的工程師都有過交流,大家對 XPU 的未來都一緻看好。雖然 APU、TPU、NPU 間的亂戰可能還要持續上三五年,但在深度學習應用領域,它們逐漸從雲端走向終端,逐漸替代 CPU、GPU 應當是大勢所趨。
MNN 會持續關注 NPU 領域的發展。同時,MNN 和華為 NPU 的合作也還在進一步推進中,後續 MNN 的相關代碼會在建設更成熟之後開源。我們也同樣期待華為在 NPU 方面的進一步發展。
**We are hiring
**
淘寶基礎平台部-端智能團隊歡迎移動端計算優化工程師和推理引擎架構師的加入。對新技術感興趣,善于創新突破,渴望用新技術給使用者帶來創新體驗的同學請聯系我們。
履歷投遞至[email protected]