Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add FedAvgM baseline #2246

Merged
merged 138 commits into from
Dec 28, 2023
Merged
Show file tree
Hide file tree
Changes from 128 commits
Commits
Show all changes
138 commits
Select commit Hold shift + click to select a range
92e598c
Update sim.ipynb
gubertoli Mar 6, 2022
7d58b6f
Merge branch 'main' into main
danieljanes Mar 14, 2022
2311465
Merge branch 'main' into main
danieljanes Mar 14, 2022
b559f88
Merge branch 'adap:main' into main
gubertoli Mar 15, 2022
6372cc7
Merge branch 'adap:main' into main
gubertoli Jun 28, 2022
64c7124
Merge branch 'adap:main' into main
gubertoli Jul 12, 2022
0770547
Change to comply with .fit() tuple requirements
gubertoli Jul 12, 2022
6a9076f
Merge branch 'main' into main
danieljanes Jul 13, 2022
99645ef
Merge branch 'adap:main' into main
gubertoli Jul 13, 2022
6774045
Merge branch 'adap:main' into main
gubertoli Jun 22, 2023
1eefe76
custom metrics example
gubertoli Jun 22, 2023
3033b01
Merge branch 'adap:main' into main
gubertoli Jul 13, 2023
4174ccc
Merge branch 'main' of https://github.com/gubertoli/flower into extra…
gubertoli Jul 13, 2023
3d67013
fedavgm baseline
gubertoli Jul 13, 2023
3ff6383
initial
gubertoli Jul 13, 2023
d4d2153
Update README.md
gubertoli Aug 23, 2023
a0310b1
Update client.py
gubertoli Aug 23, 2023
4f14b4d
Update dataset_preparation.py
gubertoli Aug 23, 2023
3e35e34
Reference using Colab for Simulation
gubertoli Aug 23, 2023
d336727
Delete FedAvgM_Baseline.ipynb
gubertoli Aug 23, 2023
143ea68
Experiments using Colab
gubertoli Aug 23, 2023
f0a31ae
Update dataset_preparation.py
gubertoli Aug 23, 2023
8196db2
Update client.py
gubertoli Aug 23, 2023
75d684b
Update client.py
gubertoli Aug 23, 2023
0c11554
Update main.py
gubertoli Aug 23, 2023
daaaaeb
Update client.py
gubertoli Aug 23, 2023
0b5c374
Update main.py
gubertoli Aug 23, 2023
f24254b
Update client.py
gubertoli Aug 23, 2023
c55759d
Update base.yaml
gubertoli Aug 23, 2023
5a34f77
Update main.py
gubertoli Aug 23, 2023
e4a94f0
Update base.yaml
gubertoli Aug 23, 2023
8bf5d05
Update dataset.py
gubertoli Aug 23, 2023
1fd94ab
Update main.py
gubertoli Aug 23, 2023
72e04b1
Update client.py
gubertoli Aug 23, 2023
38307a0
Update base.yaml
gubertoli Aug 23, 2023
4d0c069
Update main.py
gubertoli Aug 23, 2023
0e34b27
Update client.py
gubertoli Aug 23, 2023
3f0b8a3
Update main.py
gubertoli Aug 23, 2023
3ccb5e3
Update dataset_preparation.py
gubertoli Aug 23, 2023
f28460e
Update client.py
gubertoli Aug 23, 2023
6ceaa77
Update dataset.py
gubertoli Aug 23, 2023
25b6fa2
Update base.yaml
gubertoli Aug 23, 2023
0aefb81
Update client.py
gubertoli Aug 23, 2023
a15120a
Update main.py
gubertoli Aug 23, 2023
2b7993c
Poetry with Python 3.9.12 and Tensorflow 2.10 working
gubertoli Aug 24, 2023
f9ba61a
Simulation running
gubertoli Aug 25, 2023
9c74c6d
Updates to the README and base.yaml
gubertoli Aug 25, 2023
69e6bfd
Update README.md
gubertoli Aug 25, 2023
cecdf6b
Passing dev tests
gubertoli Aug 25, 2023
913565d
removing client configurable lr and momentum
gubertoli Aug 25, 2023
3e5b8ea
Simulation running and Formatting ok
gubertoli Aug 26, 2023
7b35247
Delete FedAvgM_Baseline.ipynb
gubertoli Aug 26, 2023
1a76094
removing custom metrics example
gubertoli Aug 26, 2023
ae1e5e7
change to Python on pyproject.toml for numpy to work + minor changes
gubertoli Aug 26, 2023
f84b63b
Customize hydra usage
gubertoli Aug 26, 2023
cedb31e
hydra full configurable + simulation running
gubertoli Aug 27, 2023
f28d165
fix fedavg simulation + saving results
gubertoli Aug 27, 2023
d982c68
Passing ./dev/test-baseline.sh
gubertoli Aug 27, 2023
c2484f8
Set num_clients=100 (same as paper)
gubertoli Aug 28, 2023
a212b81
add fraction_evaluate, num_cpus, num_gpus as configurables
gubertoli Aug 28, 2023
d46ee4a
Update README.md
gubertoli Aug 29, 2023
3796d05
fix CNN architecture according to McMahan 2017
gubertoli Aug 29, 2023
afe0fa1
passing test-baseline
gubertoli Aug 29, 2023
e68af9d
minor fixes to cnn
gubertoli Aug 29, 2023
8c1a302
additional cnn model (based on TF v1.x example)
gubertoli Aug 30, 2023
f496658
Add illustration about concentration
gubertoli Aug 30, 2023
511181e
Add files via upload
gubertoli Aug 30, 2023
2ded66e
Update README.md
gubertoli Sep 1, 2023
4ff6f2d
Update common.py
gubertoli Sep 1, 2023
ffeb95f
Minor changes
gubertoli Sep 1, 2023
43ccfb3
Adding final accuracy as part of pickle filename
gubertoli Sep 2, 2023
3ed88ad
Fix for flwr[simulation]
gubertoli Sep 2, 2023
9c6c9e3
Minor changes
gubertoli Sep 20, 2023
3b1380b
Expected Results update
gubertoli Sep 22, 2023
6c82670
Update concentration plot
gubertoli Sep 22, 2023
0788c50
Update README.md
gubertoli Sep 22, 2023
a1ba38a
Update README.md
gubertoli Sep 22, 2023
9fe24b0
Update of the results
gubertoli Sep 23, 2023
03c5147
Update README.md
gubertoli Sep 23, 2023
a30d345
Update baselines/fedavgm/README.md
gubertoli Sep 24, 2023
83e39a4
Update baselines/fedavgm/README.md
gubertoli Sep 24, 2023
455cf5b
Update baselines/fedavgm/pyproject.toml
gubertoli Sep 24, 2023
4f5f55d
Update baselines/fedavgm/pyproject.toml
gubertoli Sep 24, 2023
cc8b122
Improvements suggested
gubertoli Sep 24, 2023
adbc4d3
Instruction to configure Google Colab
gubertoli Sep 24, 2023
501f2cf
lint
gubertoli Sep 24, 2023
e80bdbe
Custom FedAvgM strategy
gubertoli Sep 24, 2023
38d23a1
Closer to paper description
gubertoli Sep 24, 2023
763ebfa
minor fix
gubertoli Sep 24, 2023
ee0bf9a
Other fixes for Nesterov calculation
gubertoli Sep 24, 2023
2729ee9
client lr as configurable parameter
gubertoli Sep 26, 2023
3c53a0c
minor
gubertoli Sep 26, 2023
f1f7add
additional comment
gubertoli Sep 26, 2023
6cd6ebc
fix reference to _static
gubertoli Sep 26, 2023
245b85e
Additional info of current status
gubertoli Sep 26, 2023
5ccf13c
fix concentration implementation
gubertoli Sep 26, 2023
168b84e
updated distribution plot
gubertoli Sep 26, 2023
7b426f7
unnecessary files
gubertoli Sep 26, 2023
6a27920
Example of Figure6 from paper FedAvgM
gubertoli Sep 28, 2023
dff1fe0
Example of Figure 6 from FedAvgM paper
gubertoli Sep 28, 2023
1c9b978
Disclaimer about CNN model
gubertoli Sep 28, 2023
4c7115d
minor fix
gubertoli Sep 28, 2023
e041e6e
Update README.md
gubertoli Sep 29, 2023
9ebb213
minor changes
gubertoli Sep 29, 2023
ce95350
rewording
gubertoli Sep 29, 2023
109f702
fix commands
gubertoli Sep 29, 2023
e6db29a
fashion-mnist
gubertoli Sep 29, 2023
b825e00
Fashion-MNIST evaluation
gubertoli Sep 29, 2023
792f4de
remove note
gubertoli Sep 29, 2023
f9b7f11
tidy
gubertoli Sep 30, 2023
c7f6d13
update missing (best) params
gubertoli Sep 30, 2023
ed69f7a
fedavgm cifar10
gubertoli Oct 1, 2023
ecb00ea
Analysis of FedAvgM with and without Nesterov Momentum
gubertoli Oct 6, 2023
f2ad26c
minor fix
gubertoli Oct 6, 2023
334bc62
change y-axis limits
gubertoli Oct 6, 2023
509da62
change the custom-fedavgm color
gubertoli Oct 6, 2023
d689f4f
few notes about fedavgm
gubertoli Oct 6, 2023
d1a1eee
Including extreme case 1e-9
gubertoli Oct 6, 2023
5a2acd6
fix
gubertoli Oct 6, 2023
17acf20
Change point by comma for thousands
gubertoli Oct 8, 2023
617613b
Change point by comma for thousand
gubertoli Oct 8, 2023
b67607d
Change to description and authors
gubertoli Oct 8, 2023
cb3d226
Changes to FedAvgM with NAG description and restructure of Environmen…
gubertoli Oct 8, 2023
fef2874
Adding 1e-5 with 10000 rounds and note about lr and momentum values
gubertoli Oct 8, 2023
08082b7
format-baseline and fixing some test-baseline raised issued
gubertoli Nov 14, 2023
0308d31
fixing format
gubertoli Nov 21, 2023
9ba6741
Fixing initial_parameters definition
gubertoli Nov 21, 2023
d09a014
Fix output filename definition
gubertoli Nov 21, 2023
7f9ec32
Improved explanation for CustomFedAvgM strategy
gubertoli Nov 23, 2023
a4a2f27
Added assert for initial_parameters not None on CustomFedAvgM
gubertoli Nov 23, 2023
a32a858
Minor changes to improve test-baseline.sh metrics
gubertoli Nov 23, 2023
fed2ddf
Fixing hydra yaml learning_rate after pylint changes
gubertoli Nov 23, 2023
3db5ece
pylint
gubertoli Nov 23, 2023
8947482
Reordering setup
gubertoli Dec 11, 2023
5d12c7b
Merge branch 'main' into fedavgm-baseline
jafermarq Dec 18, 2023
eb90138
README tweaks
jafermarq Dec 28, 2023
115383e
Merge branch 'main' into fedavgm-baseline
jafermarq Dec 28, 2023
c7ff344
to changelog
jafermarq Dec 28, 2023
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
202 changes: 202 additions & 0 deletions baselines/fedavgm/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,202 @@

