AI 模型編譯器 MegCC 開源,解決推理引擎體積問題
目前社區(qū)已經(jīng)有多個移動端深度學(xué)習(xí)推理框架,如:NCNN、MNN... 這些推理引擎都給社區(qū)的用戶帶來了在移動端上部署深度學(xué)習(xí)非常多的便利,但是他們也都有一個共性問題:隨著不斷地迭代以及性能優(yōu)化,運行時庫會逐漸的增大,特別是在不同算子 fuse 的時候,會導(dǎo)致非常多的長尾算子,這就會增大我們 App 或者 SDK 的體積。
為了解決這個問題,由?MegEngine?團隊開源的 MegCC 創(chuàng)新使用模型預(yù)編譯的方案,生成模型推理必要的代碼,去除掉了和模型推理無關(guān)的代碼,因此極大程度上減少了推理引擎的體積。主要方法是:
將傳統(tǒng)框架運行時的必要步驟:計算圖優(yōu)化、Kernel 選擇、內(nèi)存分配都移到編譯時,從而最大程度上減少了 Runtime 時的二進制體積大小,并根據(jù)模型信息做進一步的性能優(yōu)化。
該方案有以下優(yōu)點:
隨著框架的迭代將不會使得推理引擎的體積增大
很多的算子融合可以在編譯時根據(jù)模型信息生成對應(yīng)的 code
模型編譯時可以獲得整個計算圖的信息,這樣可以進一步進行極致的性能優(yōu)化
可以吸收社區(qū)在代碼生成方面的經(jīng)驗用于為 MegCC 生成 code
不同于傳統(tǒng)推理框架,MegCC 是一個真真實實的深度學(xué)習(xí)模型編譯器,具備極其輕量的 Runtime 二進制體積,高性能,方便移植,極低內(nèi)存使用以及快啟動等核心特點。用戶可在 MLIR 上進行計算圖優(yōu)化,內(nèi)存規(guī)劃,最后通過預(yù)先寫好的 code 模版進行代碼生成。目前,MegCC 已支持 Arm64,Armv7,x86,risc-v 以及單片機平臺。
GitHub 開源地址:https://github.com/MegEngine/MegCCgithub.com/MegEngine/MegCC
使用方法及效果
使用 MegCC 完成模型部署只需要完成以下 3 步:
模型編譯:編譯 MegEngine 模型,生成運行這個模型對應(yīng)的 Kernel 以及優(yōu)化之后的模型。
Runtime編譯:這個階段會將 Runtime 和上一步中生成的 Kernel 一起編譯成一個靜態(tài)庫。
集成到應(yīng)用中:調(diào)用上一步編譯的靜態(tài)庫的接口進行推理。
以 YOLOX 模型為例,運行效果如下圖:

從圖中可見,MegCC 生成的推理程序在保證推理性能良好(模型測速結(jié)果為 670ms)的情況下,其大小可以達(dá)到 95KB。
詳細(xì)操作文檔:MegCC/how-to-use-chinese.md at main · MegEngine/MegCC

未來計劃
目前 MegCC 僅支持 MegEngine 模型作為輸入,其他模型格式可以考慮轉(zhuǎn)換到 ONNX,然后通過?mgeconvert?進行模型格式轉(zhuǎn)換。
預(yù)計在未來 2 個月內(nèi),MegCC 將支持更多的模型格式編譯。同時實現(xiàn)以下進階功能:
支持ONNX模型作為輸入
做更多的Kernel fusion
支持更多的后端設(shè)備
大家在使用 MegCC 過程中有任何問題,歡迎隨時提 issue 告訴我們,也歡迎提 PR 幫助 MegCC 變得更好。
精彩分享
在 2022 年 11 月 19 日,DataFunSummit2022:AI 基礎(chǔ)軟件架構(gòu)峰會“深度學(xué)習(xí)框架論壇”,曠視科技 MegEngine 端側(cè)推理負(fù)責(zé)人陳其友帶來了《MegCC 用模型編譯的方式實現(xiàn)超輕量端上高性能推理》主題演講,從目前端上推理的現(xiàn)狀分析,到創(chuàng)新使用模型預(yù)編譯方案的 MegCC 詳解,帶你領(lǐng)略新一代 AI 模型編譯器 MegCC 的魅力。
演講章節(jié)介紹:
概述目前端上推理的現(xiàn)狀,主要是推理引擎體積方面的情況
介紹 MegCC 的編譯器方案
分享「超輕量、高性能、擴展性強」等特性的實現(xiàn)思路
總結(jié) MegCC 的現(xiàn)狀、優(yōu)勢以及未來的計劃
精彩不容錯過,查看回放:

附
GitHub:MegEngine 曠視天元?(歡迎 star~
https://github.com/MegEngine
Gitee:MegEngine/MegEngine
https://gitee.com/MegEngine/MegEngine
MegEngine 官網(wǎng):MegEngine-深度學(xué)習(xí),簡單開發(fā)
https://www.megengine.org.cn/
歡迎加入 MegEngine 技術(shù)交流 QQ 群:1029741705