Comments (4)
Hello @Arctic-Xiangjian, you are completely right we do not average BN parameters thus effectively creating
However for evaluation we always use the first model so in a way we shoot ourselves in the foot by doing that so our baseline is "fair".
In fact there is no general consensus in the literature on what to do with BN layers in FL settings, you have FedBN (https://arxiv.org/abs/2102.07623) or the SiloedBN work you mentioned (disclaimer I am first author of this paper) and some other approaches but usually in the literature most people use non-batch-wise normalization techniques.
However with siloedBN we have a more private instantiation of Federated Averaging because BN statistics are key to state-of-the-art data reconstruction attacks (https://arxiv.org/abs/2104.07586).
This repository is not meant to force everyone to use one technique or the other but to give the user the liberty to choose what she or he think is more relevant.
Maybe it would be nice to be able to pass how to average BN statistics as an option to the strategy ?
from flamby.
Hello @Arctic-Xiangjian, you are completely right we do not average BN parameters thus effectively creating n different models in the sense that they all share the same parameters but have different BN statistics. However for evaluation we always use the first model so in a way we shoot ourselves in the foot by doing that so our baseline is "fair". In fact there is no general consensus in the literature on what to do with BN layers in FL settings, you have FedBN (https://arxiv.org/abs/2102.07623) or the SiloedBN work you mentioned (disclaimer I am first author of this paper) and some other approaches but usually in the literature most people use non-batch-wise normalization techniques. However with siloedBN we have a more private instantiation of Federated Averaging because BN statistics are key to state-of-the-art data reconstruction attacks (https://arxiv.org/abs/2104.07586). This repository is not meant to force everyone to use one technique or the other but to give the user the liberty to choose what she or he think is more relevant. Maybe it would be nice to be able to pass how to average BN statistics as an option to the strategy ?
Thank you for detailed reply~ The reconstruction paper is very helpful, I am very interested in this direction.
And I was wondering if we do not average the BN layers, we would have different models. May be it will be better when we test the result on each dataset, we can use their own model insteated of Model 0?(If we have a big gap thought different clinents this might be more fair.)
from flamby.
Your idea to use each model on its own distribution is exactly what we are doing in SiloedBN and very close to works on personalization in FL.
It would indeed be probably better in terms of performances but is not what we implemented in the article. Feel free to test it by running something along the lines of (similarly as the personalization example you can find in the repository):
models = strat(**kwargs).run()
perfs = []
for i in range(n_clients):
perf_dict = evaluate_model_on_tests(models[i], [test_dls[i]], metric)
perfs.append(perf_dict["client_0"])
from flamby.
@Arctic-Xiangjian closing now that the question is answered. Feel free to reopen an issue if needed.
from flamby.
Related Issues (20)
- Downloading IXI dataset: link broken HOT 5
- CI issue: numba does not support Python3.11 HOT 4
- fed-ixi dataset download issue HOT 4
- Pip install with or without -e should install the full FLamby suite
- Dummy Dataset is nor reproducible nor flexible enough HOT 2
- Strategies should accept optimizer arguments
- Doc enhancement: explain more clearly datasets and associated hyperparameters HOT 1
- Strategies Monitoring Improvements: average loss and metrics
- RFC: Should we allow to do epochs instead of batch-updates in FLamby's strategies ?
- C-index computation should not be batched HOT 1
- Fed_KiTS19 code generates negative loss values HOT 6
- Mismatching evaluation code for FedKiTS19 HOT 4
- Adding docs on metrics and evaluation function for each dataset
- Setuptools is set to an old version HOT 1
- Mismatch in python version between `environment.yml` and the CI
- CI is not operational HOT 1
- KITS results mismatch with paper HOT 13
- Caching preprocessed features in Kits19 HOT 1
- RuntimeError: Discrete mean differs significantly from continuous mean. HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from flamby.