Science Score: 44.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
○Institutional organization owner
-
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (13.1%) to scientific vocabulary
Repository
Basic Info
- Host: GitHub
- Owner: dennis-grinwald
- License: gpl-3.0
- Language: Python
- Default Branch: main
- Size: 241 KB
Statistics
- Stars: 4
- Watchers: 2
- Forks: 0
- Open Issues: 0
- Releases: 0
Metadata Files
README.md
Floco
Official repository for Floco (Federated Learning over Connected Modes), published at NeurIPS'24.
We offer implementations for two federated learning frameworks: - FL-Bench - Flower: Pull request under review
This repository is based on the FL-bench implementation and includes additional non-IID splits and utility functions used in the paper.
Installation
sh
python -m venv venv
. venv/bin/activate
pip install --upgrade pip
pip install -r requirements.txt
Datasets
We have benchmarked our method against multiple different non-IID splits. In order to generate the dataset splits as proposed in the paper, the following commands should be run beforehand.
CIFAR-10
Dirichlet(0.3)
py
python generate_data.py -d cifar10 -a 0.3 -cn 100 --least_samples 600 --val_ratio 0.2 --test_ratio 0.0 --seed <seed>
Five-Fold
py
python generate_data.py -d cifar10 -f 5 -cn 100 --least_samples 600 --val_ratio 0.2 --test_ratio 0.0 --seed <seed>
FEMNIST
Before running this script, the LEAF dataset has to be downloaded and preprocessed as described here.
py
python generate_data.py -d femnist
Reproducing the results
py
python main.py [--config-name <CONFIG_NAME>] [method=<METHOD_NAME>]
- --config-name: Name of .yaml config file (w/o the .yaml extension) in the config/ directory.
- method: The algorithm's name, e.g., method=fedavg which should be identical to the .py file name in src/server..
Example:
py
python main.py --config-name cifar10_dir method=floco
Parallel Training via Ray
This feature can vastly improve your training efficiency. At the same time, this feature is user-friendly and easy to use!!!
Activate (What You ONLY Need To Do)
```yaml
your_config.yaml
mode: parallel parallel: num_workers: 2 # any positive integer that larger than 1 ... ```
Monitor runs
This implementation supports tensorboard.
1. Run tensorboard --logdir=<your_log_dir> on terminal.
2. Go check localhost:6006 on your browser.
Bibtex
bibtex
@inproceedings{grinwald2024floco,
title={Federated Learning over Connected Modes},
author={Grinwald, Dennis and Wiesner, Philipp and Nakajima, Shinichi},
booktitle={The Thirty-eighth Annual Conference on Neural Information Processing Systems (NeurIPS'24)},
year={2024},
url={https://openreview.net/forum?id=JL2eMCfDW8}
}
Owner
- Login: dennis-grinwald
- Kind: user
- Repositories: 3
- Profile: https://github.com/dennis-grinwald
Citation (CITATION.cff)
cff-version: 1.2.0
title: 'FL-bench: A federated learning benchmark for solving image classification tasks'
message: >-
If you use this software, please cite it using the
metadata from this file.
type: software
authors:
- given-names: Jiahao
family-names: Tan
email: karhoutam@qq.com
affiliation: Shenzhen University
- given-names: Xinpeng
family-names: Wang
affiliation: 'The Chinese University of Hong Kong, Shenzhen'
email: 223015056@link.cuhk.edu.cn
repository-code: 'https://github.com/KarhouTam/FL-bench'
abstract: >-
Benchmark of federated learning that aim solving image
classification tasks.
keywords:
- federated learning
license: GNU General Public License v3.0
GitHub Events
Total
- Watch event: 5
- Push event: 11
- Create event: 2
Last Year
- Watch event: 5
- Push event: 11
- Create event: 2
Dependencies
- Pillow *
- PyYAML *
- cvxpy *
- faiss-cpu *
- hydra-core *
- matplotlib *
- numpy *
- omegaconf *
- pandas *
- pynvml *
- ray *
- rich *
- scikit-learn *
- scipy *
- tensorboard *
- torch *
- torchaudio *
- torchmetrics *
- torchvision *
- tqdm *
- visdom *