比拼三大移動端框架,小米MACE有哪些優勢?
採訪嘉賓 | 何亮亮
整理 | Debra
導讀:隨著深度學習領域的快速發展,以及移動端晶元計算能力的逐步提升,設備端上的深度學習推理正在變成一個巨大的需求和趨勢,一個好用的深度學習框架成為深度學習應用落地的關鍵。
小米團隊打造的 MACE
(https://github.com/XiaoMi/mace),就是專門為移動端晶元優化的深度學習框架,且已開源供開發者使用。
開發這個移動端深度學習框架的過程並非一帆風順,克服了一些困難之後,MACE 才誕生並逐漸被越來越的開發者採用。在開發過程中,小米有哪些經驗和踩坑經驗可以分享給開發者?AI 前線採訪了小米深度學習框架負責人何亮亮來進行了深入的了解。
作為小米深度學習框架負責人,何亮亮目前負責服務端與移動端深度學習框架的研發工作。他在分散式系統、存儲與資料庫、異構計算、深度學習、計算機視覺等領域有豐富的實踐經驗。
何亮亮介紹道,他帶領的團隊的主要工作內容,包括移動端深度學習框架 MACE 的開發,服務端深度學習框架的定製與優化,圖像處理與計算機視覺演算法的開發與優化等工作。
MACE 創建背後的故事
相對於 PC,更加輕便、易於攜帶的移動端越來越普及,手機更是人手一部或者多部,這就讓在移動端進行深度學習成為一個迫切的需求。鑒於此,專門為移動端而設計的深度學習框架——MACE 應運而生。
何亮亮告訴 AI 前線記者,MACE 最初是為了解決公司內部業務的落地而立項的。在 2017 年,為了落地拍照後處理的模型,小米曾考察了 SNPE 專有框架和主流的開源深度學習框架。結果,從性能角度看,僅有 SNPE 滿足速度和功耗的要求,但因為 SNPE 是閉源軟體,在部分特性和自定義運算元的定製上有較大的制約,溝通成本影響了產品開發周期的可控性。為了同時滿足性能和可控性兩方面的要求,小米開始了 MACE 的自主研發。
在研發這個深度學習框架的過程中,遇見困難在所難免。在研發初期,MACE 的重點是 GPU 的性能優化,何亮亮回憶,開發過程中他們遇到的最大困難,無疑是 GPU 運算元的性能優化,由於當時沒有任何開源實現可以參考,這項研發工作的難度非常大。
但是,經過多方嘗試以及與高通的一些交流,MACE 最終達到,甚至在內部私有模型上超過了 SNPE 的性能,同時還支持除 Adreno GPU 之外的晶元。後期,小米團隊還對 CPU 和 DSP 也進行了支持和優化,也達到了較高的水平。
除了運算元的性能之外,移動端框架還有其他的一些特有的問題。比如,相比服務端模型推理,移動端的推理對內存佔用有著更苛刻的要求。為了優化計算節點間中間結果對內存的佔用,小米借鑒了寄存器分配的圖染色演算法,通過提升內存緩衝區的復用效率,來達到減少內存佔用的目標。對於權重的內存佔用,小米則採用了半精度浮點和 8 比特整形量化的方法來進行壓縮。另一個小米遇到問題是模型的推理計算對用戶體驗的影響,對於移動端的 GPU,除了可以用作通用計算之外,更重要的作用是圖形界面的渲染。如何解決深度學習模型的推理計算對圖形渲染的干擾帶來的卡頓問題,小米則採用了離線 Tuning 並自動進行細粒度 Kernel 拆分的形式來解決。
那麼,為什麼小米後來決定將這個艱難開發出來的移動端深度學習框架開源給開發者使用呢?何亮亮表示,這是考慮到當時市面上沒有成熟的支持異構計算的開源框架可用,為了幫助更廣大的開發者提升手機 AI 方面的體驗,小米決定將 MACE 開源。
如今,MACE 項目非常活躍,社區中有 200 多個 Issue 討論和若干 Pull Request,用戶交流群 (756046893) 用戶有 1000 多,主要集中在手機應用開發和 IoT 硬體設備開發領域。
據了解,MACE 框架已經廣泛應用到小米手機的各種場景和業務中,例如相機場景識別、人像模式、人臉解鎖、行為預測、機器翻譯、語音識別等。
MACE 架構設計 - 異構計算
對於深度學習框架,尤其是推理框架,最核心的部分是高性能的 kernel 實現。MACE 的 NEON, GPU 的 kernel 實現均達到較高水平,同時對於 Hexagon DSP 也進行了支持和優化。
目前,MACE 支持主流的 CNN 模型,同時也支持機器翻譯、語音識別的部分模型。除此之外,與 MACE 一同開源的,還有 MACE Model Zoo 項目 (https://github.com/XiaoMi/mace-models),這個項目聚合了了一些常用的深度學習模型。
何亮亮介紹道,MACE 的核心框架是 C++,運算元分別設計為 OpenCL 和彙編語言,具體選擇哪個取決於底層的硬體,而周邊工具則採用了更靈活的 Python。
目前,MACE 還無法做到在安卓和蘋果系統之間自由切換,只支持安卓和 Linux。
MACE 在易用性、資源調度和兼容性方面的表現究竟如何?據悉,MACE 提供了豐富的文檔和 Model Zoo,讓開發者可以快速入手,且兼容主流的 ARM CPU 和常見的移動端 GPU,開發者可以靈活地選擇不同的 CPU/GPU/DSP 計算設備。
與三大移動端框架大比拼
當前移動端的三大框架 Caffe2、TensorFlow Lite、Core ML 無論是從知名度還是採用廣度上都比 MACE 有很大的優勢。但是,相比於這三大框架,MACE 也有自己獨特的優勢。
相對於 Caffe/Caffe2/TensorFlow Lite,MACE 最大的優勢是對 GPU 和 DSP 等異構計算的支持,劣勢則是知名度和生態有不小的差距;而 Core ML 作為不同平台的專有框架,應用場合目前沒有與 MACE 重疊。
對於開發者來說,MACE 最大的吸引力在於它對 CPU/DSP 異構計算的支持,這讓 MACE 具有其他開源框架不具備的性能優勢。
另一方面,Caffe2、TensorFlow Lite、Core ML 均使用 offline 方式,可在無需網路連接的情況下確保用戶數據的私密性。和其他框架一樣,MACE 也採用端側離線模式。
那這是否代表移動端深度學習框架的趨勢會傾向於 offline 呢?對此,何亮亮表示,移動端深度學習框架存在的意義在於端側的本地計算。至於深度學習的推理在未來主要是 online 還是 offline 模式,他認為主要取決於場景,並不會趨同到一個模式。
具體而言,這主要取決於業務模式、產品體驗、成本、隱私法規等幾個因素。
業務模式主要是指特徵數據的源頭以及推理結果的去向,不管是從成本還是用戶體驗來說,數據和計算的保持局部性大多是有益的,例如,對於特徵來自服務端的場景,天然適合 online 模式,比如廣告信息流的點擊率預估;而特徵來自端測,則適合 offline 模式,例如拍照的後處理。而未來晶元的發展,以及 5G 的普及,也會導致 online 和 offline 的成本變化,也會影響兩種模式的選擇。另外,隱私法規的出台也是一個很重要的決定因素。
跟其他技術一樣,隨著行業的發展和成熟,移動端深度學習框架也會逐漸成熟並成為標準化的基礎設施,但在此之前,仍會存在百家爭鳴的局面,選擇適合的框架解決產品落地的問題是最重要的。
目前,在移動端深度學習領域,無論是深度學習的異構計算晶元,還是晶元之上的深度學習框架,都處在蓬勃發展的階段。這不僅給開發者提供了眾多的選擇,同時也帶來了碎片化的負擔和困擾。小米作為智能手機和 IoT 設備廠商,同樣面臨著深度學習推理軟硬體選型的問題。為了更好的評估不同供應商的晶元和框架軟體的性能指標,小米發起了開源移動端深度學習基準測試項目 Mobile AI Bench (https://github.com/XiaoMi/mobile-ai-bench),希望藉助小米在手機和智能硬體供應鏈方面的優勢,與廣大晶元廠商和開發者共同努力,推動移動端深度學習推理領域的發展。
福利來啦!
12 月 20-21 日,AICon 全球人工智慧與機器學習技術大會將在北京國際會議中心舉辦,屆時何亮亮老師將帶來《小米移動端深度學習框架實踐》的精彩分享,想要跟何老師進一步交流的,不要錯過現場面基的機會。另外,大會還有來自 Google、微軟、亞馬遜、BAT、位元組跳動、京東、美團、華為等 40+AI 落地案例的實踐總結,乾貨滿滿,不可錯過。


※學習網路協議的最佳路徑和方法
※別動我的代碼!聊聊那些代碼保護的藝術
TAG:InfoQ |