Git Product home page Git Product logo

niid-bench's People

Contributors

elvinkim avatar qinbinli avatar qsigma avatar sjtudyq avatar trellixvulnteam avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

niid-bench's Issues

Missing comma

Hello,

There is a missing comma in line

journal={arXiv preprint arXiv:2102.02079}
, which caused compilation error on overleaf when I reference the paper. Thanks.

An issue about Scaffold

Hi! I've read your paper 'Federated Learning on Non-IID Data Silos: An Experimental Study' and 'Model-Contrastive Federated Learning'. I think both works are very interesting!

However, I notice that the performance of Scaffold is unstable and even extremely poor (e.g. nan) in some cases of your implementation. I've also found that Scaffold is reliably stable and outperforms many baselines across different settings of data heterogeneity and datasets in other works like FedDyn (ICLR 2021), FedDC (CVPR2022). Therefore, I carefully read the source code of yours and found the controlling variable is not initialized as described in 'SCAFFOLD: Stochastic Controlled Averaging for Federated Learning' in Sec.4. Since a random initialization of controlling variable is meaningless and can be misleading when locally training the model (especially at the early stage of training), I wonder whether this is the reason accounting for the unstablility and poor performance of Scaffold.

image

image

scaffold's loss is nan

Thanks for your contribution, it is useful to me
When I change the mlp model to a bigger one , I find that scaffold's loss is 'nan' after several rounds, do you have any idea for this issue?

Question about partition method 'homo'

When setting partition='homo', for the same label, different clients have different numbers, even tens of differences .
The picture below is the heat map for the mnist dataset divided evenly among 10 clients using partition method 'homo'.
image

Question about building test_dl_global when adding noise

The test_ds_local is loaed by test_ds = dl_obj(datadir+'./val/', transform=transform_test).
Therefore, test_ds is the same for all clients.

test_ds = dl_obj(datadir+'./val/', transform=transform_test)

When adding noise,test_all_in_ds is made by just concatenateing all the same test_ds together.
I don't understand the meaning of this.

test_all_in_ds = data.ConcatDataset(test_all_in_list)

Probably a mistake in experiments.py

Thanks for your work. I think there is probably a small mistake in line 673 of experiments.py. According to the pseudocode of SCAFFOLD, the denominator here should be the number of all clients instead of the number of selected clients per round. Please correct me if I 'm wrong. Thank you!

Error in running experiments.py with args.alg == 'all_in'

Hi, when I run the following command
python experiments.py --model=simple-cnn --dataset=cifar10 --alg=all_in --lr=0.01 --batch-size=64 --epochs=10 --n_parties=10 --rho=0.9 --comm_round=50 --partition=noniid-labeldir --beta=0.5 --device=cuda:0 --datadir=./data/ --logdir=./logs/ --noise=0 --init_seed=0
RuntimeError: Input type (torch.cuda.FloatTensor) and weight type (torch.FloatTensor) should be the same

Maybe this line of code should be preceded by "nets[0].to(device)"

trainacc, testacc = train_net(0, nets[0], train_dl_global, test_dl_global, n_epoch, args.lr, args.optimizer, device=device)

A question on the class AddGaussianNoise in the file utils.py

According to the readme file, we notice that there are different types of noise, and we can select 'noise_type' as level so that gaussian noise will be added to all the pixels of images. However, when we read the class AddGaussianNoise, we found that the list named 'filt' will select part of the pixels to add gaussian noise, which seems odd to us. Thus, we are here to ask the question of whether we should add a conditional judgment before implementing the 'filt' according to the 'noise_type'. (e.g. when noise_type == 'level', we do not implement the 'filt').

Question about is_same_initial

This parameter is not involved in the pseudocode.
When t = 0, global model $\omega^0$ is sent to all the selected clients.
image

logdir

Hi, i want to know lodfir is what?

image

len(dataloder) and len(dataset)

n_i = len(train_dl_local)

Number of local samples $|D^i|$ =len(train_dl_local.dateset) instead of len(train_dl_local).
Although the batch size is the same for all dataloader,there will be cases where the number of data cannot be divided by the batch size.
I think this will be a little different from the pseudo-code

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.