谷歌發全球首個移動端分散式機器學習系統,數千萬手機同步訓練
新年大手筆的不止是騰訊,谷歌近日宣佈,他們實現了全球首個產品級的超大規模移動端分散式機器學習系統,目前已經能夠在數千萬部手機上執行。
DeepMind研究科學家Andrew Trask (他並未參與這項工作) 激動地在Twitter上說,這是2019年“年度最激動人心的論文之一”。
“谷歌公佈了他們如何在數千萬臺手機上實現可擴充套件的聯合學習,資料安全隱私終於成真,而谷歌是這方面的領跑者!”
Andrew Trask說的,是谷歌日前在arxiv貼出的論文,“Towards Federated Learning at Scale:System Design”,論文描述了前面所說的全球首個產品級可擴充套件的聯合學習系統,以及該系統的高階設計和一些挑戰及其解決方案。
聯合學習(FL)是一種分散式機器學習方法,可以對儲存在行動電話等裝置上的大量分散資料進行訓練,是“將程式碼引入資料,而不是將資料引入程式碼”的更加通用化的一個實現,並解決了關於隱私、所有權和資料位置等基本問題。
作者在論文中寫道,“據我們所知,我們描述的系統是第一個產品級 (production-level) 的聯合學習實現,主要側重於在行動電話上執行的聯合平均演算法 (Federated Averaging algorithm)。
“我們的目標是將我們的系統從聯合學習推廣到聯合計算,聯合計算將遵循本文所述的相同基本原則,但不限於使用TensorFlow進行機器學習計算,而是通用的類似MapReduce的工作負載。
“我們看到的一個應用領域是聯合分析(Federated Analytics),它能讓我們監控大規模叢集裝置的統計資料,而無需將原始裝置資料記錄到雲中。”
谷歌不愧是谷歌,先不說這一技術本身的難度和實現難度,由此帶來的對智慧雲端計算產業的衝擊,也可想而知!
谷歌提出“聯合學習”,實現可擴充套件的移動端分散式機器學習
2017年1月,統計機器學習先驅 Michael I. Jordan 在清華演講時指出,我們需要更好更大的分散式機器學習系統。
Jordan教授表示,在電腦科學中,資料點數量的增長是“複雜性”的來源,必須通過演算法或者硬體來訓練,而在統計學中,資料點數量的增長是“簡單性”的來源,它能讓推理在總體上變得更強大,引出漸進式的結果。
“在形式層上,核心的統計學理論中缺乏計算機理論中的概念,比如‘runtime’的作用,而在核心的計算理論中又缺乏統計學概念,比如‘risk’的作用。二者之間的差異(Gap) 顯而易見。”Jordan教授說。
2017年4月,谷歌在官方部落格中發文,介紹了他們提出的聯合學習(federated learning)。聯合學習也是一種機器學習,能夠讓使用者通過移動裝置互動來訓練模型。
聯合學習能產生更智慧的模型,更低的延時和更少的功耗,同時確保使用者的隱私。過程示意:(A)手機在本地根據你使用手機的方式將模型個性化,(B)許多使用者的更新會集中起來,(C)在雲端形成針對一個共享模型的協同更新,然後不斷重複這個過程。來源:Google Blog
根據谷歌官博介紹,使用者的裝置會下載一個當前模型,這個模型會從手機資料中學習不斷得到改善,然後將變化總結為一個小的關鍵更新。只有這個關鍵更新會以加密的方式被傳到雲端,之後這一更新會在雲端迅速被其他使用者對共享模型提交的更新平均化(averaged)。
簡單說,所有的訓練資料都留在使用者的裝置上,而且上傳到雲端的個別更新也不會儲存到雲端。谷歌研究人員表示,新方法將機器學習與雲端儲存資料的需求脫鉤,讓模型更聰明、延遲更低、更節能,而且保護使用者隱私不受威脅。
這一方法還有一個間接好處:除了實現共享模型的更新,使用者還能立刻使用改善後的模型,根據個人使用手機方式的不同,得到的體驗也會不同。
聯合學習僅當用戶裝置處於閒置或充電狀態,並且使用無線網路的時候才發生,對使用者在移動端的使用體驗不會造成負面影響。來源:Google Blog
谷歌的研究人員開發了一個成熟的技術堆疊,確保聯合學習訓練僅當用戶裝置處於閒置或充電狀態,並且使用無線網路的時候才發生。因此,具體的訓練對手機使用者體驗基本沒有什麼影響。
當時,谷歌研究人員表示,他們正在安卓的谷歌鍵盤Gboard上測試聯合學習。例如,當鍵盤給出一個建議問詢時,手機就會在本地儲存相關資訊,比如當前的文字,以及你是否點選了相關建議。
採用同步訓練演算法,在數千萬臺手機上實現模型訓練和更新
現在,兩年過去,谷歌已經實現了首個產品級的聯合學習系統,併發布論文描述了這一系統的高階設計理念和現存挑戰。
像剛剛提到的安卓手機谷歌鍵盤查詢建議,也已經實現了大規模應用。
谷歌研究人員在論文中寫道,聯合學習基礎架構的基本設計決策的關鍵問題,是重點關注非同步還是同步訓練演算法。雖然之前很多關於深度學習的成果都採用了非同步訓練方式,但最近出現了採用大批量同步訓練的趨勢。
再考慮到能夠增強聯合學習中保護隱私的方法,包括差異化隱私策略(McMahan等,2018)和安全聚合(Bonawitz等,2017),這些方法基本上需要一些固定裝置上的同步後的概念,讓學習演算法的伺服器端可以僅消耗來自眾多使用者的更新資訊的簡單聚合。
因此,谷歌研究人員選擇採用同步訓練方式。“我們的系統可以執行大批量SGD式演算法和聯合平均演算法,這是我們在生產中執行的主要演算法”,演算法的虛擬碼如下:
論文描述的系統使用TensorFlow訓練深度神經網路,對儲存在手機上的資料進行訓練。用聯合平均演算法對訓練資料權重在雲中相結合,構建一個全域性模型,推送回手機上執行推理過程。安全聚合的實現能夠確保在全球範圍內,來自電話的個人更新是無法被窺視的。該系統已推向大規模應用,比如手機鍵盤上。
解決多個實際問題,預計未來裝置應用數量達數十億規模
谷歌研究人員表示,他們的方法解決了許多實際問題:即以複雜方式(如時區依賴性)解決了與本地資料分佈相關的裝置的可用性問題,應對不可靠的裝置連線和執行中斷問題,在可用性存在差異的裝置上對lock-step執行的編排問題,以及裝置儲存空間和計算資源受限等問題。
這些問題在通訊協議、裝置和伺服器級別都能得到解決。
“我們的研究已經足夠成熟,可以將系統部署到生產環境中,並解決數千萬個真實裝置的應用學習問題;我們預計未來的裝置應用數量將達到數十億的規模。”
聯合學習方法在裝置上的資料比伺服器上存在的資料(比如裝置首先生成資料)相關性更高、對隱私更敏感,或者不希望或不可能將資料傳輸到伺服器的情況下是最佳的應用場景。聯合學習的目前多用於監督學習任務,通常利用的是從使用者活動中推斷出的標籤(比如點選操作或鍵入的單詞等)。
裝置上專案排名
移動應用程式中機器學習的一個常見用途,是從裝置上的庫存中選擇和排序專案。例如,應用程式可以公開用於資訊檢索或應用內導航的搜尋機制,例如在Google Pixel裝置上的搜尋設定(ai.google,2018)。在裝置上對搜尋結果進行排序,可以免去對伺服器的成本高昂的呼叫(原因可能是延遲、頻寬限制或高功耗),而且,關於搜尋查詢和使用者選擇的任何潛在的隱私資訊仍然保留在裝置上。每個使用者與排名特徵的互動可以作為標記資料點,可以在完整排序的專案列表中觀察使用者與其優先選項的互動資訊。
移動裝置鍵盤輸入內容建議
可以通過為使用者輸入的相關內容提供建議(比如與輸入文字相關的搜尋查詢)來提升對使用者的價值。聯合學習可用於訓練機器學習模型來觸發建議功能,並對可在當前上下文中建議的專案進行排名。谷歌的Gboard移動鍵盤團隊就在使用我們的聯合學習系統,並採用了這種方法。
下一詞預測
Gboard還使用我們的聯合學習平臺訓練遞迴神經網路(RNN)用於下一詞預測。該模型具有約140萬個引數,在經過5天的訓練後,處理了來自150萬用戶的6億個句子後,在3000輪聯合學習後實現收斂(每輪大約需要2-3分鐘)。該模型將基線n-gram模型最高召回率從13.0%提高到16.4%,並且其效能與經過1.2億步伺服器訓練的RNN的效能相當。在實時對比實驗中,聯合學習模型的效能優於n-gram和伺服器訓練的RNN模型。
在論文中,谷歌研究人員詳細展示了在安卓手機上對此類演算法的系統設計。
同時,他們也指出,“這項研究目前仍處於早期階段,我們沒有解決所有問題,也無法全面討論所有必需的元件。
“我們在本文中要做的是,描述系統的主要組成部分以及面臨的挑戰,確定哪些問題沒有解決,希望這些工作能夠對更進一步的系統研究有所啟發。”