48.1 功能特點
- 一鍵部署,腳本參數(shù)就可以切換ios或者android
- 支持iOS gpu運行MobileNet、squeezenet模型
- 已經(jīng)測試過可以穩(wěn)定運行MobileNet、GoogLeNet v1、squeezenet、ResNet-50模型
- 體積極小,無任何第三方依賴。純手工打造。
- 提供量化函數(shù),對32位float轉(zhuǎn)8位uint直接支持,模型體積量化后4M上下
- 與ARM相關(guān)算法團隊線上線下多次溝通,針對ARM平臺會持續(xù)優(yōu)化
- NEON使用涵蓋了卷積、歸一化、池化所有方面的操作
- 匯編優(yōu)化,針對寄存器匯編操作具體優(yōu)化
- loop unrolling 循環(huán)展開,為提升性能減少不必要的CPU消耗,全部展開判斷操作
- 將大量繁重的計算任務(wù)前置到overhead過程
48.2 框架結(jié)構(gòu)

- MDL 框架主要包括:
- 模型轉(zhuǎn)換模塊(MDL Converter)
- 模型加載模塊(Loader)
- 網(wǎng)絡(luò)管理模塊(Net)
- 矩陣運算模塊(Gemmers)及供 Android 端調(diào)用的 JNI 接口層(JNI Interfaces)
- 其中,模型轉(zhuǎn)換模塊主要負責將Caffe 模型轉(zhuǎn)為 MDL 模型,同時支持將 32bit 浮點型參數(shù)量化為 8bit 參數(shù),從而極大地壓縮模型體積;模型加載模塊主要完成模型的反量化及加載校驗、網(wǎng)絡(luò)注冊等過程,網(wǎng)絡(luò)管理模塊主要負責網(wǎng)絡(luò)中各層 Layer 的初始化及管理工作;MDL 提供了供 Android 端調(diào)用的 JNI 接口層,開發(fā)者可以通過調(diào)用 JNI 接口輕松完成加載及預(yù)測過程。
48.3 MDL 的性能及兼容性
- 體積 armv7 300k+
- 速度 iOS GPU mobilenet 可以達到 40ms、squeezenet 可以達到 30ms
- MDL 從立項到開源,已經(jīng)迭代了一年多
- 移動端比較關(guān)注的多個指標都表現(xiàn)良好,如體積、功耗、速度。百度內(nèi)部產(chǎn)品線在應(yīng)用前也進行過多次對比,和已開源的相關(guān)項目對比,MDL 能夠在保證速度和能耗的同時支持多種深度學(xué)習(xí)模型,如 mobilenet、googlenet v1、squeezenet 等,且具有 iOS GPU 版本,squeezenet 一次運行最快可以達到 3-40ms。
48.4 同類框架對比
- 框架Caffe2TensorFlowncnnMDL(CPU)MDL(GPU)硬件CPUCPUCPUCPUGPU速度慢慢快快極快體積大大小小小兼容Android&iOSAndroid&iOSAndroid&iOSAndroid&iOSiOS
- 與支持 CNN 的移動端框架對比,MDL 速度快、性能穩(wěn)定、兼容性好、demo 完備。
48.5 兼容性
- MDL 在 iOS 和 Android 平臺均可以穩(wěn)定運行,其中 iOS10 及以上平臺有基于 GPU 運算的 API,性能表現(xiàn)非常出色,在 Android 平臺則是純 CPU 運行。高中低端機型運行狀態(tài)和手機百度及其他 App 上的覆蓋都有絕對優(yōu)勢。
- MDL 同時也支持 Caffe 模型直接轉(zhuǎn)換為 MDL 模型。
大數(shù)據(jù)視頻推薦:
網(wǎng)易云課堂
CSDN
人工智能算法競賽實戰(zhàn)
AIops智能運維機器學(xué)習(xí)算法實戰(zhàn)
ELK7 stack開發(fā)運維實戰(zhàn)
PySpark機器學(xué)習(xí)從入門到精通
AIOps智能運維實戰(zhàn)
騰訊課堂
大數(shù)據(jù)語音推薦:
ELK7 stack開發(fā)運維
企業(yè)級大數(shù)據(jù)技術(shù)應(yīng)用
大數(shù)據(jù)機器學(xué)習(xí)案例之推薦系統(tǒng)
自然語言處理
大數(shù)據(jù)基礎(chǔ)
人工智能:深度學(xué)習(xí)入門到精通