Coder Social home page Coder Social logo

moon's People

Contributors

minaremeli avatar vasundharaagarwal avatar

Watchers

 avatar

moon's Issues

Research Dockerization

We want to use Docker to deploy and run experiments on any cloud platform quickly, and seamlessly.

Model not learning

Running the model with the following parameters does not learn even after 100 rounds of training (this code ran for a total of 1.5 hours on dev-gpu-0.cl.cam.ac.uk โ— I think this is less than expected).

python main.py --num_rounds 100 --sample_fraction_fit 1.0 --num_clients 10 --strategy fedAvg --beta 5

Very small changes (1e-3 and smaller) can be observed over time on the loss (CrossEntropyLoss), but accuracy almost always stays a constant 0.1. This is true for both local and global accuracies. I experienced the same when running for fewer rounds / different beta / num_clients / sample_fraction_fit / etc.

Possible causes:

  • learning rate is too small
  • weights don't get updated
  • gradient vanishing (?)

I might need some help figuring this out @VasundharaAgarwal ๐Ÿ™

Calculate supervised loss on evaluation

So far only accuracy has been calculated on evaluation (both centralized and distributed). Additionally, we could calculate the supervised loss (CrossEntropyLoss) for debugging and evaluation purposes.

I have thought about calculating the contrastive loss in case of moon strategy, but have decided against it. 1) The implementation would be messy in my opinion 2) Contrastive loss does not make sense to me when the global and the local model are the same 3) Logically CrossEntropyLoss should decrease as well if implementation works

Evaluation done on 2 clients

In each round we fit on fraction * num_clients.

In each round we also evaluate on client's local dataset. Currently evaluation is calculated on a fix number of 2 clients.

Expected behaviour is not clear, and there are multiple options:

  • always evaluate on the full set of clients
  • evaluate on fraction * num_clients (random sampling)
  • evaluate on fraction * num_clients (SAME clients as before, when we fit the model)

@VasundharaAgarwal what do you think?

Saved accuracies array is empty

After running an experiment, accuracies calculated on centralised and local data should be saved.

The corresponding files get created:

  • data/accs_centralized.npy
  • data/accs_distributed.npy

However, when loading them using np.load(), we get an empty array array([], dtype=float64).

to_partition not set to False

When running main.py --to_partition False the boolean value is not set to False, but to True, because non-empty strings are True in Python.

Define Scope of Reproducibility

Task scope

We recommend you focus on the central claim of the paper. For example, if a paper introduces a new RL learning algorithm that performs better in sparse-reward environments, verify that you can re-implement the algorithm, run it on the same benchmarks and get results that are close to those in the original paper (exact reproducibility is in most cases very difficult due to minor implementation details). You do not need to reproduce all experiments in your selected paper, but only those that you feel are sufficient for you to verify the validity of the central claim.

More information on the task here.

ToDo's

  • Briefly define the claim of the paper that you intend to tackle in this report.
  • Choose experiments to reproduce.
  • Review possible extension of the paper w/ additional experiments. (optional)

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.