阿里開源首個(gè)移動(dòng)AI項(xiàng)目,淘寶同款推理引擎
淘寶上用的移動(dòng)AI技術(shù),你也可以用在自己的產(chǎn)品中了。
剛剛,阿里巴巴宣布,開源自家輕量級的深度神經(jīng)網(wǎng)絡(luò)推理引擎MNN(Mobile Neural Network),用于在智能手機(jī)、IoT設(shè)備等端側(cè)加載深度神經(jīng)網(wǎng)絡(luò)模型,進(jìn)行推理預(yù)測。
這是阿里開源的首個(gè)移動(dòng)AI項(xiàng)目,已經(jīng)用于阿里手機(jī)淘寶、手機(jī)天貓、優(yōu)酷等20多個(gè)應(yīng)用之中。覆蓋直播、短視頻、搜索推薦、商品圖像搜索、互動(dòng)營銷、權(quán)益發(fā)放、安全風(fēng)控等場景。在IoT等移動(dòng)設(shè)備場景下,也有若干應(yīng)用。
阿里表示,在iOS、Android的CPU、GPU性能上,MNN已經(jīng)普遍領(lǐng)先業(yè)界。
他們選擇深度神經(jīng)網(wǎng)絡(luò)模型MobileNet V2和SqueezeNet V1.1進(jìn)行了測試。
Android方面以小米6為例,MobileNet V2上耗費(fèi)時(shí)間約為27毫秒,SqueezeNet V1.1上耗費(fèi)約為25毫秒,領(lǐng)先業(yè)界至少30%;
iOS方面以iPhone 7為例,MobileNet V2上耗費(fèi)時(shí)間約為15毫秒,SqueezeNet V1.1上耗費(fèi)約為14.8毫秒,領(lǐng)先業(yè)界至少15%。
淘寶端智能無線技術(shù)專家離青說,MNN開源之后,每隔兩個(gè)月都會進(jìn)行一次更新,發(fā)布經(jīng)過淘寶應(yīng)用驗(yàn)證的版本。
MNN的兩大功能與四大特點(diǎn)
基于淘寶和達(dá)摩院的研究成果,阿里巴巴在2017年10月正式組建了MNN團(tuán)隊(duì)。
經(jīng)過淘寶技術(shù)部、搜索工程團(tuán)隊(duì)、達(dá)摩院團(tuán)隊(duì)、優(yōu)酷等各方力量的打磨,以及雙11和集五福等重大業(yè)務(wù)項(xiàng)目的考驗(yàn),在離青看來,MNN已經(jīng)是一個(gè)成熟的推理引擎了。
現(xiàn)在,MNN可以提供模型轉(zhuǎn)換和計(jì)算推理兩部分功能。
模型轉(zhuǎn)換部分幫助開發(fā)者兼容不同的訓(xùn)練框架。
當(dāng)前,MNN已經(jīng)支持Tensorflow(Lite)、Caffe和ONNX,PyTorch/MXNet的模型可先轉(zhuǎn)為ONNX模型再轉(zhuǎn)到MNN。而且,也能通過算子融合、算子替代、布局調(diào)整等方式優(yōu)化圖。
計(jì)算推理部分致力于高效完成推理計(jì)算。
為了更好地完成對模型的加載、計(jì)算圖的調(diào)度,以及各計(jì)算設(shè)備下的內(nèi)存分配、Op實(shí)現(xiàn)等任務(wù)。
他們在MNN中應(yīng)用了多種優(yōu)化方案,包括在卷積和反卷積中應(yīng)用Winograd算法、在矩陣乘法中應(yīng)用Strassen算法、低精度計(jì)算、多線程優(yōu)化、內(nèi)存復(fù)用、異構(gòu)計(jì)算等。
MNN架構(gòu)設(shè)計(jì)
離青介紹稱,在這樣的架構(gòu)設(shè)計(jì)下,MNN具備了以下的四大特點(diǎn):
輕量性:針對端側(cè)設(shè)備特點(diǎn)深度定制和裁剪,無任何依賴,可以方便地部署到移動(dòng)設(shè)備和各種嵌入式設(shè)備中。
通用性:支持Tensorflow、Caffe、ONNX等主流模型文件格式,支持CNN、RNN、GAN等常用網(wǎng)絡(luò)。
高性能:不依賴任何第三方計(jì)算庫,依靠大量手寫匯編實(shí)現(xiàn)核心運(yùn)算,充分發(fā)揮ARM CPU的算力。比如,在iOS設(shè)備上,可以開啟GPU加速(Metal),常用模型上快于蘋果原生的CoreML。
易用性:有高效的圖像處理模塊,覆蓋常見的形變、轉(zhuǎn)換等需求,一般情況下,無需額外引入libyuv或opencv庫處理圖像。
MNN不僅支持回調(diào)機(jī)制,可以在網(wǎng)絡(luò)運(yùn)行中插入回調(diào),提取數(shù)據(jù)或者控制運(yùn)行走向;還支持只運(yùn)行網(wǎng)絡(luò)中的一部分,或者指定CPU和GPU間并行運(yùn)行。
離青介紹,這一項(xiàng)目的核心目標(biāo),就是進(jìn)一步降低開發(fā)工程師和算法工程師在移動(dòng)環(huán)境中使用深度學(xué)習(xí)技術(shù)的門檻。
這樣的一個(gè)引擎,應(yīng)用到實(shí)際中是什么樣的情況呢?
這里有一個(gè)淘寶的例子
手機(jī)淘寶春節(jié)活動(dòng):掃年貨,集五福
2019年春節(jié)期間,淘寶通過掃年貨的方式加入到了阿里“集五福”活動(dòng)之中。
具體的使用場景是,通過掃一掃商品識別能力,來識別紅色年貨,并分析照片中有年貨的概率,根據(jù)概率來發(fā)放相關(guān)權(quán)益。
首先,為了掃描年貨,淘寶在服務(wù)端用百萬張年貨圖片訓(xùn)練出了一個(gè)可以鑒別年貨的深度神經(jīng)網(wǎng)絡(luò)模型。
接下來,就需要MNN發(fā)揮作用了。
用戶通過相機(jī)掃描年貨時(shí),淘寶會獲取相機(jī)中的照片數(shù)據(jù)。然后,對照片做預(yù)處理,包括圖片的縮放、顏色空間的轉(zhuǎn)換等。
離青說,掃年貨是一個(gè)基于相機(jī)的應(yīng)用場景,使用云端AI會消耗用戶大量的流量去傳輸逐幀照片、服務(wù)端的計(jì)算資源,同時(shí)響應(yīng)速度也會取決于網(wǎng)絡(luò)狀況。
而MNN,可以通過端側(cè)AI,避免了網(wǎng)絡(luò)開銷,使整體體驗(yàn)流暢、穩(wěn)定。
它能夠結(jié)合訓(xùn)練好的模型和經(jīng)過處理的數(shù)據(jù),快速做出相應(yīng)的計(jì)算處理,分析出照片中有年貨的概率。
如果照片中有年貨的概率達(dá)到淘寶設(shè)定的標(biāo)準(zhǔn),就可以認(rèn)定用戶掃描到了年貨,進(jìn)而發(fā)放相關(guān)的權(quán)益。
這只是阿里將移動(dòng)AI應(yīng)用到自身業(yè)務(wù)之中的一個(gè)場景;MNN,也只是阿里眾多移動(dòng)AI項(xiàng)目中的一個(gè)。
在離青看來,移動(dòng)AI領(lǐng)域的應(yīng)用、框架/引擎、硬件方面都有著很多的可能性。
接下來,他們將會在維持MNN輕量、通用、易用、高性能等方面特點(diǎn)的情況下,進(jìn)一步加強(qiáng)在端側(cè)核心算法的投入,降低開發(fā)者使用門檻,探索如何在云+端結(jié)合的情況下,發(fā)揮出更強(qiáng)的AI能力。
如果你對這個(gè)項(xiàng)目感興趣,請收好下面?zhèn)魉烷T:
https://github.com/alibaba/MNN
在這個(gè)項(xiàng)目中,阿里巴巴提供了使用說明文檔和基于圖片、視頻流的示例應(yīng)用等等。
他們也發(fā)出呼吁,希望大家多多進(jìn)行體驗(yàn)、反饋,用MNN構(gòu)建出不同的人工智能應(yīng)用~
One more thing
今年3月份正式宣布加入阿里的框架大牛賈揚(yáng)清,在MNN項(xiàng)目開源評審時(shí)也給出了自己的建議。
在賈揚(yáng)清看來,與Tensorflow、Caffe2等同時(shí)覆蓋訓(xùn)練和推理的通用框架相比,MNN更注重在推理時(shí)的加速和優(yōu)化,解決在模型部署的階段的效率問題,從而在移動(dòng)端更高效地實(shí)現(xiàn)模型背后的業(yè)務(wù)。
這和服務(wù)器端TensorRT等推理引擎的想法不謀而合。
離青說,這樣的轉(zhuǎn)變,讓MNN有了更切合使用場景的定位,對于其進(jìn)一步發(fā)展,和為開發(fā)者服務(wù),都有很大的幫助。
評論
查看更多