Flower

Stars

用于构建联邦 AI 系统的开源框架,通过可扩展 Strategy、ServerApp 与 ClientApp 组织跨设备训练和评估,并兼容 PyTorch、TensorFlow、JAX、Hugging Face、scikit-learn 等多种机器学习技术栈。

Federated AIStrategy · ServerApp · ClientAppPython · Multi-framework
FEDERATED AGGREGATION · PARAMETER DOMAIN

两端都要裁剪,也必须留下中间样本

FedTrimmedAvg 的 beta 同时作用于上下尾部;边界达到 0.5 时,偶数客户端集合会被完整裁空,并让聚合结果变成 NaN。

CLIENT UPDATES · EVEN COUNT
−4−3−2−11234
beta0.5cut 50% from each tail

8 updates · symmetric tails

BEFORE · EQUAL BOUNDARIES MISSED
lowercut4
uppercut4
partitioned[4:4] → []mean([]) → NaN

lowercut > uppercut is false

AFTER · SHARED DOMAIN GUARD0 ≤ beta < 0.5
ServerAppFedTrimmedAvgLegacyFedTrimmedAvgHelpertrim_meanHelper_trim_mean
ValueError before np.partition

−0.1 rejected · 0.5 rejected

空切片

beta=0.5 让两个切分边界重合

ServerApp 与旧版 `FedTrimmedAvg` 都接受范围外的裁剪比例。`beta=0.5` 且客户端更新数为偶数时,`lowercut` 与 `uppercut` 恰好相等;旧逻辑只检查前者是否大于后者,于是空切片继续进入 `np.mean()`,产生 `NaN` 聚合参数。负值同样没有在策略初始化阶段被拒绝,而是延迟到数组分区时才失败。

参数契约

双尾裁剪要求 0 ≤ beta < 0.5

`beta` 会从分布的上下两端各裁掉同一比例,因此必须满足 `0 ≤ beta < 0.5`,才能保证中央样本集合非空。约束不能只放在公开策略构造器:底层 trimmed-mean helper 也可以被直接调用,ServerApp 与 legacy strategy 又维护两套入口;四个边界必须共享同一参数域,才能避免绕过校验。

多入口一致

策略与底层 Helper 同步前置校验

在 ServerApp 和 legacy `FedTrimmedAvg` 构造器中前置验证 `beta`,并在 `trim_mean()` 与 `_trim_mean()` 内同步校验各自的 cut fraction;非法值立即抛出说明 `[0, 0.5)` 的 `ValueError`,不再依赖 `lowercut > uppercut` 的间接判断。文档同步标明取值区间,参数化回归覆盖 `-0.1` 与 `0.5` 两个边界及两代实现。

失败语义

非法配置在分区和均值之前结束

非法裁剪配置现在会在策略创建或底层聚合入口明确失败,不会继续执行空切片均值并把 `NaN` 传播到全局模型;合法 `beta` 的分区和聚合路径保持不变。改动覆盖 6 个文件,三组定向测试共 18 项通过,完整 Framework 检查同步通过。