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
Last synced: 6 months ago · JSON representation ·

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
Created over 1 year ago · Last pushed 11 months ago
Metadata Files
Readme License Citation

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

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

requirements.txt pypi
  • Pillow *
  • PyYAML *
  • cvxpy *
  • faiss-cpu *
  • hydra-core *
  • matplotlib *
  • numpy *
  • omegaconf *
  • pandas *
  • pynvml *
  • ray *
  • rich *
  • scikit-learn *
  • scipy *
  • tensorboard *
  • torch *
  • torchaudio *
  • torchmetrics *
  • torchvision *
  • tqdm *
  • visdom *