Apache License
Version 2.0, January 2004
http://www.apache.org/licenses/

TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

1. Definitions.

"License" shall mean the terms and conditions for use, reproduction,
and distribution as defined by Sections 1 through 9 of this document.

"Licensor" shall mean the copyright owner or entity authorized by
the copyright owner that is granting the License.

"Legal Entity" shall mean the union of the acting entity and all
other entities that control, are controlled by, or are under common
control with that entity. For the purposes of this definition,
"control" means (i) the power, direct or indirect, to cause the
direction or management of such entity, whether by contract or
otherwise, or (ii) ownership of fifty percent (50%) or more of the
outstanding shares, or (iii) beneficial ownership of such entity.

"You" (or "Your") shall mean an individual or Legal Entity
exercising permissions granted by this License.

"Source" form shall mean the preferred form for making modifications,
including but not limited to software source code, documentation
source, and configuration files.

"Object" form shall mean any form resulting from mechanical
transformation or translation of a Source form, including but
not limited to compiled object code, generated documentation,
and conversions to other media types.

"Work" shall mean the work of authorship, whether in Source or
Object form, made available under the License, as indicated by a
copyright notice that is included in or attached to the work
(an example is provided in the Appendix below).

"Derivative Works" shall mean any work, whether in Source or Object
form, that is based on (or derived from) the Work and for which the
editorial revisions, annotations, elaborations, or other modifications
represent, as a whole, an original work of authorship. For the purposes
of this License, Derivative Works shall not include works that remain
separable from, or merely link (or bind by name) to the interfaces of,
the Work and Derivative Works thereof.

