Categories
程式開發

端智能與MNN初探


端智能介紹

什麼是端智能?為什麼要做它?

端智能(On-Device Machine Learning)是指把機器學習的應用放在端側做。這裡的“端側”,是相對於雲服務而言的。它可以是手機,也可以是IOT設備等。而端側所做的機器學習,不僅包括模型的推理,也包括了模型的訓練。

傳統的機器學習,由於模型大小、機器算力的問題,很多是放在服務端做的。比如Amazon AWS有“Amazon Rekognition Service”,Google有 “Google Cloud Vision Service”。而隨著以手機為代表的端側設備算力的提高,以及模型設計本身的演進,大小更小、能力更強的模型逐漸能夠部署到端上運行。端智能可以說是業界從Mobile First走向AI First的過程中必然會出現的產物。

你可能要問,模型可以放到端上跑,不一定代表它一定要放到端上跑。那為什麼一定要做端智能呢?

關於這個問題,我們先來看一則新聞 [1],主要內容是說工信部正在加強對於侵害用戶隱私的App的整治。以後想不經過用戶的同意而獲得他們的數據就沒那麼簡單了。而機器學習的核心就在於數據。有許多研究表明,有了足夠的數據,模型結構再簡單,也能獲得很好的結果。中國對於數據隱私性的重視在加強,國外就更不用說了。歐洲有極其苛刻的數據隱私保護法律 GDPR (General Data Protection Regulation)。下圖就代表了廣大在外企工作的朋友們被GDPR折磨的痛苦(筆者親身經歷)。

端智能與MNN初探 1

可以說,隱私性是未來做機器學習所繞不開的一點。而端智能可以做到數據不離端而進行推理甚至模型訓練,相比於雲端機器學習有天然的隱私性優勢。由 Google 推動的 Federated Learning 在這樣的背景下應運而生,它能夠讓大量的端側設備使用各自的數據協同訓練出一個全部模型,並且保證訓練數據不離端,隱私得到保護。這個就是端智能充分利用端側設備的算力的一個例子。在手機淘寶,Federated Learning 也在佈局之中。

除了隱私性上面的優勢以外,端智能在算力方面也有天然的優勢。給大家看一組數據的對比:2018年,世界上最快的計算機“Summit”的算力是143.5 PFLOPS [2] . 而在2018年,華為賣出了1700萬台P20 [3]。每台P20中的麒麟970 NPU的算力是1.92 TFLOPS [4]。這些NPU合起來的算力就有32640 PFLOPS,相當於227個“Summit”。端側設備的算力不容小覷。可以說,它是一個算力的海洋。

除了隱私性、更大的算力資源,許多應用場景是“非端不可”的,因為這些場景有很強的實時性。比如Snapchat中的人臉貼紙功能,需要對視頻流的每一幀進行處理,然後渲染。這就要求圖像處理的模型(例如人臉關鍵點的檢測模型)運行在端上。

總結來說,更好的隱私性,更大的算力資源池,實時性是端智能獨特的優勢,也是做端智能的原因。

端智能的挑戰

端智能的挑戰主要有:速度、設備碎片化、引擎大小、模型大小、內存佔用

速度:尤其在中國的環境下,手機設備碎片化嚴重,許多中低端的手機性能還不夠。推理引擎的運行速度非常重要。很多時候,某個視覺交互場景的FPS低於30,就是幻燈片體驗,不能用。過了30 FPS就能用。這是一個0到1的區別。速度快才能讓許多端智能應用場景在各種端上運行。

設備碎片化:端側設備的碎片化比較嚴重,有不同OS和版本,各種加速硬件(DSP, NPU, GPU等)。如何適配各種設備,保證模型在不同的設備上都能運行並充分利用硬件加速,是一個挑戰。

引擎大小:推理引擎需要集成到app裡才能運行模型。 App 大小超過一定的閾值,App Store/Play Store不給自動更新。

模型大小:模型太大會影響加載速度,模型更新時花費過多用戶的數據流量,而且運行時的內存佔用太大。

內存佔用:運行時內存佔用太大導致GC頻繁,影響用戶體驗,嚴重的甚至導致系統OOM。

端智能的幾個趨勢判斷

端智能行業是一個飛速發展的行業,我們在這樣的大環境下,不進則退。在這裡,把我們平時做的調研總結一下,說4個趨勢:

  1. 端上推理的重要性高於訓練,但是補齊端上訓練能力也有價值。
  2. 後摩爾時代到來,XPU 百花齊放。
  3. NLP 逐步走向成熟。
  4. 從手機端到AIOT端。

端上推理與訓練

在《2019-2020中國人工智能計算力發展評估報告》中 [5],調查機構IDC有報告指出,推理相對於訓練的比重會逐年上升,預計到2022年會超過訓練。如下圖所示。

