比拼三大移動端深度學習框架,小米 MACE 有哪些優勢?
採訪嘉賓 | 何亮亮
AI 前線導讀:隨著深度學習領域的快速發展,以及移動端晶片計算能力的逐步提升,裝置端上的深度學習推理正在變成一個巨大的需求和趨勢,一個好用的深度學習框架成為深度學習應用落地的關鍵。小米團隊打造的 MACE ( ofollow,noindex">https://github.com/XiaoMi/mace ),就是專門為移動端晶片優化的深度學習框架,且已開源供開發者使用。
開發這個移動端深度學習框架的過程並非一帆風順,克服了一些困難之後,MACE 才誕生並逐漸被越來越的開發者採用。在開發過程中,小米有哪些經驗和踩坑經驗可以分享給開發者?AI 前線採訪了小米深度學習框架負責人何亮亮來進行了深入的瞭解。
更多幹貨內容請關注微信公眾號“AI 前線”(ID:ai-front)
作為小米深度學習框架負責人,何亮亮目前負責服務端與移動端深度學習框架的研發工作。他在分散式系統、儲存與資料庫、異構計算、深度學習、計算機視覺等領域有豐富的實踐經驗。
何亮亮介紹道,他帶領的團隊的主要工作內容,包括移動端深度學習框架 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 ,希望藉助小米在手機和智慧硬體供應鏈方面的優勢,與廣大晶片廠商和開發者共同努力,推動移動端深度學習推理領域的發展。
會議推薦:
12 月 20-21,AICon 全球人工智慧與機器學習技術大會將於北京盛大開幕,學習來自 Google、微軟、BAT、360、京東、美團等 40+AI 落地案例年終總結,與國內外一線技術大咖面對面交流,不見不散。