
Flower v1.24.0 版本深度解析Python 3.13 支持、联邦管理命令与统一心跳机制【免费下载链接】flowerFlower: A Friendly Federated AI Framework项目地址: https://gitcode.com/GitHub_Trending/flo/flower本文基于 Flower 开源联邦学习框架Friendly Federated AI Framework的 v1.24.0 变更日志 编写结合仓库源码逐一剖析该版本的核心改动新增 Python 3.13 支持、flwr list视图改进、联邦Federation命令与内部 API 扩展、统一应用心跳机制、性能优化以及 Python 3.9 支持移除、protobuf 5.x 升级等不兼容变更。读完本文你将清楚了解 v1.24.0 的升级影响、新命令的用法以及这些改动背后的源码实现。Flower v1.24.0发布于 2025-11-30是一次面向联邦学习运行体验与工程基础设施的重要版本更新。它一方面向下游用户提供更清晰的 CLI 观测能力flwr list、flwr federation show/list另一方面通过统一心跳机制解决应用进程崩溃后挂起的顽疾同时将 Python 最低版本提升至 3.10、protobuf 升级至 5.x。本文以该版本 Changelog 为骨架结合当前仓库的 CLI 与 supercore 源码逐项展开解读。一、版本概况与贡献者v1.24.0 由以下贡献者共同完成按git shortlog顺序Charles Beauville、Chong Shen Ng、Daniel J. Beutel、Daniel Nata Nugraha、Heng Pan、Javier、Patrick Foley、Robert Steiner、Yan Gao。该版本的主要变更集中在五条主线新增 Python 3.13 支持PR #6116、#6119、#6132改进flwr list视图#6117扩展联邦命令与内部 API涉及 20 个 PR引入统一应用心跳机制涉及 14 个 PR一系列 Bug 修复、导入性能与 SQLite 性能优化二、Python 版本支持调整新增 3.13放弃 3.9新增 Python 3.13 支持v1.24.0 正式为flwr增加 Python 3.13 支持CI 与数据集测试同步更新并将ray依赖升级以保证与 Python 3.13 的兼容性。这意味着在最新 Python 运行时上运行 Flower 客户端、服务端与模拟器flwr-simulation时不再有版本兼容障碍。移除 Python 3.9 支持不兼容变更作为配套调整v1.24.0 将 Python 最低版本从 3.9 提升到 3.10PR #6118 可见框架的requires-python已收紧为3.11,4.0即v1.24.0 官方声明最低支持 Python 3.10当前仓库代码状态要求 Python 3.11 及以上。升级到 v1.24.0 之前请确认你的运行环境满足 Python 版本要求仍在 Python 3.9 上的项目需要先升级解释器同时留意后续章节提到的 protobuf 5.x 对 TensorFlow 版本的新约束。三、protobuf 升级至 5.x 与 TensorFlow 兼容性约束v1.24.0 将protobuf依赖升级至5.29.0PR #6104使flwr使用最新的 gRPC 协议栈并保持与 TensorFlow 2.20 的兼容。这里有一条必须注意的兼容性红线protobuf 5.x 与 TensorFlow早于 2.18 的版本不兼容。如果你的项目依赖旧版 TensorFlow如 2.17 或更早直接升级 Flower 到 v1.24.0 会引入 protobuf 冲突需要先升级 TensorFlow 到 2.18推荐 2.20再升级 Flower。这是 v1.24.0 升级路径中最容易踩坑的一处。四、CLI 可观测性升级flwr list与联邦命令v1.24.0 的重点之一是让用户看得清联邦中的运行状态涉及flwr list视图改进与联邦命令扩展两条线。4.1flwr list默认精简、按需展开此前flwr list默认输出过多细节v1.24.0 对其进行了调整PR #6117默认视图更精简仅展示 Run ID、Federation、AppAPP_IDAPP_VERSION、Status、Elapsed、Status Changed 等核心列--run-id参数提供详细信息指定 Run ID 后输出转为垂直详表追加 FAB Hash、Status Details、各阶段时间戳Pending/Starting/Running/Finished At、网络流量inbound/outbound/total以字节为单位与计算耗时ServerApp/ClientApp/total。从源码 framework/py/flwr/cli/ls.py 可以看到run_id与limit不能同时使用源码中会显式抛出ValueErrorframework/py/flwr/cli/ls.py#L110-L113_to_table负责默认列表的富文本表格渲染_to_detail_table负责单个 Run 的垂直详表framework/py/flwr/cli/ls.py#L166-L276状态着色逻辑_get_status_style定义了finished:completed绿色、finished:failed红色、finished:stopped黄色、starting/running蓝色、pending灰暗色的展示约定framework/py/flwr/cli/ls.py#L139-L163时间戳统一为 ISO 8601 UTC 格式YYYY-MM-DD HH:MM:SSZ。此外flwr list --format json可输出机器可读的结构化结果字段包含run-id、federation-id、fab-id、fab-version、fab-hash、状态与各时间戳、network-trafficinbound/outbound/total 字节数与compute-timeserverapp/clientapp/total 秒数便于脚本化监控framework/py/flwr/cli/ls.py#L279-L324。4.2 联邦命令扩展flwr federation show与flwr federation listv1.24.0 对既有的 federation 概念进行了细化与扩展PR 涉及 20 个含 #6067、#6078、#6082、#6086、#6088、#6103、#6152 等目标是让flwr federation show与flwr federation list对默认联邦中的 SuperNode 与 runs 提供更清晰的可见性。从实现看联邦命令对应 framework/py/flwr/cli/federation/ls.pyflwr federation list别名flwr federation ls列出所有联邦表格包含 Federation、Description、Runtimesimulation或deployment、Statusactive/archived四列默认只显示活跃联邦--verbose额外展示已归档联邦flwr federation list --federation ID等价于 show 语义展示单个联邦的完整细节包括四张表格——成员表Federation Members账户名与角色、SuperNodes 表Node ID、Owner、Status、Simulation Configuration 表当联邦为模拟模式时展示num-supernodes、client-resources-num-cpus、client-resources-num-gpus、backend等键值以及 Runs 表Run ID、App、Status、Elapsed节点状态着色online绿色、offline亮黄、registered蓝色unregistered节点直接跳过不展示framework/py/flwr/cli/federation/ls.py#L347-L372同样支持--format json结构化输出。这些命令通过ControlHttpClientHTTP 控制面客户端位于framework/py/flwr/supercore/control.py与 SuperLink 通信分别调用ListFederations与ShowFederationRPCframework/py/flwr/cli/federation/ls.py#L144-L286。五、统一应用心跳机制告别进程挂起v1.24.0 最重要的工程改进是为应用进程引入统一心跳heartbeat机制涉及 PR #6204 至 #6227 共 14 个。要解决的问题此前当应用进程App Process崩溃且不响应时相关运行可能长时间挂起无法退出用户执行flwr stop停止运行后flwr-serverapp与flwr-simulation进程仍然无法及时退出。新机制的行为统一心跳机制上线后应用进程按固定间隔发送心跳父进程或 SuperLink 侧据此判断应用是否存活当应用进程崩溃且不再响应心跳时系统不再无限等待而是认定其已死亡flwr stop停止运行后flwr-serverapp与flwr-simulation进程能够更快退出。源码佐证当前仓库中心跳发送的通用实现位于 framework/py/flwr/supercore/heartbeat.pyHeartbeatSender并配套测试文件 framework/py/flwr/supercore/heartbeat_test.py。在客户端侧节点心跳通过SendNodeHeartbeatRPC 发送携带node与heartbeat_interval字段协议定义见 framework/py/flwr/proto/heartbeat.protoflwr.client.grpc_rere_client.connection中通过HeartbeatSender(send_node_heartbeat)启动与停止心跳循环framework/py/flwr/client/grpc_rere_client/connection.py。对于 v1.24.0 而言统一的含义是ServerApp、Simulation 等各类应用进程采用同一套心跳机制从而统一处理崩溃检测与停止响应逻辑这是该版本可运维性提升的核心。六、Bug 修复与性能优化6.1 关键 Bug 修复PR #6188、#6171、#6175、#6207修复在低配机器上偶发的 object ID 缺失或未注册问题修复通过 CLI 停止后flwr-serverapp进程挂起不退出的问题与心跳机制联动修正 runs 的finished_at时间戳修正 runs 的初始心跳间隔。6.2 性能优化导入性能#6102优化flwr模块导入路径减少 import 开销——顺带解决了安装tensorflow时flwr.server.utils.tensorboard导致的慢导入问题内部 SQLite 数据库性能#6178、#6195SuperLink 内部状态存储基于 SQLite本版本对其查询与写入路径做了优化改善大规模联邦场景下的状态管理性能。6.3 弃用flwr.server.utils.tensorboard作为不兼容变更flwr.server.utils.tensorboard在 v1.24.0 中被标记为弃用PR #6113 目录可见该目录仅保留validator.py与__init__.pytensorboard 工具函数已被移除。使用该 API 的项目应在升级后迁移到其他 TensorBoard 集成方式。七、工程与生态配套更新v1.24.0 还包含一批支撑性更新CI workflows 与开发工具链更新涉及 16 个 PR如 #6053、#6089、#6130、#6181 等同步 Python 3.13 支持更新 baselines 与开发脚本的 Python 版本要求文档更新8 个 PR含 #6115、#6146、#6169 等常规改进40 个 PR涵盖框架内部实现与质量基础设施的持续打磨。八、升级建议与影响面总结升级到 Flower v1.24.0 前请重点核对以下几点检查项v1.24.0 要求影响Python 版本最低 3.10当前仓库要求 ≥3.11Python 3.9 不再受支持protobuf≥5.29.0与 TensorFlow 2.18 不兼容需同步升级 TensorFlow 至 2.182.20 更佳flwr.server.utils.tensorboard已弃用并移除需迁移到替代方案flwr list默认视图更精简需完整信息时改用--run-id联邦运维新增flwr federation show/list默认联邦的 SuperNode 与 runs 可见性更好进程停止统一心跳机制flwr stop后flwr-serverapp/flwr-simulation退出更快对于大规模联邦部署与模拟实验的用户v1.24.0 的价值集中在三点清晰的运行可见性flwr list --run-id的详细诊断信息、flwr federation的成员/节点/运行一览、可靠的进程生命周期管理统一心跳防挂起、以及更快的导入与 SQLite 状态存储。对于使用新语言特性或最新深度学习栈Python 3.13 TensorFlow 2.20的团队本版本是值得跟进的升级目标。相关源码与文档路径速览变更日志framework/docs/source/changelog/v1.24.0.md版本约束framework/pyproject.tomlflwr list实现framework/py/flwr/cli/ls.py联邦命令实现framework/py/flwr/cli/federation/ls.pyflwr stop实现framework/py/flwr/cli/stop.py心跳发送器framework/py/flwr/supercore/heartbeat.py心跳协议framework/py/flwr/proto/heartbeat.proto服务端工具模块tensorboard 已移除framework/py/flwr/server/utils/【免费下载链接】flowerFlower: A Friendly Federated AI Framework项目地址: https://gitcode.com/GitHub_Trending/flo/flower创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考