文 / 汪啟扉
本次演講將包括五個主要部分。首先,我將簡要介紹端上機器學習。其次我將討論如何建立適合移動端的機器學習模型,在第三和第四部分 ,我將分別介紹適用於移動應用的端上機器學習最佳化,以及基於隱私保護的端上機器學習的最新研究。最後,我將討論端上機器智慧的未來工作的展望。
1.端上機器學習
1.1 什麼是端上機器學習
得益於深度學習的巨大成功,我們周圍的裝置、機器、事物都變得越來越智慧。智慧手機、家庭助理、可穿戴裝置等裝置、自動駕駛汽車、無人機之類的機器,以及諸如電燈開關、家用感測器之類的機器,正在利用機器智慧來支援自動翻譯、自動駕駛、智慧家居等應用。比如智慧手機、家庭助理、可穿戴裝置等;機器方面有自動駕駛汽車、無人機,生活中的器件包括電燈開關、家用感測器之類的機器 。這些機器都正在利用自動翻譯、自動駕駛、智慧家居等功能。使用者可以隨心所以地使用機器智慧並享受其中。
早年,由於移動端上的計算資源非常有限,大多數機器智慧都利用雲計算實現。在基於雲的機器智慧中,源資料會發送到雲端進行智慧推理,然後將結果下載到本地裝置。此類基於雲和客戶端的系統可能會遭受延遲、隱私和可靠性方面的困擾。不過最近,我們注意到將智慧推理從雲端遷移到邊緣端以改善這些問題的趨勢。
1.2 為什麼我們需要端上機器學習
在基於雲的機器智慧應用中,使用者和裝置間的長互動延遲通常是由不穩定的網路頻寬引起的。透過將機器智慧轉移到客戶端可以提供穩定的低互動延遲。
機器智慧需要訪問私有使用者資料,例如使用者圖片、文件、電子郵件、語音等。機器將所有資料上傳到雲中可能會引起隱私和安全問題。由於端上機器只能在本地裝置上處理所有資料,因此可以保護使用者私有資料免受惡意軟體攻擊。
最後,即使在網路不可用或雲服務關閉的情況下,將智慧計算移到端上可以保持智慧服務始終可用。
因此,端上機器智慧已成為智慧和移動領域重點研究方向。透過隱私保護的雲端計算可以很好地平衡延遲、可靠性、隱私和效能等問題。
1.3 端上推理
基本上,因此,端上智慧是透過使用來自裝置感測器(例如攝像頭、麥克風、和所有其他感測器)的輸入訊號在裝置上執行深度學習推理來實現。該模型完全在裝置上執行而無需與伺服器通訊。
1.4 挑戰
有限的計算資源
雖然應用終端裝置機器學習顯示出巨大優勢,但仍然面臨許多挑戰。首要的挑戰是有限的計算資源,在過去的幾十年中,我們注意到了移動晶片組的計算能力遵循摩爾定律而不斷提高。但是,與具有分散式計算系統的雲集群相比,單臺裝置的計算資源仍然非常有限,無法滿足新興應用程式不斷增長的計算需求。
有限的功率
如今,使用者對裝置的使用比以往任何時候都多,每款新手機都在不斷提升電池容量並且支援快速充電功能。但是,裝置的有限功率仍然是長續航時間的主要挑戰。
裝置過熱
此外,高功耗通常導致裝置過熱,尤其是對於可穿戴裝置,這會影響使用者體驗並引起安全隱患。
從實驗資料中可以看出,機器學習使用的浮點計算會比整數計算需要更高的功耗。為了快速學習並降低功耗和記憶體的使用,我們必須最佳化機器智慧模型以滿足終端裝置應用在功耗、記憶體和延遲上的限制。
2.建立適合移動端的機器學習模型
2.1 模型效率
在深入探討開發移動端智慧模型的細節之前,我們先了解一下傳統伺服器端智慧模型和移動端智慧模型的效能資料。上圖顯示了模型大小和準確性之間的資料;而下圖顯示了模型準確性和延遲之間的資料。其中紅色虛線框顯示了傳統智慧模型的效能資料,藍色虛線框顯示的移動端智慧模型。從圖中可以看出就模型大小和推理延遲而言 Google Inceptiom等傳統伺服器端智慧模型比MobileNet模型要繁重得多。因此,傳統模型過於繁重,無法應用於移動應用。
2.2 MobileNet V1
2017年 谷歌釋出了著名的MobileNnet端上深度學習架構,它的主要貢獻之一是將標準卷積運算轉換為逐通道卷積運算。如左圖所示,逐通道卷積運算將標準卷積運算分解為兩個單獨的卷積運算:
第一步,它透過M個卷積核心對M個輸入通道進行卷積;
第二步,它對第一步的輸出進行1x1卷積,而不是透過其他N-1個不同的卷積運算組作為標準卷積運算對輸入進行卷積 。
透過這樣做可以使模型計算複雜度和引數數量減少約10倍,並使效能與Inception等最新伺服器端智慧模型保持一致。
此外,MobileNetmobilenetV1還透過可以控制全域性比例係數來對模型大小進行等比例縮放。
2.3 MobileNet V3
2019年研究人員設計了一個全新的MobileNet V3平臺。它透過硬體效能關聯的模型結構搜尋來構建新的MobileNetMobilenet模型。新平臺透過將網路適應性和行動網路結構搜尋融合在一起,並設定了具有目標延遲、 記憶體和功耗的目標函式來構建智慧模型。
2.4 MobileNet 效能基準測試
如圖所示,研究人員正在透過MobileNetmobilenetvV3和有效的神經體系結構搜尋提升端上機器學習模型的效能。這些端上智慧模型都達到了與最新伺服器端智慧模型相似的效能。但保持了較低的計算複雜度。更具體地說MobileNet V3以最低的計算複雜度限制實現了最高的準確性。這有些類似MobileNetmobilenet的體系結構已成為應用端上智慧模型的參考和基準。
MLPerf
此外,我想向大家介紹機器學習效能基準測試平臺MLPerf。這是一個開放的平臺供研究人員釋出智慧模型在不同硬體平臺上的最新效能基準,包括準確性、延遲、記憶體佔用和功耗。
每項測試結果涵蓋最常見的任務,包括在最流行的資料集上進行的影象分類、物件檢測、影象分割和自然語言處理。基於這些基準,使用者可以輕鬆檢視,模型效能併為他們的應用選擇合適的模型。
2.5 TFLite
另一方面,Google釋出了端上智慧的基礎架構TFLite,並將其作為輕量級的機器學習庫以及用於移動和嵌入式裝置的工具。它已嵌入到TensorFlow生態系統內,開發人員可以透過內建轉換器將訓練後的TensorFlow模型轉換為TFLite模型格式。轉換後的TFLite模型可用於構建跨平臺應用程式。
在Android系統中 ,Android神經網路API提供了本機介面用於執行TFLitetflite模型,並將直譯器提供給開發人員,應用開發人員可以構建自定義的C ++和 Java API以在裝置上呼叫模型進行智慧推斷。在iosiOS系統中,使用者可以透過C ++ 直接呼叫直譯器。
TFLite的推理速度更快
TFLite透過以下功能在終端裝置機器學習中脫穎而出。首先,其統一的基於FlatBuffer的模型格式與不同平臺相容;其次,它為移動端優化了預融合啟用和偏差計算;此外,它還提供了針對ARM上的NEON最佳化的核心從而顯著提高了執行速度;最後,它還支援訓練後量化。作為最流行的模型最佳化方法之一,模型量化將浮點係數轉換為整數。通常,量化可以使模型大小減少4倍,並使執行時間加快10-50%。
從圖中可以發現由TFLite自帶量化工具量化的模型顯著減少了類MobileNet模型和Inception V3模型的推理時間。此外,採用後期量化開發人員可以利用最新模型而無需從頭開始重新訓練模型。
模型壓縮
最近TFLite還發布了一個綜合庫用於將傳統的大型模型壓縮為較小的模型供給終端裝置情形,這被稱為Learn2Compress。這項技術採用使用者提供的預先訓練的大型TensorFlow模型作為輸入進行訓練和最佳化 並自動生成尺寸更小、記憶體效率更高、能源效率更高、推理速度更快、準確性損失最小即用型端上智慧模型。具體來說,模型壓縮是透過刪除對預測最無用的權重或操作(如低分數權重)實現。
它還引入了8位量化以及聯合模型訓練和模型蒸餾,以從大型模型中獲得緊湊的小型模型。對於影象分類Learn2Compress可以生成小型且快速的模型並具有適合移動應用的良好預測精度。例如在ImageNet任務上Learn2Compress所獲得的模型比Inception V3基準模型小22倍,比MobileNet V1基準模型小4倍,準確度僅下降4.6-7%。
TFLite 任務API
除了穩定的框架和先進的學習技術,TFLite還公開了一組功能強大且易於使用的工具庫供應用程式開發人員使用TFLite建立ML體驗。它為流行的機器學習任務(包括基於Bert NLP引擎的自然語言分類器、問題回答器)以及視覺任務API(包括分類器、檢測器和分段器)提供了最佳化的即用型模型介面。
TFLite任務庫可以實現跨平臺工作,並且在支援JAVA、 C++和Swift等上開發接受支援。這套TFLite ML機器學習任務API提供了四個主要優點。首先,它提供了簡潔且明確的API供非ML機器學習專家使用。其次,它為開發人員提供了高度可擴充套件性和自定義功能,開發者可在不瞭解模型的情況下構建自己的Android和iosOS應用程式。第三,它還發布了功能強大但通用的資料處理工具庫支援通用視覺和自然語言處理邏輯,以在使用者資料和模型所需的資料格式之間進行轉換,工具庫還提供了可以同時用於訓練和推理的處理邏輯。最後,它透過最佳化處理獲得了較高的效能,資料處理流程將不超過幾毫秒 從而確保使用TensorFlowTFLite的快速推理體驗,所有任務庫所用到的模型均由Google研究部門提供支援。接下來,我將討論如何使用TFLite任務API 在裝置上構建機器智慧應用程式。
從Java執行TFLite Task APIs
此處,我將展示一個Android客戶端使用TFLite任務API 的示例 。Android客戶端將呼叫JAVA介面以傳遞輸入訊號,輸入訊號將透過自身API進一步轉發給模型呼叫,模型推斷完成後,將輸出結果傳送給java介面,並進一步回傳到Android客戶端。
在示例中,使用者需要將模型檔案複製到裝置上的本地目錄 :
第一步:匯入gradle依賴關係和模型檔案的其他設定;
第二步:可以使用物件檢測器選項建立物件檢測器,並透過呼叫檢測方法進行同步推斷。在端到端系統設計中,可以利用MediaPipe框架以同步或非同步方式進行設計,請進一步參考開放原始碼的MediaPipe系統以獲取構建端到端視覺系統的詳細資訊。
3.建立適合移動端的機器學習模型
看上去我們已經為智慧社群建立端上機器智慧應用程式做出了卓越的貢獻,那我們是否可以做得更好?答案是肯定的。
3.1 硬體加速
端上機器學習社群當前正在研究的一項主要工作,透過諸如GPU EdgeTPU 和DSP之類的等硬體加速器來加速ML機器學習推理。上圖顯示了一些最近為移動裝置開發的硬體加速器。從圖中可以發現最新的晶片組(如海思、麒麟980、驍龍855和MediaTtek P9)的效能顯著提高。這個令人振奮的訊息將鼓勵開發人員在終端裝置上開發更多的應用程式。
這張幻燈片中的圖顯示了在ARM GPU和FPGA上執行基本濾波操作和影象分析操作的功耗基準與在CPU上執行相比透過在GPU和FPGA上進行最佳化來降低能源成本具有顯著優勢。
對於Filter2D(這是深度學習中最常用的操作之一)在GPU上執行可以將GPU的功耗降低一半。在FPGA上執行可以將功耗進一步降低到CPU的四分之一。
我們透過執行移動模型(如mobilenetMobileNet) 和伺服器端流行模型(如Iinception)列出了不同硬體平臺的基準。在臺式機CPU上執行MobileNet V1和V2大約需要45毫秒 ;在CPU和FPGA上協同執行時將顯著減少20倍 。
此外 在嵌入式CPU(如四核Cortex A53 )上執行MobileNet V1和V2將超過150毫秒,而在EdgeTPU上使用不到2.5毫秒。
透過對比CPU和 EdgeTPU上執行inception模型,我們同樣可以觀察到執行在EdgeTPU的延遲比執行在CPU上的延遲顯著減少。
令人難以置信的是上述顯著的延遲降低是透過右圖所示的微型晶片組實現的。
EfficientNet-EdgeTPU
在這裡,我們要展示一個利用自動機器學習構建硬體加速的端上機器學習模型的示例。我們將EfficientNet(也是最先進的移動神經網路體系結構之一)作為這項工作的基礎。為了構建旨在利用Edge TPU的加速器體系結構的 EfficientNets,我們呼叫了自動網路結構搜尋框架 ,並使用可以在Edge上高效執行的構建塊來擴充套件原始的EfficientNet的神經網路體系結構搜尋空間。我們還構建並集成了一個“延遲預測器”模組,該模組透過在週期精確的模型結構結構模擬器上執行模型來提供在Edge TPU上執行時模型延遲的估計。自動網路結構搜尋控制器透過強化學習演算法以在嘗試透過搜尋實現最大化預測延遲和模型準確性的聯合獎勵函式。
根據過去的經驗 我們知道當該模型適合其片上儲存器時Edge TPU的功耗和效能就將得到最大化。因此,我們還修改了獎勵函式以便為滿足此約束的模型生成更高的獎勵。
與現有EfficientNet, ResNet, 以及Inception 模型相比,EfficientNet-EdgeTPU-小/中/大模型透過專用於Edge硬體的網路架構可實現更好的延遲和準確性,特別值得注意的是比起ResNet-50,我們獲得的,EfficientNet-EdgeTPU-小模型具有更高的精度但執行速度快10倍。
作為廣泛採用的終端裝置推理平臺,TFLite還支援原生硬體加速。在這裡,我們顯示在CPU, GPU 和邊緣TPU上執行MobileNet V1TFLite模型的示例。
從總體上看CPU在MobileNet Vv1上執行浮點,推理一幀資料大約需要124毫秒。在CPU上執行量化的MobileNet Vv1比浮點模型快1.9倍,在GPU上執行浮點模型的速度比CPU快7.7倍,每幀僅使用16毫秒左右。
最後,在Edge TPU上執行量化模型僅需2毫秒。這比CPU上的浮點模型快62倍。因為我們可以得出透過硬體加速,可以在延遲、功耗和記憶體方面顯著最佳化模型推理的結論。
4.端上機器學習的隱私意識
我們是否已經實現端上機器智慧的最終目標?我們才剛開始。
4.1 終端上的資料很有意義
正如我們在開始時提到的,資料隱私是促使我們,轉向終端裝置機器智慧的另一個主要原因。但是,最新的端上機器智慧模型的訓練仍然需要在伺服器端進行。舉一個典型的應用案例:為了使機器能夠為人類識別狗之類的動物,我們可以使用左側的公共訓練影象來訓練模型,但是 我們通常需要在如右側圖片所示的極具挑戰性的場景下使用該模型。那麼在具有挑戰性的日常個性化使用案例中如何使模型達到高精度?一種簡單的解決方案是,收集私有影象並透過集中資料中心來重新訓練模型。雖然像Google這樣的大公司已經建立了最安全、最強大的雲基礎架構來處理這些資料,以提供更好的服務。但這顯然仍然不是最佳的解決方案。因為它引起了使用使用者私人資料的問題,其中可能包含敏感資訊,例如使用者人臉、使用者居住空間等。我們如何改善模型的個性化效能並保護使用者的隱私。
4.2 聯邦學習
現在,對於透過使用者與移動裝置互動進行訓練而得到的模型。我們將引入另一種方法——聯邦學習。
聯邦學習使手機能夠協作學習共享的預測模型。同時將所有訓練資料保留在裝置上,從而將進行機器學習的能力與將資料儲存在雲中的需求脫鉤,這超出了透過將模型訓練帶入裝置對移動裝置進行預測使用本地模型的範圍。它的工作方式如下:使用者的裝置下載當前模型,透過從手機上的資料學習來改進當前模型,然後將更改彙總為一個小的區域性更新,僅使用加密通訊將模型的更新發送到雲,並在此立即將其與其他使用者更新平均以改善共享模型。所有訓練資料都保留在使用者的裝置上,並沒有將使用者個人的資料更新儲存在雲端,聯邦學習可在確保隱私的同時 提供更智慧的模型、更低的延遲和更低的功耗。
這種方法的另一個直接優勢是除了提供對共享模型的更新之外,還可以立即使用手機上改進的模型,從而為您使用手機的方式提供個性化的體驗。
用Gboard測試聯邦學習
我們目前正在Android的Google鍵盤應用Gboard上測試聯邦學習。當Gboard顯示建議的查詢時,您的手機將在本地儲存有關當前上下文,以及是否接受建議的資訊。聯邦學習會處理終端裝置上的歷史記錄以提出對Gboard查詢建議模型下一次迭代的改進建議。
對於擁有數百萬使用者的Gboard而言,將該技術部署到的不同的裝置中是一個非常有挑戰的任務。在實際部署中,我們使用微型版本的TensorFlow來實現在裝置上的模型訓練,精心安排的時間表可確保僅在裝置閒置插入電源和免費無線連線時進行訓練,因此不會影響終端的使用效能。
5.未來的工作
看起來我們已經達成了不錯的目標,那麼未來會是什麼樣?
過去,所有的訓練和推理都是在集中式雲系統上進行的。這引起人們對隱私、延遲和可靠性的日益關注。今天,我們透過節省功效的智慧裝置,推理來製作部分分散式機器智慧模型仍在集中式資料中心上訓練並在本地裝置上執行。
在不久的將來,藉助聯邦學習技術我們將擁有完全分散式的AI以解決隱私問題和終身終端裝置學習的支援。最近,5G正在全球範圍內部署,5G的低延遲和高容量還將使AI處理能夠在裝置、邊緣雲和中央雲之間分佈從而為各種新的和增強的體驗提供靈活的混合系統解決方案。
這種無線邊緣架構具有適應性,並且可以根據每個用例進行適當的權衡。例如,效能和經濟權衡可能有助於確定如何分配工作負載以滿足特定應用程式所需的延遲或計算要求。到那時,我們可以看到loT(物聯網) 智慧城市和個性化領域中大量的新興應用。
總結
在本次報告中,我們簡要概述了端上機器學習的機遇和挑戰。其次 我們討論關於終端裝置機器學習的資源效率計算。在這一部分中,我們介紹了移動模型體系結構TFLite框架用於壓縮模型的高階技術,以及用於使用者構建端上機器智慧應用的開源機器學習任務API。最後,我們介紹了隱私保護的端上機器學習技術(聯邦學習)的最新進展。我們還指出了端上人工智慧的未來發展方向。