協同學習 (FL) 受到加速采用的原因在于其分布式、保護隱私的特性。在醫療健康和金融服務等領域,協同學習 (FL) 作為一種隱私增強技術,已成為技術堆棧的關鍵組成部分。
在本文中,我們討論了 FL 及其優勢,深入探討了聯邦學習為何如此受歡迎。此外,我們還介紹了 NVIDIA FLARE 2.4.0 版本中引入的三個關鍵特征,這些特征有助于從集中式機器學習過渡到聯邦學習,并通過流式傳輸 API 增強大型語言模型 (LLM) 支持。此外,我們還展示了各種參數調整任務。
最新版本的 FLARE 擴展了 FL 工作流模式,為研究人員提供更多工作流程自定義選項。我們分享了醫療健康、銀行、金融服務和保險 (BFSI) 領域的不同用例,以展示 FL 應用程序在生產環境中或通過示例。
分布式數據時代的聯邦學習
FL 是一種機器學習方法,允許在分布式設備上進行模型訓練和數據分析,同時保護本地數據的私密性。與傳統的集中式訓練相比,FL 允許在本地進行模型訓練,并僅共享模型更新而不是原始數據,從而實現協同學習,而不會損害數據治理和隱私。
雖然 FL 面臨通信延遲和確保模型一致性等挑戰,但它在隱私保護、效率和安全方面具有顯著優勢。
NVIDIA FLARE(NVIDIA 聯邦學習應用程序運行時環境)是一個廣泛采用的開源聯邦學習框架,它提供了多種機器學習和深度學習算法的示例。FLARE 具有強大的安全特性、先進的隱私保護技術,并且提供了一個靈活的、與模型無關的架構。
FLARE 在各個維度上具有許多優勢,因此在數據分布和隱私是首要問題的場景中,它是一種強大的方法。
隨著對數據隱私法規的擔憂日益增加,以及對更多數據的需求,以訓練更先進的機器學習模型,對隱私增強技術(PET),包括聯邦學習(FL)和機密計算,在近幾年出現了顯著增長。
以下是一些主要優勢:
- 隱私保護
- 數據多樣性
- 合規性
- 安全性
隱私保護
模型在本地進行訓練。在 FLARE 中,只共享模型更新或模型差異,而私人數據則保留在客戶端。通過安全的聚合來保護模型更新期間的信息泄露。
數據多樣性
客戶數據的多樣性對于穩健的模型開發至關重要。這種多樣性尤其包括來自罕見事件的數據,可避免偏差并使模型能夠借助 FLARE 有效學習。
合規性
隨著數據隱私保護意識的增強,越來越多的組織和政府頒布規定來保護個人數據。例如,歐盟的 通用數據保護條例(GDPR) 和中國的 個人信息保護法(PIPL)。這些法規嚴格限制了個人數據在不同地區之間的傳輸。
此外,還有行業特定的法律法規,如 HIPAA(健康保險可移植性和負責任性法案),旨在保護用戶的個人數據不被泄露。FLARE 通過將計算引入數據,而不是移動數據,成為實現 AI 計劃的關鍵,從而避免了違反這些法規的風險。
安全性
FLARE 提供了分布式安全執行。本地機構 (銀行、醫院等) 可以選擇添加特定于組織的額外安全檢查或策略
借助 NVIDIA FLARE 輕松實現聯邦學習
如何快速利用 FL 并使用 LLM 構建多模態基礎模型已成為許多政府機構、金融機構、醫療健康和藥物研發行業的熱門話題。
在 FLARE 2.4.0 版本中,我們引入了新功能,使開發聯邦學習變得非常簡單,包括客戶端 API。通過少量代碼更改,您可以在幾分鐘(而非幾天)內輕松將預先存在的集中式深度學習代碼轉換為聯邦學習代碼。
以下代碼示例展示了在使用客戶端 API 進行客戶端訓練時的常見模式:
# import nvflare client API import nvflare.client as flare # initialize NVFlare client API flare.init() # run continuously when launching once while flare.is_running(): # receive FLModel from NVFlare input_model = flare.receive() # loads model from NVFlare net.load_state_dict(input_model.params) # perform local training and evaluation on received model {existing centralized deep learning code} ... # construct output FLModel output_model = flare.FLModel( params=net.cpu().state_dict(), metrics={ "accuracy" : accuracy}, meta={ "NUM_STEPS_CURRENT_ROUND" : steps}, ) # send model back to NVFlare flare.send(output_model) |
了解這些易于使用的 API 的關鍵是,幾乎所有的 FL 算法都涉及以下步驟:
- 從聚合器或同級客戶端接收全局模型。
- (可選) 評估模型。
- 更新本地模型,并使用多次訓練執行本地模型訓練。
- 將新更新的本地模型發送回聚合器或其他對等客戶端。
FLARE 客戶端 API 可輕松實現以下操作:
flare.init
:初始化。flare.receive
:接收模型。flare.send
:返回模型。flare.is_running
:檢查是否已完成整體訓練。
借助這些 API,您無需重構現有代碼或編寫新類。只需在現有代碼相關部分中插入 API 命令,即可在幾分鐘內完成代碼轉換。
對于 PyTorch Lightning,更改簡單得多。應用修補程序到訓練器實例:
flare.patch(trainer)
:向訓練器添加回調函數,以執行flare.receive
和flare.send
功能。
模型可以存儲在數據結構中,FLModel
.
class FLModel: def __init__( self, params_type: Union[None, str, ParamsType] = None, params: Any = None, optimizer_params: Any = None, metrics: Optional[Dict] = None, start_round: Optional[ int ] = 0, current_round: Optional[ int ] = None, total_rounds: Optional[ int ] = None, meta: Optional[Dict] = None, ): |
數據結構經過精心設計,通用性強,不會引入任何特定于 FLARE 的概念或結構,僅包含數據科學家已經了解的概念:
params
:權重參數optimizer_params
:優化器參數meta
:元數據。
這個新的客戶端 API 簡化了從 FL 過渡的過程,對最終用戶來說是一個變革性的舉措。
要了解客戶端 API 及其用法,請查閱 ML 到 FL 示例,并閱讀 客戶端 API 文檔。此外,還有更多示例,包括分步教程系列,這些教程使用客戶端 API 編寫 訓練腳本。
在 LLM 時代的聯邦學習
LLM 的主要特征是其龐大的規模,通常包含數十億個參數。聯邦學習需要用戶將其本地模型參數發送到位于不同地區或國家的模型聚合器,以構建全局模型。在這種情況下,有效地在網絡上傳輸這種龐大的模型需要一個強大的框架。為了解決這一挑戰,FLARE 開發了專為此類任務打造的流 API。
流式傳輸 API
LLM 的大小可能很大,例如,7B 參數模型大約為 14 GB。要在網絡上傳輸這些大型對象,您必須克服不同通信協議帶來的限制。
為支持 LLM,FLARE 2.4.0 版本引入了流式傳輸 API,以便幫助超過 gRPC 設置的 2 GB 大小限制的對象進行傳輸。新增的流式傳輸層旨在處理大型對象,使您能夠將大型模型劃分為 100 萬個數據塊并將其流式傳輸到目標。
借助此流式傳輸 API,您可以跨區域 (如美國到印度) 和各種云提供商 (如 Azure 到 AWS) 傳輸不同大小的模型。我們使用 128 GB 對象進行負載測試。
想了解更多相關信息,請參閱 nvflare.fuel.f3.stream_cell 模塊 和 大型模型 的說明。
聯邦 LLM 參數調優
FLARE 2.4.0 版本展示了 使用 NVIDIA NeMo 的 LLM 示例,演示了如何在聯邦設置中執行提示調整、監督調整和參數效率調整。
提示調整
提示調整是用于訓練語言模型的技術,尤其是用于針對特定任務或領域微調模型的技術。相比于從頭開始訓練整個模型,提示調整重點是調整模型在推理或生成期間接收到的提示或指令。
聯邦提示調整允許用戶在本地進行模型提示調整,然后在全局范圍內聚合參數。
在這個示例中,我們利用了提示學習的特點,展示了如何將LLM(大型語言模型)調整應用于特定的下游任務,如金融情緒預測。示例中展示的提示學習技術是p-tuning,即在LLM中加入一個小提示編碼器網絡,用于生成虛擬令牌,從而引導模型朝著下游任務預期的輸出方向發展。
欲了解更多信息,請查閱 使用 NeMo 進行快速學習。

