比拼三大移動端深度學習框架,小米MACE有哪些優勢?

採訪嘉賓 | 何亮亮

AI前線導讀: 隨着深度學習領域的快速發展,以及移動端芯片計算能力的逐步提升,設備端上的深度學習推理正在變成一個巨大的需求和趨勢,一個好用的深度學習框架成爲深度學習應用落地的關鍵。小米團隊打造的MACE (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架構設計-異構計算

image

對於深度學習框架,尤其是推理框架,最核心的部分是高性能的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、字節跳動、京東、美團、華爲等40+AI落地案例的實踐總結,乾貨滿滿,不可錯過。

目前,大會開幕倒計時5天,大會日程已新鮮出爐,更多詳情歡迎點擊“閱讀原文”瞭解,也可諮詢票務小姐姐Amy:18514549229(微信同號)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章