TensorFlow 亞太研發負責人李雙峯:TensorFlow Lite 如何連接世界?

摘要

輕量、快速、兼容度高,TensorFlow Lite 正是人工智能開發和移動化最好的結合。

機器學習的發展改變着健康醫療、語言交流和城市交通等我們生活中的諸多領域,越來越多的企業、組織甚至是個人嘗試用機器學習解決業務或者生活中遇到的難題。開發者數量的大量增加也意味着需要降低技術難度,讓更多人蔘與進來。

在 2015 年底,Google 開源了端到端的機器學習開源框架 TensorFlow:它既可以用於研究,也可以用於大規模生產領域;它既支持大規模的模型訓練,也支持各種環境的部署,包括服務器和移動端的部署;支持各種語言,包括 Python,C++,Java,Swift 甚至 Javascript。TensorFlow 提供全面靈活的專業工具生態系統,幫助解決各種艱難的問題。而近年來移動化浪潮和交互方式的改變,使得機器學習技術開發也在朝着輕量化的端側發展,於是 TensorFlow 團隊又在 2017 年底上線了 TensorFlow Lite,一個輕量、快速、兼容度高的專門針對移動式應用場景的深度學習工具,把移動端及 IoT 設備端的深度學習技術的門檻再次大大降低。

在 BMW · GeekPark Rebuild 2019 科技商業峯會上,極客公園邀請到了 TensorFlow 亞太研發負責人李雙峯來談一談已經在全球 20 億臺設備上部署的 TensorFlow Lite 在技術上的新突破以及未來應用的前景。

以下是Google TensorFlow 亞太研發負責人李雙峯在BMW · GeekPark Rebuild 2019 科技商業峯會上的演講實錄(經極客公園編輯整理):

李雙峯:大家好,我是 Google TensorFlow 的李雙峯,今天我來跟大家分享:TensorFlow Lite:開啓智能互聯生活的新可能。

伴隨移動和 IoT 設備的普及,世界以超乎想象的方式存在被連接的可能,如今已有超過 32 億的手機用戶和 70 億的聯網 IoT 設備(不包括手機、PC等)。而隨着手機成本不斷降低,並且隨着微控制器(MCU)和微機電系統(MEMs)的發展,高性能低功耗的芯片使得“萬物”智能具有了可能性。從智能家居到家用機器人,從共享單車到智能穿戴,從工業控制到車載設備…這些設備都有智能化的基礎。

邊緣設備的數據傳輸到雲端處理並非是最經濟有效的方式,經過雲端傳輸會有延遲,從而影響體驗。

從用戶端來看,他們對於交互的需求越來越高的,快速、及時的智能反應是消費者的普遍期待,這就給端側的機器學習帶來很多前景。以智能音箱爲例,喚醒的反應速度,是良好體驗的基礎。

端側機器學習的優勢使得智能互聯有了新的可能性:

1)更快更緊密的交互方式,因爲模型在本地執行,延遲小;

2)在沒有很好網絡的情況下仍然可以很好的提供服務;

3)更好的保護隱私,因爲在本地進行數據收集和處理,減少數據上傳。

但是實現端側機器學習有很多挑戰,主要是三個方面:

1)端側算力有限,限制了模型的複雜度;

2)端側內存有限,限制了能運行的模型大小;

3)電力有限,需要模型運算效率更好,比如對於大家所熟知的智能手錶而言,省電是一個很重要的考慮。

作爲開源的機器學習生態系統 TensorFlow 的一部分,TensorFlow Lite 致力於幫助企業克服這些困難,從而簡化移動設備和嵌入式設備的部署。

做爲背景,我簡單介紹一下 TensorFlow。TensorFlow 是一個端到端的開源的機器學習平臺,大家日常接觸的智能服務比如語音識別、圖像處理和智能推薦等,背後很多都是基於 TensorFlow 開發的。TensorFlow 可以用於前沿的研究也可以用於生產領域大規模使用,可以支持大規模數據的訓練也可以支持各種環境的部署,你可以用 Java、Python、Swift 甚至 Javascript 等各種語言來寫。TensorFlow Lite 是 TensorFlow 非常重要的一部分,專注於讓大家更好的部署移動端的機器學習應用,「一次轉換,隨處部署」,包括安卓、ios,Linux,還包括更小的芯片,比如微控制器 MCU 這樣的平臺。