"Contribution" shall mean any work of authorship, including
the original version of the Work and any modifications or additions
to that Work or Derivative Works thereof, that is intentionally
submitted to Licensor for inclusion in the Work by the copyright owner
or by an individual or Legal Entity authorized to submit on behalf of
the copyright owner. For the purposes of this definition, "submitted"
means any form of electronic, verbal, or written communication sent
to the Licensor or its representatives, including but not limited to
communication on electronic mailing lists, source code control systems,
and issue tracking systems that are managed by, or on behalf of, the
Licensor for the purpose of discussing and improving the Work, but
excluding communication that is conspicuously marked or otherwise
designated in writing by the copyright owner as "Not a Contribution."

"Contributor" shall mean Licensor and any individual or Legal Entity
on behalf of whom a Contribution has been received by Licensor and
subsequently incorporated within the Work.

2. Grant of Copyright License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
copyright license to reproduce, prepare Derivative Works of,
publicly display, publicly perform, sublicense, and distribute the
Work and such Derivative Works in Source or Object form.

3. Grant of Patent License. Subject to the terms and conditions of
this License, each Contributor hereby grants to You a perpetual,
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
(except as stated in this section) patent license to make, have made,
use, offer to sell, sell, import, and otherwise transfer the Work,
where such license applies only to those patent claims licensable
by such Contributor that are necessarily infringed by their
Contribution(s) alone or by combination of their Contribution(s)
with the Work to which such Contribution(s) was submitted. If You
institute patent litigation against any entity (including a
cross-claim or counterclaim in a lawsuit) alleging that the Work
or a Contribution incorporated within the Work constitutes direct
or contributory patent infringement, then any patent licenses
granted to You under this License for that Work shall terminate
as of the date such litigation is filed.