端智能與MNN初探 2

從另外一個角度來說,端上訓練的重要性並沒有降低。 TensorflowLite 把 On-Device Training列入了它的規劃之中 [6];Apple CoreML 3 把On-Device Training作為它主打的功能 [7];即將開源的華為Mindspore框架也會擁有On-Device Training功能。

► 後摩爾時代與XPU

Google Jeff Dean在2019年12月中旬的一次採訪中提到:One thing that’s been shown to be pretty effective is specialization of chips to do certain kinds of computation that you want to do that are not completely general purpose, like a general -purpose CPU。

摩爾定律在過去的幾年逐漸失效,general-purpose CPU性能的增長速度已經平滑。見下圖:

端智能與MNN初探 3

Image From:

與此同時,每年出現的ML模型對算力的要求成指數增長。見下圖:

端智能與MNN初探 4

Image From:

為了滿足新模型對算力的要求,出現了許多針對AI特殊加速的“XPU”。比如Google的TPU、Edge TPU,華為的麒麟NPU等。

可以說,未來的端智能大部分算力要靠XPU來提供。如何適配碎片化的XPU,充分利用硬件性能,將是未來幾年推理引擎都需要面臨的挑戰。

The “ImageNet” Moment of NLP

CV中的ImageNet Challenge在2015年進入到了一個特別的時刻:機器學習模型的準確率正式超過了人類(ResNet的Top-5 Error Rate是3.6%,而人類的Top-5 Error Rate是5.1%) 見下圖。

端智能與MNN初探 5

Image From:

而NLP裡機器學習模型的能力超過人類的時刻(所謂“ImageNet Moment”)也已經到來。大家看2019年Google ALBERT模型在幾個NLP benchmark上面的表現:

端智能與MNN初探 6

RACE Leaderboard:

在RACE benchmark上, ALBERT雖然不及人類最佳performance,但是已經遠超普通人類的performance,也就是Amazon Mechanical Turk的結果。而在SQuAD benchmark上,ALBERT的ensemble模型performance已經超過了人類3%左右。見下圖:

端智能與MNN初探 7

SQuAD Leaderboard:

既然都已經在某些benchmark上超越了人類,可以預見,未來的幾年是NLP的廣泛應用的幾年。目前,最小的ALBERT模型大約47MB。這個大小已經適合在手機端上運行了。

從手機端到 AIOT 端

“端智能”中所謂的“端”,不局限於手機端。未來的幾年,將屬於AIOT (Artificial Intelligence of Things)。未來的幾年,全球手機的出貨量不會再像往年那樣大幅增長,而是平穩甚至下滑,而以智能音箱為代表的AIOT設備的出貨量正在處於一個飛速發展的時期。見下面兩圖:

端智能與MNN初探 8

全球手機出貨量趨勢:

端智能與MNN初探 9

全球智能音箱出貨量:

在AIOT端還沒有既定的標準,NN API的影響力局限於android。 AIOT端是未來的主戰場,為AIOT端設計AI應用,讓AI應用在AIOT端運行更快,是應用開發、算法開發和引擎開發者都需要做的。

從交互方式來看,AIOT端的交互方式跟手機也不同。手機是一個以觸覺、視覺(touch screen)為主導的交互方式,而AIOT端的交互方式中NLP的比例要大很多,Amazon Alexa、Google Home、天貓精靈這些智能音箱都是語音驅動的。

小結

在這一篇文章裡,我們探索了一下端智能的特性、挑戰和發展趨勢。下一篇公眾號文章中,我們會談一談手機淘寶中端智能的應用,並介紹一下手機淘寶中的端智能核心的技術基礎:端上推理引擎MNN。

References

[1]https://www.infoq.cn/article/64HTcpIr9fCr9FINqq09
[2]https://en.wikipedia.org/wiki/Supercomputer
[3]https://www.huaweicentral.com/huawei-sold-over-17-million-units-of-p20-series-and-7-5-million-units-of-mate-20-series-in-2018/
[4]https://hexus.net/tech/news/cpu/109757-huawei-kirin-970-soc-dedicated-neural-processing-unit/
[5]http://www.cbdio.com/BigData/2019-09/02/content_6150878.htm
[6]https://www.tensorflow.org/lite/guide/roadmap
[7]https://developer.apple.com/machine-learning/core-ml/

We are hiring

作者介紹

舒會(玄裳)

MNN 項目核心負責人之一

阿里巴巴淘系技術高級技術專家

先後任職於美國 Amazon、Google

Google ML Kit Founding Members之一

本文轉載自公眾號淘系技術(ID:AlibabaMTT)。

原文鏈接

https://mp.weixin.qq.com/s/NUXVB4aK87keQD21wJx3Cw