Comments (4)
Hi, did you check that some work has arleady been done to integrate robust aggregation (AGR) functions into Flower? If not, look at Krum and the on-going PR about Bulyan.
In a nutshell, you don't need to create all these new classes if you objective is to implement FLDetector. Just create a class inside fldetector.py
(you can mostly copy what's written in krum.py
) and write the aggregation algorithm into aggregate.py
. Again, look at the function aggregate_krum(.)
and copy the methodology.
Separating the filtering process (i.e. discarding the bad models with k-means) and the AGR function (i.e. averaging the models) does not make sense to me. It is great if you want to change the average with something else (e.g. the mean around the median), but that's not the case. I also don't get why you would like to create the files 1, 2 and 4. Moreover the fifth file should be named examples/fldetector.py
or something along this line, because naming it "advanced-security.py" let intended that it is the SOTA methodology and the only one in the literature, which is false.
from flower.
Yes, I have seen them and the main difference and suggestion here is to separate the responsibility into 2 entities.
One which is how to aggregate, the second is what to aggregate.
Krum and others are performing these 2 responsibilities in one
FL detector is able to detect them but is not responsible for the aggregation. hence, it is able to tell what to aggregate and similarly different algorithms.
Whereas the how can be FedAvg or any other type of aggregation to perform the how on the ones that should be aggregated.
What's the reason not to separate those as this provides more modularity and better support for future innovation in these two domains?
There are two immediate pros for such an action:
- infrastructure wise it's easier to interact and develop it as a different module, in most real world cases the responsibility of the module is not just to filter, but also to alert the relevant security team, which starts to make this repeatable module duplicative if we need to write it across algorithms.
- implementing research on one of the topics and not both
Thanks for helping me figuring out where and how the fldetector example should be directory wise!
from flower.
@drorasaf I see and I agree with you that, in general, filtering and aggregation should be trated as two separate concepts. However, the research community treat them as the same, that's why in Flower they decided to do like that, I guess. It is understandable, since doing differently may be confusing for most of the people. On the other hand, as you said, separating the responsabilities results in better support and modularity. Just reasoning with you, I'm not a member of the team.
I thought that FLDetector was also responsible of the aggregation, that's why I wrote the previous comment. By the way, at the moment it may be faster to just implement FLDetector with FedAvg embedded
from flower.
Hi @drorasaf I may be interested in comparing FLDetector with my on-going work. Did you release the code somewhere?
from flower.
Related Issues (20)
- example run failed HOT 3
- Add Flower Baseline: FedGen HOT 1
- Add Flower Baseline: FedDebug HOT 3
- I cant run code on the Flower Tutorial : Get started with Flower HOT 4
- Run simulation_pytorch example, there are some questions HOT 6
- How to add data augmentation in clients' local datasets? HOT 1
- pip install flwr, but there are some ImportErrors HOT 4
- how to load the mnist dataset locally HOT 3
- Inplace update error in loading state_dict for YOLOV8 HOT 5
- Unable to start federated training on CUDA when using YOLOv8 model
- Can a client call a server-side function?
- cryptography 42
- Arduino Client for federated learning with Flower HOT 1
- Label and feature skew Partitioner HOT 1
- Does the Flower support decentralized federated learning?
- Memory error in Flower simulation with 10 clients MNIST task HOT 2
- Problem when running examples/llm-flowertune/main.py HOT 3
- “evaluate_fn” appearance of test results nan issues HOT 1
- After passing the TRAIN function, the model parameters were not updated, resulting in the final evaluation criteria output of the TEST function being the same as the initial stage HOT 4
- Fatal Python error: Aborted 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 flower.