4. Redistribution. You may reproduce and distribute copies of the
Work or Derivative Works thereof in any medium, with or without
modifications, and in Source or Object form, provided that You
meet the following conditions:

(a) You must give any other recipients of the Work or
Derivative Works a copy of this License; and

(b) You must cause any modified files to carry prominent notices
stating that You changed the files; and

(c) You must retain, in the Source form of any Derivative Works
that You distribute, all copyright, patent, trademark, and
attribution notices from the Source form of the Work,
excluding those notices that do not pertain to any part of
the Derivative Works; and

(d) If the Work includes a "NOTICE" text file as part of its
distribution, then any Derivative Works that You distribute must
include a readable copy of the attribution notices contained
within such NOTICE file, excluding those notices that do not
pertain to any part of the Derivative Works, in at least one
of the following places: within a NOTICE text file distributed
as part of the Derivative Works; within the Source form or
documentation, if provided along with the Derivative Works; or,
within a display generated by the Derivative Works, if and
wherever such third-party notices normally appear. The contents
of the NOTICE file are for informational purposes only and
do not modify the License. You may add Your own attribution
notices within Derivative Works that You distribute, alongside
or as an addendum to the NOTICE text from the Work, provided
that such additional attribution notices cannot be construed
as modifying the License.

You may add Your own copyright statement to Your modifications and
may provide additional or different license terms and conditions
for use, reproduction, or distribution of Your modifications, or
for any such Derivative Works as a whole, provided Your use,
reproduction, and distribution of the Work otherwise complies with
the conditions stated in this License.

5. Submission of Contributions. Unless You explicitly state otherwise,
any Contribution intentionally submitted for inclusion in the Work
by You to the Licensor shall be under the terms and conditions of
this License, without any additional terms or conditions.
Notwithstanding the above, nothing herein shall supersede or modify
the terms of any separate license agreement you may have executed
with Licensor regarding such Contributions.

6. Trademarks. This License does not grant permission to use the trade
names, trademarks, service marks, or product names of the Licensor,
except as required for reasonable and customary use in describing the
origin of the Work and reproducing the content of the NOTICE file.

7. Disclaimer of Warranty. Unless required by applicable law or
agreed to in writing, Licensor provides the Work (and each
Contributor provides its Contributions) on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
implied, including, without limitation, any warranties or conditions
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
PARTICULAR PURPOSE. You are solely responsible for determining the
appropriateness of using or redistributing the Work and assume any
risks associated with Your exercise of permissions under this License.

8. Limitation of Liability. In no event and under no legal theory,
whether in tort (including negligence), contract, or otherwise,
unless required by applicable law (such as deliberate and grossly
negligent acts) or agreed to in writing, shall any Contributor be
liable to You for damages, including any direct, indirect, special,
incidental, or consequential damages of any character arising as a
result of this License or out of the use or inability to use the
Work (including but not limited to damages for loss of goodwill,
work stoppage, computer failure or malfunction, or any and all
other commercial damages or losses), even if such Contributor
has been advised of the possibility of such damages.

9. Accepting Warranty or Additional Liability. While redistributing
the Work or Derivative Works thereof, You may choose to offer,
and charge a fee for, acceptance of support, warranty, indemnity,
or other liability obligations and/or rights consistent with this
License. However, in accepting such obligations, You may act only
on Your own behalf and on Your sole responsibility, not on behalf
of any other Contributor, and only if You agree to indemnify,
defend, and hold each Contributor harmless for any liability
incurred by, or claims asserted against, such Contributor by reason
of your accepting any such warranty or additional liability.

END OF TERMS AND CONDITIONS

APPENDIX: How to apply the Apache License to your work.

To apply the Apache License to your work, attach the following
boilerplate notice, with the fields enclosed by brackets "[]"
replaced with your own identifying information. (Don't include
the brackets!) The text should be enclosed in the appropriate
comment syntax for the file format. We also recommend that a
file or class name and description of purpose be included on the
same "printed page" as the copyright notice for easier
identification within third-party archives.

Copyright [yyyy] [name of copyright owner]

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
Loading
Loading