剛纔講了三個挑戰,算力有限,內存有限,電量有限,怎麼樣解決這樣的部署難題呢?這正是 TensorFlow Lite 所專注解決的問題:第一,我們很希望大家部署端側的機器學習模型時,模型轉換起來很便捷,部署非常快;第二我們認爲性能非常關鍵;第三就是希望有更多模型優化的空間。TensorFlow Lite 就是爲速度設計而生,提供了便捷的轉換率,讓我們在移動端部署更快,也意味着開發效率會更高。其次,我們希望更快一些,這是性能的問題,我們會盡量利用手機端硬件加速。第三,希望運行環境更小一下,模型更小一些。

下面介紹一下 TensorFlow Lite 的整體架構,幫大家更好地理解一下 TensorFlow Lite 怎麼面對這些挑戰。

第一點就是更小的模型格式,並提供了方便的模型轉換器,可以把比較大的 TensorFlow 模型方便地轉化成更小的 TensorFlow Lite 模型。第二有更小的解釋器,安卓應用只需 1 兆左右的運行環境,在 MCU 上甚至可以小於 100KB。第三,在硬件加速層面,對於 CPU 利用了 ARM 的 NEON 指令集做了大量的優化。同時,Lite 還可以利用手機上的加速器,比如 GPU 或者 DSP(即將支持)等。另外,最新的安卓系統提供了 Android 神經網絡 API(Android NN API),讓硬件廠商可以擴展支持這樣的接口,經常聽到的 NPU 是專門爲神經網絡加速設計的芯片,NPU 可以支持 NN API,而 Lite 可以調用 NN API,從而利用 NPU 加速。

更激動人心的前景發生在 IoT 領域,TensorFlow Lite 可以支持微控制器 MCU,而 MCU 是單一芯片的小型計算機,沒有操作系統,只有內存,也許內存只有幾十 KB,全球有超過一千五百億的 MCU,很多設備上都有 MCU。我們發佈了 MCU 上的語音識別的模型,可以識別若干關鍵詞,語言模型只有 20KB 左右。同時我們還在構建 MCU 上的圖像識別模型,預計只有 250KB。

這裏面有很大的想象空間。舉個例子,一些小玩具裏面可能有 MCU 這樣小的芯片,你呼叫它的呢稱時就有一些反應,你還可以讓這個玩具在做一些設定的動作時會有一些反應,這些能力都依賴於小的低功耗的 MCU 上的機器學習的能力。讓 MCU 上都可以部署機器學習的模型時,智能開始無處不在。

TensorFlow Lite 還提供了很強大的優化工具,可以在精度損失很小的情況下,模型大大被壓縮。常見的一個概念叫量化,4 字節的浮點數模型可以轉換成 1 字節的整數模型,模型可以縮小 4 倍。另一個常用的技巧是剪枝,可以去掉一些複雜的樹枝和連接,模型的參數就會大大減少。這樣我們更進一步取得模型的壓縮 5 到 10 倍的效果。正是有非常強大的優化工具,將模型的大小大大減少,因此得以部署到各種移動設備上。

我們經過不斷努力,TensorFlow Lite 取得了非常好的運行速度。比如 MobileNet V1, 是我們設計的適用於移動的開源模型,單線程的情況下,在 Pixel3 上可以取得 83 毫秒的速度,如果用量化的技巧可以加速 1.8 倍,如果用 GPU 可以加速 5.5 倍。如果使用 DSP,則加速可以提到 13.8 倍。可以想象在一個普通手機上就可以處理幾十幀的效率。

之前談了端側機器學習的基本概念,下面看一看有意思的一些 Demo。Dance Like 是我們在 Google IO 發佈的一個基於 TensorFlow Lite 的應用。希望通過動作識別來進行舞蹈識別。我們在手機上運行五個不同的任務,且不犧牲性能,下面看看我們是如何做到的。