圖 1 展示了 p-tuning 如何用于 LLM 的調整。它涉及凍結 LLM 并學習預測與原始輸入文本相結合的虛擬標記嵌入。

圖 2 展示了聯邦學習環境中 p-tuning 如何與 LLM 配合使用 .LLM 參數保持不變,但提示編碼器參數在 FLARE 服務器上進行訓練、更新和聚合。
在這個示例中,我們利用了提示學習的特點,展示了如何將LLM(大型語言模型)調整應用于特定的下游任務,如金融情緒預測。示例中介紹的提示學習技術是p-tuning,即在LLM中加入一個小提示編碼器網絡,用于生成虛擬令牌,從而引導模型朝著下游任務預期的輸出方向發展。
在聯邦實現中,我們使用了 20B 參數模型。雖然 LLM 參數保持不變,但提示編碼器參數在 FL 服務器上進行訓練、更新和平均。

監督式微調
我們還利用了 NeMo 的 監督式微調(SFT) 功能,展示了如何在監督數據上微調整個模型,以學習如何遵循用戶指定的指令。有關更多信息,請參閱 監督式微調。
三個客戶端 13 億 GPT 模型實驗的示例可在三個 32 GB NVIDIA V100 GPU 或一個 80 GB NVIDIA A100 GPU 上執行。
由于 LLM 的模型規模較大,因此我們使用 FLARE 串流功能將模型分塊傳輸。
參數效率的精細調整
參數高效微調 (PEFT) 是一種熱門技術,用于高效微調 LLM,以便在各種下游任務中使用。
使用 PEFT 進行微調時,基礎模型權重凍結,并將幾個可訓練的適配器模塊注入模型,從而產生少量 (通常 <1%) 的可訓練權重。
通過選擇合適的適配器模塊和注入點,PEFT 實現了與全量化訓練相當的性能,同時計算和存儲成本遠低于全量化訓練。我們使用 NeMo PEFT 方法,展示了如何將 LLM 適應下游任務,如金融情緒預測。
欲了解更多信息,請參閱 使用 NeMo 的參數高效微調 (PEFT)。
SFT 和 PEFT
我們還演示了 SFT 和 PEFT,以及SFT 訓練器如何提升游戲玩家的游戲體驗,并通過HuggingFace實現。此外,PEFT 庫提供了更多相關信息。欲了解詳情,請參閱使用 Hugging Face 的聯邦 LLM SFT 和 PEFT。
我們的實驗展示了如何利用Llama-2-7b-hf 模型,通過 FLARE 框架實現對 HuggingFace 模型的訓練和調整,從而實現聯邦 SFT 和 PEFT 的功能。
在本示例中,FLARE 網絡上的 SFT 模型大小約為 27 GB,而 PEFT 模型大小約為 134 MB。大型模型會自動流式傳輸,無需手動調用流式傳輸 API。

