MiLab-HITSZ/2026LiFedCVESA
GitHub: MiLab-HITSZ/2026LiFedCVESA
FedCVESA 是一个联邦学习实验代码仓库,用于在 non-IID 数据划分下复现论文 v5 版本的联邦训练与客户端数据恢复实验。
Stars: 0 | Forks: 0
# FedCVESA
本仓库包含用于论文草稿中 FedCVESA v5 实验的精简代码发布。保留的实验设置是在 MNIST、Fashion-MNIST 和 CIFAR-10 上使用 alpha=0.5 的 10 客户端 Dirichlet non-IID 划分。
## 包含内容
- `src/federated_main.py`:主要的联邦训练和 CVEA 恢复入口点。
- `src/models.py`:仅包含 v5 论文模型:
- 用于 MNIST 和 Fashion-MNIST 的 `CNNFashion_Enhanced`。
- 用于 CIFAR-10 的 `ResNet18Cifar`。
- `src/options.py`:v5 实验使用的 CLI 选项。
- `src/update.py`、`src/utils.py`、`src/sampling.py`、`src/attack_utils.py`、`src/plot.py`:客户端训练、数据划分、聚合、攻击和绘图辅助工具。
- `scripts_10clients/run_all_rank10_dirichlet05.sh`:最终的 v5 复现脚本。
数据集、日志、`.npy` 指标、检查点、生成的恢复图像、论文图表、结果摘要以及历史消融实验脚本已被有意排除。
## 环境配置
从仓库根目录安装依赖:
```
pip install -r requirments.txt
```
依赖文件名保留为 `requirments.txt` 以与原项目保持一致。数据集会在实验首次运行时由 `torchvision` 下载到 `data/` 目录中。
## 快速检查
语法检查:
```
python -m compileall src
```
小规模 CPU 健全性测试运行:
```
python src/federated_main.py \
--dataset=mnist \
--model=cnn \
--epochs=1 \
--num_users=10 \
--frac=1.0 \
--iid=0 \
--noniid_mode=dirichlet \
--dirichlet_alpha=0.5 \
--dirichlet_min_size=100 \
--gama=0.5 \
--num_steal=5 \
--num_img_per_client=1 \
--agg_mode=segmented \
--attack_position_mode=spread
```
## 复现 v5
预览 57 个任务而不实际运行它们:
```
DRY_RUN=1 bash scripts_10clients/run_all_rank10_dirichlet05.sh
```
运行所有 v5 任务:
```
GPU_LIST="0 1 2 3 4 5 6 7" bash scripts_10clients/run_all_rank10_dirichlet05.sh
```
该脚本的默认配置为:
```
--num_users=10 --frac=1.0 --iid=0
--noniid_mode=dirichlet --dirichlet_alpha=0.5 --dirichlet_min_size=100
--gama_warmup_epochs=0 --lr_scheduler=cosine --min_lr=0.0001
MNIST/Fashion-MNIST: model=cnn, lr=0.01, local_ep=10, local_bs=16
CIFAR-10: model=resnet18_cifar, lr=0.03, local_ep=1, local_bs=64, cifar_crop_size=32, cifar_normalize=1
```
输出结果将生成在 `save/results`、`save/plots`、`save/objects` 和 `scripts_10clients/logs_rank10_dirichlet05` 下;这些路径已被 git 忽略。
标签:Apex, Cutter, PyTorch, 凭据扫描, 数据隐私, 机器学习, 模型训练, 联邦学习, 逆向工具, 非独立同分布数据