-
-
Notifications
You must be signed in to change notification settings - Fork 766
docs: archive curated N50 FedAvg baseline #2264
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Large diffs are not rendered by default.
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,261 @@ | ||
| --- | ||
| created: 2026-04-12T10:30+08:00 | ||
| updated: 2026-04-12T22:30+08:00 | ||
| author: GitHub Copilot | ||
| source_pr: 2263 | ||
| source_branch: YKDZ/FedML:exp/n50-fedavg-baseline-20260411 | ||
| source_spec: doc_fedavg/27_[2026-04-11]_N50_FedAvg_无攻击基线实验设计.md | ||
| status: archived-report | ||
| --- | ||
|
|
||
| # N=50 FedAvg — 实验结果与验收归档说明 | ||
|
|
||
| > 对应规格:`doc_fedavg/27_[2026-04-11]_N50_FedAvg_无攻击基线实验设计.md` | ||
| > | ||
| > 原始结果归档:`doc_fedavg/n50_results/README.md` | ||
|
|
||
| - **实验编号**:BL-N50-v2.1 | ||
| - **执行日期**:2026-04-10 23:55 — 2026-04-11 05:20(总耗时约 5.4 小时) | ||
| - **设计文档**:`doc_fedavg/27_[2026-04-11]_N50_FedAvg_无攻击基线实验设计.md` | ||
| - **执行脚本**:`python/examples/federate/prebuilt_jobs/shieldfl/scripts/batch_baseline_n50.sh` | ||
| - **原始结果归档**:`doc_fedavg/n50_results/` | ||
| - **硬件环境**:4×RTX 4090(GPU 0 占用,实验使用 GPU 1/2/3) | ||
| - **代码版本**:`dae6571095d0` (master) | ||
|
|
||
| --- | ||
|
|
||
| ## §1 执行概况 | ||
|
|
||
| 30/30 组实验全部完成,无崩溃、无 OOM、无 RuntimeError。 | ||
|
|
||
| | 阶段 | 数据集 | 实验数 | GPU 配置 | 单组耗时 | 总耗时 | | ||
| |:-----|:------|:------:|:---------|:---------|:-------| | ||
| | Phase 1 | CIFAR-10 (ResNet-18) | 15 | 3×4090 (13,19,19) | 16.0–17.8 min | ~4.2 h | | ||
| | Phase 2 | MNIST (LeNet-5) | 15 | 2×4090 (26,25) | 4.3–5.3 min | ~1.2 h | | ||
| | **合计** | | **30** | | | **~5.4 h** | | ||
|
|
||
| --- | ||
|
|
||
| ## §2 原始结果 | ||
|
|
||
| ### CIFAR-10 + ResNet-18 (N=50, T=100, E=1, lr=0.01, wd=1e-4) | ||
|
|
||
| | α | seed=0 | seed=1 | seed=2 | seed=3 | seed=4 | mean ± std | AC-1 区间 | 判定 | | ||
| |:--|:-------|:-------|:-------|:-------|:-------|:-----------|:----------|:-----| | ||
| | 0.1 | 66.72% | 44.13% | 49.57% | 60.33% | 56.60% | 55.47% ± 7.94% | [35%, 65%] | **PASS** | | ||
| | 0.5 | 73.31% | 72.76% | 73.37% | 73.39% | 72.63% | 73.09% ± 0.33% | [65%, 80%] | **PASS** | | ||
| | 100 | 74.38% | 74.40% | 74.91% | 74.03% | 74.63% | 74.47% ± 0.29% | [73%, 85%] | **PASS** | | ||
|
|
||
| ### MNIST + LeNet-5 (N=50, T=100, E=1, lr=0.01, wd=0) | ||
|
|
||
| | α | seed=0 | seed=1 | seed=2 | seed=3 | seed=4 | mean ± std | AC-1 区间 | 判定 | | ||
| |:--|:-------|:-------|:-------|:-------|:-------|:-----------|:----------|:-----| | ||
| | 0.1 | 97.77% | 98.10% | 97.88% | 97.91% | 98.08% | 97.95% ± 0.13% | [90%, 98.5%] | **PASS** | | ||
| | 0.5 | 97.96% | 98.35% | 97.58% | 98.12% | 98.24% | 98.05% ± 0.27% | [94%, 99.5%] | **PASS** | | ||
| | 100 | 98.18% | 98.01% | 97.80% | 97.96% | 98.10% | 98.01% ± 0.13% | [96%, 99.5%] | **PASS** | | ||
|
|
||
| --- | ||
|
|
||
| ## §3 AC 逐条判定 | ||
|
|
||
| ### AC-0:工程健康度 | ||
|
|
||
| | AC | 条件 | 结果 | 判定 | | ||
| |:---|:-----|:-----|:-----| | ||
| | AC-0-1 | 无崩溃 | 30/30 全部正常完成 | **PASS** | | ||
| | AC-0-2 | 日志完整 | 30 组均产出 100 行 JSONL,含 `test_acc`、`test_loss` | **PASS** | | ||
| | AC-0-3 | 种子确定性 | C6 结果 73.31% vs 锚点 73.31%,偏差 = 0.00pp < 0.5pp | **PASS** | | ||
|
|
||
| ### AC-1:精度范围 | ||
|
|
||
| | 条件 | mean | 验收区间 | 判定 | | ||
| |:-----|:-----|:---------|:-----| | ||
| | CIFAR-10 α=0.1 | 55.47% | [35%, 65%] | **PASS** | | ||
| | CIFAR-10 α=0.5 | 73.09% | [65%, 80%] | **PASS** | | ||
| | CIFAR-10 α=100 | 74.47% | [73%, 85%] | **PASS** | | ||
| | MNIST α=0.1 | 97.95% | [90%, 98.5%] | **PASS** | | ||
| | MNIST α=0.5 | 98.05% | [94%, 99.5%] | **PASS** | | ||
| | MNIST α=100 | 98.01% | [96%, 99.5%] | **PASS** | | ||
|
|
||
| ### AC-2:统计一致性 | ||
|
|
||
| | AC | 条件 | 结果 | 判定 | | ||
| |:---|:-----|:-----|:-----| | ||
| | AC-2-1 | α 维度单调性 — CIFAR-10 | 74.47% > 73.09% > 55.47% ✓ | **PASS** | | ||
| | AC-2-1 | α 维度单调性 — MNIST | 98.01% < 98.05% — α=100 与 α=0.5 差异仅 0.04pp | **WARN** | | ||
| | AC-2-2 | 数据集维度单调性 | 三个 α 下 MNIST 均 > CIFAR-10 | **PASS** | | ||
| | AC-2-3 | 种子方差 — CIFAR-10 α≥0.5 | 0.33pp, 0.29pp (< 3pp) | **PASS** | | ||
| | AC-2-3 | 种子方差 — MNIST 全部 | 0.13pp, 0.27pp, 0.13pp (< 2pp) | **PASS** | | ||
| | AC-2-4 | 收敛性 — CIFAR-10 α≥0.5 | last10 std ≤ 0.22pp (< 1pp) | **PASS** | | ||
| | AC-2-4 | 收敛性 — MNIST 全部 | last10 std ≤ 0.08pp (< 1pp) | **PASS** | | ||
| | AC-2-4 | 收敛性 — CIFAR-10 α=0.1 | last10 std = 1.59–6.50pp | **WARN** | | ||
|
|
||
| ### AC-3:NaN 检查 | ||
|
|
||
| | 条件 | 结果 | 判定 | | ||
| |:-----|:-----|:-----| | ||
| | CIFAR-10 全部 15 组 | 0/15 NaN | **PASS** | | ||
| | MNIST 全部 15 组 | 0/15 NaN | **PASS** | | ||
|
|
||
| --- | ||
|
|
||
| ## §4 AC 判定汇总 | ||
|
|
||
| | 类别 | PASS | WARN | FAIL | | ||
| |:-----|:----:|:----:|:----:| | ||
| | AC-0 工程健康度 | 3 | 0 | 0 | | ||
| | AC-1 精度范围 | 6 | 0 | 0 | | ||
| | AC-2 统计一致性 | 6 | 2 | 0 | | ||
| | AC-3 NaN | 2 | 0 | 0 | | ||
| | **总计** | **17** | **2** | **0** | | ||
|
|
||
| **总判定:PASS(附 2 条 WARN)** | ||
|
|
||
| ### WARN 说明 | ||
|
|
||
| **WARN-1:AC-2-1 MNIST α 维度单调性** | ||
|
|
||
| MNIST 三个 α 的 mean 分别为 97.95%(α=0.1)、98.05%(α=0.5)、98.01%(α=100),α=100 与 α=0.5 之间出现 0.04pp 反转。这**不是实验缺陷**:MNIST+LeNet-5 是过于简单的任务组合,不同 α 的精度差异本身仅在 0.1pp 量级,已被种子方差(0.13–0.27pp)淹没。FLTrust 论文 N=100 的 MNIST 精度为 95–96%(不同 α 下几乎无差异),进一步印证了这一点。 | ||
|
|
||
| **WARN-2:AC-2-4 CIFAR-10 α=0.1 收敛性** | ||
|
|
||
| 5 个 seed 的 last-10-round std 为 1.59–6.50pp,超过 1pp 阈值。这是 extreme non-IID(α=0.1)+ 恒定 lr=0.01 下的 **client drift 振荡**,属于已知的结构性现象(N=10 基线在同条件下也未完全收敛,slope=+0.13pp/round)。设计文档 §4 AC-3 已预判此风险:无攻击基线下 α=0.1 允许 ≤1/5 seeds NaN 为 WARN 级,实测 0/5 NaN 反而好于预期。 | ||
|
|
||
| --- | ||
|
|
||
| ## §5 N=10 → N=50 精度衰退对照 | ||
|
|
||
| | 数据集 | α | N=10 mean | N=50 mean | Δ (pp) | 预期方向 | 判定 | | ||
| |:-------|:--:|:----------|:----------|:-------|:---------|:-----| | ||
| | CIFAR-10 | 0.1 | 56.43% | 55.47% | −0.96 | 下降 0–15pp | ✓ 符合 | | ||
| | CIFAR-10 | 0.5 | 78.75% | 73.09% | −5.66 | 下降 3–8pp | ✓ 符合 | | ||
| | CIFAR-10 | 100 | 81.71% | 74.47% | −7.24 | 下降 1–5pp | ⚠ 略超预期 | | ||
| | MNIST | 0.1 | 97.55% | 97.95% | +0.40 | 下降 0–5pp | ✓ 无衰退 | | ||
| | MNIST | 0.5 | 98.66% | 98.05% | −0.61 | 下降 0–3pp | ✓ 符合 | | ||
| | MNIST | 100 | 99.04% | 98.01% | −1.03 | 下降 0–2pp | ⚠ 略超预期 | | ||
|
|
||
| **分析**: | ||
|
|
||
| - **CIFAR-10 α=0.1**:N=50 衰退仅 −0.96pp,远好于预期上界 −15pp。α=0.1 的高方差(7.94pp)使得这一差异在统计误差范围内。 | ||
| - **CIFAR-10 α=100**:衰退 −7.24pp 略超预期的 −5pp 上界。但注意 N=10 基线仅 3 seeds(std=0.38%),N=50 为 5 seeds(std=0.29%),两者的置信区间有重叠。衰退主因是每客户端数据从 5000 降至 1000,ResNet-18 对数据量更敏感。 | ||
| - **MNIST**:α=0.1 下 N=50 反而**高于** N=10(+0.40pp),原因是 N=10 基线仅 T=50,而 N=50 基线 T=100(训练充分 2×)。α=100 衰退 −1.03pp 略超预期的 −2pp 上界但仍在合理范围(MNIST 精度空间已接近天花板)。 | ||
|
|
||
| 整体结论:N=10→N=50 的精度衰退符合数据稀释效应的预期方向和量级。 | ||
|
|
||
| --- | ||
|
|
||
| ## §6 社区锚点对照 | ||
|
|
||
| | 社区论文 | 数据集 | N | T | 报告的 FedAvg Acc | 我们的 N=50 T=100 结果 | 可比性说明 | | ||
| |:---------|:-------|:--:|:--:|:----------|:-----|:-----| | ||
| | FLAD (Tang 2025) | CIFAR-10 | 50 | 20 | 64.8% (q=0.5) | 73.09% (α=0.5) | 我们 T=100 训练更充分 → +8pp 合理 | | ||
| | FLAD | CIFAR-10 | 50 | 20 | 68.8% (q≈IID) | 74.47% (α=100) | 同上 → +6pp 合理 | | ||
| | Fang 2025 | CIFAR-10 ResNet-18 | 100 | 1000 | 78% | 74.47% (α=100) | 我们 N=50 数据更稀疏 → −3.5pp 合理 | | ||
| | FLTrust | CIFAR-10 ResNet-20 | 100 | 1500 | 84% | 74.47% (α=100) | 不同模型(ResNet-20 vs 18),不直接可比 | | ||
| | FLAD | MNIST | 50 | 20 | 94.9% (q=0.8) | 97.95% (α=0.1) | 我们 T=100 训练更充分 → +3pp 合理 | | ||
| | FLTrust | MNIST | 100 | 2000 | 96% | 98.01% (α=100) | 我们模型更简单(LeNet-5),T 等效训练量相当 | | ||
|
|
||
| **结论**:全部 6 个数据集×α 组合的结果均在社区报告值的合理偏差范围内,无异常值。 | ||
|
|
||
| --- | ||
|
|
||
| ## §7 收敛性分析 | ||
|
|
||
| ### 收敛状态汇总 | ||
|
|
||
| | 数据集 | α | last-10 mean | last-10 std | 趋势 (后10轮 vs 前10轮) | 判定 | | ||
| |:-------|:--:|:------------|:------------|:-----------------------|:-----| | ||
| | CIFAR-10 | 0.1 | 54.82% | 1.59–6.50% | −3.03 ~ +3.79pp | 未充分收敛(client drift) | | ||
| | CIFAR-10 | 0.5 | 73.12% | 0.11–0.22% | −0.15 ~ +0.19pp | ✅ 完全收敛 | | ||
| | CIFAR-10 | 100 | 74.45% | 0.08–0.14% | −0.21 ~ −0.10pp | ✅ 完全收敛 | | ||
| | MNIST | 0.1 | 97.92% | 0.03–0.08% | +0.10 ~ +0.16pp | ✅ 完全收敛 | | ||
| | MNIST | 0.5 | 97.97% | 0.04–0.06% | +0.11 ~ +0.18pp | ✅ 完全收敛(极微上升趋势) | | ||
| | MNIST | 100 | 97.97% | 0.03–0.08% | +0.12 ~ +0.23pp | ✅ 完全收敛(极微上升趋势) | | ||
|
|
||
| CIFAR-10 α=0.1 的非完全收敛是 extreme non-IID 下的固有特性。N=10 基线在同条件下也存在相同问题(last-10 std=3.87pp),保持 T=100 确保了 N=10→N=50 对照的公平性。 | ||
|
|
||
| --- | ||
|
|
||
| ## §8 论文 Table 1 推荐数据 | ||
|
|
||
| 建议在论文中使用 **last-20-round mean ± seed std** 作为报告值,以减轻 α=0.1 的末期振荡对 final-round 单点值的影响: | ||
|
|
||
| ### CIFAR-10 + ResNet-18 (N=50) | ||
|
|
||
| | 条件 | Final-round mean ± std | Last-20 mean ± std | 推荐用值 | | ||
| |:-----|:----------------------|:-------------------|:---------| | ||
| | α=0.1 | 55.47% ± 7.94% | 54.82% ± 5.02% | 54.8 ± 5.0 | | ||
| | α=0.5 | 73.09% ± 0.33% | 73.12% ± 0.31% | 73.1 ± 0.3 | | ||
| | α=100 | 74.47% ± 0.29% | 74.45% ± 0.20% | 74.5 ± 0.3 | | ||
|
|
||
| ### MNIST + LeNet-5 (N=50) | ||
|
|
||
| | 条件 | Final-round mean ± std | Last-20 mean ± std | 推荐用值 | | ||
| |:-----|:----------------------|:-------------------|:---------| | ||
| | α=0.1 | 97.95% ± 0.13% | 97.92% ± 0.12% | 97.9 ± 0.1 | | ||
| | α=0.5 | 98.05% ± 0.27% | 97.97% ± 0.27% | 98.0 ± 0.3 | | ||
| | α=100 | 98.01% ± 0.13% | 97.97% ± 0.14% | 98.0 ± 0.1 | | ||
|
|
||
| --- | ||
|
|
||
| ## §9 后续消费方更新 | ||
|
|
||
| 基于本实验结果,防御基线 AC-C-3 精度范围更新为: | ||
|
|
||
| | 数据集 | α | FedAvg mean | AC-C-3 新区间 [mean−15pp, mean+5pp] | | ||
| |:-------|:--:|:-----------|:------------------------------------| | ||
| | CIFAR-10 | 0.1 | 55.47% | [40.5%, 60.5%] | | ||
| | CIFAR-10 | 0.5 | 73.09% | [58.1%, 78.1%] | | ||
| | CIFAR-10 | 100 | 74.47% | [59.5%, 79.5%] | | ||
| | MNIST | 0.1 | 97.95% | [83.0%, 100%] | | ||
| | MNIST | 0.5 | 98.05% | [83.1%, 100%] | | ||
| | MNIST | 100 | 98.01% | [83.0%, 100%] | | ||
|
|
||
| --- | ||
|
|
||
| ## §10 执行日志 | ||
|
|
||
| ### 完成时间线 | ||
|
|
||
| | 实验 TAG | 耗时 | 完成时间 | | ||
| |:---------|:-----|:---------| | ||
| | c10_baseline_a0.1_s0 | 1061s | 2026-04-11 00:13 | | ||
| | c10_baseline_a0.1_s1 | 1030s | 00:30 | | ||
| | c10_baseline_a0.1_s2 | 1068s | 00:48 | | ||
| | c10_baseline_a0.1_s3 | 989s | 01:05 | | ||
| | c10_baseline_a0.1_s4 | 1021s | 01:22 | | ||
| | c10_baseline_a0.5_s0 | 1026s | 01:39 | | ||
| | c10_baseline_a0.5_s1 | 1032s | 01:56 | | ||
| | c10_baseline_a0.5_s2 | 982s | 02:12 | | ||
| | c10_baseline_a0.5_s3 | 974s | 02:28 | | ||
| | c10_baseline_a0.5_s4 | 962s | 02:44 | | ||
| | c10_baseline_a100_s0 | 965s | 03:01 | | ||
| | c10_baseline_a100_s1 | 1018s | 03:18 | | ||
| | c10_baseline_a100_s2 | 1012s | 03:34 | | ||
| | c10_baseline_a100_s3 | 1040s | 03:52 | | ||
| | c10_baseline_a100_s4 | 1015s | 04:09 | | ||
| | mn_baseline_a0.1_s0 | 304s | 04:14 | | ||
| | mn_baseline_a0.1_s1 | 315s | 04:19 | | ||
| | mn_baseline_a0.1_s2 | 312s | 04:24 | | ||
| | mn_baseline_a0.1_s3 | 313s | 04:29 | | ||
| | mn_baseline_a0.1_s4 | 311s | 04:35 | | ||
| | mn_baseline_a0.5_s0 | 273s | 04:39 | | ||
| | mn_baseline_a0.5_s1 | 287s | 04:44 | | ||
| | mn_baseline_a0.5_s2 | 274s | 04:48 | | ||
| | mn_baseline_a0.5_s3 | 289s | 04:53 | | ||
| | mn_baseline_a0.5_s4 | 282s | 04:58 | | ||
| | mn_baseline_a100_s0 | 259s | 05:02 | | ||
| | mn_baseline_a100_s1 | 265s | 05:07 | | ||
| | mn_baseline_a100_s2 | 260s | 05:11 | | ||
| | mn_baseline_a100_s3 | 267s | 05:15 | | ||
| | mn_baseline_a100_s4 | 264s | 05:20 | | ||
|
|
||
| ### 产出文件清单 | ||
|
|
||
| - JSONL 指标文件:30 个(`doc_fedavg/n50_results/metrics/metrics_*_shieldfl_atknone_defnone_*_gauto_seed*.jsonl`) | ||
| - YAML 配置快照:30 个(`doc_fedavg/n50_results/configs/config_*_shieldfl_atknone_defnone_*.yaml`) | ||
| - 结果归档说明:`doc_fedavg/n50_results/README.md` | ||
| - 分析脚本:`doc_fedavg/tools/analyze_baseline.py` | ||
| - 批量执行脚本:`python/examples/federate/prebuilt_jobs/shieldfl/scripts/batch_baseline_n50.sh` | ||
|
|
||
| 说明:运行期 `batch_logs/`、`done.txt` 等过程文件未作为最终学术交付物纳入仓库归档;本次入库仅保留可复核的原始 metrics / configs、说明文档与复盘脚本。 |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,29 @@ | ||||||
| # N=50 FedAvg Baseline Archive | ||||||
|
|
||||||
| 本目录是对 PR `#2263`(`Exp/n50 fedavg baseline 20260411`)的整理入库版本,只保留 **N=50 FedAvg 无攻击基线** 的可复现实验资产。 | ||||||
|
|
||||||
| ## 内容概览 | ||||||
|
|
||||||
| - `27_[2026-04-11]_N50_FedAvg_无攻击基线实验设计.md`:实验设计与验收标准归档版。 | ||||||
| - `28_[2026-04-12]_N50_FedAvg_实验结果与验收归档说明.md`:结果汇总、验收结论与对照分析。 | ||||||
| - `n50_results/`:30 组实验的原始 metrics / configs 快照。 | ||||||
| - `tools/analyze_baseline.py`:用于复盘统计与 AC 检查的离线分析脚本。 | ||||||
| - `../python/examples/federate/prebuilt_jobs/shieldfl/scripts/batch_baseline_n50.sh`:批量执行脚本。 | ||||||
|
|
||||||
| ## 整理原则 | ||||||
|
|
||||||
| - 排除 PR 中与本次基线无关的临时草稿、过程记录和工作台文件。 | ||||||
| - 保留完整的 `2 数据集 × 3 α × 5 seeds = 30` 组实验矩阵。 | ||||||
| - 原始文件名保持不变,以便与报告、脚本和历史运行结果逐项对照。 | ||||||
|
|
||||||
| ## 命名说明 | ||||||
|
|
||||||
| - 原始 JSONL / YAML 文件名沿用现有实验管线的 `shieldfl` 命名;在这批实验里,它表示由 ShieldFL 实验框架产出的 **no-attack / no-defense 基线记录**,并不表示额外启用了某种防御。 | ||||||
| - 指标文件中的 `gauto` 后缀也保留原样;由于本实验 `attack=none`,文件内 `gamma_actual` 为 `null`,该后缀仅用于保持与 PR 原始资产一致。 | ||||||
| - `config_ResNet18_cifar10_shieldfl_atknone_defnone_a0.5_pmr0.0_seed0.yaml` 在 `master` 上已存在,因此未出现在 PR diff 中;本次归档时已将其补齐,以完整覆盖 30 组矩阵。 | ||||||
|
||||||
| - `config_ResNet18_cifar10_shieldfl_atknone_defnone_a0.5_pmr0.0_seed0.yaml` 在 `master` 上已存在,因此未出现在 PR diff 中;本次归档时已将其补齐,以完整覆盖 30 组矩阵。 | |
| - `config_ResNet18_cifar10_shieldfl_atknone_defnone_a0.5_pmr0.0_seed0.yaml` 已在本次归档中纳入,用于完整覆盖 `2 数据集 × 3 α × 5 seeds = 30` 组实验矩阵。 |
| Original file line number | Diff line number | Diff line change | ||||
|---|---|---|---|---|---|---|
| @@ -0,0 +1,31 @@ | ||||||
| # N=50 FedAvg Baseline Results Archive | ||||||
|
|
||||||
| 本目录存放从 PR `#2263` 整理入库的 **N=50 FedAvg 无攻击基线** 原始结果快照。 | ||||||
|
|
||||||
| ## 来源 | ||||||
|
|
||||||
| - 来源 PR:`#2263 Exp/n50 fedavg baseline 20260411` | ||||||
| - 来源分支:`YKDZ/FedML:exp/n50-fedavg-baseline-20260411` | ||||||
| - 整理日期:`2026-04-12` | ||||||
| - 原始结果根目录:`python/examples/federate/prebuilt_jobs/shieldfl/results/` | ||||||
| - 完整性校验: | ||||||
| - `30/30` 个 metrics 文件齐全 | ||||||
| - 每个 metrics 文件均为 `100` 行,末轮 `round=99` | ||||||
|
||||||
| - 每个 metrics 文件均为 `100` 行,末轮 `round=99` | |
| - 每个 metrics 文件包含 `100` 条 JSONL 记录,末轮 `round=99`;当前归档文件因末尾保留一个空白行,在仓库中显示为 `101` 行 |
Copilot
AI
Apr 12, 2026
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This note claims ...a0.5...seed0.yaml comes from the main branch (and only the other 29 configs came from the PR branch), but in this PR the file is being added as a new artifact. Please update this provenance statement to match what’s actually in the repo/diff (or clarify the exact source branch/commit where it was taken from).
| - `config_ResNet18_cifar10_shieldfl_atknone_defnone_a0.5_pmr0.0_seed0.yaml` 来自主分支现有文件,用于补齐完整的 30 组实验矩阵;其余 29 个 config 和 30 个 metrics 来自 PR 分支。 | |
| - `config_ResNet18_cifar10_shieldfl_atknone_defnone_a0.5_pmr0.0_seed0.yaml` 为本次归档中补齐 30 组实验矩阵而纳入的配置快照;其余 29 个 config 和 30 个 metrics 来自 PR 分支。 |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,75 @@ | ||
| common_args: | ||
| training_type: "cross_silo" | ||
| random_seed: 0 | ||
|
|
||
| data_args: | ||
| dataset: "mnist" | ||
| data_cache_dir: ./data | ||
| partition_method: "hetero" | ||
| partition_alpha: 0.1 | ||
| val_per_class: 50 | ||
| trust_per_class: 50 | ||
| max_samples_per_client: 0 | ||
| test_subset_size: 0 | ||
| num_workers: 0 | ||
|
|
||
| model_args: | ||
| model: "LeNet5" | ||
|
|
||
| train_args: | ||
| federated_optimizer: "FedAvg" | ||
| client_id_list: | ||
| client_num_in_total: 50 | ||
| client_num_per_round: 50 | ||
| comm_round: 100 | ||
| epochs: 1 | ||
| batch_size: 64 | ||
| client_optimizer: sgd | ||
| learning_rate: 0.01 | ||
| weight_decay: 0.0 | ||
| momentum: 0.9 | ||
| server_momentum: 0.0 | ||
| server_lr: 1.0 | ||
| pop_size: 15 | ||
| generations: 10 | ||
| lambda_reg: 0.01 | ||
| cpu_transfer: true | ||
| enable_attack: false | ||
| attack_type: "none" | ||
| byzantine_client_num: 0 | ||
| enable_defense: false | ||
| defense_type: "none" | ||
| beta: 0.2 | ||
| eval_asr: false | ||
| target_label: 0 | ||
| trigger_size: 3 | ||
| trigger_value: 1.0 | ||
| original_class_list: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] | ||
| target_class_list: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] | ||
| ratio_of_poisoned_client: 0.0 | ||
|
|
||
|
|
||
| validation_args: | ||
| frequency_of_the_test: 1 | ||
|
|
||
| device_args: | ||
| worker_num: 50 | ||
| using_gpu: true | ||
| gpu_mapping_file: config/gpu_mapping.yaml | ||
| gpu_mapping_key: mapping_50clients_isolated | ||
|
|
||
| comm_args: | ||
| backend: "MPI" | ||
| is_mobile: 0 | ||
|
|
||
| tracking_args: | ||
| log_file_dir: ./log | ||
| enable_wandb: false | ||
| using_mlops: false | ||
|
|
||
| shieldfl_args: | ||
| runtime_mode: "single-gpu-deterministic" | ||
| enforce_determinism: true | ||
| sort_client_updates: true | ||
| aggregator_type: "shieldfl" | ||
| metrics_output_dir: "./results" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This README refers to the default branch as
master, but this repository usesmain(as indicated by the diff base). To avoid confusion for readers trying to locate the referenced existing config, update the branch name here (or rephrase to “main branch/default branch”).