Flower v1.4.0 版本深度解析:FedXgbNnAvg 策略、iOS SDK 与 Driver API 的关键演进
Flower v1.4.0 版本深度解析FedXgbNnAvg 策略、iOS SDK 与 Driver API 的关键演进【免费下载链接】flowerFlower: A Friendly Federated AI Framework项目地址: https://gitcode.com/GitHub_Trending/flo/flower本文围绕 Flower 框架 v1.4.02023-04-21 发布的官方变更日志展开逐项解析该版本引入的核心能力XGBoost 联邦学习策略FedXgbNnAvg、iOS SDK 预览版、FedProx 与 FedAvg-FEMNIST 官方基线、实验性 REST API、Driver API 的持久化升级以及History对象记录训练指标的修复。读完本文你将掌握 v1.4.0 每项新特性的技术定位、使用方式以及这些特性在当前仓库源码中的落点与后续演化方向如FedXgbNnAvg的废弃迁移。版本概览v1.4.0 交付了什么官方变更日志位于 v1.4.0.md该版本的主要交付内容可以归纳为以下几类新策略XGBoost 联邦学习支持FedXgbNnAvg策略 官方示例新平台Swift 编写的 iOS SDK预览版新基线FedProx MNIST 与 FedAvg FEMNIST 两个官方 Baseline新接口实验性 REST APIgRPC 之外的替代通信栈Driver API 增强SQLite 持久化服务器状态、已投递任务自动清理Bug 修复长模拟下 Ray 溢写spilling导致训练中断的问题文档与可观测性What is Federated Learning? 入门教程、模拟监控 how-to 指南、训练指标写入History对象通用改进数十项底层修复与增强PR 范围约 #1471 至 #1805。变更日志同时列出了 22 位对本版本作出贡献的开发者git shortlog顺序Adam Narozniak、Alexander Viala Bellander、Charles Beauville、Chenyang Ma (Danny)、Daniel J. Beutel、Edoardo、Gautam Jajoo、Iacob-Alexandru-Andrei、JDRanpariya、Jean Charle Yaacoub、Kunal Sarkhel、L. Jiang、Lennart Behme、Max Kapsecker、Michał、Nic Lane、Nikolaos Episkopos、Ragy、Saurav Maheshkar、Semo Yang、Steve Laskaridis、Steven Hé (Sīchàng)、Taner Topal。该版本明确声明没有不兼容变更Incompatible changes: None即从 v1.3.x 升级到 v1.4.0 无需迁移代码。XGBoost 联邦学习FedXgbNnAvg 策略v1.4.0 最重要的功能之一是引入对 XGBoost 的联邦学习支持。XGBoost 是一种基于树的集成机器学习算法通过梯度提升gradient boosting提升模型精度但树模型不像神经网络那样可以直接对权重做加权平均因此不能直接套用标准的FedAvg聚合。策略实现神经网络输出加权平均 树的组合FedXgbNnAvg策略的源码位于 fedxgb_nn_avg.py。从源码文档字符串可以看到该策略基于构建神经网络Neural Network并对预测结果做平均对应 Ma et al., 2023 的 Federated XGBoost 工作arXiv:2304.07537。从源码结构看其聚合逻辑aggregate_fit方法分为两条通道神经网络通道将每个客户端返回的第一组参数fit_res.parameters[0]即神经网络权重通过parameters_to_ndarrays转为 ndarray按num_examples加权平均——这与标准FedAvg的aggregate完全一致所以FedXgbNnAvg直接继承自FedAvg类树通道将每个客户端返回的第二组参数fit_res.parameters[1]即本地 XGBoost 树收集为trees_aggregated列表随聚合结果一并下发给客户端用于在下一轮本地训练中继续生长新的树。客户端侧的模式可以这样理解每个客户端训练一个神经网络去拟合本地 XGBoost 模型的输出服务器对该预测器网络做联邦平均后客户端用更新后的网络预测结果重建/继续训练自己的树模型。这一设计绕开了树不可平均的难题。该策略还复用了FedAvg的失败容忍配置accept_failures可从__repr__输出中看到并支持fit_metrics_aggregation_fn聚合自定义训练指标。重要现状策略已迁移至 Flower Baselines需要注意一个仓库现状当前代码中FedXgbNnAvg的类文档已标注废弃deprecated实例化时会通过warn_deprecated_feature输出弃用警告并指引用户使用 Flower Baselines 中的副本baselines/hfedxgboost。这意味着v1.4.0 引入时它位于主框架内而后续版本中此类垂直场景策略被迁往 Baselines 目录维护主框架只保留兼容入口。阅读该策略源码时应以 fedxgb_nn_avg.py 及其弃用提示为准。配套示例quickstart-xgboostv1.4.0 同时提供了 XGBoost 用法示例changelog 中写作xgboost-quickstart在当前仓库中对应 examples/quickstart-xgboost。该示例目录包含README.md示例说明与运行步骤quickstart_xgboost/server_app.py服务端入口装配FedXgbNnAvg策略quickstart_xgboost/client_app.py客户端入口实现 XGBoost 本地训练与树的上传/接收quickstart_xgboost/task.py任务定义将服务端与客户端串联起来pyproject.toml依赖声明可据此确认示例所需的 Flower 与 XGBoost 版本前提。仓库中另有功能更完整的综合示例 examples/xgboost-comprehensive可作为深入参考。iOS SDK 预览版把 Flower 带上 iPhonev1.4.0 为希望在 iOS 移动设备上实现联邦学习的开发者引入了 Swift 编写的 iOS SDK预览版。当前仓库中Swift SDK 位于 framework/swift/flwr其结构包括Package.swiftSwift Package Manager 清单定义 SDK 的包名、依赖与目标是将其集成进 Xcode 项目的入口README.mdSDK 使用说明Sources/SDK 源代码含网络层、模型接口等Tests/Swift 测试。配合该 SDK官方 iOS 示例也得到更新位于 examples/ios其中FLiOS/目录是 Xcode 工程含 60 余个 Swift 源文件与 proto 定义根目录还提供 server.py 作为 Flower 服务端以及 scenarios.ipynb 演示不同运行场景。由于 changelog 明确标注该 SDK 为preview预览状态生产使用应关注其 API 在后续版本中的稳定性。官方基线FedProx MNIST 与 FedAvg FEMNISTv1.4.0 新增了两个官方 Baseline用于复现经典论文实验方便研究者做算法对比FedProx MNIST该基线复现《Federated Optimization in Heterogeneous Networks》Li et al., 2018, arXiv:1812.06127中的 MNIST CNN 任务使用FedProx策略。FedProx在本地目标中加入近端项proximal term以约束本地更新不偏离全局模型过远从而在设备/数据异构heterogeneous场景下让收敛更稳健。当前仓库中该基线位于 baselines/fedprox其 MNIST 实验配置保存在 baselines/fedprox/conf/mnist/ 目录配置命名清晰地体现了实验矩阵fedprox_mu_0.0/2.0×sf_0.0/0.5/0.9mu 是 FedProx 的近端项系数0 即退化为 FedAvg 行为2.0 表示更强的近端约束sf 是联邦学习中的采样因子fraction of clients每轮参与训练的设备比例对照组fedavg_sf_0.0/0.5/0.9.toml在相同采样因子下用FedAvg策略作为基线对照这正是原论文异构环境下 FedProx 相对 FedAvg 的优势实验设计的体现。目录中还提供了 run_mnist_experiments.sh 与 run_femnist_experiments.sh 两个批量运行脚本以及 conf/femnist/ 下的 FEMNIST 变体配置。具体运行步骤与依赖安装方式见 baselines/fedprox/README.md。FedAvg FEMNIST该基线复现 LEAF 基准论文Caldas et al., 2018, arXiv:1812.01097中 FedAvg 算法在 FEMNIST 数据集上的实验用于评估标准 FedAvg 在真实移动场景数据上的表现可作为 FedProx 等其他策略的性能参照。实验性 REST APIgRPC 之外的另一种通信方式v1.4.0 引入了作为 gRPC 通信栈替代方案的 REST API。两个关键约束来自 changelog 原文初始版本仅支持匿名客户端anonymous clients尚不支持带认证的身份管理场景仍属实验特性changelog 明确提醒REST API 是实验性的未来很可能发生显著变化因此不应对它的端点形态做长期依赖假设。从仓库现状看Flower 的 Python 端点体系已经演进为 ServerApp / ClientApp / Task 的声明式应用模型如 framework/py/flwr/serverapp、framework/py/flwr/clientapp示例代码普遍采用这一形态。理解 v1.4.0 的 REST API 时应以当时 gRPC 与 REST 双栈并存、REST 仅面向匿名客户端为前提并结合当前仓库的 framework/FASTAPI.md 等文档了解 REST/HTTP 服务形态的现状。Driver API 改进SQLite 持久化与内存效率Driver API 在 v1.4.0 时仍是实验特性但该版本带来了两项关键升级直接改善了长时运行 Flower 服务器的资源画像SQLite 存储服务器状态服务器状态从纯内存in-memory改为落盘到 SQLite 数据库使状态在进程重启后仍可恢复同时降低对进程内存的占用已投递任务自动删除已交付的指令instructions或结果results会被清理不再长期驻留内存。这两项改进大幅提升了长时运行 Flower 服务器的内存效率changelog 原话。从源码结构看当前框架中 Driver 相关实现位于 framework/py/flwr/supercore 目录FedXgbNnAvg源码即从flwr.supercore导入日志与弃用告警工具函数说明 Driver 体系是 Flower 分布式协调层的核心组成部分。其他值得关注的变更修复 Ray 溢写spilling问题v1.4.0 之前的版本在运行长时间模拟时ray有时会将大量数据溢写spill到磁盘导致训练无法继续。该问题在 v1.4.0 中修复。对于用 Flower 的分布式模拟simulation能力做大规模模拟训练的用户这是重要的稳定性改进。新增 TabNet 联邦学习示例TabNet 是面向表格数据tabular data的模型训练框架v1.4.0 为其提供了联邦学习示例changelog 中写作quickstart-tabnet。当前仓库中该示例对应 examples/federated-analytics基于 Pandas 的联邦分析场景表格数据联邦学习方向的参考实现可结合 examples/fl-tabular 查看。新增模拟监控how-to 指南文档新增了一篇监控模拟训练性能的 how-to 指南指导用户在模拟过程中观测训练进度与指标。训练指标写入 History 对象fit_metrics_aggregation_fn一直用于聚合训练fit阶段的指标但此前版本并未把聚合结果保存进History对象导致训练侧指标不可回溯。v1.4.0 修复了这一点。History对象的定义位于 framework/py/flwr/server/history.py并有对应测试 history_test.py 验证各字段的记录行为。这一修复使得评估指标与训练指标都能通过同一History对象统一查看对绘制完整训练曲线类似 baselines/flwr_baselines/dev 中的批处理绘图脚本所做的多轮次对比分析非常有用。文档新增What is Federated Learning?入门教程v1.4.0 在官方文档中新增了联邦学习入门教程面向完全不了解联邦学习的读者介绍其基本概念并引导他们从 Flower 开始。仓库中对应的概念性内容可参考 glossary/federated-learning.mdx 与 framework/docs/source 下的教程文档。小结如何基于 v1.4.0 的路线图使用当前仓库v1.4.0 是 Flower 能力扩张明显的一个版本阅读当前仓库源码时建议按以下线索对照XGBoost 联邦学习从 examples/quickstart-xgboost 入手再读 fedxgb_nn_avg.py 理解神经网络加权平均 树组合的双通道聚合注意该策略现已迁移至baselines/hfedxgboost维护iOS 开发查看 framework/swift/flwr/Package.swift 与 examples/ios 工程结构了解 Swift SDK 如何对接 Flower 服务端算法对比研究以 baselines/fedprox 的配置矩阵mu × sf × FedAvg/FedProx作为复现异构网络论文的起点长时运行与可观测性Driver API 的 SQLite 持久化、History对象记录训练指标history.py与模拟监控指南共同构成大规模模拟的资源管理与观测基础升级兼容性v1.4.0 无破坏性变更但 REST API 与 Driver API 均标注为实验特性基于 v1.4.0 时代代码集成时应关注这两个接口在后续版本中的演进。如需完整变更细节可查阅 v1.4.0.md 原文及其列出的全部关联 PR 编号。【免费下载链接】flowerFlower: A Friendly Federated AI Framework项目地址: https://gitcode.com/GitHub_Trending/flo/flower创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考