第一步運行兩個身體部位的圖像分割模型,第二步根據分割模型進行匹配和打分。第三和第五步分別進行播放錄製的視頻,同時進行視頻的解碼,並且做運行時的調整。有五個不同的任務在手機上運行,調用了 CPU 和 GPU 資源,可以取得非常好的性能,這證明了端側的機器學習有非常強大的功能。

更加激動人心的領域是在於端側的語音識別,不久前我們,宣佈了最新研究的完全基於神經網絡的端側語音識別,效果和基於服務器端的效果十分接近,精度沒有太大的損失,這代表着端側機器學習時代的逐步到來,端側語音識別是比較難的問題,我們在這方面有很多進展,一方面是算法和技術層面有很多突破,另外一方面依賴 TensorFlow Lite 的框架幫助大家取得很的高性能。

另外這樣的功能還可以離線運行,可以想像大家拿着手機在沒有信號的時候語音識別都可以很好的工作。我們也依賴於很多壓縮的技巧,左側服務器模型需要 2G 大小,右側只需要 80 兆。我們今年的 Google IO 我們也提到了 Live Caption,可以在手機端離線把語音轉換成文字。在未來,很多能力都可以在設備端執行,並不需要到雲端。

端側機器學習在文本、語音、圖像和音頻方面都有非常廣泛的想象空間。全球有超過 20 億的設備上部署着 TensorFlow Lite,這個數字還在不斷增加當中。Google 自己的產品大量部署 Lite,比如 Google Assistant(部署在非常多元的設備上,比如手機端、手錶、車載和智能音箱),Google Photos 等;也可以看到國際巨頭像 Uber,Airbnb 等,還有國內大的公司比如網易、愛奇藝等都在使用 TensorFlow Lite。還有更多元的 TensorFlow Lite 的場景。

第一個例子是閒魚,閒魚是閒置物品的交易市場,面臨的問題是更好服務非專業的賣家,通過使用機器學習的幫助,讓買賣雙方有更輕鬆的交易。自動給一些標籤,識別這個照片裏面有沒有傢俱,提高了發佈的效率。TensorFlow Lite 給閒魚的端側體驗提供了很好的幫助。另外一個例子來自於科沃斯,是國內家用機器人的領導者,如何讓用戶用更少的時間進行清掃工作是他們不斷追求的目標。科沃斯使用了機器視覺的幫助,可以識別這個過程中的一些障礙物,他們選擇了用 TensorFlow Lite 部署深度神經網絡,將推理速度提高了 30%,提高了用戶的體驗。

TensorFlow Lite 也非常適合工業物聯智能設備的開發,因爲它很好地支持如樹莓派及其他基於 Linux SoC 的工業自動化系統。創新奇智應用 TensorFlow Lite 開發智能質檢一體機、智能讀碼等工業軟硬一體化智能產品,在 PC 端訓練模型,在端側部署模型。他們的工作已經被應用到工業質檢等場景,比如用於服裝廠的快速質檢。

還有一個例子是出門問問,是語音交互軟硬件爲核心的智能產品公司,熱詞喚醒是用戶對語音交互第一個印象,準確、實時、輕量化的喚醒非常重要。特別是待機的時候保持低能效,非常重要。通過 TensorFlow Lite 部署的端側模型,能夠給予保障高喚醒率和低錯誤率,同時保持運行環境非常輕量化。

最後我們談一個重要的話題,就是數據隱私。在不久前召開的 Google I/O 大會的主題演講當中提到的聯邦學習(Federated Learning),可以很好的解決的這個難題。聯邦學習是一種新的機器學習方法,它不需要從設備中收集原始數據,每個設備會計算一個局部的模型,把這些局部模型的參數更新安全地上傳到服務器端,服務器端就可以聚合大量的局部模型,形成一個全局模型,最後全局模型發回到用戶手機中。可以看到,整個過程當中並不需要收集用戶真實的輸入數據,能夠很好的保證用戶隱私,同時實現更好的體驗。

谷歌鍵盤輸入法 Gboard 已經遷移到這項技術中,當一個新的單詞流行的時候,聯邦學習允許成千人在剛開始使用後就很快學會新的單詞。而 Google 本身並未看過你輸入的內容。

最後無論是個人開發者還是企業,TensorFlow 都希望提供不斷優化的開源技術,幫助大家解決問題,創造未來。謝謝大家。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章