為確保 FLARE 與 HuggingFace 的訓練器的正確行為,我們在三種設置下執行了單客戶端實驗 (圖 4):
- 三次訓練 (紅色) 的本地訓練
- 使用 FLARE 進行三輪聯合訓練 (藍色),每輪一次訓練
- 使用 FLARE 進行三輪聯邦學習,但每輪都會返回一個固定的全局模型 (綠色)
正如預期的那樣,隨著一些訓練隨機性,兩個 PEFT 訓練損失曲線保持一致。
由于 HuggingFace 訓練器會追蹤模型的訓練狀態,因此我們希望確保服務器上的全局模型正確加載,而不是重新使用本地記錄)。如圖所示,正確的固定全局模型已正確加載。每輪訓練從相同的起點開始,這表明了預期的聯邦學習行為。
擴展聯邦學習工作流模式
一些研究人員更傾向于使用替代工作流模式,而不是前面描述的 FL 工作流。例如,群體學習 被認為是 FL 的分布式點對點協作學習模式的替代方案。同樣,分割學習 和談資學習 是 FL 的替代通信模式。
除此之外,以下是這些不同的通信模式之間的一些關鍵差異:
- 強調去中心化和點對點通信。
- 無用于模型聚合的靜態服務器。
- 客戶端通信是對等通信。
- 算法工作流程不同:
- 聚合器選擇
- 客戶端采樣和分配 (廣播到所有的 gossip 協議)
當您進一步查看時,“沒有中央服務器”實際上意味著“沒有靜態聚合節點”。在大多數情況下,聚合節點位于 FL 服務器節點。
在許多 FL 框架中,服務器執行兩種功能:
- 管理作業生命周期 (客戶端站點的運行狀況和作業狀態監控)。
- 作為參與訓練過程 (任務分配、模型初始化、聚合和獲取分布式最終模型) 的聚合器。
通過在 FLARE 中分離這兩個功能并啟用直接點對點通信,工作流模式可以支持蜂群學習和談資。
聚合器函數不一定位于 FL 服務器。您可以將其放入任何客戶端節點。這基本上實現了聚合的去中心化。您只需使用 FL 服務器進行作業生命周期管理。
在 2.4.0 版本中,我們引入了客戶端控制的工作流程,并啟用了此功能。
安全消息
點對點客戶端使用 TLS 加密進行消息交換,發件人使用從證書中接收到的接收者公鑰加密消息,只有發件人和客戶端才能查看消息。
如果客戶端與消息沒有直接連接,且消息通過服務器轉發,則服務器無法解密消息。
以下是常用的客戶端控制的工作流程類型:

