XGBoost 是一種高效且可擴展的機器學習算法,廣泛應用于回歸、分類和排名任務。它基于梯度提升原則,將多個弱學習者(通常是決策樹)的預測結合起來,以生成穩健的整體模型。
XGBoost 在處理大型數據集和復雜數據結構方面表現優異,這要歸功于其高效的實施和高級功能,如正則化、并行處理和處理缺失值。其通用性和高性能使其成為各行各業數據科學競賽和實際應用的熱門選擇。
XGBoost 1.7.0 版本引入了 Federated XGBoost,使多個機構能夠無需移動數據即可聯合訓練 XGBoost 模型。在 XGBoost 2.0.0 版本中,此功能得到進一步增強,以支持垂直聯合學習。OSS Federated XGBoost 提供 Python APIs 用于模擬基于 XGBoost 的聯合訓練。
自 2023 年以來,NVIDIA 聯邦學習應用程序運行時環境 (FLARE) 引入了與聯邦 XGBoost 功能的內置集成:horizontal histogram-based 和 tree-based XGBoost,以及 垂直 XGBoost。作為垂直訓練的預備步驟,我們還添加了對用于樣本比對的 私隱集合交集 (PSI) 的支持。
借助這些集成,您可以在生產或模擬中準備和運行聯邦 XGBoost 作業,而無需編寫代碼,只需為作業和數據加載功能提供數據集位置、訓練參數和 NVIDIA FLARE 配置。
在本文中,我們將重點介紹 NVIDIA FLARE 2.4.1 在現實世界中用于聯合 XGBoost 學習的主要功能,要高效地進行現實世界中的聯合訓練,您必須能夠執行以下操作:
- 使用不同的實驗、特征組合或數據集運行多個并發 XGBoost 訓練實驗。
- 處理由于不可靠的網絡條件或中斷而導致的潛在實驗失敗。
- 通過 MLflow 或 Weights&Biases 等跟蹤系統監控實驗進展。
同時并發運行多個實驗
數據科學家通常必須評估各種超參數或特征對模型的影響。他們使用同一模型試驗不同的特征或特征組合。
NVIDIA FLARE 并行作業執行功能使您能夠并行執行這些實驗,從而顯著減少訓練所需的時間。NVIDIA FLARE 代表用戶管理通信多路復用,不需要為每個作業打開新端口(通常由 IT 支持部門完成)。
圖 1 顯示了 NVIDIA FLARE 中兩個聯邦 XGBoost 作業的執行情況。

XGBoost 容錯訓練
在處理跨地區或跨國界訓練時,網絡的可靠性可能低于企業網絡,從而導致定期中斷,這些中斷會導致通信失敗,導致作業中斷,并需要從頭開始或從保存的快照重啟。
用于 XGBoost 的 NVIDIA FLARE 通信器的可靠性功能可在網絡中斷期間自動處理消息重試,從而確保彈性并保持學習連續性和數據完整性 (圖 2)。
NVIDIA FLARE 無縫集成,可促進不同 XGBoost 聯邦服務器和客戶端之間的通信,為聯邦學習提供強大而高效的解決方案。

如需了解更多信息和端到端示例,請參閱/NVIDIA/NVFlare GitHub 資源庫。
聯邦實驗跟蹤
在進行機器學習訓練時,尤其是在聯邦學習等分布式環境中,密切監控訓練和評估指標至關重要。
NVIDIA FLARE 提供與實驗追蹤系統 (MLflow、Weights&Biases 和 TensorBoard) 的內置集成,以促進對這些指標的全面監控。

借助 NVIDIA FLARE,您可以在分布式和集中式追蹤配置之間進行選擇:
- 去中心化追蹤:每個客戶端在本地管理自己的指標和實驗追蹤服務器,維護訓練指標隱私,這種設置限制了在不同站點之間比較數據的能力。
- 集中式追蹤:所有指標都會流式傳輸到中央 FL 服務器,然后由后者將數據推送到選定的追蹤系統,這樣設置支持有效的跨站點指標比較
借助 NVIDIA FLARE 作業配置,您可以選擇最適合您需求的追蹤場景或系統。當用戶需要從一個實驗追蹤系統遷移到另一個實驗追蹤系統時,使用 NVIDIA FLARE,您可以修改作業配置,而無需重新編寫實驗追蹤代碼。
要添加 MLflow、Weights&Bias 或 TensorBoard 日志記錄以高效地將指標流式傳輸到相應的服務器,只需要三行代碼:
from nvflare.client.tracking import MLflowWriter mlflow = MLflowWriter() mlflow.log_metric( "loss" , running_loss / 2000, global_step) |
借助 Nvflare.client.tracking
API,您可以靈活地將日志記錄指標重定向到任何目標,因為您可以將收集的指標流式傳輸到任何受支持的實驗跟蹤系統,不管使用 MLflow
、Weights&Biases
或 TensorBoard
語法。選擇使用 MLflowWriter
、WandBWriter
或 TBWriter
是基于您現有的代碼和要求。
MLflowWriter
使用 MLflow API 操作log_metric
.TBWriter
使用 TensorBoard SummaryWriter 操作add_scalar
.WandBWriter
使用 API 操作,log
.
根據您現有的代碼或對這些系統的熟悉程度,您可以選擇任何 Writer。修改訓練代碼后,您可以使用 NVIDIA FLARE 作業配置配置系統以適當流式傳輸日志。
有關更多信息,請參閱FedAvg with SAG 工作流程和 MLflow 跟蹤教程。
總結
在本文中,我們詳細介紹了 NVIDIA FLARE 2.4.x 的可靠 XGBoost 和實驗跟蹤支持功能。有關更多信息,請參閱GitHub 上的/NVIDIA/NVFlare 2.4 分支和NVIDIA FLARE 2.4 文檔。
有任何問題或評論?請通過federatedlearning@nvidia.com與我們聯系。
?
?