想在手機上用自己的機器學習模型?谷歌爸爸的模型壓縮包你滿意

2021-01-11 雷鋒網

雷鋒網按:Google I/O 2018 上,谷歌發布了可供開發者定製移動端機器學習模型的 ML Kit 開發套件,關於該套件中的核心技術:Learn2Compress 模型壓縮技術,谷歌也火速在 Google AI 上撰文對其進行了詳細介紹和實戰測試,雷鋒網 AI 科技評論將其內容編譯如下。

大家都知道,要成功地訓練和運行深度學習模型,通常要求海量的計算資源,超大內存以及足夠的能源來支撐,這也就為想要在移動端(mobile)和 IoT 設備上同樣成功地運行模型帶來了相應的障礙。移動端機器學習(On-device machine learning)允許你直接在該設備上運行推理,且具有保證數據隱私性和隨時使用的優勢,不管網絡連接狀況如何。此前的移動端機器學習系統,如輕量神經網絡 MobileNets 和 ProjectionNets 均通過對模型效率的優化來處理資源瓶頸問題。但如果你想要在手機上的移動應用中運行自己設計和訓練的模型呢?

現在谷歌幫你解決了這個難題,在 Google I/O 2018 上,谷歌面向所有移動端開發者發布了移動端機器機器學習開發套件 ML Kit。該 ML Kit 開發套件中的一項即將可用的核心功能,是由谷歌 research 團隊開發的 Learn2Compress 技術所驅動的一項自動模型壓縮服務。Learn2Compress 技術能夠在 TensorFlow Lite 內定製移動端深度學習模型,定製後的模型可高效的運行在移動端設備上,無需擔心內存不足和運行速度過慢。谷歌也很高興不久後在 ML Ki 中實現 Learn2Compress 技術驅動的圖像識別功能。Learn2Compress 技術將率先開放給一小部分開發者,並將在接下來的幾個月內提供給更多的開發者們使用。對該技術特性感興趣並有意設計自己模型的開發者可以點擊此網址進行註冊。

Learn2Compress 技術的工作原理

Learn2Compress 技術融合了此前研究中介紹的 ProjectionNet 等學習框架,並結合了神經網絡模型壓縮的幾項前沿技術。Learn2Compress 技術的工作原理是這樣的:先輸入一個用戶提供的預先訓練好的 TensorFlow 模型,隨後 Learn2Compress 技術開始訓練和優化該模型,並自動生成一個隨時可用的移動端模型,該模型尺寸較小,內存佔用和能源利用效率更高,且能在保證最小限度丟失準確率的情況下達到更快的推理速度。

可自動生成移動端機器學習模型的 Learn2Compress 技術

為了達成模型壓縮的目的,Learn2Compress 技術使用了多重神經網絡優化和下面三項模型壓縮技術:

通過移除那些對預測沒有太大作用的的權重或者運算(比如低分權重)來修剪,降低模型尺寸。該操作尤其能使包含稀疏輸入或輸出的移動端模型的效率得到相當大的提升,雖然模型在尺寸上被壓縮小 2 倍,但仍保留著原來模型 97% 的預測質量。在訓練模型的過程中應用的量子化技術格外有效,該技術可以通過減少用於模型權重和激活數值的位數來提升模型推理速度。例如,使用 8-bit 固定點表示而非浮點數值可以加速模型推理,降低能源消耗以及有望進一步將模型尺寸縮小 4 倍。遵循老師-學生學習策略的聯合訓練(Joint training)和蒸餾(distillation)方法—保證最小限度丟失準確率的前提下,谷歌在使用一個大的老師網絡(在該案例中,使用的是用戶提供的 TensorFlow 模型)來訓練一個壓縮學生網絡(即移動端模型 on-device model)。

使用聯合訓練和蒸餾方法來學習壓縮學生模型

