高祥云, 孟 丹, 羅明凱,3, 王 俊, 張麗平, 孔 超,4
(1. 安徽工程大學 計算機與信息學院, 安徽 蕪湖 241000; 2. OPPO 研究院, 廣東 深圳 518000;3. 同濟大學 電子與信息工程學院, 上海 201804;4. 安徽工程大學 可重構與智能計算實驗室, 安徽 蕪湖 241000)
隨著大數據和物聯網應用的不斷普及, 大量數據分散在多種設備和系統中. 這些數據蘊含著豐富的價值, 與用戶密切相關, 同時也可能包含諸多敏感信息, 如姓名、性別、家庭住址等. 傳統的機器學習方法需要將數據集中到一個地方進行訓練, 集中式訓練可能導致用戶隱私泄露和數據安全等問題.因此, 支持隱私保護的機器學習方法得到越來越多的重視. 傳統的數據加密方法在一定程度上保護了數據隱私, 也在一定程度上阻礙了數據的共享與流通, 出現“數據孤島”現象, 由此, 聯邦學習[1]應運而生. 在聯邦學習框架中, 數據以分布式方式存儲, 本地訓練出局部模型, 以通信的方式進行各設備的局部模型聚合與更新, 從而獲得全局模型. 這種方式充分利用了分布式計算的優勢, 提升了模型的準確性和泛化能力. 聯邦學習是一種分布式機器學習技術, 能夠讓多個參與方在不披露底層數據的前提下,通過交換加密的機器學習中間結果實現聯合建模. 這一分布式機器學習架構涉及多個客戶端和一個聚合服務器. 客戶端可以是個人終端設備 (如手機、平板電腦等) 、不同部門或企業等, 負責保存用戶個人數據或組織私有數據. 客戶端在本地訓練模型, 將訓練后的模型參數發送給聚合服務器. 聚合服務器負責聚合部分或全部客戶端的模型參數, 并將聚合后的模型同步到客戶端以開始新一輪的訓練.這種聯合協作訓練方式可以在保證模型性能的前提下, 避免個人隱私數據泄露, 并有效解決數據孤島問題.
近年來研究發現, 聯邦學習框架中, 在梯度傳輸時仍然會泄露隱私信息, 甚至會泄露原始數據[2],由此發展出了梯度安全聚合技術, 主要包括差分隱私[3]、同態加密[4]等. 然而, 這些技術仍然存在一些問題: 本地差分隱私需要對數據進行足量的擾動以保證每個用戶所上傳數據的隱私不被泄露, 隱私保護程度與模型性能之間難以平衡是個巨大的挑戰; 同態加密的計算及通信代價比較高, 導致難以被應用到資源受限的環境中; 分布式設備間的數據通常是非獨立同分布的, 數據量也是不均衡的, 這意味著數據存在異構性[5-6]. SCAFFOLD[7]在服務器和客戶端添加了控制變量以調整模型訓練過程的更新方向, 但每輪通信時, 控制變量會隨著模型一同傳輸, 增加了額外的通信成本. 此外, 當設備參與率很低時, 客戶端可能無法參與每輪的模型訓練, 導致其控制變量陳舊, 從而降低算法性能.
端云協同訓練為解決上述問題提供了新思路. 端云協同訓練是一種利用端側設備和云服務器協同計算的機器學習范式, 能夠在分布式數據上高效、安全、協作地訓練模型. 端云協同訓練能充分利用端側設備的計算能力和數據多樣性, 彌補云側計算資源不足、突破端側數據安全與隱私的瓶頸, 同時達到提升模型訓練效率和性能的目的. 目前, 主流的端云協同訓練框架有FedML[8]和Flower[9], 它們分別采用MNN[10]和TFlite (TensorFlow lite)(https://www.tensorflow.org/lite)作為端側訓練框架,通過端側設備和云服務器的協同工作, 實現高效的模型訓練和保護用戶數據隱私. 本文以安卓設備為例, 對這兩個框架在基準任務上的功耗情況進行了對比, 發現FedML 與MNN 組合的FedMNN 框架,和Flower 與TFlite 組合的FLTFlite 框架在進行端云協同訓練過程中, FedMNN 在端側設備上的單輪平均功耗比FLTFlite 低32% ~ 51%. 因此, 本文以FedMNN 框架為例, 首先, 介紹端云協同訓練的流程; 其次, 總結了實現端云協同訓練的通用方法; 最后, 以DSSM (deep structured semantic model)和Deep and Wide 兩個推薦模型為例, 通過實驗驗證了端云協同訓練的有效性.
聯邦學習是一種保護隱私和安全的數據共享方法, 通過中央服務器 (如服務提供商) 的協調, 使多個數據持有方 (如移動設備) 能夠進行模型訓練. 在聯邦學習訓練過程中, 各參與方的原始數據始終保留在本地, 服務器主要通過加密機制在參數交換中建立共享模型[11]. 根據數據分布的特征, 聯邦學習分為橫向聯邦學習、縱向聯邦學習與聯邦遷移學習[12]. 橫向聯邦學習又被稱為基于樣本的聯邦學習, 橫向聯邦學習表示數據按行劃分, 特征不變; 縱向聯邦學習又被稱為基于特征的聯邦學習, 數據按列劃分, 特征在變, 樣本ID 空間不變; 聯邦遷移學習在應用場景中, 兩個參與方的數據集特征不同且樣本也不同. 隨著聯邦學習研究的不斷深入, 適用于不同場景的聯邦學習框架相繼被推出, 以滿足不同應用需求.
中國信息通信研究院發布的報告顯示, 截至2020 年共有18 款聯邦學習產品通過評測, 超過60 家企業擁有聯邦學習框架和產品. 除了TensorFlow federated、PySyft[13]、FedML 和Flower, 國內較為成熟的聯邦學習框架還有微眾銀行開發的FATE[14]和百度開發的PaddleFL[15].
谷歌于2019 年推出了基于TensorFlow 構建的移動設備端聯邦學習框架 (TensorFlow federated,TFF), 推動聯邦學習在移動智能設備上的實驗. TFF 支持橫向聯邦學習, 目前尚未支持縱向聯邦學習和聯邦遷移學習. TFF 提供了多種算法, 包括FedAvg (federated averaging algorithm)[16]和Fed-SGD(federated stochastic gradient descent)等, 可支持神經網絡和線性模型. TFF 可在單機設備模擬和移動設備訓練, 并采用差分隱私來保證數據安全. 然而, TFF 不支持基于拓撲結構的分布式訓練.
FATE (federated AI technology enabler)是微眾銀行于2019 年開源的聯邦學習框架, 旨在實現支持數據安全與隱私的協同學習. FATE 采用密鑰共享、散列[17]和同態加密技術, 實現多方安全模式下的機器學習、深度學習和遷移學習. FATE 覆蓋了橫向聯邦學習, 縱向聯邦學習, 聯邦遷移學習和同步、異步模型融合, 并提供聯邦特征工程、模型評估、在線推理等一站式解決方案. 此外, FATE 還提供了諸如數據對齊和模型聚合等其他功能.
FedML 是由美國南加州大學、MIT (Massachusetts Institute of Technology)和Stanford 等高校和公司聯合發布的聯邦學習開源框架, 支持3 種不同的計算范例, 分別是單機模擬、分布式訓練和移動設備訓練. FedML 主要由高級接口FedML-API (federated machine learning application programming interface)和低級接口FedML-core 組成, 其中FedML-API 建立在FedML-core 之上, 包括模型、數據集和算法. FedML 支持的算法包括線性模型 (如邏輯回歸) 和神經網絡 (如CNN (convolutional neural network)和RNN (recurrent neural network)), 根據訓練設備的異構性, 采用了當前最流行的消息隊列遙測傳輸協議, 實現云服務器與終端設備之間的通信.
Flower 是一款由英國牛津大學于2020 年發布的聯邦學習框架, 其最大的優點是可以模擬真實場景下的大規模聯邦訓練, 充分考慮計算資源、內存空間和通信資源, 高效利用移動設備和無線客戶端下異構資源[18]. 此外, Flower 具有兼容性和易用性, 分別表現在可以跨平臺和跨設計語言, 可以支持已有機器學習框架, 同時提供抽象的框架封裝, 這使得用戶可以快速高效地搭建聯邦學習訓練流程,Flower 適用于項目研究, 也方便進行生產部署.
現有的支持端云協同訓練框架主要有FedML 和Flower, 支持在分布式數據上進行安全和協作的機器學習, 提供了多種聯邦學習算法和應用場景以及易于使用的PyThon 應用程序編程接口. 它們的不同點主要體現在以下兩個方面:
(1) FedML 是一個集研究和生產于一體的邊緣-云平臺, 支持在任何規模和任何地點進行聯邦學習, 可以讓用戶在公有云上部署、監控、改進和共享AI (artificial intelligence)模型;
(2) Flower 是一個輕量級的聯邦學習框架, 支持在多種設備和環境上進行聯邦學習, 它允許用戶自定義聯邦學習算法和模型, 并與TensorFlow、PyTorch 等深度學習框架深度兼容.
綜上所述, FedML 和Flower 都是優秀的端云聯邦學習平臺, FedML 更注重平臺化、社區化,Flower 更注重靈活性、兼容性和可擴展性.
隨著大數據和物聯網技術的快速發展、相關應用的快速普及, 應用數據的爆炸式增長給云側帶來了極大的負載, 同時大量數據集中存儲在云側也可能導致數據安全與隱私問題, 邊緣計算提供了一種可能的解決方案, 它能夠更接近本地數據和管理本地實體[19]. 邊緣計算將任務部分或全部寫在邊緣計算服務器上, 將計算能力延伸到邊緣層[20], 這種方式能夠減小數據傳輸和處理的延遲, 提高計算效率.MPDA (model personalization with large-scale cloud-coordinated domain adaption)[21]從云側提取與端側設備上類似的樣本, 在端側設備上進行訓練來提高模型整體性能. 文獻[22] 面向推薦系統設計了多個具有相同功能但訓練過程不同的模型, 并使用元控制器來自適應選擇相應模型, 優化推薦性能.
隨著端側設備計算能力的顯著提高, 越來越多的任務開始在端側執行, 大多數已有的工作聚焦于處理響應延遲或隱私保護方面. 然而, 端側設備的計算能力和存儲能力有限, 當涉及的數據量非常大時, 通常需要傳輸到云側進行處理. 已有研究中, 對端側設備和云側采用單獨存儲計算數據的模型較多, 然而端側設備和云側之間的聯合建模并使雙方共同受益的工作較少[23]. 端云協同訓練充分結合了端側設備和云服務器的優勢, 達到提升模型訓練的效率和性能的目的.
端云協同訓練通過云側下發統一訓練框架供端側訓練, 為了滿足端側訓練的需求, FedML 以及Flower 分別使用MNN 和TFlite 作為端側訓練框架. MNN 是由阿里巴巴開發的一款輕量級深度學習推理框架, 旨在為移動設備和嵌入式設備提供高效的神經網絡推理能力, 支持多種硬件平臺(包括Central Processing Unit、Graphics Processing Unit、Neural Processing Unit 等)和多種操作系統(包括Android、iOS 和Linux 等). MNN 基本工作流程由離線轉換和設備推理兩部分組成. 對于離線轉換部分, 不同深度學習框架模型輸入轉換器中, 轉換器將其轉換為MNN 框架的模型格式, 同時進行了一些基本的圖優化. 設備推理部分由3 個模塊組成: 預推理、算子級優化和后端抽象. 對于每個算子,在預推理模塊中, 通過成本評估機制, 結合輸入大小和硬件屬性等信息, 動態選擇最佳的計算解決方案. 算子級優化模塊利用諸如SIMD (single instruction multiple data) (單指令多數據)、流水線等技術進一步提高性能. 此外, MNN 支持多種硬件架構作為后端, 由于不同硬件規格存在差異, 沒有統一的標準, MNN 提供了多種軟件解決方案, 如Open Computing Language、Open Graphics Library、Vulkan 和Metal 等. 所有的后端都被實現為獨立的組件, 并提供了一組統一的接口, 通過后端抽象模塊來隱藏原始的細節.
TensorFlow lite 是由Google 開發的一款輕量級深度學習推理框架. 與MNN 類似, TFlite 也支持多種硬件平臺, 并且支持多種操作系統. TFlite 可以在TensorFlow 模型轉換為TFlite 格式后, 在本地進行模型推理, 這使得TFlite 適用于多種應用場景, 包括人臉識別、圖像識別、語音識別等. 同時,TFlite 也支持使用自定義運算符, 擴展TensorFlow 模型的功能, 提供更多的操作支持.
從功能角度來看, MNN 和TFlite 等端側訓練框架都是為了支持在移動設備和嵌入式設備上進行深度學習模型的推理和訓練, 實現端側智能, 都提供了模型轉換、優化、執行、解釋等功能以及豐富的算子庫和應用程序編程接口, 可以讓用戶在端側設備上運行多種深度學習應用; 從性能角度來看,MNN 和TFlite 等端側訓練框架都是為了提高端側設備上的模型運行效率和質量, 實現高性能端側智能, 都支持CPU、GPU、NPU 等多種硬件加速, 以及量化、剪枝、蒸餾等模型壓縮技術, 可以讓用戶在端側設備上運行更快、更小、更準的模型. 此外, MNN 和TFlite 等框架不僅支持端側訓練, 還是實現端云協同、分布式訓練、聯邦學習等高級功能的關鍵步驟. 端側訓練框架提供的端側訓練能力使用戶可以在端側設備上進行模型更新, 當搭配聯邦學習、協作學習等技術, 可進一步實現協作模型, 無須上傳用戶隱私數據, 從而有效保障了數據安全和隱私.
本章將介紹基于FedMNN 框架進行端云協同訓練的通用流程, 并對訓練過程涉及的模塊進行詳細闡述. 此外, 以經典推薦算法模型DSSM 與Deep and Wide 為例, 介紹端云協同場景下, 實現不同算法模型的一般流程.
基于FedMNN 的端云協同訓練流程分為3 個部分: 云側模型準備、端側模型部署與訓練、端云服務.
2.1.1 云側模型準備
TensorFlow、PyTorch 和CAFFE (convolutional architecture for fast feature embedding)等常見的深度學習框架通常被部署在云側進行模型訓練, 不能直接支持端側設備訓練. FedMNN 使用移動神經網絡框架MNN 作為端側統一訓練框架進行端側訓練. 從通用性角度出發, 為了實現端側訓練, 本文將云側模型轉換為端側可訓練的MNN 模型. 模型轉換過程如圖1 所示, 使用開源框架ONNX (open neural network exchange)作為中間表示, 將不同深度學習框架實現的模型轉換為ONNX 模型, 并利用MNN 提供的模型轉換工具將ONNX 模型轉換為MNN 模型. 轉換后的MNN 模型可以直接發送給不同客戶端用于端側訓練.

圖1 云側模型轉換Fig. 1 Cloud-side model transformation on cloud side
2.1.2 端側模型部署與訓練
端側模型訓練需要完成兩個準備階段: 一是模型準備; 二是數據準備. 在模型準備階段, 任務初始化時, 云側將初始化模型直接下發到端側. 在訓練過程中, 當每輪訓練結束后, 云側對端側上傳的模型進行聚合, 并將聚合模型再次下發給端側. 在數據準備階段, 需要將端側數據存放到指定路徑. 此外,基于MNN 框架進行端側訓練需要針對特定訓練數據進行數據集的定義并實現數據讀取操作. 特此說明, 在實驗驗證階段, 將預處理好的數據上傳到手機中. 在實際應用中, 用戶數據均來自本地, 并且在訓練過程中無須上傳至云側, 在一定程度上保護了用戶數據安全與隱私.
總體來說, 端側訓練的流程與云側訓練類似. 端側模型的訓練流程如圖2 所示. 在初始化階段, 首先, 端側獲取云側下發的模型并初始化優化器; 然后, 創建Executor 對象, 給用戶提供配置推理后端、線程數等屬性; 最后, 創建數據集以及DataLoader. 在訓練階段, 先從DataLoader 中獲取訓練數據,并執行模型前向操作, 再根據訓練任務的不同來計算損失, 并執行梯度反向傳播, 便完成了一個批次的訓練.

圖2 端側模型訓練流程Fig. 2 End-side model training process
2.1.3 端云服務
端云服務是實現端云模型協同優化的重要途徑, 主要包括3 個方面: 一是將端側模型的訓練結果反饋給云側, 進行模型的聚合和更新, 以提高云側模型的泛化能力和魯棒性; 二是根據業務需求, 將云側模型按需部署到不同的設備上, 實現端云協同服務; 三是根據云側的負載情況對端側設備進行調度,選擇參與訓練的設備.
模型聚合與更新. 端云協同訓練的關鍵之一在于云側模型的聚合, 將多個端側模型的參數或梯度進行加權平均或通過其他方式的融合, 得到一個新的云側模型. 云側模型聚合服務的整體流程如圖3所示. FedMNN 使用FedML 作為云側聯邦學習框架, FedML 提供聚合服務, 可以選擇不同的聯邦學習聚合算法. 本文選擇FedAvg (federated averaging algorithm)進行后續實驗, 其實現原理是將端側上傳的MNN 模型讀取為PyTorch Tensor 字典進行聚合, 并將聚合模型下發至端側對端側模型進行更新.

圖3 端云模型聚合與更新Fig. 3 Cloud-end model aggregation and update
端云通信. FedMNN 完成端云通信依賴FedML 提供的通信鏈路, 該通信鏈路基于消息隊列遙測傳輸協議進行消息傳輸, 在數據傳輸過程中, 模型均以MNN 的形式存儲. 端云通信鏈路中的數據以及模型流向如圖3 所示. 訓練初始階段, 由云側向所有加入訓練的端側設備下發初始化MNN 模型, 端側設備基于此模型以及本地數據進行訓練. 訓練完成后, 所有端側設備將本地訓練得到的MNN 模型上傳至云側進行聚合, 并等待云側完成聚合, 將聚合后的模型發送給所有端側設備.
端側設備調度. 訓練由云側發起, 并在云側選擇好參與訓練的端側設備. 在每輪通信中, 必須保證通信鏈路的暢通, 當參與訓練的任意客戶端發生意外斷開連接, 或者模型上傳、下載的過程出現丟失,都將導致本次訓練無法繼續進行, 這也是FedML 目前的局限性. 此外, 研究發現, 目前FedMNN 中的端側設備和云服務器還無法根據網絡狀況、計算能力、數據特征等動態調整通信頻率、更新步長、聚合策略等參數, 實現自適應的端云協同訓練. 因此, 在適應更大規模的端云協同訓練上仍然有很多工作要做.
為了說明FedMNN 在端云協同場景下的應用, 本文對FedMNN 實現端云協同訓練的算法進行總結. 與傳統的FedAvg 算法相比, 在FedMNN 框架下, 需要先完成模型的轉換, 將其他模型轉換為MNN 模型進行端云協同訓練. 此外, FedMNN 在進行端側設備調度需要從MLOps (machine learning operations)平臺中選擇參與訓練的設備, 并將初始化模型發送給所有選中的設備. 在訓練過程中, 需要將端側上傳的模型轉換為Torch Tensor 字典進行聚合, 再將聚合后的參數存儲到MNN 模型. 端云協同訓練的算法實現詳見算法1.

算法 1 端云協同訓練m1 Dk輸入: 初始化全局模型 , 每個客戶端的數據集輸出: 聚合全局模型mT η 1: K 個客戶端編號為k, B 是本地批量大小(batch_size), E 是客戶端訓練輪數(epoch), T 是通信的輪數, 是學習率2: 服務器執行m1 3: 將torch 模型轉換為MNN 格式模型t= 1,2,··· ,T -1 4: For 每輪 do St ← St 5: 選擇參與訓練的K 個客戶端 // 是第t 輪參與訓練的客戶端集合k ∈St 6: For 每個客戶端 do //K 個客戶端并行處理
為了驗證FedMNN 在端云協同場景下端側設備的功耗以及模型性能, 本文使用安卓手機進行了框架功耗測試. 此外, 選取了推薦系統中的經典算法DSSM 與Deep and Wide 來驗證端云協同訓練模型在推薦場景中的性能.
為了對比FedMNN 與FLTFlite 兩種端云協同訓練框架在真實端側設備運行的功耗情況, 本文選擇了相同的模型以及聯邦學習常用的基準數據集MNIST (https://yann.lecun.com/exdb/mnist)進行了訓練功耗測試. MNIST 是一個手寫體數字的圖片數據集, 該數據集來自美國國家標準與技術研究所. 數據集由來自250 個不同的人手寫的數字構成, 其中50%是高中學生, 50%來自人口普查局的工作人員. 訓練集一共包含了60 000 張圖像, 而測試集一共包含了10 000 張圖像. 實驗中, Flower 和FedML 云側服務均部署在PC (personal computer)設備上, 實驗過程均使用FedAvg 算法, 端云通信輪數均設置為20. 使用相同的Android 手機作為端側測試設備, 并保證訓練時間有間隔, 避免連續實驗對手機原始性能產生影響. 在訓練過程中, 使用PowerMoniter 功耗儀進行測試, 運用PowerTool 工具進行數據分析.
表1 展示了FLTFlite 與FedMNN 在端側設備上的功耗情況. 首先, 直接統計訓練完成一輪端云通信的端側平均功耗, 總體來說, FedMNN 的平均每輪通信功耗比FLTFlite 低0 ~ 20%. 為了更嚴謹統計端側訓練過程帶來的實際功耗, 本文統計了端云協同訓練相對不訓練產生的平均功耗增量, 具體操作是統計使用APP (application)在不進行訓練時的平均功耗, 并用每輪通信的實際功耗減去平均功耗的差再乘以平均每輪訓練時間. 通過表1 可以發現, 使用FedMNN 相較于FLTFlite 進行端側訓練時, 每輪通信的平均功耗低32% ~ 51%. 此外, 對比了端側本地訓練epoch 數量以及batch_size 的差異對訓練功耗的影響, 實驗結果表明, 增大端側本地訓練epoch 會顯著提升整體訓練時長以及每輪通信的功耗. 增大batch_size 后, 會降低端側訓練的時長, 同時導致訓練功耗上漲, FLTFlite 訓練流程對端側訓練功耗增長不超過2%, 而FedMNN 對batch_size 的變化則比較敏感, 功耗增長接近13%.實驗證明了整體使用FedML + MNN 端云協同訓練在端側實際功耗優于Flower + TFlite. 在深度學習中, 通常使用epoch 來表示將整個數據集迭代一遍的過程.

表1 Flower + TFlite 與FedML + MNN 訓練流程端側功耗對比Tab. 1 End-side power consumption comparison between Flower + TFlite and FedML + MNN training processes
現有的FedMNN 通常應用在圖像相關任務. 為了驗證基于FedMNN 的端云協同訓練的有效性,以DSSM 以及Deep and Wide 兩種推薦算法在聯邦學習的設置下進行了實驗. 云側服務均部署在PC 設備上, 實驗過程使用FedAvg 算法, 端云通信輪數均設置為5, 端側本地訓練epoch 均設置為2.實驗結果均使用最后一次聚合的模型進行評估, 使用AUC (area under the curve)作為評價指標.
Movielens1M (https://grouplens.org/datasets/movielens)數據集數據劃分按照時間以晚于2003年1 月1 日的數據為測試集, 早于2003 年12 月31 日的數據集為訓練集. 同時為確保測試集中的用戶在訓練集中有歷史行為, 需要過濾掉在訓練集中沒有行為的用戶. 對訓練數據進行隨機負采樣, 將用戶評分的電影作為正樣本, 在所有的電影中隨機采樣若干個電影作為用戶的負樣本, 默認正負樣本比例為1∶3. 隨后在采樣后的數據中, 隨機抽取互相獨立的50 萬條數據作為不同端側設備的訓練數據.
Avazu (https://www.kaggle.com/c/avazu-ctr-prediction/data)數據集預處理參考torch-rechub(https://github.com/morningsky/Torch-RecHub)中關于Avazu 數據集的預處理. 由于訓練集數量過大, 從訓練集中隨機抽取互相獨立的30 萬條數據作為不同端側設備的訓練數據. 從表2 和表3 的結果可以看出, 將端云協同訓練用于推薦領域, 在端側設備持有不同數據的情況下, 增加多臺端側設備進行端云協同訓練, 可以提高模型收斂速度, 在更少的通信輪數下實現相對更高的性能.

表2 在Movielens1M 上DSSM 每輪的AUCTab. 2 DSSM AUC on Movielens1M for each round

表3 在Avazu 上Deep and Wide 每輪的AUC Tab. 3 Deep and Wide AUC on Avazu each round
端云協同訓練原型系統旨在通過分布式計算和數據處理, 在多個設備上實現模型訓練. 該系統由兩個主要部分組成: 端側設備和云服務器, 其架構如圖4 所示. 云服務器提供模型的聚合與更新服務,端側設備提供數據存儲與模型訓練功能.

圖4 端云協同訓練原型系統架構Fig. 4 Architecture of cloud-end collaborative training prototype system
端側設備: 端側設備可以是智能手機、平板電腦等, 其客戶端負責數據的搜集、處理、存儲和計算, 同時負責更新本地模型.
云服務器: 云服務器負責協調端側設備的計算任務, 執行全局模型訓練, 存儲全局模型權重, 并將更新后的模型發送至端側設備.
端云協同訓練原型系統功能主要分為端側設備數據處理、端側本地模型訓練和云服務器模型聚合及更新.
4.2.1 端側設備數據處理
端側設備負責收集用戶的數據, 并對數據進行預處理后存儲在設備中. 系統提供數據接入的功能,如圖5 所示, 選定項目 (以ai.fedml 為例) 后, 右擊并選擇Upload 按鈕, 即可完成數據接入.

圖5 端側設備數據接入功能界面Fig. 5 End-side device data access interface
完成數據接入后, 可在端側設備上選擇并設置數據讀取、處理的路徑. 如圖6 所示, 點擊圖6(a)頂部綠色一欄, 會出現圖6(b)所示界面. 繼續點擊圖6(b)中右上角綠色按鈕 (Set Private Path), 設備數據存儲的路徑 (/storage/emulated/0/ai.fedml/movielens1m/client_0), 即可完成用于本地隱私數據讀取、處理的數據路徑設置.

圖6 端側設備數據路徑設置Fig. 6 End-side device data path setting
4.2.2 端側本地模型訓練
端側設備在本地數據預處理后的基礎上利用MNN 框架進行本地模型訓練, 訓練完成后更新本地模型權重. 端側設備依賴FedML 提供的通信鏈路, 其基于消息隊列遙測傳輸協議進行消息傳輸, 在數據傳輸過程中, 模型均以MNN 的形式存儲. 端側設備將訓練好的模型框架上傳到云側.
如圖7 所示, 進入MLOps 平臺后, 按照create group→create project→create run→select application→start run 的順序開啟訓練. 開啟訓練后, 端側設備進行本地模型訓練的迭代, 并在端側設備上顯示如圖8 所示的訓練進度及評價指標.

圖7 開啟端云協同訓練界面Fig. 7 Cloud-end collaborative training start-up interface

圖8 端側設備訓練狀態Fig. 8 End-side device training status
4.2.3 云服務器模型聚合及更新
上傳后的模型通過聯邦學習框架FedML 提供聚合服務, 使用FedAvg 算法對端側設備上傳的模型進行聚合操作 (圖9), 聚合后的模型以更新全局權重. 更新后的模型下發到端側設備, 以便其在下一輪訓練中使用.

圖9 云服務器模型聚合Fig. 9 Cloud sever model aggregation
本文以端云協同訓練FedMNN 框架為例, 詳細介紹了端云協同訓練的流程以及算法的實現步驟.同時, 通過對比FedMNN 與FLTFlite 在基準任務上不同參數設置下的訓練功耗, 在同等情況下,FedMNN 在每輪通信過程中的平均功耗較FLTFlite 低32% ~ 51%. 此外, 通過在DSSM 與Deep and Wide模型上進行的實驗也進一步驗證了FedMNN 的優勢. 在這兩種場景下, FedMNN 能夠利用端側設備上的用戶數據進行模型訓練, 實現個性化的服務. 這種方法可以保護用戶數據安全與隱私, 避免數據泄露和潛在攻擊的風險.