Giter VIP home page Giter VIP logo

lotteryensemble's Introduction

LotteryEnsemble: LotteryFL re-implementation and experiments

This repository is used for experimenting with the LotteryFL model. The original paper can be found here. As of right now, we are trying to combine the functionalities of these three repositories. Some of the code will be direct copies from the repositories listed below, with minor changes to the variable names and structure.

  1. https://github.com/AshwinRJ/Federated-Learning-PyTorch Implementation of the FedAvg algorithm. The original paper for FedAvg can be found here
  2. https://github.com/jeremy313/non-iid-dataset-for-personalized-federated-learning Offical repo for LotteryFL. As of 2020/10/14, this repo only contains the code for generating their dataset.
  3. https://github.com/rahulvigneswaran/Lottery-Ticket-Hypothesis-in-Pytorch Re-implementation of the Lottery Ticket Hypothesis (LTH). The original paper for LTH can be found here

Preliminary Goals:

  • See how much overlap there is for different weights coming from different clients
  • See how weighted average affect the performance of LotteryFL

Preliminary Plan:

  • 2020/10/14: Create repo, decide on a bare-bone project structure
  • Starting 2020/10/15: Each contributor come up with a pseudo-code for the Client & Server update logic
  • By 2020/10/16 Finalize on the client and server update logic
  • By 2020/10/19 Implement a functional single-round LTH experiment in the Client class

Potential Adaptations:

Details:

Global Arguments:

Here are the configs shared across the program in the args variable. To access individual config, use args.<option name>. For example, args.prune_type

General Configs

  • --dataset : Choice of dataset
    • Options : mnist
    • Default : mnist
  • --arch : Type of architecture
  • --gpu : Decide Which GPU the program should use

Configs for LTH

  • --prune_percent : Percentage of weight to be pruned after each cycle.

  • --batch_size : Batch size.

    • Default : 4
  • --log_freq : Frequency for printing accuracy and loss.

  • --valid_freq : Frequency for Validation.

Configs for FedAvg

  • --server_epoch : Number of communication rounds for the server.
  • --client_epoch : Number of rounds of training for each client.
  • --lr : Learning rate
  • --iid : Distribution of data amongst users.
  • --num_users: Number of users.
  • --frac : Fraction of users to be used for federated updates.
  • --local_ep : Number of local training epochs in each user.
  • --local_bs : Batch size of local updates in each user.
  • --unequal : Used in non-iid setting. Option to split the data amongst users equally or unequally.

lotteryensemble's People

Contributors

donglin-wang2 avatar patgbaker avatar bruckwubete avatar riyansonal avatar

Stargazers

 avatar  avatar  avatar Duy Phuong Nguyen avatar Zihan Chen avatar  avatar LYC avatar  avatar RobertLuo avatar Sean avatar Zhenheng TANG avatar  avatar

Watchers

James Cloos avatar  avatar  avatar  avatar

Forkers

hushyangqing

lotteryensemble's Issues

Regarding LotFL performance

Hi all,

is anyone successful in reproducing the results (e.g. near 90% for CIFAR10 personalized model, 20 participants, 400 clients etc.) in LotteryFL paper? From my trials, I'm not sure why, but it just converges around 70~75% with the same parameters.

Some questions I have are,

  • which data is used for local validations?
  • are the test sets the sum of the n-classes' entire test data (e.g. 1000 for class 1 and 1000 for class 6)?

Need explanation for the performance gap. Don't see any major bugs.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.