老師網絡可以是固定的(就像在蒸餾方法中那樣)或者是被共同優化的,老師網絡甚至還可以同時訓練不同尺寸的多種學生模型。因而,Learn2Compress 技術只需一次操作就可以生成具有不同尺寸和不同推理速度的多種移動端模型,而非單一模型,同時還支持開發者從中選取最符合自己應用需求的那個模型。

以上這些再加上其他類似遷移學習這樣的技術也可以使模型壓縮進程更加具有效率和可擴展至大規模數據集。

Learn2Compress 技術的實戰表現如何?

為了證明 Learn2Compress 技術的有效性,谷歌基於幾個在圖像和自然語言任務中使用的最先進的深度神經網絡(如 MobileNets,NASNet,Inception,ProjectionNet 等),並使用該技術將它們壓縮成移動端模型。給定一個任務和數據集,谷歌就可以使用該技術生成具有不同的推理速度和模型尺寸的多種移動端模型。

Learn2Compress 模型在多種尺寸下的準確度,在 CIFAR-10(左圖)上的全尺寸基線網絡,以及 ImageNet(右圖)圖像識別任務。生成了多種 CIFAR-10 和 ImageNet 分類器變體的學生網絡的架構的靈感來自 NASNet 和 MobileNet。

在圖像識別方面,Learn2Compress 技術可生成適合手機應用的,且具有良好預測精度的既小又快的模型。舉個例子,在 ImageNet 任務上,Learn2Compress 技術可實現一個比 Inception v3 baseline 小 22 倍,比 MobileNet v1 baseline 小 4 倍的模型,而準確率僅下降了 4.6-7%。在 CIFAR-10 上,使用共享參數來共同的訓練多種 Learn2Compress 模型所花費的時間,只比訓練單獨的一個 Learn2Compress 大模型多耗時 10%,例如 yields 3 壓縮模型在尺寸上要小 94 倍,而速度上快 27 倍,成本降低 36 倍,且能達到很好的預測質量(90-95% 的 top-1 級別準確度)。

在 CIFAR-10 圖像識別任務下,使用 Pixel phone 測試 baseline 和 Learn2Compress 模型得到的計算成本和平均預測延遲。Learn2Compress-優化模型使用 NASNet 樣式的網絡構架。

谷歌也很開心地看到開發者已經使用這種技術做出了一些成果。例如,一個名為 Fishbrain 的垂釣愛好者社交平臺使用了谷歌的 Learn2Compress 技術,將平臺目前的圖像識別雲模型(尺寸大小 80MB+,達到了 91.8% 的 top-3 級別準確度)壓縮成了一個十分小的移動端模型(尺寸少於 5MB,但仍保持與原來大模型相似的準確度)。在另外一些案例中,谷歌發現得益於正則化效應(regularization effect),壓縮後的模型在準確度上甚至有稍微勝於原來的大模型的可能。

谷歌表示,隨著機器學習和深度學習技術的不斷發展,他們將會繼續改進 Learn2Compress 技術並將其擴展至更多的用戶案例(不僅局限於圖像識別這類模型)。谷歌還很期待上線 ML Kit 的模型壓縮雲服務。谷歌希望 Learn2Compress 技術可以幫助開發者自動構建和優化他們自己的移動端機器學習模型,這樣開發者們就可以專注於開發包含計算機視覺、自然語言以及其他機器學習應用在內的優秀的應用程式和酷炫的用戶體驗了。

via Google AI Blog,雷鋒網AI科技評論編譯。

