天天看點

淘系專家帶你初探端智能與MNN(下篇)引言手機淘寶中端智能的應用MNN介紹結語

淘系專家帶你初探端智能與MNN(下篇)引言手機淘寶中端智能的應用MNN介紹結語

作者|舒會(玄裳)

出品|阿裡巴巴新零售淘系技術部

關注「淘系技術」微信公衆号,回複“MNN”即可擷取兩次直播完整版 PPT 及視訊回放連結;

點選下方「閱讀原文」擷取 MNN 開源位址,歡迎大家 star 我們哦~

作者:舒會(玄裳)

MNN 項目核心負責人之一

阿裡巴巴淘系技術進階技術專家

先後任職于美國 Amazon、Google

Google ML Kit Founding Members之一

引言

淘系專家帶你初探端智能與MNN(上篇)

裡,我們探讨了端智能的特性,挑戰以及趨勢。端智能是Mobile First和AI First兩條道路的交叉點,也是許多移動開發者跨界發展的出路。

在這篇文章裡,我們會介紹一下手機淘寶中端智能的應用。然後會介紹一下手機淘寶端智能中提供核心基礎設施的推理引擎MNN。順帶說一句,MNN團隊中許多成員之前是做移動開發的。移動開發者向AI開發跨界,可以參考一下哦。

手機淘寶中端智能的應用

手機淘寶(手淘)裡面的端智能應用比比皆是。從大家最常用的商品搜尋框,到利用照相機視訊流買東西的“拍立淘”,再到最近幾年興起的使用AR(增強現實)進行化妝品的試妝,到處都是端智能的應用。

個人認為,端智能在手淘中的應用方式,分為以下兩類:

1、利用AI新技術,創造全新的互動方式。這種利用AI,打開一個新賽道的方式是最難的,也是最有回報的。這方面的例子是AR試妝(口紅,染發等)。現在在手淘裡,你可以進入雅詩蘭黛的口紅頁面,點選“線上試妝”來玩AR技術預覽口紅的效果。見下圖。

淘系專家帶你初探端智能與MNN(下篇)引言手機淘寶中端智能的應用MNN介紹結語

2、利用 AI 新技術,給已有的工作的流程提供新的增長點。這個所謂的增長點,可以是更加契合使用者個人的特點,也可以是某些操作更加有效率,更加節省服務端的壓力,或者更加隐私。當然,可以是以上的幾點(個性化,時效性,省服務端算力,隐私性)結合起來。

  • 個性化:千人千模。全局模型可以被使用者的個人使用資料個性化定制。目前手淘首頁的“猜你喜歡”頁面的推薦内容,就是使用了使用者的個人資料對全局推薦模型進行了定制,取得CTR的提升 (目前此功能在灰階實驗中)。
  • 時效性+省服務端的算力:以手機淘寶首頁的資訊流為例,手機端會向服務端請求展示的商品,服務端為回複一定數量的商品以及相應的排序,但是這個排序是可以被app内的使用者行為實時改變的。這個所謂的“端上重排”就是手機端利用本地的資訊,運作一個ML模型,快速做出決定,不用與服務端通信。端上重排根據使用者的浏覽資訊重排商品,可以提高轉化率。
  • 隐私性:這方面比較火的是前幾年由Google推出的Federated Learning。它可以在每個使用者資料不離開手機的情況下,訓練出一個描述所有使用者的模型,同時有安全算法保證最終的全局模型無法逆向出原始的訓練資料。Federated Learning還存在一些基本的研究挑戰沒有解決[1],是以手機淘寶還停留在嘗試Federated Learning,并沒有完全工業落地。

MNN介紹

MNN (Mobile Neural Network) 是阿裡巴巴内部自己研發的推理引擎。在它研發之初,TFLite剛剛釋出,而且由于TFLite最初版有諸多問題,為了快速響應業務的變化,阿裡巴巴決定内部自研推理引擎MNN。MNN在2019年5月初在Github開源。開源至今,受益于阿裡巴巴内部的使用者和開源社群使用者的回報,MNN逐漸成長為一個優秀的、成熟穩定的推理引擎。目前,在阿裡巴巴内部,MNN是端上推理引擎的事實标準。

MNN主要解決的是現在端智能的兩大痛點:1. 底層的硬體、作業系統碎片化 (CPU、GPU、NPU, Android/iOS, Mobile/IOT) 2. 機器學習的架構複雜(TFLite,PyTorch, ONNX, etc.)。為了能夠在不同的硬體、作業系統裡發揮最好的功能,MNN會在運作時根據運作環境尋找出最快的算子實作算法(我們稱這個過程為“半自動搜尋”)。關于半自動搜尋的技術細節,我們在第二次直播中有深度解答:

http://mudu.tv/watch/4397479

目前端上的深度學習引擎有許多家(Google有TFLite,Facebook有PyTorch,蘋果有CoreML,百度有PaddleLite,騰訊有NCNN,小米有MACE,阿裡巴巴有MNN),MNN提供了什麼特殊的價值呢?為什麼使用者要選用MNN而不是别的呢?