在圖 5 中,FL 服務器啟動訓練作業,并監控整個作業生命周期。通信在客戶端之間以點對點方式進行,FL 服務器不參與。
有些人希望將區塊鏈網絡用作蜂群學習的通信層,但這并不是蜂群學習的要求。關鍵在于,如果通過 FL 服務器路由消息,則必須確保聚合器無法解碼消息。
聯邦收益正在改變多個行業領域
FL 的采用速度加快,改變了醫療健康和 BFSI 等多個行業領域。
醫療健康
在醫療健康領域,FL 被用于醫學影像分析,以預測臨床結果,并且還有許多其他應用。
NVIDIA Omniverse 平臺的 FLIP 項目,由英國 AI 中心的價值基礎醫療健康項目負責人倫敦國王學院領導,并得到 FLARE 的支持。該項目計劃在2023年初在至少5家NHS醫療機構中部署。首批應用包括利用AI通過頭部CT掃描診斷中風、幫助識別和診斷前列腺癌的算法,以及縮短心臟MRI掃描時間的軟件。
Rhino Health 是一家專注于聯邦計算的公司,由 FLARE 提供支持,致力于推動聯邦計算的性能變革。欲了解更多信息,請訪問 適用于醫療健康 AI 的聯邦學習: NVIDIA 和 Rhino Health 加速研究協作(視頻鏈接)。
羅氏(Roche)是一家專注于推進醫學科學發展以改善人們生活的領先制藥和診斷公司。該公司認識到了聯邦學習的強大功能,并一直在與 NVIDIA 合作,改進聯邦學習的各個方面。有關更多信息,請訪問 使用 NVIDIA FLARE 通過聯邦學習防止醫療健康數據泄露。
西門子醫療是一家領先的醫療技術公司,專注于提供醫學影像、實驗室診斷和體外診斷的先進解決方案。該公司使用 FLARE 和 Azure ML。
銀行、金融服務和保險
隨著各國和地區開發新的 AI 戰略,FL 已成為必需品。
在 BFSI 中,關鍵應用程序包括欺詐檢測。該模型基于來自不同銀行或機構的各種客戶檔案和信用歷史的見解而共同構建,而且不需要交換原始數據。對于遵守嚴格隱私法律或法規的機構而言,這一挑戰尤為明顯。
根據最新發布的金融服務業 AI 現狀:2024 年趨勢,欺詐檢測是投資領域的熱門 AI 用例之一,也是金融服務組織面臨的重大安全挑戰之一(見圖 6)。


欺詐檢測是金融服務領域的重要應用程序之一。有超過一半的受訪者 (51%) 認為 AI 技術可以有效打擊欺詐,因此將 FL 與零信任機密計算集成成為了解決這些挑戰并提供可靠解決方案的關鍵方法。
在 NVFlare 2.4.0 中,我們開發了幾個示例,展示了如何使用 FL:
總結
FL 正在快速發展 .FLARE 開發了一套功能套件,可幫助公司采用這項新技術。您可以在本帖子中找到比我們在本帖子中討論的更多功能。
NVIDIA Omniverse 平臺新增了 FLARE 功能,以及之前提到的:
- 為 MLFlow 和 Weights&Biases 提供實驗追蹤支持
- 安全增強功能,支持站點特定的自定義身份驗證和授權
- 多格式配置
- 第三方集成模式
- 作業 CLI 和作業模板
- POC 命令升級
- 分步系列示例
NVIDIA 讓您更輕松地將現有的 ML/DL 轉換為 FL,增強 LLM 訓練,并擴展工作流模式。
有關更多信息,請參閱以下資源:
?