相關焦點

  • 比Keras更好用的機器學習「模型包」:0代碼上手做模型
    做機器學習模型時,只是融合各種算法,就已經用光了腦細胞?又或者覺得,數據預處理就是在「浪費時間」?一位畢業於哥廷根大學、做機器學習的小哥也發現了這個問題:原本只是想設計個模型,結果「實現比設計還麻煩」。
  • 比Keras更好用的機器學習「模型包」:無需預處理,0代碼上手做模型
    原標題:比Keras更好用的機器學習「模型包」:無需預處理,0代碼上手做模型蕭簫發自凹非寺量子位報導|公眾號QbitAI做機器學習模型時,只是融合各種算法,就已經用光了腦細胞?一位畢業於哥廷根大學、做機器學習的小哥也發現了這個問題:原本只是想設計個模型,結果「實現比設計還麻煩」。於是他自己動手做了個項目igel(德語中意為「刺蝟」,但也是Init、Generate、EvaluateMachineLearning的縮寫),無需編寫任何多餘代碼,就能設計出想要的模型。
  • 模型壓縮真的有用嗎?
    什麼是模型壓縮?2. 為什麼要進行模型壓縮?模型壓縮後,模型很小,進行推斷的運算量小,利於在移動端部署諸如Bert等深度學習的參數太多了,模型太大了,消耗的計算資源過多,進一步加大了深度學習愛好者們的「貧富差距」,不夠和諧。
  • 深度學習模型壓縮方法
    複雜的模型固然具有更好的性能,但是高額的存儲空間、計算資源消耗是使其難以有效的應用在各硬體平臺上的重要原因。最近正好在關注有關深度學習模型壓縮的方法,發現目前已有越來越多關於模型壓縮方法的研究,從理論研究到平臺實現,取得了非常大的進展。
  • 【全自動機器學習】ML 工程師屠龍利器,一鍵接收訓練好的模型
    1 新智元原創作者:胡毅奇,南京大學 LAMDA 研究所   【新智元導讀】機器學習系統有大量的超參數,在應用中需要依賴領域專家知識,並且有繁重的人工調參任務。現在,有一項工作希望讓這些過程自動化,只需一個按鈕,就能讓你得到訓練好的模型,這就是「自動機器學習」(autoML)。
  • LIME:一種解釋機器學習模型的方法
    機器學習如今是非常火的一個話題。隨著計算機在圍棋等遊戲中擊敗人類專家,許多人不禁要問機器是否也能勝任司機的工作,甚至是取代醫生?現在很多前沿的機器學習模型還是一個黑盒,幾乎無法去感知它的內部工作狀態。這就給我們帶來了可信度的問題:我該相信那個模型的某個預測結果是正確的嗎?或者說我該相信那個模型的預測結果普遍都是合理的嗎?
  • 手把手教你用PySpark構建機器學習模型
    PySpark是一種適用於執行大規模探索性數據分析、構建機器學習管道、為數據平臺創建ETL的出色語言。如果你對Python以及諸如Pandas這樣的庫很熟悉,那麼PySpark語言可以很好地幫助你創建更多可擴展的分析和管道。本文展示了如何使用PySpark創建一個機器學習模型。
  • 如何使用JavaScript構建機器學習模型
    作者:Abhishek Soni參與:李澤南目前,機器學習領域建模的主要語言是 Python 和 R,前不久騰訊推出的機器學習框架 Angel 則支持 Java 和 Scala。本文作者 Abhishek Soni 則用行動告訴我們,開發機器學習模型,JavaScript 也可以。JavaScript?我不是應該使用 Python 嗎?
  • 7 Papers | 谷歌量子霸權論文;13項NLP任務奪冠的小模型ALBERT
    論文 2:InterpretML: A Unified Framework for Machine Learning Interpretability摘要:InterpretML 是一個為實踐者和研究者提供機器學習可解釋性算法的開源 Python 軟體包。
  • ...首個自動圖機器學習工具包AutoGL,開源易用可擴展,支持自定義模型
    機器之心報導機器之心編輯部如何應用自動機器學習 (AutoML) 加速圖機器學習任務的處理?清華大學發布全球首個開源自動圖學習工具包:AutoGL (Auto Graph Learning),支持在圖數據上全自動進行機器學習。
  • Google AI建立了一個能夠分析烘焙食譜的機器學習模型
    AI研究人員的一個目標是想辦法讓機器學習模型更容易解釋,這樣就可以理解它們為什麼可以做出預測。Google AI的研究人員已經展示了如何建立一個能夠分析烘焙食譜的可解釋的機器學習模型。該機器學習模型可以開發自己的新食譜,而且建立該模型不需要任何數據科學專業知識。
  • 谷歌AutoML創造者Quoc Le:未來最好的人工智慧模型將由機器生成
    構建機器學習模型的過程需要反覆的人工調整:研究者會在初始的模型上嘗試不同的架構和超參數,在數據集上評估模型的表現,再回頭進行修改;這個過程會反覆進行,直到達到最優。第一種是架構遷移學習,比如找到一個在圖像識別數據集上的好架構之後再遷移用於目標檢測。另一種遷移學習是權重遷移學習——如果你在公共數據集上訓練你的網絡,你會得到一個結果,然後再在你自己的數據集上再訓練該網絡。讓我們假設這樣的情況:我們想做鮮花檢測。
  • 兩步幫你快速選擇SKlearn機器學習模型
    Scikit-learn,簡稱Sklearn,是使用最廣泛的開源Python機器學習庫。
  • 谷歌開源NLP模型可視化工具LIT,模型訓練不再「黑箱」
    其他模塊的具體細節,參見:https://github.com/PAIR-code/lit/blob/main/docs/user_guide.md看了上面的介紹,你是不是迫不及待地想要上手試試這個炫酷的可視化工具?下面我們來看它的安裝過程和示例。
  • 為什麼90%的機器學習模型從未應用於生產?
    在這種情況下,投入數十億美元開發可以改進產品的機器學習模型就可以理解了。但有一個問題。公司不能只是把錢砸在數據科學家和機器學習工程師身上,就希望可以有奇蹟發生。據 VentureBeat 報導,大約 90% 的機器學習模型從未投入生產。換句話說,數據科學家的工作只有十分之一能夠真正產出對公司有用的東西。
  • 超過GPT3的谷歌萬億參數的AI語言模型
    Switch Transformer建立在混合專家的基礎上,這是90年代初首次提出的人工智慧模型範式。粗略的概念是,在一個更大的模型內保留多個專家,或專門從事不同任務的模型,並由一個 "門控網絡 "為任何給定數據選擇諮詢哪些專家。
  • 教程 | 如何使用JavaScript構建機器學習模型
    本文作者 Abhishek Soni 則用行動告訴我們,開發機器學習模型,JavaScript 也可以。JavaScript?我不是應該使用 Python 嗎?甚至 Scikit-learn 在 JavaScript 上都不工作。這是可能的,實際上,連我自己都驚訝於開發者對此忽視的態度。
  • 谷歌機器學習白皮書全解析 43條黃金法則(一)
    流水線(Pipeline):機器學習算法的基礎設施;包括從前端收集數據,把它放入訓練數據文檔,訓練一個或多個模型,以及把模型輸出、產品化。概覽:為了開發出好產品:做機器學習這一行首先要擺正心態,你是一名(優秀的)工程師,不要拿專家的標準來要求自己。
  • 機器學習模型選擇如此簡單
    寫在之前:有些概念跟平時你見過的機器學習文章描述的可能不太一樣,但是它會給你一種「心裡一顫
  • 谷歌用AI模型實現「實時」天氣預報
    本周,谷歌在自己的官方博客上發表了最新一項研究,該研究利用谷歌自己訓練的人工智慧(AI)模型,能夠大大增強「實時」天氣預報的能力。谷歌稱,這項工作尚處早期階段,目前也未商業化,但研究結果令人滿意。在這篇尚未經過同行審議通過的論文中,谷歌研究員介紹了他們如何利用人工智慧模型,僅耗時數分鐘時間,提前6小時實現了一公裡範圍內準確的降雨預測。僅用數分鐘的計算時間能提前6小時實現降雨預測,這與目前的天氣預報水平相比,有了巨大的提升。谷歌研究人員表示,快速的預測有著極大的現實意義,這將有效適應氣候變化,特別是極端天氣狀況下,快速預測會是一個非常重要的工具。