第一:MNN 的性能是領先于業界的。2019年9月的資料:Arm CPU上MNN 的單線程推理性能大約是TFlite的2~4倍;4線程推理性能大約是 TFLite 的10~20倍。(更多具體實驗資料,我們在第二次直播給出:

第二:MNN 的大小有優勢。它的靜态庫約為 TFLite 的66.7% (MNN + OpenCL backend: 1.2M + 334K; TFLite + NNApi backend: 2.3M)。

第三:MNN 支援多種異構裝置。CPU方面,MNN 支援了X86,ArmV7, V8。GPU 方面,MNN 支援了 OpenCL, OpenGL, Vulkan, Metal。NPU方面,MNN 支援了華為的 NPU ,并用在手淘的拍立淘場景中。

第四:MNN 的算子支援程度已經得到大幅的加強。MNN 在2019年12月大約增加了200個 OP 。

▐ MNN 的主要子產品

MNN 的主要子產品有:模型轉換,模型量化工具和推理引擎本身。

► 模型轉換

模型轉換器如下圖:

淘系專家帶你初探端智能與MNN(下篇)引言手機淘寶中端智能的應用MNN介紹結語

目前,MNN還沒有支援從頭開始訓練一個模型的能力。也就是說,使用者必須事先用其他的訓練架構比如Tensorflow, PyTorch把模型訓練好,然後再轉換為MNN的模型格式,最終部署到端上。

它主要的工作流程是,先解析“源頭”格式的模型(Caffe、TF、ONNX),進行一些與硬體無關的優化,例如圖優化、算子融合、算子替換、布局調整等。得到初步優化的圖之後,轉換為MNN自己的格式。MNN的模型格式是一個自定義Schema的flatbuffer格式 [2]。

► 量化工具

模型轉換好之後,可以使用 MNN 的量化工具對模型進行壓縮。目前,MNN支援 post-training quantization(無訓練量化)。後續 MNN 會支援 quantization-aware training(帶訓練量化),以獲得更好的準确率和更低比特的壓縮。

模型的量化工具如下圖:

淘系專家帶你初探端智能與MNN(下篇)引言手機淘寶中端智能的應用MNN介紹結語

MNN的量化方案是自己實作的,它目前有ADMM和KL散度兩種方案。也就是說,“源頭”的預訓練好的模型需要是浮點的。ADMM量化方案,是MNN根據達摩院的Paper “Extremely Low Bit Neural Network: Squeeze the Last Bit Out with ADMM” [3] 實作的。它與KL散度的差別在于:ADMM是基于數學優化的方法,隻需要幾十個資料點即可,但是計算較慢。而KL散度是基于機率統計的方法,需要較多的資料(500到1000個資料點),計算較快。實際操作上來說,對特征的量化,ADMM和KL散度沒有巨大的差距;對權重的量化,推薦使用ADMM。

▐ MNN 未來展望

對于未來的發展,我們主要立足于兩點來看:第一,解決現有問題;第二,把握未來的趨勢,面向未來做技術布局。

解決現有問題方面:

MNN 的易用性還不夠。這方面,我們會有一整套的易用性提升:開箱即用的工具箱;文檔補齊;Demo 示例;預編譯包等… 這些易用性提升的改變,我們預計在今年春節之前釋出。

訓練:很多時候,要獲得一個用于某個應用場景的模型其實很簡單:拿 MobileNet 做一下遷移學習,就可以達到很好的效果。MNN 未來會加入訓練模型的能力,讓這種遷移學習的場景可以直接通過 MNN 的 API 或者工具達成。

面向未來的技術布局方面:

MNN + NPU:NPU的運作速度快了 CPU 好幾倍,而且能耗有優勢。是未來的主流。而且在可預見的未來,NPU的碎片化比較嚴重。MNN目前支援了華為的海思NPU,以後會支援更多的 NPU ,并且會提供一個統一的 API ,降低碎片化。

MNN 小程式:小程式平台降低了外部客戶把他們的軟體寫入手淘的門檻。以後,手淘裡面的端智能能力,可以通過小程式透出給外部開發者,使用簡單,功能強大。今年的雙11,modiface 與我們合作,通過小程式使用 MNN ,巨大提升了運作速度(相比于 TFJS ),降低了記憶體使用。未來,更多的外部客戶可以在他們的小程式裡調用 MNN ,簡單、高效地将機器學習帶到小程式裡。

模型壓縮:前文也提到了 NLP 應用是未來的一大趨勢。而 NLP 的模型普遍大于 CV 模型。在這個時候,大幅度地壓縮模型,能夠讓之前隻能在伺服器運作的模型放到端上運作。是以未來的 MNN ,會提供更好的模型壓縮。

結語

坊間傳言,許多人在衆多推理引擎中選擇 MNN 的原因是它快。而 MNN 并沒有那麼易用。這些使用者為了能夠使用 MNN 将他們的模型部署到 app 中所做的事情,可謂翻山越嶺。

2020年,我們希望 MNN 與使用者們一起成長,能夠真正成為好用、高效的機器學習引擎,幫助開發者把端智能玩進自己的 app 中。

References

[1]

https://en.wikipedia.org/wiki/Federated_learning#Technical_limitations

[2]

https://github.com/alibaba/MNN/blob/master/schema/default/MNN.fbs

[3]

https://arxiv.org/abs/1707.0987

We are hiring

淘寶基礎平台部-端智能團隊歡迎移動端計算優化工程師和推理引擎架構師的加入。對新技術感興趣,善于創新突破,渴望用新技術給使用者帶來創新體驗的同學請聯系我們。

履歷投遞至呂行:[email protected]

淘系專家帶你初探端智能與MNN(下篇)引言手機淘寶中端智能的應用MNN介紹結語