導讀:分散式機器學習與聯邦學習。
分散式機器學習也稱分散式學習,是指利用多個計算節點(也稱工作節點,Worker)進行機器學習或者深度學習的演算法和系統,旨在提高效能、保護隱私,並可擴充套件至更大規模的訓練資料和更大的模型。
聯邦學習可以看作分散式學習的一種特殊型別,它可以進一步解決分散式機器學習遇到的一些困難,從而構建面向隱私保護的人工智慧應用和產品。
近年來,新技術的快速發展導致資料量空前增長。機器學習演算法正越來越多地用於分析資料集和建立決策系統。而由於問題的複雜性,例如控制自動駕駛汽車、識別語音或預測消費者行為(參考Khandani等人2010年發表的文章),演算法解決方案並不可行。
在某些情況下,單個機器上模型訓練的較長執行時間促使解決方案設計者使用分散式系統,以增加並行度和I/O頻寬總量,因為複雜應用程式所需的訓練資料可以很容易就達到TB級。
在其他情況下,當資料本身是分散式的或量太大而不能儲存在單個機器上時,集中式解決方案甚至不可取。例如,大型企業對儲存在不同位置的資料進行事務處理,或者由於資料量太大而無法移動和集中。
為了使這些型別的資料集可以作為機器學習問題的訓練資料被訪問,必須選擇並實現能夠平行計算、適應多種資料分佈和擁有故障恢復能力的演算法。
近年來,機器學習技術得到了廣泛應用。雖然出現了各種相互競爭的方法和演算法,但使用的資料表示在結構上非常相似。機器學習工作中的大部分計算都是關於向量、矩陣或張量的基本轉換,這些都是線性代數中常見的問題。
幾十年來,對這種操作進行最佳化的需求一直是高效能計算(High Performance Computing,HPC)領域高度活躍的研究方向。因此,一些來自HPC社群的技術和庫(例如,BLAS或MPI)已經被機器學習社群成功地採用並整合到系統中。
與此同時,HPC社群已經確定機器學習是一種新興的高價值工作負載,並開始將HPC方法應用於機器學習。
-
Coates等人在他們的商用高效能計算(COTSHPC)系統上用短短三天訓練了一個含有10億個引數的網路。
-
You等人於2017年提出在Intel的Knights Landing上最佳化神經網路的訓練,Knights Landing是一種為高效能計算應用設計的晶片。
-
Kurth等人於2017年演示了深度學習問題(如提取天氣模式)是如何在大型並行HPC系統上進行最佳化和擴充套件的。
-
Yan等人於2016年提出透過借用HPC的輕量級分析等技術建模工作負載需求,可解決在雲計算基礎設施上排程深度神經網路應用的挑戰。
-
Li等人於2017年研究了深度神經網路在加速器上執行時針對硬體錯誤的恢復特性(加速器經常部署在主要的高效能計算系統中)。
同其他大規模計算挑戰一樣,我們有兩種基本不同且互補的方式來加速工作負載:向一臺機器新增更多資源(垂直擴充套件,比如GPU/TPU計算核心的不斷提升),向系統新增更多節點(水平擴充套件,成本低)。
傳統的超級計算機、網格和雲之間的界限越來越模糊,尤其在涉及機器學習等高要求的工作負載的最佳執行環境時。例如,GPU和加速器在主要的雲資料中心中更加常見。因此,機器學習工作負載的並行化對大規模實現可接受的效能至關重要。然而,當從集中式解決方案過渡到分散式系統時,分散式計算在效能、可伸縮性、故障彈性或安全性方面面臨嚴峻挑戰。
由於每種演算法都有獨特的通訊模式,因此設計一個能夠有效分佈常規機器學習的通用系統是一項挑戰。儘管目前分散式機器學習有各種不同的概念和實現,但我們將介紹一個覆蓋整個設計空間的公共架構。一般來說,機器學習問題可以分為訓練階段和預測階段(見圖1-5)。
▲圖1-5 機器學習結構。在訓練階段,使用訓練資料和調整超引數對ML模型進行最佳化。然後,將訓練好的模型部署到系統中,為輸入的新資料提供預測
訓練階段包括訓練一個機器學習模型,透過輸入大量的訓練資料,並使用常用的ML演算法,如進化演算法(Evolutionary Algorithm,EA)、基於規則的機器學習演算法(Rule-based Machine Learning algorithm,比如決策樹和關聯規則)、主題模型(Topic Model,TM)、矩陣分解(Matrix Factorization)和基於隨機梯度下降(Stochastic Gradient Descent,SGD)的演算法等,進行模型更新。
除了為給定的問題選擇一個合適的演算法之外,我們還需要為所選擇的演算法進行超引數調優。訓練階段的最終結果是獲得一個訓練模型。預測階段是在實踐中部署經過訓練的模型。經過訓練的模型接收新資料(作為輸入),並生成預測(作為輸出)。
雖然模型的訓練階段通常需要大量的計算,並且需要大量的資料集,但是可以用較少的計算能力來執行推理。訓練階段和預測階段不是相互排斥的。增量學習(Incremental learning)將訓練階段和預測階段相結合,利用預測階段的新資料對模型進行連續訓練。
當涉及分散式時,我們可以用兩種不同的方法將問題劃分到所有機器上,即資料或模型並行(見圖1-6)。這兩種方法也可以同時應用。
▲圖1-6 分散式機器學習中的並行性。資料並行性是在訓練資料集的不同子集上訓練同一模型的多個例項,而模型並行性是將單個模型的並行路徑分佈到多個節點上
在資料並行(Data Parallel)方法中,系統中有多少工作節點,資料就被分割槽多少次,然後所有工作節點都會對不同的資料集應用相同的演算法。相同的模型可用於所有工作節點(透過集中化或複製),因此可以自然地產生單個一致的輸出。該方法可用於在資料樣本上滿足獨立同分布假設的每個ML演算法(即大多數ML演算法)。
在模型並行(Model Parallel)方法中,整個資料集的精確副本由工作節點處理,工作節點操作模型的不同部分。因此,模型是所有模型部件的聚合。模型並行方法不能自動應用於每一種機器學習演算法,因為模型引數通常不能被分割。
一種選擇是訓練相同或相似模型的不同例項,並使用整合之類的方法(如Bagging、Boosting等)聚合所有訓練過的模型的輸出。最終的架構決策是分散式機器學習系統的拓撲結構。組成分散式系統的不同節點需要透過特定的體系結構模式進行連線,以實現豐富的功能。這是一個常見的任務。然而,模式的選擇對節點可以扮演的角色、節點之間的通訊程度以及整個部署的故障恢復能力都有影響。
圖1-7顯示了4種可能的拓撲,符合Baran對分散式通訊網路的一般分類。集中式結構(圖1-7a)採用一種嚴格的分層方法進行聚合,它發生在單箇中心位置。去中心化的結構允許中間聚合,當聚合被廣播到所有節點時(如樹拓撲),複製模型會不斷更新(圖1-7b),或者使用在多個引數伺服器上分片的分割槽模型(圖1-7c)。完全分散式結構(圖1-7d)由獨立的節點網路組成,這些節點將解決方案整合在一起,並且每個節點沒有被分配特定的角色。
分散式機器學習發展到現在,也產生了隱私保護的一些需求,從而與聯邦學習產生了一些內容上的交叉。常見的加密方法,如安全多方計算、同態計算、差分隱私等也逐漸應用在分散式機器學習中。總的來說,聯邦學習是利用分散式資源協同訓練機器學習模型的一種有效方法。
聯邦學習是一種分散式機器學習方法,其中多個使用者協同訓練一個模型,同時保持原始資料分散,而不移動到單個伺服器或資料中心。在聯邦學習中,原始資料或基於原始資料進行安全處理生成的資料被用作訓練資料。聯邦學習只允許在分散式計算資源之間傳輸中間資料,同時避免傳輸訓練資料。分散式計算資源是指終端使用者的移動裝置或多個組織的伺服器。
聯邦學習將程式碼引入資料,而不是將資料引入程式碼,從技術上解決了隱私、所有權和資料位置的基本問題。這樣,聯邦學習可以使多個使用者在滿足合法資料限制的同時協同訓練一個模型。
本文摘編自《聯邦學習:演算法詳解與系統實現》(ISBN:978-7-111-70349-5),經出版方授權釋出。
推薦語:本書首先介紹聯邦學習的定義和發展歷史,按類別介紹聯邦學習演算法和發展現狀,介紹聯邦學習的應用場景,以及相關安全機器學習的技術。然後我們將介紹新的最前沿的聯邦學習演算法,用京東數科系統作為例項,對聯邦學習系統構建和實現進行講解。最後我們將介紹京東數科自研的基於區塊鏈的聯邦學習技術。
關於作者:薄列峰,京東科技集團副總裁、矽谷研發部負責人。曾擔任包括Neu-rIPS、CVPR、ICCV、ECCV、AAAI、SDM等在內的多個頂級人工智慧會議程式委員會委員。在國際頂級會議和期刊上合計發表論文80餘篇,論文被引用10186次,H指數44。其博士學位論文榮獲國內百篇優秀博士論文獎,RGB-D物體識別論文榮獲機器人領域學術會議ICRA最佳計算機視覺論文獎。
黃恆,大資料、機器學習、人工智慧等領域的國際學術帶頭人,美國匹茲堡大學電子及計算機工程系傑出講座終身教授,AIMBE Fellow。作為會議程式主席或主席團成員,組織了超過20個國際學術會議。在國際頂級會議和期刊上發表了超過220篇文章,文章引用超過18000次,作為專案負責人領導了超過20個國際領先的科研專案。
顧松庠,計算機博士,京東科技聯邦學習部負責人。對機器學習演算法和大規模並行系統有深入研究,曾在美國FDA任高階機器學習及統計科學家,建設放射成像醫療儀器的評價體系;先後加入 WalmartLabs和Linkedln公司,負責機器學習平臺架構設計。2018年加入京東科技,並帶領多個團隊先後建設了智慧客服、知識圖譜和聯邦學習系統。
陳彥卿,京東技術總監,畢業於北京大學,並在紐約州立大學石溪分校獲得計算機博士學位。作為排頭兵投身聯邦學習領域,探究加密資訊的合理應用,堅信面向隱私保護的機器學習技術將引領未來。
▲人工智慧、機器學習、深度學習的關係,終於有人講明白了
讀書 | 書單 | 乾貨|講明白|神操作 | 手把手
大資料 | 雲計算 | 資料庫 | Python | 爬蟲 | 視覺化
AI | 人工智慧 | 機器學習 | 深度學習 | NLP
5G|中臺 | 使用者畫像| 數學 | 演算法 | 數字孿生