diff --git a/baselines/fednova/LICENSE b/baselines/fednova/LICENSE new file mode 100644 index 00000000000..d6456956733 --- /dev/null +++ b/baselines/fednova/LICENSE @@ -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. diff --git a/baselines/fednova/README.md b/baselines/fednova/README.md new file mode 100644 index 00000000000..1feb389cc10 --- /dev/null +++ b/baselines/fednova/README.md @@ -0,0 +1,191 @@ +--- +title: Tackling the Objective Inconsistency Problem in Heterogeneous Federated Optimization +url: https://arxiv.org/abs/2007.07481 +labels: [normalized averaging, heterogeneous optimization, image classification] +dataset: [CIFAR-10] +--- + +# Tackling the Objective Inconsistency Problem in Heterogeneous Federated Optimization + +**Paper:** [arxiv.org/abs/2007.07481](https://arxiv.org/abs/2007.07481) + +**Authors:** *Jianyu Wang, Qinghua Liu, Hao Liang, Gauri Joshi, H. Vincent Poor* + +**Abstract:** *In federated learning, heterogeneity in the clients' local datasets and computation speeds results in large variations in the number of local updates performed by each client in each communication round. Naive weighted aggregation of such models causes objective inconsistency, that is, the global model converges to a stationary point of a mismatched objective function which can be arbitrarily different from the true objective. This paper provides a general framework to analyze the convergence of federated heterogeneous optimization algorithms. It subsumes previously proposed methods such as FedAvg and FedProx and provides the first principled understanding of the solution bias and the convergence slowdown due to objective inconsistency. Using insights from this analysis, we propose FedNova, a normalized averaging method that eliminates objective inconsistency while preserving fast error convergence.* + + +## About this baseline + +**What’s implemented:** *_The code in this baseline reproduces the results from Table 1 in the paper which corresponds to experiments on Non-IID CIFAR dataset._* + +**Datasets:** *_The dataset in the experiment is a Non-IID CIFAR-10 dataset which is partitioned across 16 clients using a Dirichlet distribution with parameter alpha=0.1._* + +**Hardware Setup:** *_The experiment setting consists of 16 clients. The training is done on a single workstation consisting of 8 CPU cores, 32 GB of RAM and an Nvidia A100 GPU. +The total GPU memory usage for the experiment is ~ 10 GB(1.1 GB per client + main process). Therefore effectively, 8 clients run in parallel in this setup using the default config. +The total time for a single experiment in this setup is ~ 50 minutes. (or 30 seconds per communication round). In case of resource constraints, +the experiment can be run with 4 clients in parallel by setting client_resources as follows: {num_cpus: 1, num_gpus: 0.25}. This uses ~ 5.4 GB of GPU memory and 4 CPU cores._* + +**Contributors:** *_Aasheesh Singh (Github: [@ashdtu](https://github.com/ashdtu)), MILA-Quebec AI Institute_* + + +## Experimental Setup + +**Task:** The task is Image classification on CIFAR-10 dataset. + +**Model:** The experiment uses the below configuration of VGG-11 model for the image classification task. +``` +---------------------------------------------------------------- + Layer (type) Output Shape Param # +================================================================ + Conv2d-1 [-1, 64, 32, 32] 1,792 + ReLU-2 [-1, 64, 32, 32] 0 + MaxPool2d-3 [-1, 64, 16, 16] 0 + Conv2d-4 [-1, 128, 16, 16] 73,856 + ReLU-5 [-1, 128, 16, 16] 0 + MaxPool2d-6 [-1, 128, 8, 8] 0 + Conv2d-7 [-1, 256, 8, 8] 295,168 + ReLU-8 [-1, 256, 8, 8] 0 + Conv2d-9 [-1, 256, 8, 8] 590,080 + ReLU-10 [-1, 256, 8, 8] 0 + MaxPool2d-11 [-1, 256, 4, 4] 0 + Conv2d-12 [-1, 512, 4, 4] 1,180,160 + ReLU-13 [-1, 512, 4, 4] 0 + Conv2d-14 [-1, 512, 4, 4] 2,359,808 + ReLU-15 [-1, 512, 4, 4] 0 + MaxPool2d-16 [-1, 512, 2, 2] 0 + Conv2d-17 [-1, 512, 2, 2] 2,359,808 + ReLU-18 [-1, 512, 2, 2] 0 + Conv2d-19 [-1, 512, 2, 2] 2,359,808 + ReLU-20 [-1, 512, 2, 2] 0 + MaxPool2d-21 [-1, 512, 1, 1] 0 + Dropout-22 [-1, 512] 0 + Linear-23 [-1, 512] 262,656 + ReLU-24 [-1, 512] 0 + Dropout-25 [-1, 512] 0 + Linear-26 [-1, 512] 262,656 + ReLU-27 [-1, 512] 0 + Linear-28 [-1, 10] 5,130 +================================================================ +Total params: 9,750,922 +Trainable params: 9,750,922 +Non-trainable params: 0 +---------------------------------------------------------------- +Input size (MB): 0.01 +Forward/backward pass size (MB): 2.57 +Params size (MB): 37.20 +Estimated Total Size (MB): 39.78 +---------------------------------------------------------------- +``` + +**Dataset:** The dataset is Non-IID CIFAR-10 dataset which is partitioned across 16 clients using a Dirichlet distribution Dir16(0.1), (alpha=0.1) as done +in the [paper](https://arxiv.org/abs/2002.06440). Each client gets a different skewed distribution of the class labels following this split. + +**Training Hyperparameters:** + +| Hyperparameter | Description | Default value | +|----------------------------------|-------------------------------------------------------------------------------------------|---------------| +| optimizer.learning_rate | Learning rate of local client optimizers | 0.02 | +| optimizer.momentum | Momentum factor | 0.9 | +| optimizer.mu | Proximal updates factor | 0 | +| optimizer.weight_decay | Weight decay for regularization | 1e-4 | +| num_epochs | Number of local training epochs for clients | 2 | +| num_rounds | Number of server communication rounds | 100 | +| var_local_epochs | Whether to have variable or fixed local client training epochs. If True, samples num_epochs uniformly in (2,5) | False | +| batch size | Batch size for training | 32 | + + + + +## Environment Setup + +``` python +# Navigate to baselines/fednova +cd baselines/fednova + +# Set python version +pyenv install 3.10.11 +pyenv local 3.10.11 + +# Tell poetry to use python 3.10 +poetry env use 3.10.11 + +# install the base Poetry environment, make sure there is no existing poetry.lock file and pyproject.toml file is located in the current directory +poetry install + +# activate the environment +poetry shell +``` + +## Running the Experiments +Once the poetry environment is active, you can use the following command to run the various experiments in Table 1. +You would need to specify the below two command line parameters to iterate through various experiment configurations. They are as follows: + +1. `optimizer`: This parameter specifies the local optimizer configuration. It can take the following values: + - `vanilla`: This corresponds to the vanilla SGD as the client optimizer + - `momentum`: This corresponds to the SGD optimizer with momentum. It is the default optimizer setting. + - `proximal`: This corresponds to the SGD optimizer with proximal term in the loss. + - `server`: This corresponds to momentum updates of global weights on the strategy or server side. The client optimizers do not use momentum in this setting. This setting is only valid for FedNova strategy. + - `hybrid`: This corresponds to hybrid momentum scheme where both the local client optimizer and the server maintain a momentum buffer. This setting is only valid for FedNova strategy. + +2. `strategy`: This specifies the aggregation strategy for the client updates. The default is `fednova`. +If you do not specify this parameter, all experiments will run with FedNova as the strategy and reproduce the rightmost columns of Table 1. +It can take the following values: + - `fednova`: This corresponds to the FedNova (default) aggregation strategy. + - `fedavg`: This corresponds to the FedAvg aggregation strategy. The left column of Table 1 can be reproduced by setting this parameter. + +3. `var_local_epochs`: Takes value True/False. This parameter specifies whether the number of local training epochs for each client is fixed (Epochs=2) or variable(Uniform sampled from [2,5) ). +It takes the following values: + - `False`: (default) This corresponds to the fixed number of local epochs for each client. This corresponds to the first part of the Table 1. + - `True`: This corresponds to the variable number of local epochs for each client. This corresponds to the second part of the Table 1. + +```bash +# Run experiments for first 6 rows of Table-1 below. +python -m fednova.main --multirun optimizer=vanilla,momentum,proximal strategy=fedavg,fednova var_local_epochs=False,True seed=4,5,6 + +# Run experiments to compare effect of Momentum (No momentum vs Server vs Hybrid) +python -m fednova.main --multirun optimizer=server,hybrid strategy=fednova var_local_epochs=True seed=4,5,6 + +# Plot results and generate Results table. The plots are saved in _static/ directory. +python fednova/utils.py + +``` + +> **Note**: Due to instability in weight updates in hetrogeneous learning setting on Non-IID datasets, one or two experiments may show NaNs in the loss for few very unlucky seeds. +> It is recommended to run each experiment for at-least 2-3 seeds for best results. + +## Expected Results + +The results below correspond to Table 1 of the paper on the non-IID CIFAR-10 dataset. + +Centralized Evaluation: Accuracy(in %) on centralized Test set. Mean and Confidence Intervals plotted over at least 3 seeds. + + + +| Local Epochs | Client Optimizer | FedAvg | FedNova | +| ------------ | ---------------- | ------ | ------- | +| 2 | Vanilla | 62.35 ± 1.33 | 67.04 ± 0.94 | +| 2 | Momentum | 70.78 ± 1.03 | 73.01 ± 0.32 | +| 2 | Proximal | 62.30 ± 0.38 | 67.00 ± 0.47 | +| Random(2-5) | Vanilla | 64.30 ± 1.75 | 70.54 ± 0.43 | +| Random(2-5) | Momentum | 72.75 ± 1.28 | 74.26 ± 0.39 | +| Random(2-5) | Proximal | 64.47 ± 0.28 | 69.25 ± 1.30 | +| Random(2-5) | Server | N/A | 73.65 ± 0.51 | +| Random(2-5) | Hybrid | N/A | 75.54 ± 1.05 | + +## Plots + +The plots below correspond to Figure 6 (page 11) and Figure 7 in the Addendum section (page 34) of the full-length [paper](https://arxiv.org/abs/2007.07481). + +**FedAvg vs FedNova for various local solvers with fixed local epochs = 2** + +FedAvg vs FedNova (vanilla) FedAvg vs FedNova (momentum) FedAvg vs FedNova (proximal) + + +**FedAvg vs FedNova for various local solvers with variable local epochs ~ U(2,5)** + +FedAvg vs FedNova (vanilla) FedAvg vs FedNova (momentum) FedAvg vs FedNova (proximal) + +**Comparison of Momentum schemes for FedNova (both client and strategy side)** + +Momentum Comparison + diff --git a/baselines/fednova/_static/testAccuracy_momentum_plot_varEpochs_True.png b/baselines/fednova/_static/testAccuracy_momentum_plot_varEpochs_True.png new file mode 100644 index 00000000000..a05ba117807 Binary files /dev/null and b/baselines/fednova/_static/testAccuracy_momentum_plot_varEpochs_True.png differ diff --git a/baselines/fednova/_static/testAccuracy_momentum_varEpochs_False.png b/baselines/fednova/_static/testAccuracy_momentum_varEpochs_False.png new file mode 100644 index 00000000000..69d41fb2aed Binary files /dev/null and b/baselines/fednova/_static/testAccuracy_momentum_varEpochs_False.png differ diff --git a/baselines/fednova/_static/testAccuracy_momentum_varEpochs_True.png b/baselines/fednova/_static/testAccuracy_momentum_varEpochs_True.png new file mode 100644 index 00000000000..b2811949feb Binary files /dev/null and b/baselines/fednova/_static/testAccuracy_momentum_varEpochs_True.png differ diff --git a/baselines/fednova/_static/testAccuracy_proximal_varEpochs_False.png b/baselines/fednova/_static/testAccuracy_proximal_varEpochs_False.png new file mode 100644 index 00000000000..9f4a45348ed Binary files /dev/null and b/baselines/fednova/_static/testAccuracy_proximal_varEpochs_False.png differ diff --git a/baselines/fednova/_static/testAccuracy_proximal_varEpochs_True.png b/baselines/fednova/_static/testAccuracy_proximal_varEpochs_True.png new file mode 100644 index 00000000000..11ccd0a4f50 Binary files /dev/null and b/baselines/fednova/_static/testAccuracy_proximal_varEpochs_True.png differ diff --git a/baselines/fednova/_static/testAccuracy_vanilla_varEpochs_False.png b/baselines/fednova/_static/testAccuracy_vanilla_varEpochs_False.png new file mode 100644 index 00000000000..6a13499152e Binary files /dev/null and b/baselines/fednova/_static/testAccuracy_vanilla_varEpochs_False.png differ diff --git a/baselines/fednova/_static/testAccuracy_vanilla_varEpochs_True.png b/baselines/fednova/_static/testAccuracy_vanilla_varEpochs_True.png new file mode 100644 index 00000000000..60152cb5fea Binary files /dev/null and b/baselines/fednova/_static/testAccuracy_vanilla_varEpochs_True.png differ diff --git a/baselines/fednova/fednova/__init__.py b/baselines/fednova/fednova/__init__.py new file mode 100644 index 00000000000..a5e567b5913 --- /dev/null +++ b/baselines/fednova/fednova/__init__.py @@ -0,0 +1 @@ +"""Template baseline package.""" diff --git a/baselines/fednova/fednova/baseline_client.py b/baselines/fednova/fednova/baseline_client.py new file mode 100644 index 00000000000..6029a762183 --- /dev/null +++ b/baselines/fednova/fednova/baseline_client.py @@ -0,0 +1,144 @@ +"""Clients for the baseline comparison strategies: FedAvg, FedProx.""" + +from collections import OrderedDict +from typing import Callable, Dict, List, Tuple + +import flwr as fl +import numpy as np +import torch +from flwr.common.typing import NDArrays, Scalar +from hydra.utils import instantiate +from omegaconf import DictConfig +from torch.optim import SGD +from torch.utils.data import DataLoader + +from fednova.models import test, train + + +class FedAvgClient( + fl.client.NumPyClient +): # pylint: disable=too-many-instance-attributes + """Standard Flower client for FedAvg.""" + + def __init__( # pylint: disable=too-many-arguments + self, + net: torch.nn.Module, + client_id: str, + trainloader: DataLoader, + valloader: DataLoader, + device: torch.device, + num_epochs: int, + data_size: int, + config: DictConfig, + ): + self.net = net + self.exp_config = config + self.optimizer = SGD( + self.net.parameters(), + lr=config.optimizer.lr, + momentum=config.optimizer.momentum, + weight_decay=config.optimizer.weight_decay, + ) + self.trainloader = trainloader + self.valloader = valloader + self.client_id = client_id + self.device = device + self.num_epochs = num_epochs + self.num_data_samples = data_size + + def get_parameters(self, config: Dict[str, Scalar]) -> NDArrays: + """Return the parameters of the current net.""" + return [val.cpu().numpy() for _, val in self.net.state_dict().items()] + + def set_parameters(self, parameters: NDArrays) -> None: + """Change the parameters of the model using the given ones.""" + params_dict = zip(self.net.state_dict().keys(), parameters) + state_dict = OrderedDict({k: torch.Tensor(v) for k, v in params_dict}) + self.net.load_state_dict(state_dict, strict=True) + + def fit( + self, parameters: NDArrays, config: Dict[str, Scalar] + ) -> Tuple[NDArrays, int, Dict]: + """Implement distributed fit function for a given client.""" + self.set_parameters(parameters) + for g in self.optimizer.param_groups: + g["lr"] = config["lr"] + + if self.exp_config.var_local_epochs: + seed_val = ( + 2023 + + int(self.client_id) + + int(config["server_round"]) + + int(self.exp_config.seed) + ) + np.random.seed(seed_val) + num_epochs = np.random.randint( + self.exp_config.var_min_epochs, self.exp_config.var_max_epochs + ) + else: + num_epochs = self.num_epochs + + train( + self.net, + self.optimizer, + self.trainloader, + self.device, + num_epochs, + proximal_mu=self.exp_config.optimizer.mu, + ) + + scaling_factor = self.num_data_samples + + return self.get_parameters({}), int(scaling_factor), {} + + def evaluate( + self, parameters: NDArrays, config: Dict[str, Scalar] + ) -> Tuple[float, int, Dict]: + """Implement distributed evaluation for a given client.""" + # Evaluation ideally is done on validation set, but because we already know + # the best hyper-parameters from the paper and since individual client + # datasets are already quite small, we merge the validation set with the + # training set and evaluate on the training set with the aggregated global + # model parameters. This behaviour can be modified by passing the validation + # set in the below test(self.valloader) function and replacing len( + # self.valloader) below. Note that we evaluate on the centralized test-set on + # server-side in the strategy. + + self.set_parameters(parameters) + loss, metrics = test(self.net, self.trainloader, self.device) + return float(loss), len(self.trainloader), metrics + + +def gen_clients_fedavg( # pylint: disable=too-many-arguments + num_epochs: int, + trainloaders: List[DataLoader], + testloader: DataLoader, + data_sizes: List, + model: DictConfig, + exp_config: DictConfig, +) -> Callable[[str], FedAvgClient]: + """Return a generator function to create a FedAvg client.""" + + def client_fn(cid: str) -> FedAvgClient: + """Create a Flower client representing a single organization.""" + # Load model + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + net = instantiate(model) + + # Note: each client gets a different trainloader/valloader, so each client + # will train and evaluate on their own unique data + trainloader = trainloaders[int(cid)] + client_dataset_sizes = data_sizes[int(cid)] + + return FedAvgClient( + net, + cid, + trainloader, + testloader, + device, + num_epochs, + client_dataset_sizes, + exp_config, + ) + + return client_fn diff --git a/baselines/fednova/fednova/client.py b/baselines/fednova/fednova/client.py new file mode 100644 index 00000000000..fa9101b36ca --- /dev/null +++ b/baselines/fednova/fednova/client.py @@ -0,0 +1,149 @@ +"""Client implementation for FedNova.""" + +from typing import Callable, Dict, List, Tuple + +import flwr as fl +import numpy as np +import torch +from flwr.common.typing import NDArrays, Scalar +from hydra.utils import instantiate +from omegaconf import DictConfig +from torch.utils.data import DataLoader + +from fednova.models import test, train + + +class FedNovaClient( + fl.client.NumPyClient +): # pylint: disable=too-many-instance-attributes + """Standard Flower client for CNN training.""" + + def __init__( # pylint: disable=too-many-arguments + self, + net: torch.nn.Module, + client_id: str, + trainloader: DataLoader, + valloader: DataLoader, + device: torch.device, + num_epochs: int, + ratio: float, + config: DictConfig, + ): + self.net = net + self.exp_config = config + + if self.exp_config.var_local_epochs and ( + self.exp_config.exp_name == "proximal" + ): + # For only FedNova with proximal local solver and variable local epochs, + # mu = 0.001 works best. + # For other experiments, the default setting of mu = 0.005 works best + # Ref: https://arxiv.org/pdf/2007.07481.pdf (Page 33, Section: + # More Experiment Details) + self.exp_config.optimizer.mu = 0.001 + + self.optimizer = instantiate( + self.exp_config.optimizer, params=self.net.parameters(), ratio=ratio + ) + self.trainloader = trainloader + self.valloader = valloader + self.client_id = client_id + self.device = device + self.num_epochs = num_epochs + self.data_ratio = ratio + + def get_parameters(self, config: Dict[str, Scalar]) -> NDArrays: + """Return the parameters of the current net.""" + params = [ + val["cum_grad"].cpu().numpy() + for _, val in self.optimizer.state_dict()["state"].items() + ] + return params + + def set_parameters(self, parameters: NDArrays) -> None: + """Change the parameters of the model using the given ones.""" + self.optimizer.set_model_params(parameters) + + def fit( + self, parameters: NDArrays, config: Dict[str, Scalar] + ) -> Tuple[NDArrays, int, Dict]: + """Implement distributed fit function for a given client.""" + self.set_parameters(parameters) + self.optimizer.set_lr(config["lr"]) + + if self.exp_config.var_local_epochs: + seed_val = ( + 2023 + + int(self.client_id) + + int(config["server_round"]) + + int(self.exp_config.seed) + ) + np.random.seed(seed_val) + num_epochs = np.random.randint( + self.exp_config.var_min_epochs, self.exp_config.var_max_epochs + ) + else: + num_epochs = self.num_epochs + + train( + self.net, self.optimizer, self.trainloader, self.device, epochs=num_epochs + ) + + # Get ratio by which the strategy would scale local gradients from each client + # We use this scaling factor to aggregate the gradients on the server + grad_scaling_factor: Dict[str, float] = self.optimizer.get_gradient_scaling() + + return self.get_parameters({}), len(self.trainloader), grad_scaling_factor + + def evaluate( + self, parameters: NDArrays, config: Dict[str, Scalar] + ) -> Tuple[float, int, Dict]: + """Implement distributed evaluation for a given client.""" + # Evaluation ideally is done on validation set, but because we already know + # the best hyper-parameters from the paper and since individual client + # datasets are already quite small, we merge the validation set with the + # training set and evaluate on the training set with the aggregated global + # model parameters. This behaviour can be modified by passing the validation + # set in the below test(self.valloader) function and replacing len( + # self.valloader) below. Note that we evaluate on the centralized test-set on + # server-side in the strategy. + + self.set_parameters(parameters) + loss, metrics = test(self.net, self.trainloader, self.device) + return float(loss), len(self.trainloader), metrics + + +def gen_clients_fednova( # pylint: disable=too-many-arguments + num_epochs: int, + trainloaders: List[DataLoader], + testloader: DataLoader, + data_sizes: List, + model: DictConfig, + exp_config: DictConfig, +) -> Callable[[str], FedNovaClient]: + """Return a generator function to create a FedNova client.""" + + def client_fn(cid: str) -> FedNovaClient: + """Create a Flower client representing a single organization.""" + # Load model + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + net = instantiate(model) + + # Note: each client gets a different trainloader/valloader, so each client + # will train and evaluate on their own unique data + trainloader = trainloaders[int(cid)] + client_dataset_size: int = data_sizes[int(cid)] + client_dataset_ratio: float = client_dataset_size / sum(data_sizes) + + return FedNovaClient( + net, + cid, + trainloader, + testloader, + device, + num_epochs, + client_dataset_ratio, + exp_config, + ) + + return client_fn diff --git a/baselines/fednova/fednova/conf/base.yaml b/baselines/fednova/fednova/conf/base.yaml new file mode 100644 index 00000000000..52a23d0b6d4 --- /dev/null +++ b/baselines/fednova/fednova/conf/base.yaml @@ -0,0 +1,44 @@ +--- +# this is the config that will be loaded as default by main.py +# Please follow the provided structure (this will ensuring all baseline follow +# a similar configuration structure and hence be easy to customise) + +defaults: + - _self_ + - strategy: fednova + - optimizer: momentum + +var_local_epochs: False +datapath: fednova/data/ +checkpoint_path: fednova/checkpoints/ +num_clients: 16 +num_epochs: 2 +num_rounds: 100 +batch_size: 32 +NIID: True +alpha: 0.1 +var_min_epochs: 2 +var_max_epochs: 5 +lr_scheduling: True +seed: 1 +mode: train + +model: + _target_: fednova.models.VGG + +client_resources: + num_cpus: 1 + num_gpus: 0.125 + +hydra: + sweep: + dir: multirun + subdir: ${hydra.job.override_dirname}/${seed} + job: + config: + override_dirname: + exclude_keys: + - seed + - num_rounds + kv_sep: _ + item_sep: _ diff --git a/baselines/fednova/fednova/conf/optimizer/hybrid.yaml b/baselines/fednova/fednova/conf/optimizer/hybrid.yaml new file mode 100644 index 00000000000..dd5d5c59d6f --- /dev/null +++ b/baselines/fednova/fednova/conf/optimizer/hybrid.yaml @@ -0,0 +1,12 @@ + +# @package _global_ + +exp_name: hybrid + +optimizer: + _target_: fednova.models.ProxSGD + lr: 0.02 + momentum: 0.9 + weight_decay: 1e-4 + gmf: 0.9 + mu: 0 diff --git a/baselines/fednova/fednova/conf/optimizer/momentum.yaml b/baselines/fednova/fednova/conf/optimizer/momentum.yaml new file mode 100644 index 00000000000..2c31d851dc6 --- /dev/null +++ b/baselines/fednova/fednova/conf/optimizer/momentum.yaml @@ -0,0 +1,12 @@ + +# @package _global_ + +exp_name: momentum + +optimizer: + _target_: fednova.models.ProxSGD + lr: 0.02 + momentum: 0.9 + weight_decay: 1e-4 + gmf: 0 + mu: 0 diff --git a/baselines/fednova/fednova/conf/optimizer/proximal.yaml b/baselines/fednova/fednova/conf/optimizer/proximal.yaml new file mode 100644 index 00000000000..b6cb9eba474 --- /dev/null +++ b/baselines/fednova/fednova/conf/optimizer/proximal.yaml @@ -0,0 +1,12 @@ + +# @package _global_ + +exp_name: proximal + +optimizer: + _target_: fednova.models.ProxSGD + lr: 0.05 + momentum: 0 + weight_decay: 1e-4 + gmf: 0 + mu: 0.005 diff --git a/baselines/fednova/fednova/conf/optimizer/server.yaml b/baselines/fednova/fednova/conf/optimizer/server.yaml new file mode 100644 index 00000000000..79de2dd1e9b --- /dev/null +++ b/baselines/fednova/fednova/conf/optimizer/server.yaml @@ -0,0 +1,12 @@ + +# @package _global_ + +exp_name: server + +optimizer: + _target_: fednova.models.ProxSGD + lr: 0.02 + momentum: 0.0 + weight_decay: 1e-4 + gmf: 0.9 + mu: 0 diff --git a/baselines/fednova/fednova/conf/optimizer/vanilla.yaml b/baselines/fednova/fednova/conf/optimizer/vanilla.yaml new file mode 100644 index 00000000000..98aabbd70ee --- /dev/null +++ b/baselines/fednova/fednova/conf/optimizer/vanilla.yaml @@ -0,0 +1,12 @@ + +# @package _global_ + +exp_name: vanilla + +optimizer: + _target_: fednova.models.ProxSGD + lr: 0.05 + momentum: 0 + weight_decay: 1e-4 + gmf: 0 + mu: 0 diff --git a/baselines/fednova/fednova/conf/strategy/fedavg.yaml b/baselines/fednova/fednova/conf/strategy/fedavg.yaml new file mode 100644 index 00000000000..4c90d81ab5f --- /dev/null +++ b/baselines/fednova/fednova/conf/strategy/fedavg.yaml @@ -0,0 +1,10 @@ +--- +name: fedavg +strategy: + _target_: flwr.server.strategy.FedAvg + _recursive_: false + + +client_fn: + _target_: fednova.baseline_client.gen_clients_fedavg + _recursive_: false diff --git a/baselines/fednova/fednova/conf/strategy/fednova.yaml b/baselines/fednova/fednova/conf/strategy/fednova.yaml new file mode 100644 index 00000000000..b08052ab111 --- /dev/null +++ b/baselines/fednova/fednova/conf/strategy/fednova.yaml @@ -0,0 +1,10 @@ +--- +name: fednova +strategy: + _target_: fednova.strategy.FedNova + _recursive_: false + + +client_fn: + _target_: fednova.client.gen_clients_fednova + _recursive_: false \ No newline at end of file diff --git a/baselines/fednova/fednova/dataset.py b/baselines/fednova/fednova/dataset.py new file mode 100644 index 00000000000..f8a19cdac47 --- /dev/null +++ b/baselines/fednova/fednova/dataset.py @@ -0,0 +1,80 @@ +"""Dataloaders for the CIFAR-10 dataset.""" + +from typing import List, Tuple + +import torch +from omegaconf import DictConfig +from torch.utils.data import DataLoader +from torchvision import datasets, transforms + +from fednova.dataset_preparation import DataPartitioner + + +def load_datasets(config: DictConfig) -> Tuple[List[DataLoader], DataLoader, List]: + """Create the dataloaders to be fed into the model. + + Parameters + ---------- + config: DictConfig + Parameterises the dataset partitioning process + num_clients : int + The number of clients that hold a part of the data + val_ratio : float, optional + The ratio of training data that will be used for validation (between 0 and 1), + by default 0.1 + batch_size : int, optional + The size of the batches to be fed into the model, by default 32 + seed : int, optional + Used to set a fix seed to replicate experiments, by default 42 + + Returns + ------- + Tuple[DataLoader, DataLoader, List] + The DataLoader for training, the DataLoader for testing, client dataset sizes. + """ + transform_train = transforms.Compose( + [ + transforms.RandomCrop(32, padding=4), + transforms.RandomHorizontalFlip(), + transforms.ToTensor(), + transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)), + ] + ) + + transform_test = transforms.Compose( + [ + transforms.ToTensor(), + transforms.Normalize((0.4914, 0.4822, 0.4465), (0.2023, 0.1994, 0.2010)), + ] + ) + + trainset = datasets.CIFAR10( + root=config.datapath, train=True, download=True, transform=transform_train + ) + + testset = datasets.CIFAR10( + root=config.datapath, train=False, download=True, transform=transform_test + ) + + partition_sizes = [1.0 / config.num_clients for _ in range(config.num_clients)] + + partition_obj = DataPartitioner( + trainset, partition_sizes, is_non_iid=config.NIID, alpha=config.alpha + ) + ratio = partition_obj.ratio + + trainloaders = [] + for data_split in range(config.num_clients): + client_partition = partition_obj.use(data_split) + trainloaders.append( + torch.utils.data.DataLoader( + client_partition, + batch_size=config.batch_size, + shuffle=True, + pin_memory=True, + ) + ) + + test_loader = torch.utils.data.DataLoader(testset, batch_size=64, shuffle=False) + + return trainloaders, test_loader, ratio diff --git a/baselines/fednova/fednova/dataset_preparation.py b/baselines/fednova/fednova/dataset_preparation.py new file mode 100644 index 00000000000..f5cc63c19df --- /dev/null +++ b/baselines/fednova/fednova/dataset_preparation.py @@ -0,0 +1,119 @@ +"""The methodology to create a Dirichlet distributed Non-IID CIFAR dataset. + +obtained from source: https://github.com/JYWa/FedNova/blob/master/util_v4.py +""" + + +from random import Random + +import numpy as np + + +class Partition: + """Dataset-like object, but only access a subset of it.""" + + def __init__(self, data, index): + self.data = data + self.index = index + + def __len__(self): + """Return the length of the partition.""" + return len(self.index) + + def __getitem__(self, index): + """Return the item at index idx.""" + data_idx = self.index[index] + return self.data[data_idx] + + +class DataPartitioner: + """Partitions a dataset into different chuncks.""" + + def __init__( # pylint: disable=too-many-arguments + self, + data, + sizes, + seed=2020, + is_non_iid=False, + alpha=0, + dataset=None, + ): + self.data = data + self.dataset = dataset + if is_non_iid: + self.partitions, self.ratio = self._get_dirichlet_data_( + data, sizes, seed, alpha + ) + + else: + self.partitions = [] + self.ratio = sizes + rng = Random() + # rng.seed(seed) + data_len = len(data) + indexes = list(range(0, data_len)) + rng.shuffle(indexes) + + for frac in sizes: + part_len = int(frac * data_len) + self.partitions.append(indexes[0:part_len]) + indexes = indexes[part_len:] + + def use(self, partition): + """Return a partition of the dataset.""" + return Partition(self.data, self.partitions[partition]) + + @staticmethod + def _get_dirichlet_data_( + data, psizes, seed, alpha + ): # pylint: disable=too-many-locals + """Return a partition of the dataset based on Dirichlet distribution.""" + n_nets = len(psizes) + K = 10 + label_list = np.array(data.targets) + min_size = 0 + N = len(label_list) + np.random.seed(seed) + + net_dataidx_map = {} + while min_size < K: + idx_batch = [[] for _ in range(n_nets)] + # for each class in the dataset + for k in range(K): + idx_k = np.where(label_list == k)[0] + np.random.shuffle(idx_k) + proportions = np.random.dirichlet(np.repeat(alpha, n_nets)) + # Balance + proportions = np.array( + [ + p * (len(idx_j) < N / n_nets) + for p, idx_j in zip(proportions, idx_batch) + ] + ) + proportions = proportions / proportions.sum() + proportions = (np.cumsum(proportions) * len(idx_k)).astype(int)[:-1] + idx_batch = [ + idx_j + idx.tolist() + for idx_j, idx in zip(idx_batch, np.split(idx_k, proportions)) + ] + min_size = min((len(idx_j) for idx_j in idx_batch)) + + for j in range(n_nets): + np.random.shuffle(idx_batch[j]) + net_dataidx_map[j] = idx_batch[j] + + net_cls_counts = {} + + for net_i, dataidx in net_dataidx_map.items(): + unq, unq_cnt = np.unique(label_list[dataidx], return_counts=True) + tmp = {unq[i]: unq_cnt[i] for i in range(len(unq))} + net_cls_counts[net_i] = tmp + # print('Data statistics: %s' % str(net_cls_counts)) + + local_sizes = [] + for i in range(n_nets): + local_sizes.append(len(net_dataidx_map[i])) + local_sizes = np.array(local_sizes) + print("Client Dataset sizes: ", local_sizes) + + return idx_batch, local_sizes diff --git a/baselines/fednova/fednova/main.py b/baselines/fednova/fednova/main.py new file mode 100644 index 00000000000..750338ff2c6 --- /dev/null +++ b/baselines/fednova/fednova/main.py @@ -0,0 +1,154 @@ +"""Entry script for Federated training on CIFAR-10 using FedNova.""" + +import os +import random +import time +from collections import OrderedDict +from functools import partial + +import flwr as fl +import hydra +import numpy as np +import pandas as pd +import torch +from flwr.common import ndarrays_to_parameters +from hydra.core.hydra_config import HydraConfig +from hydra.utils import call, instantiate +from omegaconf import DictConfig, OmegaConf + +from fednova.dataset import load_datasets +from fednova.models import test +from fednova.strategy import weighted_average +from fednova.utils import fit_config + + +@hydra.main(config_path="conf", config_name="base", version_base=None) +def main(cfg: DictConfig) -> None: # pylint: disable=too-many-locals + """Run the baseline. + + Parameters + ---------- + cfg : DictConfig + An omegaconf object that stores the hydra config. + """ + start = time.time() + + # Set seeds for reproduceability + torch.manual_seed(cfg.seed) + np.random.seed(cfg.seed) + random.seed(cfg.seed) + if torch.cuda.is_available(): + torch.cuda.manual_seed(cfg.seed) + # torch.backends.cudnn.deterministic = True + + # 1. Print parsed config + print(OmegaConf.to_yaml(cfg)) + + # 2. Prepare your dataset and directories + + if not os.path.exists(cfg.datapath): + os.makedirs(cfg.datapath) + if not os.path.exists(cfg.checkpoint_path): + os.makedirs(cfg.checkpoint_path) + + trainloaders, testloader, data_sizes = load_datasets(cfg) + device = torch.device("cuda" if torch.cuda.is_available() else "cpu") + + if cfg.mode == "test": + checkpoint = np.load( + f"{cfg.checkpoint_path}bestModel_{cfg.exp_name}_" + f"varEpochs_{cfg.var_local_epochs}.npz", + allow_pickle=True, + ) + model = instantiate(cfg.model) + params_dict = zip(model.state_dict().keys(), checkpoint["arr_0"]) + state_dict = OrderedDict({k: torch.Tensor(v) for k, v in params_dict}) + model.load_state_dict(state_dict) + loss, metrics = test(model.to(device), testloader, device) + print(f"----Loss: {loss}, Accuracy: {metrics['accuracy']} on Test set ------") + return None + + # 3. Define your clients + client_fn = call( + cfg.strategy.client_fn, + num_epochs=cfg.num_epochs, + trainloaders=trainloaders, + testloader=testloader, + data_sizes=data_sizes, + model=cfg.model, + exp_config=cfg, + ) + + # 4. Define your strategy + + ndarrays = [ + layer_param.cpu().numpy() + for _, layer_param in instantiate(cfg.model).state_dict().items() + ] + init_parameters = ndarrays_to_parameters(ndarrays) + + eval_fn = partial(test, instantiate(cfg.model), testloader, device) + fit_config_fn = partial(fit_config, cfg) + + extra_args = {} if cfg.strategy.name == "fedavg" else {"exp_config": cfg} + strategy = instantiate( + cfg.strategy.strategy, + evaluate_metrics_aggregation_fn=weighted_average, + accept_failures=False, + on_fit_config_fn=fit_config_fn, + initial_parameters=init_parameters, + evaluate_fn=eval_fn, + fraction_evaluate=0.0, + **extra_args, + ) + + # 5. Start Simulation + + history = fl.simulation.start_simulation( + client_fn=client_fn, + num_clients=cfg.num_clients, + config=fl.server.ServerConfig(num_rounds=cfg.num_rounds), + strategy=strategy, + client_resources=cfg.client_resources, + ) + # in case if you are running experiment on a slurm cluster, it could be helpful + # to add : ray_init_args={"ignore_reinit_error": True, "num_cpus": 8} as an extra + # argument in above start_simulation(). This prevents the simulation from using + # all cores and limits them to 8. + + # 6. Save your results + save_path = HydraConfig.get().runtime.output_dir + + # rounds, train_loss = zip(*history.losses_distributed) + # _, train_accuracy = zip(*history.metrics_distributed["accuracy"]) + rounds, test_loss = zip(*history.losses_centralized) + _, test_accuracy = zip(*history.metrics_centralized["accuracy"]) + + if len(rounds) != cfg.num_rounds: + # drop zeroth evaluation round before start of training + test_loss = test_loss[1:] + test_accuracy = test_accuracy[1:] + rounds = rounds[1:] + + file_name = os.path.join( + save_path, + f"{cfg.exp_name}_{cfg.strategy.name}_varEpoch_" + f"{cfg.var_local_epochs}_seed_{cfg.seed}.csv", + ) + + # df = pd.DataFrame({"round": rounds, "train_loss": train_loss, "train_accuracy": + # train_accuracy, "test_loss": test_loss, "test_accuracy": test_accuracy}) + + df = pd.DataFrame( + {"round": rounds, "test_loss": test_loss, "test_accuracy": test_accuracy} + ) + + df.to_csv(file_name, index=False) + + print(f"---------Experiment Completed in : {(time.time()-start)/60} minutes") + + return None + + +if __name__ == "__main__": + main() diff --git a/baselines/fednova/fednova/models.py b/baselines/fednova/fednova/models.py new file mode 100644 index 00000000000..4de5cf4309f --- /dev/null +++ b/baselines/fednova/fednova/models.py @@ -0,0 +1,366 @@ +"""VGG Model Architecture: Adapted from https://github.com/pytorch/vision.git . + +Contains Train, Test function definitions for local client training +""" + +import math +from collections import OrderedDict +from typing import Dict, Tuple + +import torch +from flwr.common.typing import NDArrays +from torch import nn +from torch.optim.optimizer import Optimizer, required + +from fednova.utils import comp_accuracy + + +class VGG(nn.Module): + """VGG model.""" + + def __init__(self): + super().__init__() + self.features = make_layers(cfg["A"]) + self.classifier = nn.Sequential( + nn.Dropout(), + nn.Linear(512, 512), + nn.ReLU(True), + nn.Dropout(), + nn.Linear(512, 512), + nn.ReLU(True), + nn.Linear(512, 10), + ) + # Initialize weights + for m in self.modules(): + if isinstance(m, nn.Conv2d): + n = m.kernel_size[0] * m.kernel_size[1] * m.out_channels + m.weight.data.normal_(0, math.sqrt(2.0 / n)) + m.bias.data.zero_() + + def forward(self, x): + """Forward pass through the network.""" + x = self.features(x) + x = x.view(x.size(0), -1) + x = self.classifier(x) + return x + + +def make_layers(network_cfg, batch_norm=False): + """Define the layer configuration of the VGG-16 network.""" + layers = [] + in_channels = 3 + for v in network_cfg: + if v == "M": + layers += [nn.MaxPool2d(kernel_size=2, stride=2)] + else: + conv2d = nn.Conv2d(in_channels, v, kernel_size=3, padding=1) + if batch_norm: + layers += [conv2d, nn.BatchNorm2d(v), nn.ReLU(inplace=True)] + else: + layers += [conv2d, nn.ReLU(inplace=True)] + in_channels = v + return nn.Sequential(*layers) + + +cfg = { + "A": [64, "M", 128, "M", 256, 256, "M", 512, 512, "M", 512, 512, "M"], + "B": [64, 64, "M", 128, 128, "M", 256, 256, "M", 512, 512, "M", 512, 512, "M"], + "D": [ + 64, + 64, + "M", + 128, + 128, + "M", + 256, + 256, + 256, + "M", + 512, + 512, + 512, + "M", + 512, + 512, + 512, + "M", + ], + "E": [ + 64, + 64, + "M", + 128, + 128, + "M", + 256, + 256, + 256, + 256, + "M", + 512, + 512, + 512, + 512, + "M", + 512, + 512, + 512, + 512, + "M", + ], +} + + +# pylint: disable=too-many-locals,too-many-arguments +def train( + model, optimizer, trainloader, device, epochs, proximal_mu=0.0 +) -> Tuple[float, float]: + """Train the client model for one round of federated learning.""" + criterion = nn.CrossEntropyLoss() + model = model.to(device) + if proximal_mu > 0.0: + global_params = [val.detach().clone() for val in model.parameters()] + else: + global_params = None + model.train() + + train_losses = [] + train_accuracy = [] + for _epoch in range(epochs): + for _batch_idx, (data, target) in enumerate(trainloader): + # data loading + data = data.to(device) + target = target.to(device) + + optimizer.zero_grad() + + # forward pass + output = model(data) + + if global_params is None: + loss = criterion(output, target) + else: + # Proximal updates for FedProx + proximal_term = 0.0 + for local_weights, global_weights in zip( + model.parameters(), global_params + ): + proximal_term += torch.square( + (local_weights - global_weights).norm(2) + ) + loss = criterion(output, target) + (proximal_mu / 2) * proximal_term + + # backward pass + loss.backward() + + # gradient step + optimizer.step() + + # write log files + acc = comp_accuracy(output, target) + + train_losses.append(loss.item()) + train_accuracy.append(acc[0].item()) + + train_loss = sum(train_losses) / len(train_losses) + train_acc = sum(train_accuracy) / len(train_accuracy) + + return train_loss, train_acc + + +def test(model, test_loader, device, *args) -> Tuple[float, Dict[str, float]]: + """Evaluate the federated model on a test set. + + The server Strategy(FedNova, FedAvg, FedProx) uses the same method to compute + centralized evaluation on test set using the args. args[0]: int = server round + args[1]: List[NDArray] = server model parameters args[2]: Dict = {} + """ + criterion = nn.CrossEntropyLoss() + if len(args) > 1: + # load the model parameters + params_dict = zip(model.state_dict().keys(), args[1]) + state_dict = OrderedDict({k: torch.Tensor(v) for k, v in params_dict}) + model.load_state_dict(state_dict) + + model = model.to(device) + model.eval() + accuracy = [] + total_loss = 0.0 + + with torch.no_grad(): + for data, target in test_loader: + data = data.to(device) + target = target.to(device) + outputs = model(data) + total_loss += criterion(outputs, target).item() + acc1 = comp_accuracy(outputs, target) + accuracy.append(acc1[0].item()) + + total_loss /= len(test_loader) + return total_loss, {"accuracy": sum(accuracy) / len(accuracy)} + + +class ProxSGD(Optimizer): # pylint: disable=too-many-instance-attributes + """Optimizer class for FedNova that supports Proximal, SGD, and Momentum updates. + + SGD optimizer modified with support for : + 1. Maintaining a Global momentum buffer, set using : (self.gmf) + 2. Proximal SGD updates, set using : (self.mu) + Args: + params (iterable): iterable of parameters to optimize or dicts defining + parameter groups + ratio (float): relative sample size of client + gmf (float): global/server/slow momentum factor + mu (float): parameter for proximal local SGD + lr (float): learning rate + momentum (float, optional): momentum factor (default: 0) + weight_decay (float, optional): weight decay (L2 penalty) (default: 0) + dampening (float, optional): dampening for momentum (default: 0) + nesterov (bool, optional): enables Nesterov momentum (default: False) + """ + + def __init__( # pylint: disable=too-many-arguments + self, + params, + ratio: float, + gmf=0, + mu=0, + lr=required, + momentum=0, + dampening=0, + weight_decay=0, + nesterov=False, + variance=0, + ): + self.gmf = gmf + self.ratio = ratio + self.momentum = momentum + self.mu = mu + self.local_normalizing_vec = 0 + self.local_counter = 0 + self.local_steps = 0 + self.lr = lr + + if lr is not required and lr < 0.0: + raise ValueError(f"Invalid learning rate: {lr}") + if momentum < 0.0: + raise ValueError(f"Invalid momentum value: {momentum}") + if weight_decay < 0.0: + raise ValueError(f"Invalid weight_decay value: {weight_decay}") + + defaults = { + "lr": lr, + "momentum": momentum, + "dampening": dampening, + "weight_decay": weight_decay, + "nesterov": nesterov, + "variance": variance, + } + if nesterov and (momentum <= 0 or dampening != 0): + raise ValueError("Nesterov momentum requires a momentum and zero dampening") + super().__init__(params, defaults) + + def __setstate__(self, state): + """Set the optimizer state.""" + super().__setstate__(state) + for group in self.param_groups: + group.setdefault("nesterov", False) + + def step(self, closure=None): # pylint: disable=too-many-branches + """Perform a single optimization step.""" + for group in self.param_groups: + weight_decay = group["weight_decay"] + momentum = group["momentum"] + dampening = group["dampening"] + nesterov = group["nesterov"] + + for p in group["params"]: + if p.grad is None: + continue + d_p = p.grad.data + + if weight_decay != 0: + d_p.add_(p.data, alpha=weight_decay) + + param_state = self.state[p] + + # if 'old_init' not in param_state: + # param_state['old_init'] = torch.clone(p.data).detach() + + local_lr = group["lr"] + + # apply momentum updates + if momentum != 0: + if "momentum_buffer" not in param_state: + buf = param_state["momentum_buffer"] = torch.clone(d_p).detach() + else: + buf = param_state["momentum_buffer"] + buf.mul_(momentum).add_(d_p, alpha=1 - dampening) + if nesterov: + d_p = d_p.add(momentum, buf) + else: + d_p = buf + + # apply proximal updates + if self.mu != 0: + if param_state["old_init"].device != p.device: + param_state["old_init"] = param_state["old_init"].to(p.device) + d_p.add_(p.data - param_state["old_init"], alpha=self.mu) + + # update accumalated local updates + if "cum_grad" not in param_state: + param_state["cum_grad"] = torch.clone(d_p).detach() + param_state["cum_grad"].mul_(local_lr) + + else: + param_state["cum_grad"].add_(d_p, alpha=local_lr) + + p.data.add_(d_p, alpha=-local_lr) + + # compute local normalizing vector a_i + if self.momentum != 0: + self.local_counter = self.local_counter * self.momentum + 1 + self.local_normalizing_vec += self.local_counter + + etamu = local_lr * self.mu + if etamu != 0: + self.local_normalizing_vec *= 1 - etamu + self.local_normalizing_vec += 1 + + if self.momentum == 0 and etamu == 0: + self.local_normalizing_vec += 1 + + self.local_steps += 1 + + def get_gradient_scaling(self) -> Dict[str, float]: + """Compute the scaling factor for local client gradients. + + Returns: A dictionary containing weight, tau, and local_norm. + """ + if self.mu != 0: + local_tau = torch.tensor(self.local_steps * self.ratio) + else: + local_tau = torch.tensor(self.local_normalizing_vec * self.ratio) + local_stats = { + "weight": self.ratio, + "tau": local_tau.item(), + "local_norm": self.local_normalizing_vec, + } + + return local_stats + + def set_model_params(self, init_params: NDArrays): + """Set the model parameters to the given values.""" + i = 0 + for group in self.param_groups: + for p in group["params"]: + param_state = self.state[p] + param_tensor = torch.tensor(init_params[i]) + p.data.copy_(param_tensor) + param_state["old_init"] = param_tensor + i += 1 + + def set_lr(self, lr: float): + """Set the learning rate to the given value.""" + for param_group in self.param_groups: + param_group["lr"] = lr diff --git a/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_1_Dec3.csv b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_1_Dec3.csv new file mode 100644 index 00000000000..40e533a5a87 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3322750033846327,9.952229299363058 +2,2.4105564196398306,9.952229299363058 +3,2.3679525867389266,10.270700636942674 +4,2.3119359957944057,12.380573248407643 +5,2.2538183433994368,13.146894904458598 +6,2.1338354956572223,16.59036624203822 +7,2.1430394315415886,15.963375796178344 +8,2.0121850686468137,22.123805732484076 +9,2.0339513151508988,21.80533439490446 +10,1.9237605059982106,25.189092356687897 +11,1.8606235851907427,26.60230891719745 +12,1.8454573230378946,26.76154458598726 +13,1.8018445573794615,27.46815286624204 +14,1.7549074485803107,28.045382165605094 +15,1.7283586810348899,29.508359872611464 +16,1.6959762550463342,31.757563694267517 +17,1.665015266959075,33.66839171974522 +18,1.6565429746724998,33.797770700636946 +19,1.6144128802475657,35.64888535031847 +20,1.6042149287120553,35.32046178343949 +21,1.578308189750477,36.47492038216561 +22,1.579000472263166,36.36544585987261 +23,1.5511337465541377,37.14171974522293 +24,1.5532452824768748,37.14171974522293 +25,1.5067142164631255,39.22173566878981 +26,1.5018903351133797,38.86345541401274 +27,1.4810384701771342,39.26154458598726 +28,1.4624813787496773,39.9781050955414 +29,1.4523854688474327,40.42595541401274 +30,1.4298117396178518,40.87380573248408 +31,1.424257324000073,40.625 +32,1.4029336013611715,41.69984076433121 +33,1.3906122241050574,41.78941082802548 +34,1.3731643067803352,42.565684713375795 +35,1.3557027942815405,43.86942675159236 +36,1.3114684675909152,47.452229299363054 +37,1.3281650626735322,45.28264331210191 +38,1.2966709121776994,47.36265923566879 +39,1.2780022165577882,48.00955414012739 +40,1.2652725854497047,49.392914012738856 +41,1.243788211588647,51.61226114649681 +42,1.2504112952074427,50.009952229299365 +43,1.22148536345002,53.274283439490446 +44,1.2267895747142232,51.1046974522293 +45,1.1959975403585252,53.2046178343949 +46,1.1871314997885638,53.71218152866242 +47,1.1563475386352295,55.72253184713376 +48,1.148399258115489,56.41918789808917 +49,1.1724276459141143,54.24960191082803 +50,1.1100040693191966,57.34474522292994 +51,1.1052443806532841,58.88734076433121 +52,1.1151954292491744,58.021496815286625 +53,1.1144338580453472,57.742834394904456 +54,1.105499767953423,59.11624203821656 +55,1.1056232361277198,58.439490445859875 +56,1.0818458879069917,60.26074840764331 +57,1.0668455855861592,60.370222929936304 +58,1.0638597493718385,60.559315286624205 +59,1.0662670507552519,60.947452229299365 +60,1.057197136484134,60.87778662420382 +61,1.0405825205669281,62.291003184713375 +62,1.0319705795330607,62.291003184713375 +63,1.0291373395616081,62.9578025477707 +64,1.031986176208326,62.151671974522294 +65,1.0100131904243663,63.62460191082803 +66,1.013776635288433,63.35589171974522 +67,1.0080456509711637,63.44546178343949 +68,0.9991133524354097,63.684315286624205 +69,0.9843284631990323,65.37619426751593 +70,1.010632030903154,63.465366242038215 +71,0.985465438122962,64.8984872611465 +72,0.9952558279037476,63.89331210191083 +73,0.9606693914741468,65.96337579617834 +74,0.9674361310187419,65.22691082802548 +75,0.9285249102647137,66.53065286624204 +76,0.9385288361531154,66.55055732484077 +77,0.9433654280984478,66.14251592356688 +78,0.9416350623604598,66.43113057324841 +79,0.9370440415516021,66.32165605095541 +80,0.9327579558275307,66.88893312101911 +81,0.9296600476951357,67.0282643312102 +82,0.9242681576188203,67.16759554140127 +83,0.9219367192808989,67.79458598726114 +84,0.9247711008521402,67.52587579617834 +85,0.9145487330521748,67.7249203821656 +86,0.9039811264177796,68.2125796178344 +87,0.9077371191826595,68.28224522292993 +88,0.8973047904148224,68.57085987261146 +89,0.9074147632167597,67.97372611464968 +90,0.8970765460069012,68.76990445859873 +91,0.8817227232228418,69.35708598726114 +92,0.878988860519069,69.51632165605096 +93,0.891782239364211,68.5609076433121 +94,0.8796547404520071,69.16799363057325 +95,0.8809166763238846,69.43670382165605 +96,0.8831617649953076,68.9390923566879 +97,0.8574279960553357,70.41202229299363 +98,0.8689477474066862,69.54617834394904 +99,0.842455934946704,70.65087579617834 +100,0.8448937242957437,70.5812101910828 diff --git a/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_2_Dec3.csv b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_2_Dec3.csv new file mode 100644 index 00000000000..e28157d3641 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3476606280940353,9.952229299363058 +2,2.4150860005882895,9.952229299363058 +3,2.3543904632519763,10.021894904458598 +4,2.314201342831751,12.738853503184714 +5,2.21177273950759,14.112261146496815 +6,2.1542300008664466,15.356289808917197 +7,2.106571883912299,18.212579617834393 +8,2.0294462138680136,22.113853503184714 +9,1.9784084672381164,23.66640127388535 +10,1.9156107819004424,24.810907643312103 +11,1.8663199638864796,25.348328025477706 +12,1.8289746995184832,26.671974522292995 +13,1.7840559702769967,26.36345541401274 +14,1.7511274427365346,31.47890127388535 +15,1.7418153422653295,30.155254777070063 +16,1.7000891714339044,33.2703025477707 +17,1.6965105260253712,32.50398089171974 +18,1.6511808937522257,33.9171974522293 +19,1.6294961507153358,35.12141719745223 +20,1.6175467018868512,35.7484076433121 +21,1.5939474121020858,36.892914012738856 +22,1.5875366242827884,36.8531050955414 +23,1.5581843951705154,38.156847133757964 +24,1.5471209204121001,38.1468949044586 +25,1.5151541506408885,39.69944267515923 +26,1.5135779509878462,39.36106687898089 +27,1.5398373345660556,38.047372611464965 +28,1.4845366272956702,40.34633757961783 +29,1.4758846402927568,41.30175159235669 +30,1.4383532795936438,42.207404458598724 +31,1.4279360642099077,42.734872611464965 +32,1.3939757620453075,44.745222929936304 +33,1.3910736339107441,45.94944267515923 +34,1.3633867069414467,46.02906050955414 +35,1.3464896709296355,47.15366242038217 +36,1.326327733173492,48.447452229299365 +37,1.316781650682923,49.86066878980892 +38,1.3033904361117417,49.960191082802545 +39,1.27481520593546,51.22412420382165 +40,1.2569116213519103,53.333996815286625 +41,1.2679610696567851,51.47292993630573 +42,1.2261111690739916,54.508359872611464 +43,1.2011927297920177,55.21496815286624 +44,1.1674713894819757,56.36942675159236 +45,1.1612690212620291,57.245222929936304 +46,1.1427871015421145,58.47929936305732 +47,1.1279667145127703,59.5640923566879 +48,1.1407171601702453,58.73805732484077 +49,1.127839179555322,59.972133757961785 +50,1.0751735719905537,61.05692675159236 +51,1.0834679265690457,61.534633757961785 +52,1.0785544210938132,61.91281847133758 +53,1.0714753068936098,62.25119426751592 +54,1.0731031739028396,62.36066878980892 +55,1.1051241854193863,59.922372611464965 +56,1.0639808606949581,62.5 +57,1.0829800359762398,60.77826433121019 +58,1.042195085886937,63.95302547770701 +59,1.0401526503502183,63.34593949044586 +60,1.0189027087703633,64.69944267515923 +61,1.0205797086096113,63.95302547770701 +62,1.0139479508065874,64.56011146496816 +63,0.9898379824723408,65.53542993630573 +64,0.9943730823553292,65.21695859872611 +65,0.9786591567810933,65.67476114649682 +66,0.9848891333409935,65.86385350318471 +67,0.9558160020287629,67.00835987261146 +68,0.968339874486255,66.13256369426752 +69,0.9735497820908856,66.15246815286625 +70,0.9684426032813491,66.32165605095541 +71,0.9531537685424659,66.86902866242038 +72,0.9351116646626952,67.93391719745223 +73,0.9431872781674573,67.32683121019109 +74,0.9281221127054494,68.1827229299363 +75,0.8931233256485811,69.54617834394904 +76,0.9158760294033463,68.68033439490446 +77,0.9179195226377742,68.3718152866242 +78,0.9096345434522932,69.09832802547771 +79,0.9108521422003485,68.42157643312102 +80,0.9203134300602469,68.97890127388536 +81,0.913072215144042,68.3718152866242 +82,0.8824794687283267,70.28264331210191 +83,0.91238536804345,68.45143312101911 +84,0.8973504080893887,69.59593949044586 +85,0.8784983849069875,69.96417197452229 +86,0.8745074758104457,70.27269108280255 +87,0.8758413673965795,70.3125 +88,0.8825303342691653,70.19307324840764 +89,0.8793895031995834,70.07364649681529 +90,0.8683562419217103,70.52149681528662 +91,0.8630021875071677,70.75039808917198 +92,0.8568093184452907,70.72054140127389 +93,0.8505481678968781,71.44705414012739 +94,0.8494296631995281,70.9593949044586 +95,0.8643598628651564,71.01910828025478 +96,0.8424477216544425,71.18829617834395 +97,0.8395011455390105,71.69585987261146 +98,0.8313582617386132,72.21337579617834 +99,0.8435503601268598,71.39729299363057 +100,0.8297491445662869,72.02428343949045 diff --git a/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_3_Dec3.csv b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_3_Dec3.csv new file mode 100644 index 00000000000..048346094dc --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.336503150356803,9.952229299363058 +2,2.396827416814816,9.952229299363058 +3,2.3413042961412174,10.529458598726114 +4,2.2497383469988588,13.70421974522293 +5,2.2691426186045263,12.24124203821656 +6,2.1209433655829946,16.719745222929937 +7,2.1038245311967887,18.411624203821656 +8,1.9992265481098441,23.298168789808916 +9,1.9496057899134933,25.03980891719745 +10,1.8871641766493488,26.184315286624205 +11,1.8796809714311247,26.960589171974522 +12,1.799403237689073,28.115047770700638 +13,1.7825091120543752,27.955812101910826 +14,1.7309091842857895,30.941480891719745 +15,1.7024861255269141,31.80732484076433 +16,1.69258324963272,31.90684713375796 +17,1.6721434828582082,33.2703025477707 +18,1.6742736374496654,32.33479299363057 +19,1.6152269126503331,34.66361464968153 +20,1.6000704757726876,35.42993630573248 +21,1.5791497913895138,35.4796974522293 +22,1.585575411274175,37.36066878980892 +23,1.5823217015357534,35.19108280254777 +24,1.5379743090101108,38.3359872611465 +25,1.521167896355793,38.80374203821656 +26,1.5021898382028955,39.67953821656051 +27,1.4991802698487688,39.57006369426752 +28,1.4599751006266115,41.5406050955414 +29,1.4852704348837493,40.13734076433121 +30,1.437091055189728,42.74482484076433 +31,1.4371534289827772,43.32205414012739 +32,1.4067863119635613,45.15326433121019 +33,1.3843835782093608,45.879777070063696 +34,1.384780160181082,45.630971337579616 +35,1.3683512256403638,46.65605095541401 +36,1.343615241111464,47.62141719745223 +37,1.3377281693136616,47.82046178343949 +38,1.333194356055776,47.860270700636946 +39,1.3017862465730898,49.233678343949045 +40,1.4282405239761256,46.50676751592356 +41,1.3566088964984675,46.914808917197455 +42,1.2668099031326876,50.52746815286624 +43,1.2756303882902595,50.408041401273884 +44,1.2441936427620566,51.02507961783439 +45,1.2487991615465492,51.59235668789809 +46,1.233133291362957,52.05015923566879 +47,1.2307757890907822,51.62221337579618 +48,1.2256270958359834,52.17953821656051 +49,1.185818590935628,54.54816878980892 +50,1.1649532242185752,55.39410828025478 +51,1.161687529770432,56.20023885350319 +52,1.1510512536498392,56.72770700636943 +53,1.1491517234759725,56.09076433121019 +54,1.1281814620753003,57.86226114649681 +55,1.1397874981734404,56.34952229299363 +56,1.1252447560334662,57.78264331210191 +57,1.1169096482027867,57.76273885350319 +58,1.1122307803980105,58.966958598726116 +59,1.1096816856390352,58.70820063694268 +60,1.0947599266744723,59.85270700636943 +61,1.1026431523310911,59.136146496815286 +62,1.0787251318336293,60.09156050955414 +63,1.091172667825298,59.76313694267516 +64,1.072162979727338,60.7484076433121 +65,1.0788747068423374,59.394904458598724 +66,1.051829193428064,61.46496815286624 +67,1.0557978927709495,60.80812101910828 +68,1.0383457336456152,61.13654458598726 +69,1.0419494130049543,61.24601910828026 +70,1.0350622610681375,62.121815286624205 +71,1.0339336953345377,61.23606687898089 +72,1.00521474697028,63.24641719745223 +73,1.0097090377929105,62.350716560509554 +74,1.0001640289452425,63.455414012738856 +75,0.9684426989524987,64.37101910828025 +76,1.0020693563351966,63.485270700636946 +77,0.9966880637369339,63.67436305732484 +78,0.9792163493526969,64.00278662420382 +79,0.9872519757337631,63.654458598726116 +80,0.9892654802389206,64.91839171974522 +81,0.9896926443288281,63.73407643312102 +82,0.9591672989972837,65.91361464968153 +83,0.9743639268692891,65.22691082802548 +84,0.9693691282515313,65.91361464968153 +85,1.021231278492387,62.350716560509554 +86,0.9594469970198953,65.94347133757962 +87,0.9820176754028175,63.69426751592356 +88,0.9416516635827957,66.04299363057325 +89,0.9454963161687183,65.67476114649682 +90,0.9273580927757701,67.20740445859873 +91,0.9450143750306148,66.0031847133758 +92,0.9107797438172018,67.82444267515923 +93,0.9440074141617794,66.0828025477707 +94,0.915167161613513,67.54578025477707 +95,0.9114327168768379,67.50597133757962 +96,0.8970982625985601,69.2874203821656 +97,0.9364749170412683,65.91361464968153 +98,0.9041775601684667,68.44148089171975 +99,0.9190235453046811,67.27707006369427 +100,0.8925152166633848,68.41162420382166 diff --git a/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_4_Dec3.csv b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_4_Dec3.csv new file mode 100644 index 00000000000..b1ad132988a --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_4_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.340192755316473,9.952229299363058 +2,2.4065807716102356,9.952229299363058 +3,2.356366942642601,9.972133757961783 +4,2.257367764308954,12.420382165605096 +5,2.1630963656553037,15.246815286624203 +6,2.1563196789686847,15.824044585987261 +7,2.0872224880631562,18.97890127388535 +8,1.9657978571144639,24.0843949044586 +9,2.0208943133141584,23.00955414012739 +10,1.8458554030983312,26.00517515923567 +11,1.8088973229098473,27.876194267515924 +12,1.7716375893088663,29.6875 +13,1.7423289520725322,30.27468152866242 +14,1.7117149078162612,31.31966560509554 +15,1.7106302839935206,31.230095541401273 +16,1.670585102336422,32.633359872611464 +17,1.6640049515256456,33.24044585987261 +18,1.6225769489434114,34.11624203821656 +19,1.6030716296214207,35.15127388535032 +20,1.5883301663550602,35.728503184713375 +21,1.5819664047022535,36.37539808917197 +22,1.5575256317284456,37.72890127388535 +23,1.5366469393869875,37.708996815286625 +24,1.5380007992884157,37.91799363057325 +25,1.5062464551561197,39.3312101910828 +26,1.499373656169624,39.8984872611465 +27,1.4855398099133923,39.7890127388535 +28,1.4703046516248375,40.25676751592356 +29,1.4547758565586844,41.192277070063696 +30,1.435782696031461,42.12778662420382 +31,1.4179363319068958,43.13296178343949 +32,1.4072597345728783,43.541003184713375 +33,1.3904125500636495,43.63057324840764 +34,1.377218428690722,45.41202229299363 +35,1.3538683045441937,45.81011146496815 +36,1.3563844823533562,46.28781847133758 +37,1.3693355587637348,46.90485668789809 +38,1.3198597689343106,47.452229299363054 +39,1.290913607664169,49.52229299363057 +40,1.2831293925358231,49.960191082802545 +41,1.2626181172717148,49.67157643312102 +42,1.2519105069196907,50.547372611464965 +43,1.2268231013777908,52.70700636942675 +44,1.2380461381499175,51.78144904458599 +45,1.2119612948150391,52.31886942675159 +46,1.1936329622177562,53.38375796178344 +47,1.2050589630558233,52.129777070063696 +48,1.1866381802376669,54.647691082802545 +49,1.171208395320139,54.369028662420384 +50,1.1367910959918028,55.96138535031847 +51,1.1358783036280589,57.34474522292994 +52,1.1579961750158079,56.658041401273884 +53,1.1256621612864695,58.15087579617835 +54,1.1246193096895887,57.832404458598724 +55,1.1107973369063846,58.56886942675159 +56,1.110518939176183,58.84753184713376 +57,1.1037657222930033,59.305334394904456 +58,1.1094240451314648,58.29020700636943 +59,1.07348582509217,60.370222929936304 +60,1.0804821089574486,60.50955414012739 +61,1.0534585907960394,61.60429936305732 +62,1.054385502247294,60.88773885350319 +63,1.0481761762291004,62.19148089171974 +64,1.025695867978843,62.55971337579618 +65,1.0327831332091313,62.320859872611464 +66,1.0220194143854129,62.7687101910828 +67,1.0158985773469233,63.38574840764331 +68,1.0215645227462622,62.55971337579618 +69,0.9984990035652355,64.12221337579618 +70,1.016971071054981,62.60947452229299 +71,0.9847259536670272,64.82882165605096 +72,0.9911046115456114,64.51035031847134 +73,0.9687198074000656,65.4359076433121 +74,0.9731034021468679,65.29657643312102 +75,0.9364105193478287,66.96855095541402 +76,0.9593083000486824,66.12261146496816 +77,0.9519391116822601,65.95342356687898 +78,0.954614588029825,65.8937101910828 +79,0.9382576365379771,66.85907643312102 +80,0.9766542137048806,64.58001592356688 +81,0.9197572120435679,67.30692675159236 +82,0.9613819285562843,65.07762738853503 +83,0.8983551248623307,68.34195859872611 +84,0.9307596896104752,67.57563694267516 +85,0.9170637161109099,67.89410828025478 +86,0.9129233113519705,67.8343949044586 +87,0.9166463579341864,67.7547770700637 +88,0.8770443121339105,69.61584394904459 +89,0.9054404743917429,68.3718152866242 +90,0.8843468909810304,69.11823248407643 +91,0.8786779930637141,69.71536624203821 +92,0.8859271019887013,68.81966560509554 +93,0.8762777390753388,69.97412420382166 +94,0.8901101392545517,68.79976114649682 +95,0.8577119985203834,70.74044585987261 +96,0.893280333774105,68.76990445859873 +97,0.8607914081424665,70.0437898089172 +98,0.8622454727531239,69.82484076433121 +99,0.8552278538418424,70.44187898089172 +100,0.856869752999324,70.43192675159236 diff --git a/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_5_Dec3.csv b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_5_Dec3.csv new file mode 100644 index 00000000000..f6e3f730953 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_5_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.322763842382249,9.952229299363058 +2,2.3703218645350947,9.952229299363058 +3,2.305315975930281,13.525079617834395 +4,2.2346230828837985,13.813694267515924 +5,2.165205067130411,14.759156050955413 +6,2.0943724638337544,17.565684713375795 +7,2.0491420433020138,19.914410828025478 +8,2.037385205554355,20.08359872611465 +9,1.9533660297940492,23.88535031847134 +10,1.9376738838329437,24.12420382165605 +11,1.8697852116481515,26.164410828025478 +12,1.842885736447231,26.871019108280255 +13,1.8031171180640058,29.478503184713375 +14,1.7931042476824135,31.747611464968152 +15,1.7688921682394234,30.951433121019107 +16,1.7410383285230893,32.633359872611464 +17,1.7084242781256413,33.20063694267516 +18,1.7030811438894575,33.61863057324841 +19,1.6533867363717145,34.54418789808917 +20,1.6235538341437177,36.23606687898089 +21,1.6044816234309203,37.34076433121019 +22,1.5849255725836298,36.873009554140125 +23,1.578064128851435,38.455414012738856 +24,1.5343565371385806,38.95302547770701 +25,1.5237641266197155,39.49044585987261 +26,1.4890718885288117,41.02308917197452 +27,1.4745662584426298,41.13256369426752 +28,1.4503213607581558,41.809315286624205 +29,1.4213654250855658,42.44625796178344 +30,1.40902396144381,43.45143312101911 +31,1.394247982912003,43.38176751592356 +32,1.3737070309888026,44.516321656050955 +33,1.3657795775468182,44.44665605095541 +34,1.3372811845913055,46.11863057324841 +35,1.331333041950396,45.53144904458599 +36,1.299177734715164,47.62141719745223 +37,1.306782241839512,46.28781847133758 +38,1.2744887816678188,47.113853503184714 +39,1.257157899391879,49.761146496815286 +40,1.2404180210866746,49.14410828025478 +41,1.2120001877948736,52.03025477707006 +42,1.2188678258543562,51.59235668789809 +43,1.200811847000365,53.02547770700637 +44,1.1879403374756976,53.751990445859875 +45,1.1548014488189844,56.210191082802545 +46,1.1604319727344878,55.17515923566879 +47,1.1391951008966774,56.69785031847134 +48,1.1375973015833811,56.827229299363054 +49,1.1163568925705685,58.23049363057325 +50,1.0798597032097494,58.94705414012739 +51,1.0728171323515048,61.78343949044586 +52,1.093518666401031,59.375 +53,1.0668960323758945,61.49482484076433 +54,1.0748902931334867,60.76831210191083 +55,1.0402483241573262,62.83837579617835 +56,1.0482169606123761,61.88296178343949 +57,1.058586527587502,62.07205414012739 +58,1.0440431328336144,61.71377388535032 +59,1.037830111707092,62.66918789808917 +60,1.0096868641057593,64.35111464968153 +61,1.0074310295141427,64.171974522293 +62,1.0078223328681508,63.61464968152866 +63,0.9896025968964692,64.93829617834395 +64,0.9848645754680512,65.28662420382166 +65,0.9746564672251415,65.99323248407643 +66,0.9771029626487926,64.92834394904459 +67,0.9644029197419525,66.37141719745223 +68,0.969794071404038,65.71457006369427 +69,0.9564006841106779,67.08797770700637 +70,0.9673655450723733,65.515525477707 +71,0.9380250781964344,67.6453025477707 +72,0.9577105599603836,65.45581210191082 +73,0.9532570895875335,66.71974522292993 +74,0.946704349700053,65.85390127388536 +75,0.9005255133483061,68.1827229299363 +76,0.9122892185381264,68.39171974522293 +77,0.9049254302765913,68.14291401273886 +78,0.9137974282738509,68.03343949044586 +79,0.896440048126658,68.88933121019109 +80,0.8918709789112116,69.33718152866243 +81,0.9122986064595022,67.99363057324841 +82,0.8874133172308564,69.50636942675159 +83,0.8875584754214925,69.17794585987261 +84,0.8795238201785239,70.13335987261146 +85,0.8808599201736936,69.92436305732484 +86,0.8754167363142512,69.9343152866242 +87,0.8618993254224206,70.45183121019109 +88,0.8702862346248262,70.03383757961784 +89,0.8598838843357791,70.28264331210191 +90,0.8538035347962835,70.75039808917198 +91,0.8640460307431069,70.44187898089172 +92,0.850994919515719,70.80015923566879 +93,0.8467587012394219,70.96934713375796 +94,0.8624165198605531,70.33240445859873 +95,0.8545254837175843,70.79020700636943 +96,0.8505151127554049,71.28781847133757 +97,0.8396587986854991,71.29777070063695 +98,0.8236551850464693,71.62619426751593 +99,0.8208355918811385,71.93471337579618 +100,0.847788190955569,70.83001592356688 diff --git a/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_6_Dec3.csv b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_6_Dec3.csv new file mode 100644 index 00000000000..f0e9a8d4256 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_False_seed_6_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.340674465628946,9.952229299363058 +2,2.4079349511747905,9.952229299363058 +3,2.3667921093618793,10.031847133757962 +4,2.2340524454785,15.98328025477707 +5,2.228541444061668,13.136942675159236 +6,2.162952679737358,15.873805732484076 +7,2.0825987492397333,19.028662420382165 +8,2.035593322128247,21.238057324840764 +9,2.0150116279626347,22.36265923566879 +10,1.9103113223033346,24.731289808917197 +11,1.8436492552423174,27.716958598726116 +12,1.8620525158134995,25.706608280254777 +13,1.790977570661314,28.57285031847134 +14,1.75484215378002,29.78702229299363 +15,1.7455820642459166,29.408837579617835 +16,1.7387434578245613,29.976114649681527 +17,1.678699171467192,32.72292993630573 +18,1.6906812593435785,31.86703821656051 +19,1.6467255915805792,35.04179936305732 +20,1.627046425631092,34.63375796178344 +21,1.6200162248246988,35.40007961783439 +22,1.606779891214553,36.5843949044586 +23,1.5765141992811944,37.27109872611465 +24,1.558946531289702,38.42555732484077 +25,1.5406956771376785,38.684315286624205 +26,1.530584206247026,38.823646496815286 +27,1.5135355960031984,39.67953821656051 +28,1.4986051677898238,40.32643312101911 +29,1.4767899657510648,40.973328025477706 +30,1.4723131482008915,41.51074840764331 +31,1.4530503863741637,42.68511146496815 +32,1.4290293644947611,43.371815286624205 +33,1.411928762296203,44.46656050955414 +34,1.3950658565873553,44.83479299363057 +35,1.4007116958593866,44.95421974522293 +36,1.3680428008365024,45.14331210191083 +37,1.3674026704897546,46.58638535031847 +38,1.3016607700639469,49.61186305732484 +39,1.3079741441520156,49.32324840764331 +40,1.25649298300409,51.801353503184714 +41,1.269007762526251,51.31369426751592 +42,1.2257592495839307,54.00079617834395 +43,1.2285546519953734,53.61265923566879 +44,1.2268368525869529,54.110270700636946 +45,1.1831454778932462,56.75756369426752 +46,1.1964357461139654,56.25 +47,1.1723174714738396,56.399283439490446 +48,1.145808992871813,58.90724522292994 +49,1.1363165162171527,59.07643312101911 +50,1.066190980422269,62.00238853503185 +51,1.0981221259779232,61.43511146496815 +52,1.070915729756568,62.45023885350319 +53,1.083505069374279,62.02229299363057 +54,1.0615949368780586,62.52985668789809 +55,1.0386432857270453,63.80374203821656 +56,1.0488922432729393,63.53503184713376 +57,1.0344537583885678,64.05254777070064 +58,1.0169353735674718,64.57006369426752 +59,1.031998186734072,63.86345541401274 +60,1.012050225096903,65.27667197452229 +61,0.9996738039004575,65.10748407643312 +62,0.9981011903969346,65.71457006369427 +63,0.9881569484996188,65.97332802547771 +64,0.9760363318358257,66.71974522292993 +65,0.9710627160254558,66.66998407643312 +66,0.9837819994634883,65.59514331210191 +67,0.9470246726540243,67.70501592356688 +68,0.9631724281675497,66.76950636942675 +69,0.9289736147898777,68.5907643312102 +70,0.9309865179335236,67.90406050955414 +71,0.9197208672572094,68.43152866242038 +72,0.925698510780456,68.63057324840764 +73,0.9159185856011263,68.70023885350318 +74,0.9203748995331442,68.40167197452229 +75,0.882585943884151,69.59593949044586 +76,0.902729655906653,68.62062101910828 +77,0.9126493847294218,68.73009554140127 +78,0.8978265311307968,69.24761146496816 +79,0.8883458079805799,69.57603503184713 +80,0.8866944939467558,69.83479299363057 +81,0.8834723761886548,69.76512738853503 +82,0.8866441006873064,69.91441082802548 +83,0.8764989691175473,70.07364649681529 +84,0.9001616744478796,69.68550955414013 +85,0.8712542197506898,70.51154458598727 +86,0.8831366706805625,69.73527070063695 +87,0.8451760646643912,71.84514331210191 +88,0.8645749589440169,71.40724522292993 +89,0.855030402256425,71.05891719745223 +90,0.8550644642228533,71.43710191082802 +91,0.8622657546571865,70.91958598726114 +92,0.8354430901017159,71.81528662420382 +93,0.8598625063896179,71.13853503184713 +94,0.9409669603511785,68.71019108280255 +95,0.8758706499816505,70.55135350318471 +96,0.8379398591958793,71.64609872611464 +97,0.8407912630184441,71.45700636942675 +98,0.8216142878410923,72.61146496815287 +99,0.8324818360577723,72.24323248407643 +100,0.8240495407657259,72.37261146496816 diff --git a/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_True_seed_1_Dec3.csv b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_True_seed_1_Dec3.csv new file mode 100644 index 00000000000..daa0ef02828 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_True_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3335574037709814,9.952229299363058 +2,2.437665328858005,9.952229299363058 +3,2.3268929226383284,12.340764331210192 +4,2.308605248761025,12.291003184713375 +5,2.1781966428088535,16.709792993630572 +6,2.084212398073476,22.00437898089172 +7,1.9717256939335235,24.293391719745223 +8,1.8953111536183935,25.139331210191084 +9,1.827386900877497,27.0203025477707 +10,1.7798619763866352,28.75199044585987 +11,1.7507065185316049,29.697452229299362 +12,1.7215931924285404,31.598328025477706 +13,1.6815397428099517,32.633359872611464 +14,1.6635513032317921,33.797770700636946 +15,1.6538463276662645,34.17595541401274 +16,1.6191891598853336,35.48964968152866 +17,1.585386717395418,38.38574840764331 +18,1.5710502460504034,37.22133757961783 +19,1.547519353544636,39.20183121019108 +20,1.5250302765779435,40.25676751592356 +21,1.5048607246131653,40.23686305732484 +22,1.487412335007054,43.202627388535035 +23,1.4809475385459365,43.21257961783439 +24,1.4508136161573373,44.18789808917197 +25,1.4353003813202974,45.57125796178344 +26,1.4007921560554748,47.57165605095541 +27,1.364344395649661,47.810509554140125 +28,1.3696828754084884,49.69148089171974 +29,1.3369159903495935,49.77109872611465 +30,1.3146220286181018,51.87101910828026 +31,1.313776899295248,51.8312101910828 +32,1.2696105298722626,53.43351910828026 +33,1.2560472833882472,54.697452229299365 +34,1.2431284633411723,55.095541401273884 +35,1.2367802645750106,55.04578025477707 +36,1.2026327358689277,56.88694267515923 +37,1.1811617620431694,57.792595541401276 +38,1.1630852894418557,59.25557324840764 +39,1.1529629530420729,59.5640923566879 +40,1.156898500053746,59.942277070063696 +41,1.1629920165250256,59.17595541401274 +42,1.1249102593227556,61.564490445859875 +43,1.1286648690320884,60.81807324840764 +44,1.1225778502263841,61.37539808917197 +45,1.1210014410079665,60.897691082802545 +46,1.0874633948514416,63.25636942675159 +47,1.0650781996690544,63.485270700636946 +48,1.081040079046966,63.56488853503185 +49,1.0712621500537653,63.64450636942675 +50,1.0180107138718768,65.25676751592357 +51,1.0296299799232727,65.14729299363057 +52,1.0079838770210363,65.64490445859873 +53,1.0257651995701396,65.625 +54,1.0251559224098352,65.37619426751593 +55,1.031843919662913,65.09753184713375 +56,1.0090612742551572,65.82404458598727 +57,1.0093433705105144,66.04299363057325 +58,1.0131473131240554,65.71457006369427 +59,0.9855377024905697,66.68988853503184 +60,0.9834266213854407,66.97850318471338 +61,0.9725301671939292,67.57563694267516 +62,0.956439628342914,68.51114649681529 +63,0.957306156492537,68.14291401273886 +64,0.9380209419378049,68.640525477707 +65,0.9413191000367426,69.0187101910828 +66,0.9362532040875429,68.75 +67,0.9310961589691745,68.97890127388536 +68,0.9352894751888932,69.14808917197452 +69,0.9200195601791333,69.78503184713375 +70,0.9262864115131888,69.56608280254777 +71,0.9257096462189012,69.37699044585987 +72,0.9241780801943154,69.51632165605096 +73,0.906249447233358,70.22292993630573 +74,0.9081910753705699,70.1532643312102 +75,0.8620510594860004,71.45700636942675 +76,0.8747333929796887,70.97929936305732 +77,0.8857599705647511,70.41202229299363 +78,0.8617315782103568,71.04896496815287 +79,0.8744132985734636,71.06886942675159 +80,0.8693727748409198,71.28781847133757 +81,0.8682390903211703,71.34753184713375 +82,0.8552009793603497,71.91480891719745 +83,0.8592259454879032,72.08399681528662 +84,0.8587858058085107,71.83519108280255 +85,0.8457170781815887,72.09394904458598 +86,0.8579047352645048,71.55652866242038 +87,0.8404685088024018,72.49203821656052 +88,0.8312955335446983,72.6015127388535 +89,0.8376306371324381,72.5218949044586 +90,0.8357342796720517,72.4124203821656 +91,0.8382854313607428,72.59156050955414 +92,0.8295747987024343,72.75079617834395 +93,0.8283412596981996,72.85031847133757 +94,0.8403935197052682,72.3328025477707 +95,0.8179273779984493,73.18869426751593 +96,0.8228168631814847,73.11902866242038 +97,0.8241028231420334,72.49203821656052 +98,0.8156991223241113,73.20859872611464 +99,0.7989317169235011,73.17874203821655 +100,0.7918282181594023,74.23367834394904 diff --git a/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_True_seed_2_Dec3.csv b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_True_seed_2_Dec3.csv new file mode 100644 index 00000000000..8f64a68dfb4 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_True_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.357691465669377,9.952229299363058 +2,2.4246725656424357,9.952229299363058 +3,2.3716064046142966,10.519506369426752 +4,2.240807094391744,17.625398089171973 +5,2.20070368924718,15.734474522292993 +6,2.1044852369150537,20.611066878980893 +7,1.9955136327986505,23.805732484076433 +8,1.9350733567195333,24.51234076433121 +9,1.855640810006743,25.666799363057326 +10,1.7898093902381362,27.229299363057326 +11,1.764379723056866,27.239251592356688 +12,1.7224332010670074,28.801751592356688 +13,1.706142749756005,30.195063694267517 +14,1.6927160715601246,30.851910828025478 +15,1.6490004829540374,32.90207006369427 +16,1.6159342633690803,36.80334394904459 +17,1.583020815424099,37.27109872611465 +18,1.5799683620975276,38.017515923566876 +19,1.5597464726988677,39.49044585987261 +20,1.5489706195843447,39.052547770700635 +21,1.5104347247226981,42.09792993630573 +22,1.4873689041016207,43.31210191082803 +23,1.495805615072797,42.595541401273884 +24,1.4557722518398504,45.54140127388535 +25,1.433835487456838,45.9593949044586 +26,1.4465999398261877,45.879777070063696 +27,1.4054246700493394,47.75079617834395 +28,1.3551764070608054,50.38813694267516 +29,1.3567188378352268,50.49761146496815 +30,1.36505422015099,49.72133757961783 +31,1.3305586576461792,51.910828025477706 +32,1.3290061722895143,52.01035031847134 +33,1.291412941589477,53.533041401273884 +34,1.2977050163184003,53.28423566878981 +35,1.2514163145593777,54.74721337579618 +36,1.2533326980414663,54.93630573248408 +37,1.2352850391606616,55.07563694267516 +38,1.2292538099228196,55.56329617834395 +39,1.2055585327421783,56.73765923566879 +40,1.1920925386392387,56.458996815286625 +41,1.2027776985411431,56.58837579617835 +42,1.1950716000453683,56.73765923566879 +43,1.1563464133602799,58.36982484076433 +44,1.1429522322241668,58.797770700636946 +45,1.1177521982010763,60.111464968152866 +46,1.1242019871997226,59.414808917197455 +47,1.1073356122727607,59.93232484076433 +48,1.1128639969856116,60.19108280254777 +49,1.0892437282641223,61.32563694267516 +50,1.05096779887084,62.47014331210191 +51,1.0823593788845525,61.86305732484077 +52,1.0701478442568688,61.7734872611465 +53,1.067646617342712,62.490047770700635 +54,1.071357022804819,62.460191082802545 +55,1.059228591098907,62.80851910828026 +56,1.0515245221982337,63.853503184713375 +57,1.0397735663280365,64.13216560509554 +58,1.0194071778066598,64.7392515923567 +59,1.0048828683081705,65.40605095541402 +60,1.016597933070675,64.7093949044586 +61,1.000836148383511,66.07285031847134 +62,0.9939083848029945,65.85390127388536 +63,0.9905807235438353,65.99323248407643 +64,0.9659929214769108,66.66998407643312 +65,0.9798231398224071,66.4609872611465 +66,0.9483817903099546,67.84434713375796 +67,0.9914286322654433,66.1624203821656 +68,0.9502285198800883,67.80453821656052 +69,0.9917996643455165,66.58041401273886 +70,0.9398375202895729,67.98367834394904 +71,0.9326831109964164,68.25238853503184 +72,0.9394512187903095,68.08320063694268 +73,0.9163190031507212,69.00875796178345 +74,0.9177786081459871,68.68033439490446 +75,0.8755639233406941,70.203025477707 +76,0.8976301748281831,69.79498407643312 +77,0.8949508108910481,69.68550955414013 +78,0.9072214440934977,69.3172770700637 +79,0.8937037420120968,70.06369426751593 +80,0.9138230734570011,68.88933121019109 +81,0.8848234984525449,70.37221337579618 +82,0.8920225842743162,69.71536624203821 +83,0.8852355787708501,70.5812101910828 +84,0.8878266799981427,70.17316878980891 +85,0.8641099075602877,71.4171974522293 +86,0.8870656137253828,70.25278662420382 +87,0.8654987439987766,71.63614649681529 +88,0.8623224910657117,71.3077229299363 +89,0.8543313346850644,71.63614649681529 +90,0.8454214793861292,71.875 +91,0.8533469066498386,72.28304140127389 +92,0.8294592028970171,72.29299363057325 +93,0.8182674122464125,73.25835987261146 +94,0.840630019166667,72.02428343949045 +95,0.822501107006316,72.88017515923566 +96,0.8351130618411264,72.15366242038216 +97,0.8094356853491181,73.1687898089172 +98,0.8404607700694139,72.38256369426752 +99,0.8220405897517113,72.9796974522293 +100,0.8271944655734262,72.54179936305732 diff --git a/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_True_seed_3_Dec3.csv b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_True_seed_3_Dec3.csv new file mode 100644 index 00000000000..d1c47a706d9 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fedavg_varEpoch_True_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3530616304677006,9.952229299363058 +2,2.4255656679724433,9.952229299363058 +3,2.3690868851485525,10.589171974522293 +4,2.3187686592150647,12.380573248407643 +5,2.206522738098339,14.42078025477707 +6,2.0592022261042504,22.193471337579616 +7,1.9690654270208565,24.37300955414013 +8,1.9299921313668513,24.980095541401273 +9,1.831635299761584,26.184315286624205 +10,1.754839357297132,30.583200636942674 +11,1.724478620632439,32.36464968152866 +12,1.6964365084459827,33.14092356687898 +13,1.6503787526659146,34.99203821656051 +14,1.6360966772030874,35.13136942675159 +15,1.5967388312528088,36.44506369426752 +16,1.554070885014382,37.97770700636943 +17,1.546183129784408,38.57484076433121 +18,1.526974493530905,38.76393312101911 +19,1.500175952152082,40.017914012738856 +20,1.484022602913486,41.33160828025478 +21,1.4640599808115868,42.038216560509554 +22,1.4658404862045482,42.24721337579618 +23,1.434590646415759,43.80971337579618 +24,1.4124090117254076,45.5015923566879 +25,1.4033679218049262,45.60111464968153 +26,1.4030009880187406,46.466958598726116 +27,1.3524894554903553,47.41242038216561 +28,1.3600646940765866,48.29816878980892 +29,1.3240733139074532,48.72611464968153 +30,1.3229393776814649,49.21377388535032 +31,1.3018163017406585,50.39808917197452 +32,1.2881680905439292,51.015127388535035 +33,1.2969016041725305,50.69665605095541 +34,1.2529866767537063,51.51273885350319 +35,1.251836004150901,52.169585987261144 +36,1.2357114766054094,52.4781050955414 +37,1.249891082951977,52.41839171974522 +38,1.2045780663277692,53.9609872611465 +39,1.208223147377087,53.97093949044586 +40,1.180123123773344,54.55812101910828 +41,1.1974084119128574,54.31926751592356 +42,1.1623034887253099,55.72253184713376 +43,1.1629626386484522,56.19028662420382 +44,1.160576518553837,55.39410828025478 +45,1.1321049613557803,56.74761146496815 +46,1.1494016453718683,55.71257961783439 +47,1.1269069720225728,56.67794585987261 +48,1.1558231821485385,55.871815286624205 +49,1.104404681807111,58.51910828025478 +50,1.0815439387491554,58.58877388535032 +51,1.070996016833433,60.141321656050955 +52,1.0960240007206132,57.97173566878981 +53,1.0895887772748425,58.50915605095541 +54,1.065228800105441,59.6437101910828 +55,1.0703049636190864,59.23566878980892 +56,1.0740109036682517,58.83757961783439 +57,1.0630096307226047,59.63375796178344 +58,1.0498813193315153,60.977308917197455 +59,1.0559557418155063,60.51950636942675 +60,1.0493434777685031,60.1015127388535 +61,1.0341057731847094,61.49482484076433 +62,1.0395645039856054,60.82802547770701 +63,1.035596312231319,61.922770700636946 +64,1.0143071208030554,61.94267515923567 +65,1.009302842768894,61.81329617834395 +66,1.019016650451976,61.68391719745223 +67,0.9965926822583386,63.047372611464965 +68,0.9832063021173902,63.61464968152866 +69,0.9924333186665918,63.17675159235669 +70,0.979694924536784,64.23168789808918 +71,0.9802075419456336,63.55493630573248 +72,0.9961602289205903,63.485270700636946 +73,0.9727894519544711,63.80374203821656 +74,0.9949500014068214,63.6046974522293 +75,0.9291733784280765,66.56050955414013 +76,0.9544882607308163,65.21695859872611 +77,0.9265492710338277,66.05294585987261 +78,0.9410873412326642,65.7842356687898 +79,0.9429135941396094,65.68471337579618 +80,0.9402406967369614,65.45581210191082 +81,0.9327275434117408,66.10270700636943 +82,0.9200515906522229,67.30692675159236 +83,0.9189681623392044,66.89888535031847 +84,0.9122921148682855,68.23248407643312 +85,0.9098898115431427,67.10788216560509 +86,0.9014060212548372,68.23248407643312 +87,0.9152254598915197,67.21735668789809 +88,0.9007361941276841,67.90406050955414 +89,0.8818563868285744,69.27746815286625 +90,0.9301349995242563,65.97332802547771 +91,0.873135586832739,69.70541401273886 +92,0.9144628905946282,67.68511146496816 +93,0.8668459296985797,69.36703821656052 +94,0.8748139534026954,69.49641719745223 +95,0.8861734707644031,69.33718152866243 +96,0.8672366142272949,69.86464968152866 +97,0.851344989363555,70.63097133757962 +98,0.8466126732765489,70.5812101910828 +99,0.8533947782911313,70.41202229299363 +100,0.83496422790418,71.48686305732484 diff --git a/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_1_Dec3.csv b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_1_Dec3.csv new file mode 100644 index 00000000000..dad6dde12c4 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3135547394965106,9.952229299363058 +2,2.344216940509286,9.982085987261147 +3,2.3196243207166147,10.081608280254777 +4,2.2646214855704336,13.644506369426752 +5,2.2160055439942963,14.798964968152866 +6,2.15635225575441,15.276671974522293 +7,2.0974987502310687,17.097929936305732 +8,2.0342297075660367,17.764729299363058 +9,1.9854792515943005,20.193073248407643 +10,1.9462593900170295,21.466958598726116 +11,1.9305114913138615,24.09434713375796 +12,1.862824236511425,25.477707006369428 +13,1.806571837443455,27.269108280254777 +14,1.7939733547769534,28.08519108280255 +15,1.7427231764337818,30.672770700636942 +16,1.727487306685964,30.89171974522293 +17,1.7109737517727408,31.100716560509554 +18,1.6793315403021065,32.90207006369427 +19,1.6819107593244809,31.518710191082803 +20,1.6783708933812038,32.98168789808917 +21,1.6399983919350205,31.76751592356688 +22,1.6140811792604484,35.83797770700637 +23,1.6028605433785992,36.3953025477707 +24,1.5909460190754787,35.9375 +25,1.5706426960647486,37.291003184713375 +26,1.5645378099125662,37.17157643312102 +27,1.542902824225699,38.515127388535035 +28,1.531440160077089,39.082404458598724 +29,1.5261478006460105,38.83359872611465 +30,1.5180184993014973,39.17197452229299 +31,1.487440313503241,40.75437898089172 +32,1.4710545258916867,40.87380573248408 +33,1.4588018526696855,42.008359872611464 +34,1.471423770212064,41.15246815286624 +35,1.4269249378495914,42.63535031847134 +36,1.4297839873915266,42.51592356687898 +37,1.4124352719373763,44.21775477707006 +38,1.396683059680234,43.97890127388535 +39,1.380585410033062,46.02906050955414 +40,1.3841959686036323,46.666003184713375 +41,1.3572605119389334,47.27308917197452 +42,1.351750935718512,47.75079617834395 +43,1.3334368277507223,48.427547770700635 +44,1.3254097016753665,48.26831210191083 +45,1.313265010050148,49.233678343949045 +46,1.3034834421364365,49.57205414012739 +47,1.2938757481848358,50.09952229299363 +48,1.281426880010374,51.413216560509554 +49,1.2664790069980987,51.93073248407644 +50,1.2178598980235447,53.21457006369427 +51,1.2413001591992225,53.28423566878981 +52,1.2267444217280976,53.751990445859875 +53,1.2250995487923835,53.274283439490446 +54,1.2102881366280234,54.32921974522293 +55,1.201491686568898,55.72253184713376 +56,1.18774428185384,55.9812898089172 +57,1.1747164130210876,56.857085987261144 +58,1.1729676169194994,57.47412420382165 +59,1.1513317815817086,57.42436305732484 +60,1.1484738618704924,58.051353503184714 +61,1.1462089780029978,58.34992038216561 +62,1.1211126731459502,60.171178343949045 +63,1.1080460126992244,60.13136942675159 +64,1.0931092569023182,60.87778662420382 +65,1.096795659156362,61.42515923566879 +66,1.0872037323417179,61.55453821656051 +67,1.0659945162997884,62.708996815286625 +68,1.0702693959709946,62.908041401273884 +69,1.046447212908678,63.30613057324841 +70,1.0643136281116752,62.65923566878981 +71,1.0187207635041255,64.60987261146497 +72,1.019927317929116,64.72929936305732 +73,1.0094969815509334,65.33638535031847 +74,0.9994545472655326,65.60509554140127 +75,0.9781497963674509,66.23208598726114 +76,0.9878744885420344,66.1922770700637 +77,0.9799841805628151,66.56050955414013 +78,0.972448051355447,67.078025477707 +79,0.9649491496146865,67.27707006369427 +80,0.9629883303004465,67.84434713375796 +81,0.9456330222688663,67.8642515923567 +82,0.9416257363216133,67.90406050955414 +83,0.9339477647641662,68.36186305732484 +84,0.9209046242343393,68.3718152866242 +85,0.9134200147003125,69.40684713375796 +86,0.9059797301413907,69.71536624203821 +87,0.9170569356080074,69.22770700636943 +88,0.91675404226704,69.18789808917198 +89,0.8860924896920562,70.06369426751593 +90,0.8839030364516435,70.70063694267516 +91,0.8945473413558522,70.27269108280255 +92,0.8733135860437041,70.90963375796179 +93,0.86730383232141,70.9892515923567 +94,0.8517118434237826,71.52667197452229 +95,0.849801722605517,71.80533439490446 +96,0.8390645069681155,71.95461783439491 +97,0.8403918773505339,71.97452229299363 +98,0.8630754568014934,71.46695859872611 +99,0.8275319569429774,72.72093949044586 +100,0.8131749246530472,72.93988853503184 diff --git a/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_2_Dec3.csv b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_2_Dec3.csv new file mode 100644 index 00000000000..5d98e2d2729 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3147139534069474,9.952229299363058 +2,2.34464079559229,9.982085987261147 +3,2.3246383408831943,10.151273885350319 +4,2.3047021179442195,10.410031847133759 +5,2.214786988155098,15.06767515923567 +6,2.1627518811802955,14.470541401273886 +7,2.0886847114866707,16.122611464968152 +8,2.083886217919125,16.73964968152866 +9,2.008232645168426,17.505971337579616 +10,1.9690375282506274,21.148487261146496 +11,1.9363916740295992,23.07921974522293 +12,1.8819653418413393,24.830812101910826 +13,1.8304073977622257,26.303742038216562 +14,1.8023450579612879,27.348726114649683 +15,1.7957538457433129,29.0406050955414 +16,1.7443277699172877,29.13017515923567 +17,1.7210451174693502,30.254777070063696 +18,1.6826258700364713,31.86703821656051 +19,1.685404905847683,30.31449044585987 +20,1.6694125878583095,32.61345541401274 +21,1.6494589755489568,32.494028662420384 +22,1.622430331388097,33.36982484076433 +23,1.6133818049339732,35.001990445859875 +24,1.6122729778289795,34.85270700636943 +25,1.5907375865681157,35.54936305732484 +26,1.579520854980323,36.455015923566876 +27,1.5701175867372257,35.83797770700637 +28,1.5350959445260892,38.296178343949045 +29,1.535917929782989,38.3359872611465 +30,1.5174423129695236,38.55493630573248 +31,1.512780982217971,39.56011146496815 +32,1.4870611679781773,40.863853503184714 +33,1.484181762500933,40.774283439490446 +34,1.4618715890653573,42.04816878980892 +35,1.4553969893485876,42.366640127388536 +36,1.4362040302556032,42.9140127388535 +37,1.4565660649803793,43.31210191082803 +38,1.404766640086083,44.21775477707006 +39,1.3962353422383593,44.964171974522294 +40,1.3811506017757829,45.48168789808917 +41,1.3785646751428107,45.461783439490446 +42,1.3492017004899919,47.1437101910828 +43,1.3344152080025642,48.34792993630573 +44,1.3137321692363473,50.22890127388535 +45,1.3158000700033394,49.19386942675159 +46,1.3019874285740458,49.960191082802545 +47,1.2825466280530213,50.995222929936304 +48,1.2719985284623068,52.328821656050955 +49,1.2518297532561478,53.17476114649681 +50,1.2103101531411433,54.18988853503185 +51,1.2602591552552145,53.43351910828026 +52,1.2182593801218993,54.677547770700635 +53,1.2120021342471907,55.49363057324841 +54,1.185896565200417,56.36942675159236 +55,1.1837374438905413,56.72770700636943 +56,1.1655600845434104,57.76273885350319 +57,1.155435061758491,57.87221337579618 +58,1.1450716120422266,58.94705414012739 +59,1.1277169463740793,60.05175159235669 +60,1.122649261146594,60.41003184713376 +61,1.103267922143268,61.79339171974522 +62,1.08170316781208,62.36066878980892 +63,1.0857406095334678,62.480095541401276 +64,1.0682084674288512,63.05732484076433 +65,1.0395180286875196,64.45063694267516 +66,1.0393169488117193,64.7890127388535 +67,1.028746341444125,64.88853503184713 +68,1.0013128853147957,66.3017515923567 +69,1.0038336306620554,66.42117834394904 +70,0.990940677891871,66.67993630573248 +71,0.9742954111402962,67.49601910828025 +72,1.021578232194208,65.69466560509554 +73,0.965171686403311,67.7249203821656 +74,0.9578087906928578,67.7249203821656 +75,0.9379855367788084,68.15286624203821 +76,0.9406256504878876,68.32205414012739 +77,0.9265458306689172,68.71019108280255 +78,0.9399232685945595,68.28224522292993 +79,0.910143349580704,69.75517515923566 +80,0.9081217175836016,69.34713375796179 +81,0.9060610024033079,69.32722929936305 +82,0.903259783034112,69.70541401273886 +83,0.8776385165323877,70.70063694267516 +84,0.8983035607702413,69.6656050955414 +85,0.8743056613168899,70.65087579617834 +86,0.8742591624806642,70.78025477707007 +87,0.8847213224240928,70.49164012738854 +88,0.8721467226174227,70.9593949044586 +89,0.8583731412128278,71.53662420382166 +90,0.8462319339916204,71.93471337579618 +91,0.8484674058142742,71.90485668789809 +92,0.8383232605685095,72.48208598726114 +93,0.8514896352199992,71.72571656050955 +94,0.8354212311422748,72.42237261146497 +95,0.8299666781714008,72.40246815286625 +96,0.8237471863342698,72.77070063694268 +97,0.8175628997717693,73.08917197452229 +98,0.8237992872478096,72.48208598726114 +99,0.8168938714227859,72.83041401273886 +100,0.7987781848497452,73.5967356687898 diff --git a/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_3_Dec3.csv b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_3_Dec3.csv new file mode 100644 index 00000000000..c4e1a0e05a4 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.314263746237299,9.952229299363058 +2,2.3401927735395494,11.75358280254777 +3,2.3290886362646797,10.071656050955413 +4,2.2686850174217468,14.380971337579618 +5,2.1950367438565395,14.629777070063694 +6,2.1676373269147935,14.609872611464969 +7,2.068650960922241,16.0828025477707 +8,2.070951163389121,15.993232484076433 +9,2.023515052856154,17.406449044585987 +10,2.0123133082298716,18.23248407643312 +11,1.966059431908237,22.26313694267516 +12,1.9059043090054943,23.845541401273884 +13,1.865924652974317,26.025079617834393 +14,1.8056296983342262,27.746815286624205 +15,1.7725826365173243,28.174761146496817 +16,1.7453839505554005,29.189888535031848 +17,1.7377110165395555,29.6875 +18,1.7009895098437169,30.224920382165607 +19,1.6916834662674338,32.245222929936304 +20,1.6533711541230511,32.19546178343949 +21,1.628791411970831,35.2109872611465 +22,1.6164503591075825,34.66361464968153 +23,1.6010602872083142,36.13654458598726 +24,1.5774073600769043,36.83320063694268 +25,1.5798482257089796,36.544585987261144 +26,1.5464552238488654,38.34593949044586 +27,1.528520355558699,39.659633757961785 +28,1.5859148601058182,38.017515923566876 +29,1.4927165136215792,40.19705414012739 +30,1.4824285795734187,39.7093949044586 +31,1.465888383282218,41.79936305732484 +32,1.4744838445809236,41.281847133757964 +33,1.4383888434452616,43.182722929936304 +34,1.4342321438394534,43.123009554140125 +35,1.402001690712704,43.65047770700637 +36,1.4138060284268326,43.680334394904456 +37,1.375894832762943,45.71058917197452 +38,1.364658348879237,45.84992038216561 +39,1.3604850313466066,46.218152866242036 +40,1.3368414890993932,47.09394904458599 +41,1.3315764217619683,47.41242038216561 +42,1.3139995526356303,49.22372611464968 +43,1.3183744986345813,48.38773885350319 +44,1.3035829386134057,49.22372611464968 +45,1.278550564103825,50.16918789808917 +46,1.2778215863902098,49.89052547770701 +47,1.2757866238332858,51.602308917197455 +48,1.2463604652198257,52.0203025477707 +49,1.230460098594617,52.99562101910828 +50,1.197322329518142,52.886146496815286 +51,1.2269423349647766,52.59753184713376 +52,1.2006737491127792,53.90127388535032 +53,1.193821443873606,54.110270700636946 +54,1.178846723714452,54.56807324840764 +55,1.183770223028341,54.96616242038217 +56,1.1830056670365061,55.294585987261144 +57,1.155296104728796,56.3296178343949 +58,1.15205980524136,56.50875796178344 +59,1.1366239045835604,57.48407643312102 +60,1.13037377519972,57.663216560509554 +61,1.1308081172833777,58.09116242038217 +62,1.1128159875323058,58.807722929936304 +63,1.0965566426325755,59.42476114649681 +64,1.10338629431026,58.52906050955414 +65,1.0833022161653847,60.48964968152866 +66,1.0680778056952605,61.49482484076433 +67,1.056546458013498,61.892914012738856 +68,1.0576839925377233,61.902866242038215 +69,1.0471492914637184,62.65923566878981 +70,1.0377780977328113,63.495222929936304 +71,1.0297665094873707,64.24164012738854 +72,1.0047241851782343,65.10748407643312 +73,1.0015759494653933,65.1671974522293 +74,0.9982544874689382,65.12738853503184 +75,0.9779278370225506,65.7842356687898 +76,0.9717319197715468,66.4609872611465 +77,0.975071469309983,65.98328025477707 +78,0.9630559618306008,66.98845541401273 +79,0.9554350360943253,66.9187898089172 +80,0.9314420625662349,68.45143312101911 +81,0.9218258356592458,68.53105095541402 +82,0.9412743092342547,68.03343949044586 +83,0.9045071829656127,69.22770700636943 +84,0.9433413204873443,68.06329617834395 +85,0.9004242287319937,69.7750796178344 +86,0.8915142849752098,70.0437898089172 +87,0.8856788046041112,70.19307324840764 +88,0.8806577662753451,70.1234076433121 +89,0.8702338861811693,70.53144904458598 +90,0.8529793244258613,70.99920382165605 +91,0.8611890692619761,70.9892515923567 +92,0.8482430520331025,71.06886942675159 +93,0.8518462310171431,71.26791401273886 +94,0.8308446016281273,71.96457006369427 +95,0.8376433458297875,71.62619426751593 +96,0.8275630614560121,71.95461783439491 +97,0.8361516162088722,71.75557324840764 +98,0.8319728313737614,72.18351910828025 +99,0.8337777621427159,71.984474522293 +100,0.8098878439064998,72.70103503184713 diff --git a/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_4_Dec3.csv b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_4_Dec3.csv new file mode 100644 index 00000000000..fb64f61174f --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_4_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.317027549075473,10.101512738853502 +2,2.345458984375,9.982085987261147 +3,2.3246472443744635,10.09156050955414 +4,2.2744314959094782,14.271496815286625 +5,2.212826915607331,16.968550955414013 +6,2.1674743913541175,14.699442675159236 +7,2.117692031678121,15.356289808917197 +8,2.051082664993918,16.321656050955415 +9,2.0174033930347224,18.023487261146496 +10,1.976600760107587,19.92436305732484 +11,1.9265358713781757,23.347929936305732 +12,1.859536580978685,26.76154458598726 +13,1.8347786839600582,26.373407643312103 +14,1.7690229210883948,28.433519108280255 +15,1.7387390372100149,28.861464968152866 +16,1.720188396751501,29.16998407643312 +17,1.6942666746248864,29.61783439490446 +18,1.6976327341832933,29.936305732484076 +19,1.6684921045971524,32.67316878980892 +20,1.6568794561799165,31.76751592356688 +21,1.6284966651041797,34.84275477707006 +22,1.6019620948536382,34.136146496815286 +23,1.618663323153356,34.40485668789809 +24,1.578346042876031,36.345541401273884 +25,1.5641485513395565,36.763535031847134 +26,1.5632383557641583,37.480095541401276 +27,1.5278504395940502,38.58479299363057 +28,1.5243525003931324,38.067277070063696 +29,1.514137864112854,39.37101910828026 +30,1.5086707757536773,38.9828821656051 +31,1.4716545814161848,40.8937101910828 +32,1.456950012285998,41.16242038216561 +33,1.462908771387331,42.28702229299363 +34,1.4363894713152745,42.71496815286624 +35,1.4313981829175524,42.74482484076433 +36,1.4101839551500455,43.69028662420382 +37,1.39495690309318,44.516321656050955 +38,1.3922959801497732,44.406847133757964 +39,1.3653675811305928,44.964171974522294 +40,1.3524353230834767,46.884952229299365 +41,1.349451643646143,47.13375796178344 +42,1.3443739566074056,47.26313694267516 +43,1.3225398063659668,48.80573248407644 +44,1.3043620639545903,49.7312898089172 +45,1.3216610896359584,49.02468152866242 +46,1.306683068822144,49.69148089171974 +47,1.2766380165792575,51.383359872611464 +48,1.2700037534829158,52.03025477707006 +49,1.2608744729856016,52.45820063694268 +50,1.214590213860676,53.35390127388535 +51,1.2159663165450856,53.81170382165605 +52,1.2148886816516804,53.42356687898089 +53,1.2190928071927114,54.309315286624205 +54,1.1939984108232389,55.702627388535035 +55,1.1970675887575575,54.82683121019108 +56,1.1698591120683464,56.41918789808917 +57,1.1703004791478442,56.767515923566876 +58,1.147495664229059,57.78264331210191 +59,1.1404331258148144,57.91202229299363 +60,1.1326769514448325,58.06130573248408 +61,1.113459945104684,59.444665605095544 +62,1.1003028416329887,60.390127388535035 +63,1.086189090446302,61.0171178343949 +64,1.0749634929523346,61.484872611464965 +65,1.0733773135075904,61.94267515923567 +66,1.0524639806170373,62.7687101910828 +67,1.0403771320725703,63.16679936305732 +68,1.080077417337211,62.89808917197452 +69,1.0371882824381446,64.21178343949045 +70,1.0092752184837488,64.50039808917198 +71,0.9950040032149879,66.15246815286625 +72,0.9714164980657541,67.17754777070064 +73,0.9824362507291661,66.53065286624204 +74,0.9545215307527287,67.48606687898089 +75,0.9341163172084055,68.09315286624204 +76,0.9365487326482299,68.5609076433121 +77,0.9484692029892259,68.01353503184713 +78,0.9366516687308147,68.41162420382166 +79,0.925534982590159,68.859474522293 +80,0.9098493304981548,69.48646496815287 +81,0.9096323509884489,69.6656050955414 +82,0.8900254558605752,70.22292993630573 +83,0.8973176794446958,70.02388535031847 +84,0.8952274872998524,70.06369426751593 +85,0.882339163570647,70.72054140127389 +86,0.8788659602973112,70.7703025477707 +87,0.8615436626088088,70.91958598726114 +88,0.8805693680313742,70.59116242038216 +89,0.8858134924985801,70.64092356687898 +90,0.8459908092857167,71.93471337579618 +91,0.8496774028820596,71.54657643312102 +92,0.8335987982476593,72.11385350318471 +93,0.8297730634926231,72.12380573248407 +94,0.8417973617079911,71.95461783439491 +95,0.8393499733536107,72.01433121019109 +96,0.814481330904991,72.73089171974522 +97,0.8219596542370547,72.4124203821656 +98,0.8052468197360919,73.29816878980891 +99,0.802708297778087,73.2484076433121 +100,0.8050118775884058,72.9796974522293 diff --git a/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_5_Dec3.csv b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_5_Dec3.csv new file mode 100644 index 00000000000..532926c297a --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_5_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.315430316196126,9.982085987261147 +2,2.3491704479144637,9.982085987261147 +3,2.320843576625654,12.320859872611464 +4,2.2465061640283865,15.207006369426752 +5,2.2072000306123383,14.460589171974522 +6,2.1535717545041613,14.58001592356688 +7,2.0912327637338333,15.913614649681529 +8,2.0962601915286605,15.714570063694268 +9,1.9646519452902922,20.501592356687897 +10,1.9696680216272926,21.267914012738853 +11,1.9132582025163491,22.88017515923567 +12,1.8455573047042653,27.030254777070063 +13,1.7687688192744164,29.568073248407643 +14,1.7757560060282422,30.035828025477706 +15,1.7229043738857197,31.170382165605094 +16,1.7120591447611524,30.324442675159236 +17,1.6914855909954971,32.59355095541401 +18,1.6579665788419686,31.79737261146497 +19,1.6667168990821595,32.75278662420382 +20,1.6379207228399386,34.60390127388535 +21,1.6062180783338607,34.76313694267516 +22,1.5885582820625062,35.9375 +23,1.586165087238239,36.26592356687898 +24,1.5691108035433823,37.45023885350319 +25,1.5721583123419696,35.68869426751592 +26,1.5457751811689633,39.241640127388536 +27,1.5299418580000568,38.853503184713375 +28,1.5158241159597021,39.19187898089172 +29,1.5074147031565381,40.386146496815286 +30,1.4869140181571814,40.68471337579618 +31,1.4721314140186188,41.73964968152866 +32,1.4652758859525061,41.71974522292994 +33,1.4482166372287046,42.038216560509554 +34,1.4452107658811435,42.32683121019108 +35,1.4182551636058054,43.958996815286625 +36,1.401180447286861,44.13813694267516 +37,1.399562276093064,44.97412420382165 +38,1.3759621465282075,45.919585987261144 +39,1.363953461312944,46.43710191082803 +40,1.340799425817599,48.01950636942675 +41,1.335506712555126,48.06926751592356 +42,1.3151391205514313,48.646496815286625 +43,1.299898616067923,50.348328025477706 +44,1.2943381853164382,49.86066878980892 +45,1.290559102775185,51.244028662420384 +46,1.2781554976846004,51.16441082802548 +47,1.2511360800949631,52.69705414012739 +48,1.263110172976354,52.48805732484077 +49,1.2302108441188837,53.46337579617835 +50,1.1879209348350575,54.02070063694268 +51,1.2018505486713094,54.65764331210191 +52,1.1936523193007063,54.82683121019108 +53,1.1847949301361278,56.240047770700635 +54,1.1841774529712215,55.5234872611465 +55,1.2053851667483142,56.02109872611465 +56,1.2131160379974706,55.901671974522294 +57,1.1595998102692282,56.95660828025478 +58,1.1448252835091512,57.633359872611464 +59,1.1328759679369107,58.17078025477707 +60,1.1174195761893206,59.08638535031847 +61,1.1192746207972242,58.67834394904459 +62,1.095485443142569,60.42993630573248 +63,1.0971464389448713,60.559315286624205 +64,1.0746499110179342,61.36544585987261 +65,1.0701211709885081,61.82324840764331 +66,1.055181196540784,61.94267515923567 +67,1.0408569893259911,63.11703821656051 +68,1.0358263276944495,63.4156050955414 +69,1.022902228650014,63.76393312101911 +70,1.0282645502667518,63.684315286624205 +71,1.0022752091383478,65.14729299363057 +72,1.011205192584141,64.93829617834395 +73,1.0004605852114927,64.91839171974522 +74,0.9929017887753286,65.50557324840764 +75,0.9703349174967237,66.34156050955414 +76,0.9601219125614044,66.59036624203821 +77,0.9595754917260189,66.59036624203821 +78,0.9489301579773046,67.42635350318471 +79,0.9383796943221122,67.43630573248407 +80,0.9464645530008207,67.66520700636943 +81,0.9197324651062109,68.77985668789809 +82,0.9199592433158,68.84952229299363 +83,0.911854137280944,69.46656050955414 +84,0.9102132377351165,69.61584394904459 +85,0.8969539654482702,69.54617834394904 +86,0.9114681163411231,69.52627388535032 +87,0.8840666933424154,70.45183121019109 +88,0.8776247341921375,70.45183121019109 +89,0.8939156600624133,69.87460191082802 +90,0.8799091106767107,70.1532643312102 +91,0.857206715140373,70.63097133757962 +92,0.8598429351855236,70.73049363057325 +93,0.8531708910966375,71.06886942675159 +94,0.8479141118420157,71.53662420382166 +95,0.824455082036887,72.07404458598727 +96,0.8303683616553142,71.85509554140127 +97,0.8253633660875308,72.30294585987261 +98,0.8275363991974266,72.29299363057325 +99,0.824103370973259,72.59156050955414 +100,0.8126052147263934,72.42237261146497 diff --git a/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_6_Dec3.csv b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_6_Dec3.csv new file mode 100644 index 00000000000..c956a9f4f75 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_False_seed_6_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.315313503241083,9.952229299363058 +2,2.3498861759331575,9.982085987261147 +3,2.324943524257393,11.464968152866241 +4,2.299153832113667,11.176353503184714 +5,2.2249157762831184,14.251592356687897 +6,2.148574338597097,16.431130573248407 +7,2.116633986971181,16.232085987261147 +8,2.0346846428646406,17.535828025477706 +9,2.033553240405526,18.212579617834393 +10,1.9367874093875763,19.386942675159236 +11,1.9105787482231287,23.47730891719745 +12,1.8712920861639035,24.06449044585987 +13,1.8542506011428348,26.07484076433121 +14,1.7916615700266163,27.358678343949045 +15,1.759432723567744,28.592754777070063 +16,1.7595680177591408,28.960987261146496 +17,1.735943093421353,29.110270700636942 +18,1.705435866762878,30.254777070063696 +19,1.6842715034059659,30.66281847133758 +20,1.6839164062670082,30.66281847133758 +21,1.6304056340721762,33.130971337579616 +22,1.6378882705785667,32.31488853503185 +23,1.6397853262105566,32.434315286624205 +24,1.5983733819548491,33.97691082802548 +25,1.5845740251480394,35.25079617834395 +26,1.558767459954426,37.21138535031847 +27,1.550349652387534,36.72372611464968 +28,1.55528112885299,36.88296178343949 +29,1.5250810339192675,38.35589171974522 +30,1.5195578944151569,38.16679936305732 +31,1.5103132937364518,39.211783439490446 +32,1.4814334264986075,39.46058917197452 +33,1.4624858851645404,40.79418789808917 +34,1.4463320142903906,42.1078821656051 +35,1.4392171999451462,41.590366242038215 +36,1.4154980311727827,43.541003184713375 +37,1.4028685237192045,43.988853503184714 +38,1.4039325433172238,45.26273885350319 +39,1.4238619098238126,43.36186305732484 +40,1.3691594577898645,46.15843949044586 +41,1.3578160659522767,47.03423566878981 +42,1.3208598293316591,49.30334394904459 +43,1.3177019600655622,49.392914012738856 +44,1.3017765792312137,50.796178343949045 +45,1.2970956472834205,50.68670382165605 +46,1.2849505562691172,51.85111464968153 +47,1.2704812360417312,52.607484076433124 +48,1.2658768789783406,52.498009554140125 +49,1.2498207582030327,53.87141719745223 +50,1.1999798568950337,54.8765923566879 +51,1.2111261995734683,55.85191082802548 +52,1.2083594597828615,55.35429936305732 +53,1.205374797058713,55.702627388535035 +54,1.1954770741189362,56.100716560509554 +55,1.1698835465558775,58.51910828025478 +56,1.1788817412534338,57.69307324840764 +57,1.152175441669051,58.90724522292994 +58,1.1416804205839801,59.21576433121019 +59,1.13793793073885,59.88256369426752 +60,1.1175986019669064,60.698646496815286 +61,1.1049000719550308,61.18630573248408 +62,1.1018860260392451,61.26592356687898 +63,1.0881031956642297,62.21138535031847 +64,1.0749216296110944,63.02746815286624 +65,1.0624342902450805,63.913216560509554 +66,1.0506819429670928,63.913216560509554 +67,1.04999081420291,64.12221337579618 +68,1.0279906722390728,65.28662420382166 +69,1.0142494694442505,66.18232484076434 +70,1.008356811514326,66.1624203821656 +71,1.0132957970260814,66.0828025477707 +72,1.0066612837420907,66.3017515923567 +73,0.9764680372681588,67.7547770700637 +74,0.9816226894688455,67.44625796178345 +75,0.9563259816473457,67.97372611464968 +76,0.9472276321641958,68.78980891719745 +77,0.9498131677603266,68.61066878980891 +78,0.9444335911683975,68.46138535031847 +79,0.9303507922561305,69.06847133757962 +80,0.9205444713307035,69.30732484076434 +81,0.9094474687697781,69.94426751592357 +82,0.8949980986346106,70.24283439490446 +83,0.9005098821251256,70.43192675159236 +84,0.9105086448086295,69.21775477707007 +85,0.8756869913666112,71.29777070063695 +86,0.8844223705826292,70.39211783439491 +87,0.8770427514033713,71.1982484076433 +88,0.8893891504615735,70.38216560509554 +89,0.8783366414392071,71.07882165605096 +90,0.8564923242398887,71.84514331210191 +91,0.858526417024576,71.47691082802548 +92,0.862094594035179,71.66600318471338 +93,0.8422982013149626,72.12380573248407 +94,0.8450518535200957,72.34275477707007 +95,0.841877933140773,71.95461783439491 +96,0.8343808366234895,72.81050955414013 +97,0.8310173685383645,72.49203821656052 +98,0.8199173586004099,72.82046178343948 +99,0.8136242077608776,73.07921974522293 +100,0.8082184436594605,73.44745222929936 diff --git a/baselines/fednova/fednova/results/momentum_fednova_varEpoch_True_seed_1_Dec3.csv b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_True_seed_1_Dec3.csv new file mode 100644 index 00000000000..ba8d1d19042 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_True_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3203083709546717,9.952229299363058 +2,2.384943433627961,9.982085987261147 +3,2.3287173471633036,11.405254777070065 +4,2.25026817078803,15.10748407643312 +5,2.196119592447949,15.06767515923567 +6,2.096928544864533,15.833996815286625 +7,2.0293817269574306,19.27746815286624 +8,1.9948512262599483,26.293789808917197 +9,1.8843709883416535,28.18471337579618 +10,1.8074416165139264,30.34434713375796 +11,1.788781068886921,30.493630573248407 +12,1.768791342237193,27.916003184713375 +13,1.7114313985132108,29.866640127388536 +14,1.6734380585372828,32.90207006369427 +15,1.6833405631363012,33.36982484076433 +16,1.7133081437675817,30.513535031847134 +17,1.61405412027031,36.21616242038217 +18,1.609245379259632,35.26074840764331 +19,1.5974712318675532,35.6687898089172 +20,1.6059236458152721,32.772691082802545 +21,1.5402898818823942,39.32125796178344 +22,1.5454396586509267,37.52985668789809 +23,1.5407592172075988,39.74920382165605 +24,1.5523313283920288,36.902866242038215 +25,1.4674403409289707,42.21735668789809 +26,1.4765250014651352,41.4609872611465 +27,1.4459249935332377,41.79936305732484 +28,1.4157475278635694,43.182722929936304 +29,1.4115679719645506,42.505971337579616 +30,1.390727729554389,44.84474522292994 +31,1.3838470035297856,45.302547770700635 +32,1.3785051525018777,45.322452229299365 +33,1.3483075267949682,46.92476114649681 +34,1.3609037141131748,46.267914012738856 +35,1.334052090432234,46.7953821656051 +36,1.3205944793239521,48.15883757961783 +37,1.3037464413673254,49.432722929936304 +38,1.27821400438904,50.4578025477707 +39,1.2969355416146053,49.9203821656051 +40,1.259517879622757,50.44785031847134 +41,1.279625462878282,49.402866242038215 +42,1.2604096903922453,50.179140127388536 +43,1.2370340827923672,51.582404458598724 +44,1.2329290285231962,53.951035031847134 +45,1.2134940100323623,54.6875 +46,1.1932604897553754,53.49323248407644 +47,1.1774974081926286,54.74721337579618 +48,1.1416699624365303,59.63375796178344 +49,1.1469076678251764,58.20063694267516 +50,1.089329202084025,59.28542993630573 +51,1.123306768715002,57.92197452229299 +52,1.127336416654526,56.628184713375795 +53,1.110751061302841,58.42953821656051 +54,1.1676020398261442,57.86226114649681 +55,1.1058319237581484,60.06170382165605 +56,1.130458468084882,58.469347133757964 +57,1.0696866212377123,61.02707006369427 +58,1.0667408811058967,62.460191082802545 +59,1.064360850176234,63.1468949044586 +60,1.0081234969151247,65.59514331210191 +61,1.0083060849244427,62.69904458598726 +62,1.0250805688511795,64.05254777070064 +63,0.9925989599744226,64.8984872611465 +64,1.0162813545791967,64.36106687898089 +65,1.0054551564204466,63.485270700636946 +66,1.01845583984047,64.23168789808918 +67,0.9677447148948718,65.20700636942675 +68,0.9522840991900985,66.82921974522293 +69,0.9523977500617884,66.93869426751593 +70,0.9640531452598086,66.6500796178344 +71,0.9194729988742026,68.33200636942675 +72,0.9054532985019076,68.95899681528662 +73,0.9083218920003077,67.9140127388535 +74,0.9257788293680568,68.45143312101911 +75,0.886779553191677,69.86464968152866 +76,0.9152344157741328,66.8093152866242 +77,0.9314210988154077,68.0732484076433 +78,0.9072837598004918,68.09315286624204 +79,0.9206869541459782,69.18789808917198 +80,0.888636299569136,69.7452229299363 +81,0.8926445477327724,70.19307324840764 +82,0.8940731518587489,68.35191082802548 +83,0.8760268354112175,70.76035031847134 +84,0.8580597153135167,69.9343152866242 +85,0.8803939299218974,70.44187898089172 +86,0.8215797108829401,72.24323248407643 +87,0.8557075334202712,71.43710191082802 +88,0.8690313233691416,70.36226114649682 +89,0.8778923495559935,70.00398089171975 +90,0.929423344932544,66.48089171974522 +91,0.8400667833674486,71.01910828025478 +92,0.8904012118934825,68.57085987261146 +93,0.8667586130701053,71.37738853503184 +94,0.7957107479784898,73.30812101910828 +95,0.783304943020936,73.52707006369427 +96,0.8434412551533644,70.99920382165605 +97,0.8524950716146238,71.62619426751593 +98,0.8032656067116245,72.73089171974522 +99,0.7939217815733259,73.21855095541402 +100,0.7824003299710097,73.98487261146497 diff --git a/baselines/fednova/fednova/results/momentum_fednova_varEpoch_True_seed_2_Dec3.csv b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_True_seed_2_Dec3.csv new file mode 100644 index 00000000000..ba5507a6988 --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_True_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.328766090854718,9.952229299363058 +2,2.375479292717709,9.982085987261147 +3,2.3487376832658318,11.03702229299363 +4,2.2941711495636374,13.634554140127388 +5,2.1962851673174817,13.992834394904458 +6,2.0841903177795897,17.595541401273884 +7,2.0379630456304856,25.97531847133758 +8,1.9229273826453337,26.880971337579616 +9,1.8811618173198335,29.309315286624205 +10,1.7908686513354064,30.423964968152866 +11,1.7956150663886101,28.632563694267517 +12,1.7311383440236376,29.289410828025478 +13,1.6824418799892353,32.71297770700637 +14,1.7180771804918908,32.832404458598724 +15,1.7137324961887044,30.76234076433121 +16,1.6222982300314934,35.45979299363057 +17,1.625285768964488,35.70859872611465 +18,1.6467149280438758,35.01194267515923 +19,1.6279560805885656,31.66799363057325 +20,1.5375846563630802,39.3312101910828 +21,1.5590749546221108,36.49482484076433 +22,1.5355231405063798,38.96297770700637 +23,1.5099353577680648,36.285828025477706 +24,1.4736676200939591,40.11743630573248 +25,1.4682120266993335,40.45581210191083 +26,1.4362755641815768,41.251990445859875 +27,1.4029367949552596,43.11305732484077 +28,1.39152839533083,43.11305732484077 +29,1.3864000982539668,43.929140127388536 +30,1.3620178942467756,45.5015923566879 +31,1.3567153595055743,45.20302547770701 +32,1.3516542235757136,46.23805732484077 +33,1.344573173553321,46.54657643312102 +34,1.325715300383841,45.99920382165605 +35,1.3065490988409443,48.00955414012739 +36,1.296390153040552,49.71138535031847 +37,1.250981072711337,52.76671974522293 +38,1.2423666089203707,53.125 +39,1.234350201430594,53.7718949044586 +40,1.2303493410159068,52.75676751592356 +41,1.2092165525551815,52.67714968152866 +42,1.1872403895019725,55.423964968152866 +43,1.2062602661977149,55.11544585987261 +44,1.1914843472705525,56.40923566878981 +45,1.1419024049856101,58.389729299363054 +46,1.1626573261941315,56.00119426751592 +47,1.0965431700846193,61.564490445859875 +48,1.1207816938685764,60.728503184713375 +49,1.1252170994782904,58.42953821656051 +50,1.0265214864615422,63.86345541401274 +51,1.0613301149599113,62.350716560509554 +52,1.0868661084752174,60.9375 +53,1.1268898074034672,59.15605095541401 +54,1.0483068968080411,62.878184713375795 +55,1.0868387302015996,60.70859872611465 +56,1.05031388352631,61.80334394904459 +57,1.0358185149302148,64.21178343949045 +58,1.0093098670054392,66.0828025477707 +59,1.0081159225694694,64.9482484076433 +60,0.9731597987709532,65.85390127388536 +61,1.0481393379010973,62.291003184713375 +62,0.9742026530253659,66.63017515923566 +63,1.037516624304899,64.13216560509554 +64,0.9577233126968335,67.25716560509554 +65,0.9911314332561129,66.01313694267516 +66,0.9615019764869835,67.70501592356688 +67,0.9062592592209008,69.09832802547771 +68,0.9259072181525504,68.13296178343948 +69,0.9532586909403467,67.65525477707007 +70,0.9098307820642071,69.30732484076434 +71,0.8820068972885229,70.32245222929936 +72,0.9074244187895659,68.70023885350318 +73,0.8992794801475136,69.79498407643312 +74,0.9092394489391594,69.10828025477707 +75,0.870040478979706,70.91958598726114 +76,0.9072067942588952,69.53622611464968 +77,0.8627474691457809,70.9593949044586 +78,0.8890821774294422,70.30254777070064 +79,0.8411495032583832,72.10390127388536 +80,0.8616295282248478,71.82523885350318 +81,0.8392665369115817,71.875 +82,0.8421442831397816,72.46218152866243 +83,0.8245302693099733,72.70103503184713 +84,0.8122322549865504,73.19864649681529 +85,0.8246738979011584,72.48208598726114 +86,0.8117335905694658,73.56687898089172 +87,0.8425211046531702,71.67595541401273 +88,0.8138641732133878,72.42237261146497 +89,0.850558850226129,71.32762738853503 +90,0.7852241376023383,73.57683121019109 +91,0.8336461072514771,71.99442675159236 +92,0.790436333341963,74.04458598726114 +93,0.7803474643807502,74.79100318471338 +94,0.7499612021218439,75.33837579617834 +95,0.8055823982521227,73.08917197452229 +96,0.8290568561690628,72.89012738853503 +97,0.77132226669105,74.78105095541402 +98,0.7833673270644655,73.94506369426752 +99,0.7541770086546612,75.52746815286625 +100,0.7704874723200585,74.5421974522293 diff --git a/baselines/fednova/fednova/results/momentum_fednova_varEpoch_True_seed_3_Dec3.csv b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_True_seed_3_Dec3.csv new file mode 100644 index 00000000000..b54307a0c9b --- /dev/null +++ b/baselines/fednova/fednova/results/momentum_fednova_varEpoch_True_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3225013146734543,9.952229299363058 +2,2.3802450857344706,9.982085987261147 +3,2.345780094717718,10.917595541401274 +4,2.2629618538413077,11.52468152866242 +5,2.265351380512213,13.266321656050955 +6,2.0814856419897385,19.566082802547772 +7,2.0250986419665584,19.247611464968152 +8,1.9976169797265606,20.630971337579616 +9,1.9241205059039366,25.05971337579618 +10,1.9117865289092824,23.218550955414013 +11,1.8237602733502722,26.59235668789809 +12,1.7315027554323719,29.976114649681527 +13,1.7500825467383025,32.56369426751592 +14,1.7550078023011517,30.055732484076433 +15,1.6541311589016277,33.69824840764331 +16,1.6488670862404404,33.78781847133758 +17,1.621961822175676,34.8328025477707 +18,1.6610137269755079,31.160429936305732 +19,1.5766749480727371,37.62937898089172 +20,1.5757420412294425,35.171178343949045 +21,1.5546274564828082,39.19187898089172 +22,1.5674691450823643,35.1015127388535 +23,1.5081658727803808,39.271496815286625 +24,1.5121889919232412,39.629777070063696 +25,1.463021323939038,41.33160828025478 +26,1.4483181017978934,41.26194267515923 +27,1.4454606725911425,41.40127388535032 +28,1.4279407596891853,42.794585987261144 +29,1.4109146055901887,43.710191082802545 +30,1.3939261056814984,44.2078025477707 +31,1.3787023740209592,45.53144904458599 +32,1.409825422961241,44.765127388535035 +33,1.383132459251744,46.25796178343949 +34,1.3539738374151242,47.54179936305732 +35,1.3370959599306629,47.56170382165605 +36,1.30789571051385,48.8953025477707 +37,1.2931420203227146,49.69148089171974 +38,1.2609490596564712,50.318471337579616 +39,1.2788416063709624,50.38813694267516 +40,1.280462322721056,49.2734872611465 +41,1.2307913804509838,52.48805732484077 +42,1.257760219513231,52.33877388535032 +43,1.235987843601567,54.508359872611464 +44,1.2056774216093076,54.18988853503185 +45,1.1788547597113688,54.71735668789809 +46,1.1439457201653984,59.14609872611465 +47,1.17132217109583,57.10589171974522 +48,1.1663959436355882,55.46377388535032 +49,1.1282274309237292,59.28542993630573 +50,1.0514636316876502,61.982484076433124 +51,1.1383030061509198,58.39968152866242 +52,1.179720200550784,57.046178343949045 +53,1.1055978267056168,58.409633757961785 +54,1.1189524182088815,59.71337579617835 +55,1.0633237555528143,59.952229299363054 +56,1.0731252268621116,61.68391719745223 +57,1.0655491458382575,63.047372611464965 +58,,10.011942675159236 +59,,10.011942675159236 +60,,10.011942675159236 +61,,10.011942675159236 +62,,10.011942675159236 +63,,10.011942675159236 +64,,10.011942675159236 +65,,10.011942675159236 +66,,10.011942675159236 +67,,10.011942675159236 +68,,10.011942675159236 +69,,10.011942675159236 +70,,10.011942675159236 +71,,10.011942675159236 +72,,10.011942675159236 +73,,10.011942675159236 +74,,10.011942675159236 +75,,10.011942675159236 +76,,10.011942675159236 +77,,10.011942675159236 +78,,10.011942675159236 +79,,10.011942675159236 +80,,10.011942675159236 +81,,10.011942675159236 +82,,10.011942675159236 +83,,10.011942675159236 +84,,10.011942675159236 +85,,10.011942675159236 +86,,10.011942675159236 +87,,10.011942675159236 +88,,10.011942675159236 +89,,10.011942675159236 +90,,10.011942675159236 +91,,10.011942675159236 +92,,10.011942675159236 +93,,10.011942675159236 +94,,10.011942675159236 +95,,10.011942675159236 +96,,10.011942675159236 +97,,10.011942675159236 +98,,10.011942675159236 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_1_Dec3.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_1_Dec3.csv new file mode 100644 index 00000000000..a949da08777 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3215920302518613,9.952229299363058 +2,2.346154481742033,9.952229299363058 +3,2.3099581846006356,17.11783439490446 +4,2.242325755441265,20.93949044585987 +5,2.2112043329105258,22.39251592356688 +6,2.1649435735811853,23.23845541401274 +7,2.1452860687948334,23.56687898089172 +8,2.094489190229185,24.213773885350317 +9,2.0966664841220637,24.392914012738853 +10,2.04546690670548,24.681528662420384 +11,1.9859848561560272,25.65684713375796 +12,1.9345484501237322,27.269108280254777 +13,1.8924273237301286,28.533041401273884 +14,1.9327875451677163,27.2093949044586 +15,1.9095208272812472,27.46815286624204 +16,1.8667005702948114,29.09036624203822 +17,1.8362146828584611,28.891321656050955 +18,1.8349361450049528,29.74721337579618 +19,1.8323736426177297,29.926353503184714 +20,1.839556870946459,29.946257961783438 +21,1.781604611949556,30.971337579617835 +22,1.7663871178961104,31.339570063694268 +23,1.7547900600797812,32.05613057324841 +24,1.76555569688226,31.66799363057325 +25,1.7798762291100374,32.30493630573248 +26,1.7287390672477188,33.14092356687898 +27,1.7555839977446634,33.70820063694268 +28,1.7345078682443897,34.17595541401274 +29,1.710562088686949,34.47452229299363 +30,1.699420995773024,35.0218949044586 +31,1.6843941310408768,35.24084394904459 +32,1.6874872005669175,35.88773885350319 +33,1.6785739303394487,36.455015923566876 +34,1.7223309787215701,35.419984076433124 +35,1.6816545960250173,36.21616242038217 +36,1.6811306423442378,36.763535031847134 +37,1.6626200022970794,37.80851910828026 +38,1.6321346281440394,38.13694267515923 +39,1.6228671863580206,39.01273885350319 +40,1.60664921505436,39.5203025477707 +41,1.6357488935920084,39.580015923566876 +42,1.664417393647941,38.35589171974522 +43,1.551405228626956,41.70979299363057 +44,1.5514670488940683,42.038216560509554 +45,1.5490268825725386,41.779458598726116 +46,1.5288239937679025,42.34673566878981 +47,1.5370504514426941,42.207404458598724 +48,1.5162672859847925,43.11305732484077 +49,1.5240546320654025,43.19267515923567 +50,1.4731219452657518,45.08359872611465 +51,1.459754223276855,45.06369426751592 +52,1.5059532625660015,44.83479299363057 +53,1.4962405459896015,45.352308917197455 +54,1.4813078209093422,45.80015923566879 +55,1.4516118719319628,45.99920382165605 +56,1.450480912901034,46.6062898089172 +57,1.4208773420115186,47.72093949044586 +58,1.4696585076629736,47.43232484076433 +59,1.4605950314527865,47.65127388535032 +60,1.4200018052082912,49.044585987261144 +61,1.4189093454628234,50.208996815286625 +62,1.3850960890958264,50.35828025477707 +63,1.3755859926248053,50.607085987261144 +64,1.372344723173008,50.2687101910828 +65,1.406004083384374,50.22890127388535 +66,1.3419263856426167,52.65724522292994 +67,1.338422073300477,52.53781847133758 +68,1.3205303675050188,53.29418789808917 +69,1.2841361874987365,54.71735668789809 +70,1.290089120151131,54.10031847133758 +71,1.2957106319962033,54.10031847133758 +72,1.273625040509898,54.80692675159236 +73,1.2668270605384924,55.47372611464968 +74,1.2517147808317926,56.11066878980892 +75,1.1724990735388106,58.439490445859875 +76,1.2401482117403844,57.245222929936304 +77,1.2781207242589088,55.593152866242036 +78,1.2090641856193542,57.464171974522294 +79,1.2848772463525178,54.97611464968153 +80,1.2327551617743864,56.88694267515923 +81,1.21329178020453,57.72292993630573 +82,1.188139212738936,58.767914012738856 +83,1.2266626077093137,58.578821656050955 +84,1.2043080124885412,58.31011146496815 +85,1.1785253791292762,59.90246815286624 +86,1.1630371277499352,60.2906050955414 +87,1.190483571997114,60.45979299363057 +88,1.194036246864659,59.46457006369427 +89,1.1722942135136598,61.09673566878981 +90,1.1453133445636483,60.59912420382165 +91,1.1615546076161087,61.30573248407644 +92,1.1365036949230607,61.81329617834395 +93,,10.011942675159236 +94,,10.011942675159236 +95,,10.011942675159236 +96,,10.011942675159236 +97,,10.011942675159236 +98,,10.011942675159236 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_2_Dec3.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_2_Dec3.csv new file mode 100644 index 00000000000..930937eb432 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3267405412758992,9.952229299363058 +2,2.3385817913492772,9.952229299363058 +3,2.2876437894857613,17.595541401273884 +4,2.301358806099861,17.77468152866242 +5,2.2417350407618626,21.397292993630572 +6,2.1568360062921124,23.37778662420382 +7,2.1673045287466355,23.089171974522294 +8,2.0895303745937954,23.765923566878982 +9,2.057715981629244,24.492436305732483 +10,2.0400750735762774,25.94546178343949 +11,1.9915662555937554,25.049761146496817 +12,1.928564434598206,28.015525477707005 +13,1.913564331212621,28.84156050955414 +14,1.9055585003202888,28.373805732484076 +15,1.878437192576706,28.74203821656051 +16,1.8618563231389234,28.443471337579616 +17,1.8592306132529193,29.6875 +18,1.8284385128385703,29.150079617834393 +19,1.7948050635635473,30.642914012738853 +20,1.8211269530521077,30.871815286624205 +21,1.8047334532828847,31.25 +22,1.7686158456620138,32.00636942675159 +23,1.791095284899329,31.598328025477706 +24,1.779106963212323,32.31488853503185 +25,1.8456088547494,30.394108280254777 +26,1.7299559868065415,33.4593949044586 +27,1.7207651282571683,32.991640127388536 +28,1.734643119155981,35.001990445859875 +29,1.7387974155936272,35.62898089171974 +30,1.697035289114448,36.40525477707006 +31,1.7191259716726413,35.68869426751592 +32,1.6840472008771956,36.843152866242036 +33,1.6677197969643174,37.22133757961783 +34,1.684873464760507,36.68391719745223 +35,1.6677951266051858,37.0421974522293 +36,1.6680129515896938,36.843152866242036 +37,1.6457398332607973,38.27627388535032 +38,1.6549669382678476,38.13694267515923 +39,1.6111683860705917,39.17197452229299 +40,1.5907933863864583,39.77906050955414 +41,1.581557700588445,39.75915605095541 +42,1.6028566276951202,40.48566878980892 +43,1.565664360477666,41.948646496815286 +44,1.5686960068477946,42.207404458598724 +45,1.618548185962021,42.07802547770701 +46,1.5228161280322228,43.28224522292994 +47,1.5662430957624107,43.45143312101911 +48,1.5048108078112268,43.9390923566879 +49,1.4830890734484241,45.551353503184714 +50,1.4379025431954937,46.865047770700635 +51,1.4423120416653383,46.7953821656051 +52,1.4482575343672637,46.875 +53,1.3974094983119114,46.875 +54,1.456050969233179,48.07921974522293 +55,1.4333191115385409,47.94984076433121 +56,1.4255064581609835,48.33797770700637 +57,1.41374369335782,49.80095541401274 +58,1.3988623596300744,49.56210191082803 +59,1.3876132653777007,49.990047770700635 +60,1.379410003400912,50.19904458598726 +61,1.3459408837518874,50.68670382165605 +62,1.3692678592766925,51.154458598726116 +63,1.3261496785340037,51.552547770700635 +64,1.315115405495759,53.41361464968153 +65,1.3152428645237235,51.95063694267516 +66,1.3287808633154365,53.164808917197455 +67,1.3316103683155813,51.39331210191083 +68,1.2901694148209444,54.7671178343949 +69,1.2942092342741172,54.34912420382165 +70,1.2834066517034155,55.02587579617835 +71,1.2789932310960854,54.55812101910828 +72,1.2892538552071637,55.10549363057325 +73,1.2609719292373414,55.7921974522293 +74,1.273649446523873,56.0609076433121 +75,1.1892357047196407,58.56886942675159 +76,1.1918648432014853,58.160828025477706 +77,1.2237183049226263,57.016321656050955 +78,1.204730184594537,58.23049363057325 +79,1.216983798203195,57.39450636942675 +80,1.2628265391489504,57.494028662420384 +81,1.1903086160398593,59.14609872611465 +82,1.2173340597729774,58.36982484076433 +83,1.2190915061410066,59.195859872611464 +84,1.2078553164840504,58.5390127388535 +85,1.1983908494566655,58.9171974522293 +86,1.17186071310833,59.355095541401276 +87,1.174994294810447,59.51433121019108 +88,1.1729022374578342,59.384952229299365 +89,1.1639932845808139,60.2906050955414 +90,1.1802276615883893,60.07165605095541 +91,1.1620061655712735,60.62898089171974 +92,1.1276779243141224,61.04697452229299 +93,1.1504586559192391,60.98726114649681 +94,1.1434169905200886,61.38535031847134 +95,1.1463227139157095,61.07683121019108 +96,1.122369942391754,61.176353503184714 +97,1.1106108020824992,61.94267515923567 +98,1.1341188990386428,61.952627388535035 +99,1.1090622084915258,62.37062101910828 +100,1.106491222503079,62.5 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_3_Dec3.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_3_Dec3.csv new file mode 100644 index 00000000000..07ac22197ee --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3302922658859546,9.952229299363058 +2,2.357336262988437,10.111464968152866 +3,2.3250329190758383,16.98845541401274 +4,2.279875163060085,17.894108280254777 +5,2.2197504362482934,22.611464968152866 +6,2.2299284524978344,22.452229299363058 +7,2.151672484768424,23.347929936305732 +8,2.1276805469184925,23.49721337579618 +9,2.065973486110663,24.631767515923567 +10,2.052775156725744,25.59713375796178 +11,2.009746896233528,26.721735668789808 +12,1.9883707617498507,27.01035031847134 +13,1.9531764012233468,27.796576433121018 +14,1.9071630178743106,29.2296974522293 +15,1.876746218675261,29.777070063694268 +16,1.8737761047995014,30.1453025477707 +17,1.846451552810183,30.483678343949045 +18,1.8322057610104798,30.851910828025478 +19,1.7922369484688825,31.090764331210192 +20,1.8224596157195463,30.04578025477707 +21,1.784379183107121,31.76751592356688 +22,1.7658010258036814,32.235270700636946 +23,1.8049863964129405,31.76751592356688 +24,1.7568811413588796,32.76273885350319 +25,1.7673401020135089,32.87221337579618 +26,1.7579622769811352,33.29020700636943 +27,1.7580280941762743,33.34992038216561 +28,1.7140811590632057,33.94705414012739 +29,1.7284819236986197,33.89729299363057 +30,1.700789044617088,34.15605095541401 +31,1.7099623513069881,34.43471337579618 +32,1.717351643902481,34.66361464968153 +33,1.6786175229746825,35.45979299363057 +34,1.695272623353703,34.57404458598726 +35,1.661523063471363,36.0171178343949 +36,1.6674412929328384,35.63893312101911 +37,1.6743384090958127,36.116640127388536 +38,1.6675573777241313,36.80334394904459 +39,1.6787500070158843,36.49482484076433 +40,1.6177796930264516,36.79339171974522 +41,1.6542351329402558,38.21656050955414 +42,1.6106772977075758,38.39570063694268 +43,1.6580979565905918,38.61464968152866 +44,1.6332269739952816,39.998009554140125 +45,1.5936557054519653,40.39609872611465 +46,1.591683250323982,41.580414012738856 +47,1.5719889280902353,41.57046178343949 +48,1.5471103320455855,42.535828025477706 +49,1.5621040695032495,42.05812101910828 +50,1.520982987561803,44.2078025477707 +51,1.4957173174353922,43.96894904458599 +52,1.4990265604796682,45.00398089171974 +53,1.5111556645411595,45.64092356687898 +54,1.4874515920687632,45.0437898089172 +55,1.4900690696801349,46.02906050955414 +56,1.5157668377943099,46.59633757961783 +57,1.468987718509261,46.62619426751592 +58,1.479781169800242,48.29816878980892 +59,1.460758952578162,47.12380573248408 +60,1.4410910849358625,47.223328025477706 +61,1.4226612581568918,48.48726114649681 +62,1.4432850612956247,48.63654458598726 +63,1.3650160412879506,48.228503184713375 +64,1.3994311018354575,49.15406050955414 +65,1.3955133561116115,50.069665605095544 +66,1.3748416695625159,50.16918789808917 +67,1.4088256480587515,50.61703821656051 +68,1.3724694753148754,51.582404458598724 +69,1.3445962610518096,50.94546178343949 +70,1.3706591641826995,52.41839171974522 +71,1.333726993032322,52.42834394904459 +72,1.3502553598895954,52.61743630573248 +73,1.3159747696985864,53.37380573248408 +74,1.3027941614958891,54.02070063694268 +75,1.2333634283132613,55.92157643312102 +76,1.2661075337677246,55.37420382165605 +77,1.297987933371477,54.81687898089172 +78,1.251036716874238,55.264729299363054 +79,1.2628659693298825,55.21496815286624 +80,1.2736652166980087,55.513535031847134 +81,1.2519430351105465,56.4390923566879 +82,1.2493545804054114,56.64808917197452 +83,1.2409714384443442,56.22014331210191 +84,1.2405882109502318,57.19546178343949 +85,1.212063352013849,58.06130573248408 +86,1.2441290187987553,56.78742038216561 +87,1.2231275526581296,57.494028662420384 +88,1.2066541686179533,58.07125796178344 +89,1.2417195773428413,57.90207006369427 +90,1.2056097908384482,58.52906050955414 +91,1.195898252307989,59.1859076433121 +92,1.1796605051702755,59.355095541401276 +93,1.2191244511847283,57.25517515923567 +94,1.156902652257567,60.2906050955414 +95,1.1701958308554,59.62380573248408 +96,1.1665378019308588,59.48447452229299 +97,1.1839087783910667,59.77308917197452 +98,1.1945306704302503,60.330414012738856 +99,1.1298365050060735,61.69386942675159 +100,1.1383399238252336,61.80334394904459 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_4_Dec3.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_4_Dec3.csv new file mode 100644 index 00000000000..ee67335eb05 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_4_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3328692214504168,9.952229299363058 +2,2.367754199702269,9.952229299363058 +3,2.2964605389127306,17.943869426751593 +4,2.2407016010041447,17.77468152866242 +5,2.2069462590916142,18.80971337579618 +6,2.1827150226398637,22.760748407643312 +7,2.1434828733942313,23.626592356687897 +8,2.116417385210657,23.66640127388535 +9,2.0717333805788853,24.044585987261147 +10,2.0767094876356187,23.79578025477707 +11,2.0042466540245494,25.61703821656051 +12,1.9590954772985665,25.218949044585987 +13,1.9485050895411498,26.731687898089174 +14,1.915171536670369,26.124601910828027 +15,1.8810050092684996,29.050557324840764 +16,1.875895839587898,29.14012738853503 +17,1.8433430908591883,29.71735668789809 +18,1.8682987500148214,28.891321656050955 +19,1.8296442859491724,29.896496815286625 +20,1.7757360578342607,31.508757961783438 +21,1.8083985140369196,30.851910828025478 +22,1.8107435521046826,31.240047770700638 +23,1.7882406081363653,31.69785031847134 +24,1.782029034985099,31.76751592356688 +25,1.7707191219755039,31.80732484076433 +26,1.775363470338712,31.96656050955414 +27,1.7380671053175714,33.28025477707006 +28,1.742827357759901,33.17078025477707 +29,1.7604871312524104,33.130971337579616 +30,1.7394022022842601,33.33996815286624 +31,1.7162584484003152,34.305334394904456 +32,1.7169969226144681,34.375 +33,1.7572434798927064,34.8328025477707 +34,1.7028037628550439,35.81807324840764 +35,1.6806965345030378,36.44506369426752 +36,1.6975954178791897,36.30573248407644 +37,1.6955065218506344,36.21616242038217 +38,1.6482313324691384,37.460191082802545 +39,1.6548482111305187,38.495222929936304 +40,1.601717275419053,39.9781050955414 +41,1.6177124863217591,39.76910828025478 +42,1.6307126040671283,40.37619426751592 +43,1.6321950771246747,41.04299363057325 +44,1.6130662328878027,40.634952229299365 +45,1.6278909330914735,40.22691082802548 +46,1.5842759867382656,41.95859872611465 +47,1.585131854768012,41.74960191082803 +48,1.546220761955164,43.431528662420384 +49,1.528466993076786,44.16799363057325 +50,1.5077106178186501,44.62579617834395 +51,1.5354767005155041,44.19785031847134 +52,1.5241068199182013,44.81488853503185 +53,1.4862645036855322,46.84514331210191 +54,1.4480255933324242,47.03423566878981 +55,1.4321729962233525,46.6859076433121 +56,1.511262536808184,46.526671974522294 +57,1.609878883999624,44.67555732484077 +58,1.4150763993050641,48.477308917197455 +59,1.4342831760455088,48.228503184713375 +60,1.3913499792669988,48.79578025477707 +61,1.4367091352013266,48.93511146496815 +62,1.4192430069492121,49.51234076433121 +63,1.3973994482854368,50.43789808917197 +64,1.3838285686104161,51.015127388535035 +65,1.3651482314820502,50.905652866242036 +66,1.3374107263650103,52.2093949044586 +67,1.343931522339013,52.30891719745223 +68,1.3480694028222637,52.139729299363054 +69,1.3413610169841985,53.18471337579618 +70,1.345202691995414,52.4781050955414 +71,1.2902828041155627,54.24960191082803 +72,1.2794281976997472,54.93630573248408 +73,1.3533533006716685,53.51313694267516 +74,1.286735608319568,54.57802547770701 +75,1.2047087470437312,56.80732484076433 +76,1.2519132244359157,55.96138535031847 +77,1.2320692565790408,56.011146496815286 +78,1.254867082948138,55.71257961783439 +79,1.239938816447167,56.658041401273884 +80,1.2183769702152083,56.797372611464965 +81,1.2491980525338726,56.49880573248408 +82,1.2110482389759865,56.78742038216561 +83,1.220780346423957,58.10111464968153 +84,1.2080724827802864,58.190684713375795 +85,1.178122381495822,58.6484872611465 +86,1.1707646501292088,58.66839171974522 +87,1.233177563187423,58.021496815286625 +88,1.1859481270146217,58.94705414012739 +89,1.199979055079685,59.195859872611464 +90,1.129965059696489,60.001990445859875 +91,1.1650012287364644,60.23089171974522 +92,1.1224715462915458,60.977308917197455 +93,1.1577852136769873,60.42993630573248 +94,1.1430905730861007,61.04697452229299 +95,1.1415821465717,61.96257961783439 +96,1.1522894220747006,61.44506369426752 +97,1.1252991583696597,62.39052547770701 +98,1.1179095328233803,61.504777070063696 +99,1.1381052497086253,61.594347133757964 +100,1.0869520906430141,62.65923566878981 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_5_Dec3.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_5_Dec3.csv new file mode 100644 index 00000000000..81021dc08ad --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_5_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3283424058537574,9.952229299363058 +2,2.333559302008076,10.957404458598726 +3,2.295833923254803,17.326831210191084 +4,2.263617471524864,18.600716560509554 +5,2.2306880525722623,20.92953821656051 +6,2.195079202105285,23.39769108280255 +7,2.1769336127931145,23.40764331210191 +8,2.1221889857273952,24.15406050955414 +9,2.080391132148208,23.845541401273884 +10,2.0489104841924775,24.691480891719745 +11,2.0251566050158942,25.149283439490446 +12,1.963638419558288,26.214171974522294 +13,1.9298963888435607,27.428343949044585 +14,1.9185452415684985,28.18471337579618 +15,1.8860732111961218,29.249601910828027 +16,1.8662497997283936,29.398885350318473 +17,1.8591545531704168,29.946257961783438 +18,1.8274272460087089,30.523487261146496 +19,1.8126647328115573,30.642914012738853 +20,1.7990547722312296,31.37937898089172 +21,1.7982724624074948,31.538614649681527 +22,1.798766475574226,31.79737261146497 +23,1.7725476550448471,32.294984076433124 +24,1.7364780591551665,33.25039808917197 +25,1.7829630367315499,33.06130573248408 +26,1.7247494671754777,33.95700636942675 +27,1.7751219082789815,33.638535031847134 +28,1.7521380155709139,33.359872611464965 +29,1.7025946629275182,34.942277070063696 +30,1.7088490481589251,35.25079617834395 +31,1.7250755205275907,35.13136942675159 +32,1.6905792093580696,36.07683121019108 +33,1.7002015903497198,36.99243630573248 +34,1.692167227435264,36.81329617834395 +35,1.6820267636305208,37.38057324840764 +36,1.653964877128601,37.9578025477707 +37,1.624871666264382,39.28144904458599 +38,1.6101930004775904,39.56011146496815 +39,1.651132602600535,38.96297770700637 +40,1.586364333796653,40.585191082802545 +41,1.6020739663178754,40.8937101910828 +42,1.5741806759196482,41.09275477707006 +43,1.5759590924925106,41.57046178343949 +44,1.5384944290112539,42.63535031847134 +45,1.5435815601591851,43.25238853503185 +46,1.5380534510703603,43.63057324840764 +47,1.5087023358436147,44.267515923566876 +48,1.5211139234008304,44.53622611464968 +49,1.4585053617027914,46.02906050955414 +50,1.4378184907755274,46.556528662420384 +51,1.4600889204414027,46.06886942675159 +52,1.4442956242591711,46.835191082802545 +53,1.5037466849491095,45.382165605095544 +54,1.4735850255200817,45.909633757961785 +55,1.433618001117828,47.58160828025478 +56,1.41196334513889,48.258359872611464 +57,1.4392296333981167,47.9796974522293 +58,1.404103590424653,49.22372611464968 +59,1.3797085011840626,49.94028662420382 +60,1.3759027506895125,50.408041401273884 +61,1.3888171212688374,50.13933121019108 +62,1.3717428385072452,50.656847133757964 +63,1.3543531385956296,51.13455414012739 +64,1.3377813488055186,53.32404458598726 +65,1.32260426973841,53.26433121019108 +66,1.2904853482914578,53.71218152866242 +67,1.3264367755051631,53.17476114649681 +68,1.2651510026044905,54.18988853503185 +69,1.2962711411676588,54.448646496815286 +70,1.260423456028009,55.27468152866242 +71,1.2738830785083164,55.05573248407644 +72,1.2934447283957415,55.11544585987261 +73,1.2728360170012067,55.97133757961783 +74,1.22354161055984,55.623009554140125 +75,1.1614322100475336,58.23049363057325 +76,1.2732808582342354,55.91162420382165 +77,1.1924478544551096,58.49920382165605 +78,1.2307554980751816,57.94187898089172 +79,1.2073078140331681,58.021496815286625 +80,1.2323880298122478,56.88694267515923 +81,1.2397261485931979,58.2703025477707 +82,1.2169280477390167,58.07125796178344 +83,1.1980812830530154,58.44944267515923 +84,1.2103800572407473,59.1859076433121 +85,1.2075591098730731,58.87738853503185 +86,1.2010946129537692,59.07643312101911 +87,1.1987670853639105,59.12619426751592 +88,1.1989368018071362,59.952229299363054 +89,1.1764751915719098,60.24084394904459 +90,1.1502090730484884,61.13654458598726 +91,1.1637840840467222,60.77826433121019 +92,1.155628701683822,60.9375 +93,1.1507833364662852,60.64888535031847 +94,1.153540097604132,61.086783439490446 +95,1.1448335328679176,61.52468152866242 +96,1.1596593051958994,61.902866242038215 +97,1.1189773997683434,61.91281847133758 +98,1.1133944688329271,62.539808917197455 +99,1.1255927438948565,62.261146496815286 +100,1.0941752449722046,62.7687101910828 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_6_Dec3.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_6_Dec3.csv new file mode 100644 index 00000000000..3bf4dc7cac0 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_False_seed_6_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.327636287470532,9.952229299363058 +2,2.364818197906397,9.952229299363058 +3,2.32712066097624,17.933917197452228 +4,2.2661456180985566,22.143710191082803 +5,2.2284714370776135,22.312898089171973 +6,2.212028469249701,22.94984076433121 +7,2.178291457473852,23.01950636942675 +8,2.2047472584779095,23.089171974522294 +9,2.097225162633665,23.8953025477707 +10,2.058984781526456,24.58200636942675 +11,1.998987776458643,25.726512738853504 +12,1.954589113308366,27.856289808917197 +13,1.957644304652123,27.76671974522293 +14,1.927705253005787,28.443471337579616 +15,1.9076997383384948,28.68232484076433 +16,1.9167382079324904,28.363853503184714 +17,1.893199887245324,28.214570063694268 +18,1.8565098449682733,30.125398089171973 +19,1.848761665593287,29.866640127388536 +20,1.8677020513328018,29.538216560509554 +21,1.8379456571712616,30.254777070063696 +22,1.8350407682406675,30.6031050955414 +23,1.8407859247960863,30.812101910828027 +24,1.7981948214731398,32.14570063694268 +25,1.7775313246781659,32.38455414012739 +26,1.779415399405607,33.0812101910828 +27,1.93995925271587,29.61783439490446 +28,1.7380753216470124,33.49920382165605 +29,1.7433929215570925,34.40485668789809 +30,1.757401877907431,34.554140127388536 +31,1.7333953562815478,35.0218949044586 +32,1.7302122169239507,35.4796974522293 +33,1.6979842360611934,35.35031847133758 +34,1.7149451181387445,36.176353503184714 +35,1.6739165304572718,36.94267515923567 +36,1.6579501142927036,37.519904458598724 +37,1.6877874940823598,36.44506369426752 +38,1.6797725068535774,37.519904458598724 +39,1.683905072272963,37.71894904458599 +40,1.6497865307862591,38.83359872611465 +41,1.6811227889577294,38.684315286624205 +42,1.612454287565438,40.077627388535035 +43,1.6304087790713948,39.888535031847134 +44,1.6255612274643723,39.86863057324841 +45,1.5867104150687055,40.4359076433121 +46,1.576039869314546,40.973328025477706 +47,1.5664024482107466,41.52070063694268 +48,1.525076123559551,42.63535031847134 +49,1.562596593692804,42.74482484076433 +50,1.5082700981456003,44.21775477707006 +51,1.5137985716959474,44.59593949044586 +52,1.5102066591287115,43.99880573248408 +53,1.5023545953118878,45.19307324840764 +54,1.5251295915834464,44.715366242038215 +55,1.4831445194353723,45.352308917197455 +56,1.490599869163173,45.60111464968153 +57,1.4503670422134884,47.03423566878981 +58,1.4580768354379448,47.00437898089172 +59,1.4314022481821145,48.10907643312102 +60,1.3990224744104276,48.92515923566879 +61,1.3697738609496195,49.25358280254777 +62,1.393522759911361,49.591958598726116 +63,1.384185772033254,49.78105095541401 +64,1.4048389948097764,49.61186305732484 +65,1.4080251614758923,49.18391719745223 +66,1.392766041360843,49.203821656050955 +67,1.3763961457902458,51.00517515923567 +68,1.3683356798378525,51.30374203821656 +69,1.3112034288940915,52.34872611464968 +70,1.3612441803999007,52.07006369426752 +71,1.3699135639864928,51.65207006369427 +72,1.3214652523113664,53.32404458598726 +73,1.321005694046142,53.692277070063696 +74,1.3249006506743704,52.83638535031847 +75,1.226820104820713,55.27468152866242 +76,1.2715821311732007,54.99601910828026 +77,1.2405417876638425,55.57324840764331 +78,1.2481957848664302,55.56329617834395 +79,1.24748499264383,55.205015923566876 +80,1.2523571362920627,55.12539808917197 +81,1.2365107369271053,55.623009554140125 +82,1.2374448301685843,56.68789808917197 +83,1.2243904084157033,56.628184713375795 +84,1.309462397721163,55.76234076433121 +85,1.1883137165361148,57.792595541401276 +86,1.197614303060398,57.86226114649681 +87,1.1736928558653328,58.4593949044586 +88,1.1893404968984567,57.98168789808917 +89,1.2313943471118902,57.772691082802545 +90,1.180393242152633,59.12619426751592 +91,1.157891477369199,59.6437101910828 +92,1.1553229439030788,59.70342356687898 +93,1.2787712812423706,58.20063694267516 +94,1.1497077657158967,60.64888535031847 +95,1.1776422892406488,59.91242038216561 +96,1.139680191969416,60.44984076433121 +97,1.155124515105205,60.927547770700635 +98,1.1201047324071265,61.763535031847134 +99,1.1515277472271281,60.53941082802548 +100,1.1292107557035556,61.75358280254777 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_1_Dec3.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_1_Dec3.csv new file mode 100644 index 00000000000..00a7208d28b --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3156141915898414,9.952229299363058 +2,2.3293647295350484,12.440286624203821 +3,2.2591875358751623,17.456210191082803 +4,2.2236461760891473,21.93471337579618 +5,2.1927865090643524,23.726114649681527 +6,2.1557277851043994,24.03463375796178 +7,2.0544038950258,24.701433121019107 +8,2.0351595202828667,25.746417197452228 +9,2.0068356406157184,25.776273885350317 +10,1.9656023105997948,27.547770700636942 +11,1.9304892318263935,28.383757961783438 +12,1.8874619371572119,29.607882165605094 +13,1.8706737323931069,30.24482484076433 +14,1.8648078213831423,30.433917197452228 +15,1.7972170501757578,31.100716560509554 +16,1.8680383650360592,30.772292993630572 +17,1.8428913089120464,30.10549363057325 +18,1.8214261569794576,31.67794585987261 +19,1.807660029192639,32.92197452229299 +20,1.8150965544828184,32.31488853503185 +21,1.8037185388006223,33.11106687898089 +22,1.7557610387255431,33.748009554140125 +23,1.765975157926037,34.753184713375795 +24,1.7543150801567515,34.76313694267516 +25,1.730486559260423,35.56926751592356 +26,1.728965875449454,35.87778662420382 +27,1.7269384800248844,36.24601910828026 +28,1.716360442957301,36.49482484076433 +29,1.7213326973520267,36.47492038216561 +30,1.7574100296968107,36.32563694267516 +31,1.704921611555063,37.44028662420382 +32,1.6521598692912205,38.69426751592356 +33,1.6377607295467596,39.37101910828026 +34,1.6535563195586964,40.40605095541401 +35,1.637840040170463,41.07285031847134 +36,1.6110917952409975,41.84912420382165 +37,1.5897698888353482,43.47133757961783 +38,1.620562312709298,42.08797770700637 +39,1.5671447371221652,44.705414012738856 +40,1.580641629589591,44.05851910828026 +41,1.5616761719345287,44.705414012738856 +42,1.5402087459139004,44.69546178343949 +43,1.5256064765772241,46.4171974522293 +44,1.4977671963394068,47.20342356687898 +45,1.4965409260646554,45.969347133757964 +46,1.4962049965645856,47.392515923566876 +47,1.4517587180350238,48.755971337579616 +48,1.5113301823852927,47.72093949044586 +49,1.421377443963555,50.547372611464965 +50,1.4076763702805635,51.244028662420384 +51,1.4682138057271386,49.80095541401274 +52,1.453693554659558,50.02985668789809 +53,1.4309830126489045,51.02507961783439 +54,1.4410430033495472,51.5625 +55,1.4004662978421352,52.11982484076433 +56,1.3538578088116493,51.87101910828026 +57,1.3419761467891134,53.23447452229299 +58,1.412059300264735,52.14968152866242 +59,1.3697842177312085,53.71218152866242 +60,1.3753962904025034,53.23447452229299 +61,1.3737046187091027,54.697452229299365 +62,1.3507050663042979,54.26950636942675 +63,1.3148464226418999,55.095541401273884 +64,1.3326569169190279,55.08558917197452 +65,1.3045840760704819,55.07563694267516 +66,1.3590862401731454,53.61265923566879 +67,1.3098578179717824,56.29976114649681 +68,1.3044928000990752,57.016321656050955 +69,1.308589356720068,56.4390923566879 +70,1.2693776135232038,57.00636942675159 +71,1.2660629350668307,57.84235668789809 +72,1.2322093225588464,57.8921178343949 +73,1.2520207223618867,57.72292993630573 +74,1.2613301983304843,57.58359872611465 +75,1.1723312872230627,60.18113057324841 +76,1.2063097972778758,59.23566878980892 +77,1.1840109855506071,59.4546178343949 +78,1.2094467631570853,58.160828025477706 +79,1.2303469511354046,59.60390127388535 +80,1.2033720206303202,59.81289808917197 +81,1.207105509035147,60.19108280254777 +82,1.1771374291675105,60.12141719745223 +83,1.1559810342302748,60.8578821656051 +84,1.1997546052477162,60.40007961783439 +85,1.1618049444666334,61.43511146496815 +86,1.1814268599649904,61.37539808917197 +87,1.15866923825756,61.64410828025478 +88,1.196973984788178,61.09673566878981 +89,1.1269365309909651,61.72372611464968 +90,1.1401704022079517,62.261146496815286 +91,1.1393203909989376,62.33081210191083 +92,1.1389091542571972,63.11703821656051 +93,1.128884658312342,63.2265127388535 +94,1.1101120102937054,63.77388535031847 +95,1.1348475946742258,63.455414012738856 +96,1.103103424333463,64.05254777070064 +97,1.1122846265507351,64.07245222929936 +98,1.0974959453959374,64.54020700636943 +99,1.1087951629784456,63.97292993630573 +100,1.0859435128558212,64.23168789808918 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_2_Dec3.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_2_Dec3.csv new file mode 100644 index 00000000000..6aa707c3c53 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3210225439375374,9.952229299363058 +2,2.323304483085681,13.843550955414013 +3,2.262440140839595,18.670382165605094 +4,2.2384842945511934,23.288216560509554 +5,2.191287803801761,23.347929936305732 +6,2.158498235568879,22.830414012738853 +7,2.0985087824475235,24.47253184713376 +8,2.034276341177096,25.52746815286624 +9,2.002281454718037,25.816082802547772 +10,1.9730363757746994,27.348726114649683 +11,1.9424718648764738,27.69705414012739 +12,1.880394786026827,28.363853503184714 +13,1.882696148696219,29.6875 +14,1.8550264501267937,29.518312101910826 +15,1.8713544971623999,29.398885350318473 +16,1.8253604143288484,30.76234076433121 +17,1.8178755181610204,30.871815286624205 +18,1.8459070708341658,30.871815286624205 +19,1.7988980530173915,31.031050955414013 +20,1.793873133932709,31.787420382165607 +21,1.73418552404756,32.92197452229299 +22,1.7634873655950947,32.573646496815286 +23,1.8106013673126318,30.971337579617835 +24,1.7623595659899864,34.2953821656051 +25,1.7196235846561991,35.59912420382165 +26,1.762105838508363,35.4796974522293 +27,1.7331674334349905,35.25079617834395 +28,1.6930001564086623,37.0421974522293 +29,1.6457682885941427,38.17675159235669 +30,1.6773863355065608,37.94785031847134 +31,1.6938335417182582,37.649283439490446 +32,1.658447991510865,38.92316878980892 +33,1.6299813940266894,40.25676751592356 +34,1.6343702928275818,40.48566878980892 +35,1.6151828515301845,41.50079617834395 +36,1.53928310324432,42.923964968152866 +37,1.5589854603360414,42.32683121019108 +38,1.5914424012421042,42.57563694267516 +39,1.5295882057991756,44.098328025477706 +40,1.4939545461326649,45.82006369426752 +41,1.5148242552568958,45.54140127388535 +42,1.475285797362115,48.27826433121019 +43,1.540716876649553,46.944665605095544 +44,1.5232068110423482,45.74044585987261 +45,1.4409861397591366,48.52707006369427 +46,1.4491314888000488,48.66640127388535 +47,1.4671887637703283,48.586783439490446 +48,1.4540169831294163,49.88057324840764 +49,1.4658351946788228,49.761146496815286 +50,1.3977868670870544,52.05015923566879 +51,1.3921455509343725,52.44824840764331 +52,1.393821284269831,51.522691082802545 +53,1.4139145476043604,51.73168789808917 +54,1.3775475951516705,52.06011146496815 +55,1.3824379702282559,52.517914012738856 +56,1.3421245995600513,53.22452229299363 +57,1.3647238653936204,53.125 +58,1.328790615318687,53.46337579617835 +59,1.3223805951464707,54.05055732484077 +60,1.4251703525045116,50.53742038216561 +61,1.346616385089364,53.9609872611465 +62,1.3234845612459123,54.71735668789809 +63,1.3138619517065158,54.79697452229299 +64,1.318636572285063,55.264729299363054 +65,1.2825289566046114,55.83200636942675 +66,1.2908123002690115,55.69267515923567 +67,1.293733223608345,55.92157643312102 +68,1.2870041636904335,56.658041401273884 +69,1.2993445126873673,56.847133757961785 +70,1.2930583202155532,56.40923566878981 +71,1.2559680046549269,58.09116242038217 +72,1.2177606923564983,57.47412420382165 +73,1.264080666812362,58.52906050955414 +74,1.2587685493906593,58.62858280254777 +75,1.1716782731615054,60.390127388535035 +76,1.2553075085020369,59.43471337579618 +77,1.1850268920515752,59.99203821656051 +78,1.209665151538363,59.2953821656051 +79,1.188598635470032,59.8328025477707 +80,1.1915617334614894,60.60907643312102 +81,1.1694776195629386,61.60429936305732 +82,1.159850474375828,60.977308917197455 +83,1.170068675165723,61.007165605095544 +84,1.1950423485913855,61.04697452229299 +85,1.1404962137246588,61.455015923566876 +86,1.129483407849719,62.00238853503185 +87,1.2087191248395641,61.52468152866242 +88,1.1386271001427037,62.30095541401274 +89,1.1673985286882729,62.430334394904456 +90,1.1372290348551075,62.60947452229299 +91,1.1232153856830231,63.017515923566876 +92,1.1298360262706781,63.55493630573248 +93,1.1220363272223504,63.35589171974522 +94,1.1449630131387407,63.017515923566876 +95,1.1246524460756095,63.36584394904459 +96,1.1315832563266632,63.6046974522293 +97,1.0763023142602033,64.39092356687898 +98,1.1229249246560844,63.90326433121019 +99,1.0857180926450498,63.853503184713375 +100,1.08576950070205,64.37101910828025 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_4_Dec3_mu_0.001.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_4_Dec3_mu_0.001.csv new file mode 100644 index 00000000000..17d9a4808fe --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_4_Dec3_mu_0.001.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.333659553224114,9.952229299363058 +2,2.370748688460915,9.952229299363058 +3,2.2845019458965132,18.23248407643312 +4,2.2609067980650885,21.884952229299362 +5,2.2258789448221776,22.3328025477707 +6,2.1802704038134046,23.546974522292995 +7,2.1296681469413126,24.562101910828027 +8,2.052227009633544,25.169187898089174 +9,1.9806951679241884,26.59235668789809 +10,1.999165795411274,25.885748407643312 +11,1.9874311252764076,26.861066878980893 +12,2.0569002172749515,23.029458598726116 +13,1.9140503049656084,28.861464968152866 +14,1.883727460909801,29.846735668789808 +15,1.8342193524548962,30.483678343949045 +16,1.8493002751830276,29.75716560509554 +17,1.8485199661011908,30.453821656050955 +18,1.8280614250025171,31.011146496815286 +19,1.8358380331355295,31.22014331210191 +20,1.887121970486489,29.448646496815286 +21,1.8192606086184264,32.046178343949045 +22,1.8400364521962063,31.648089171974522 +23,1.799463644908492,32.5437898089172 +24,1.7862441851075288,33.69824840764331 +25,1.7511519353101208,33.777866242038215 +26,1.7561904822185541,33.7281050955414 +27,1.7456810246607302,35.15127388535032 +28,1.7341704414149,34.07643312101911 +29,1.7538617712676905,34.62380573248408 +30,1.6540830401098652,38.05732484076433 +31,1.7135450953890563,37.10191082802548 +32,1.6724545211549018,39.022691082802545 +33,1.7347506201191314,37.25119426751592 +34,1.6637475558906605,40.027866242038215 +35,1.6744959999801248,39.87858280254777 +36,1.6150586460806002,41.281847133757964 +37,1.6216194758749312,41.81926751592356 +38,1.5860952776708421,43.22253184713376 +39,1.5908466175103644,43.13296178343949 +40,1.6093143839745006,44.317277070063696 +41,1.6779468105097486,42.35668789808917 +42,1.5862773664438041,43.929140127388536 +43,1.61748742905392,43.83957006369427 +44,1.501727070018744,45.97929936305732 +45,1.555072579414222,45.65087579617835 +46,1.585103149626665,46.6062898089172 +47,1.506126008975278,47.40246815286624 +48,1.5096527429143334,48.26831210191083 +49,1.5111903893719814,48.74601910828026 +50,1.4342075199078603,50.39808917197452 +51,1.4093611779486297,50.38813694267516 +52,1.4228182871630237,49.64171974522293 +53,1.4130863558714557,51.353503184713375 +54,1.4412856732204462,50.61703821656051 +55,1.4263644932181971,51.015127388535035 +56,1.42080505866154,51.06488853503185 +57,1.4015910739351989,51.14450636942675 +58,1.4330064551845478,52.14968152866242 +59,1.3866672834772973,53.21457006369427 +60,1.3684864241606112,53.29418789808917 +61,1.3407969444420687,53.82165605095541 +62,1.3500643945803308,53.94108280254777 +63,1.3436607604573487,53.29418789808917 +64,1.402879360375131,54.02070063694268 +65,1.3451019054765154,53.363853503184714 +66,1.3304055253411555,55.13535031847134 +67,1.304317454243921,54.56807324840764 +68,1.311379105801795,55.27468152866242 +69,1.3378974810527389,56.53861464968153 +70,1.3166584456042878,56.34952229299363 +71,1.3179566537498668,56.100716560509554 +72,1.3244999696494668,56.5187101910828 +73,1.271249343255523,57.45421974522293 +74,1.2328511127241097,58.11106687898089 +75,1.1673335148270723,58.87738853503185 +76,1.2005661642475494,57.87221337579618 +77,1.2381861798322884,58.130971337579616 +78,1.2304221027216333,58.65843949044586 +79,1.1849329744934276,57.832404458598724 +80,1.2343442090757333,58.439490445859875 +81,,10.011942675159236 +82,,10.011942675159236 +83,,10.011942675159236 +84,,10.011942675159236 +85,,10.011942675159236 +86,,10.011942675159236 +87,,10.011942675159236 +88,,10.011942675159236 +89,,10.011942675159236 +90,,10.011942675159236 +91,,10.011942675159236 +92,,10.011942675159236 +93,,10.011942675159236 +94,,10.011942675159236 +95,,10.011942675159236 +96,,10.011942675159236 +97,,10.011942675159236 +98,,10.011942675159236 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_5_Dec3_mu_0.001.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_5_Dec3_mu_0.001.csv new file mode 100644 index 00000000000..5f7544190bf --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_5_Dec3_mu_0.001.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3170855470523715,9.952229299363058 +2,2.33058017833977,14.102308917197453 +3,2.2821624339765805,19.506369426751593 +4,2.2674132304586423,22.50199044585987 +5,2.2447051895651846,23.576831210191084 +6,2.172436003472395,24.45262738853503 +7,2.155295987038096,24.06449044585987 +8,2.0459523770459898,25.398089171974522 +9,2.0140918819767655,25.52746815286624 +10,1.9759795194978167,27.17953821656051 +11,1.92767088048777,28.18471337579618 +12,1.9162809514695671,28.881369426751593 +13,1.8867615985262924,29.48845541401274 +14,1.8725664099310613,29.58797770700637 +15,1.8280315049894296,30.513535031847134 +16,1.8204995302637672,31.37937898089172 +17,1.7952264539755074,32.03622611464968 +18,1.819389383504345,31.96656050955414 +19,1.8111963051899223,32.0859872611465 +20,1.8187942292280257,32.34474522292994 +21,1.7601770489079178,32.38455414012739 +22,1.7526249217379624,34.26552547770701 +23,1.7524516908985794,34.66361464968153 +24,1.7459573214221153,35.27070063694268 +25,1.6974166517804383,34.524283439490446 +26,1.7341931534420914,36.514729299363054 +27,1.8007917631963255,35.280652866242036 +28,1.7030954808945868,37.82842356687898 +29,1.7764669436558036,36.79339171974522 +30,1.657323609491822,40.15724522292994 +31,1.6335731289189332,40.99323248407644 +32,1.6559408242535438,41.66003184713376 +33,1.6165164564825167,42.40644904458599 +34,1.6164067808989506,42.47611464968153 +35,1.5875147839260708,43.958996815286625 +36,1.59417659006301,43.65047770700637 +37,1.5445029515369681,44.63574840764331 +38,1.5440613206025142,44.82484076433121 +39,1.540687553442208,45.48168789808917 +40,1.5055328470886133,46.56648089171974 +41,1.511408224986617,45.78025477707006 +42,1.5993357221032405,45.551353503184714 +43,1.4700645998025397,48.31807324840764 +44,1.461734825638449,48.20859872611465 +45,1.4969317055052254,48.69625796178344 +46,1.475074731620254,48.785828025477706 +47,1.5341342027020302,45.491640127388536 +48,1.3736099657739045,51.87101910828026 +49,1.40734284774513,49.432722929936304 +50,1.3724346130516878,51.69187898089172 +51,1.4140640474428796,50.04976114649681 +52,1.4603455863940489,49.36305732484077 +53,1.4236815780591054,50.25875796178344 +54,1.406348775906168,51.12460191082803 +55,1.3733201736857177,52.328821656050955 +56,1.3810400332614874,52.8562898089172 +57,1.3673194301356175,52.746815286624205 +58,1.3643333262698665,54.00079617834395 +59,1.3725325279175096,53.37380573248408 +60,1.3338661026802792,55.21496815286624 +61,1.3539330207618179,54.51831210191083 +62,1.3369687161627848,53.7718949044586 +63,1.3422748712217731,55.254777070063696 +64,1.3323277041410944,54.82683121019108 +65,1.2898811382852542,55.95143312101911 +66,1.2894572725721225,56.041003184713375 +67,1.3165194999640155,54.836783439490446 +68,1.300773804734467,56.34952229299363 +69,1.254385388580857,57.59355095541401 +70,1.2394263843062576,58.389729299363054 +71,1.245614308460503,58.608678343949045 +72,1.1886877592202205,58.98686305732484 +73,1.210095673609691,59.166003184713375 +74,1.205132637433945,60.26074840764331 +75,1.1302268053316007,61.5843949044586 +76,1.190367994414773,60.42993630573248 +77,1.210781628159201,60.13136942675159 +78,1.187818715147152,60.70859872611465 +79,1.2079266841244545,59.554140127388536 +80,1.2043758273883989,59.57404458598726 +81,1.184029860481335,60.96735668789809 +82,1.1700892269991006,60.82802547770701 +83,1.1783330710070907,61.29578025477707 +84,1.141323189826528,61.42515923566879 +85,1.182790460859894,60.788216560509554 +86,1.1517680811274582,61.69386942675159 +87,1.1543099071569503,62.350716560509554 +88,1.1500711334738762,62.40047770700637 +89,1.1113469832262415,62.59952229299363 +90,1.092725049917865,62.78861464968153 +91,1.1068163635624442,62.02229299363057 +92,1.1149000893732546,63.35589171974522 +93,1.1133522626700674,63.38574840764331 +94,1.1063350966781567,63.485270700636946 +95,1.095681524200804,64.01273885350318 +96,1.092797608132575,63.67436305732484 +97,1.0870688481695334,64.79896496815287 +98,1.074628931701563,64.58996815286625 +99,1.088046675275086,64.30135350318471 +100,1.0590674675953615,64.80891719745223 diff --git a/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_6_Dec3_mu_0.001.csv b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_6_Dec3_mu_0.001.csv new file mode 100644 index 00000000000..c5b6e85b1d1 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fedavg_varEpoch_True_seed_6_Dec3_mu_0.001.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.331115423494084,9.952229299363058 +2,2.3505028402729398,9.952229299363058 +3,2.2919358007467476,22.014331210191084 +4,2.252286973272919,23.01950636942675 +5,2.2199908419019856,23.46735668789809 +6,2.2014541064098383,22.661226114649683 +7,2.1087787789144334,24.193869426751593 +8,2.084451065701284,24.253582802547772 +9,2.030561300599651,25.746417197452228 +10,1.9830953900221806,25.96536624203822 +11,1.9536369894720187,26.98049363057325 +12,1.9387904937100258,28.68232484076433 +13,1.912421114125829,29.0406050955414 +14,1.8462629310644356,30.493630573248407 +15,1.8810044777621129,29.707404458598727 +16,1.882471007905948,30.07563694267516 +17,1.826166436930371,31.070859872611464 +18,1.8749325366536522,30.871815286624205 +19,1.8414755087749215,32.17555732484077 +20,1.8616887163964047,32.27507961783439 +21,1.8483485492171756,32.90207006369427 +22,1.7964221975605958,34.46457006369427 +23,1.8089217296831168,34.57404458598726 +24,1.7843104623685218,33.36982484076433 +25,1.7980395183441744,35.310509554140125 +26,1.7870755985284308,35.04179936305732 +27,1.773404719723258,35.77826433121019 +28,1.6796710316542607,36.504777070063696 +29,1.7165087689260008,36.82324840764331 +30,1.6729379619003102,37.649283439490446 +31,1.7121883296662834,37.181528662420384 +32,1.6635014046529295,38.9828821656051 +33,1.7314974031630594,38.73407643312102 +34,1.6334729171862268,40.3562898089172 +35,1.6612571857537433,39.81886942675159 +36,1.621406814854616,41.451035031847134 +37,,10.011942675159236 +38,,10.011942675159236 +39,,10.011942675159236 +40,,10.011942675159236 +41,,10.011942675159236 +42,,10.011942675159236 +43,,10.011942675159236 +44,,10.011942675159236 +45,,10.011942675159236 +46,,10.011942675159236 +47,,10.011942675159236 +48,,10.011942675159236 +49,,10.011942675159236 +50,,10.011942675159236 +51,,10.011942675159236 +52,,10.011942675159236 +53,,10.011942675159236 +54,,10.011942675159236 +55,,10.011942675159236 +56,,10.011942675159236 +57,,10.011942675159236 +58,,10.011942675159236 +59,,10.011942675159236 +60,,10.011942675159236 +61,,10.011942675159236 +62,,10.011942675159236 +63,,10.011942675159236 +64,,10.011942675159236 +65,,10.011942675159236 +66,,10.011942675159236 +67,,10.011942675159236 +68,,10.011942675159236 +69,,10.011942675159236 +70,,10.011942675159236 +71,,10.011942675159236 +72,,10.011942675159236 +73,,10.011942675159236 +74,,10.011942675159236 +75,,10.011942675159236 +76,,10.011942675159236 +77,,10.011942675159236 +78,,10.011942675159236 +79,,10.011942675159236 +80,,10.011942675159236 +81,,10.011942675159236 +82,,10.011942675159236 +83,,10.011942675159236 +84,,10.011942675159236 +85,,10.011942675159236 +86,,10.011942675159236 +87,,10.011942675159236 +88,,10.011942675159236 +89,,10.011942675159236 +90,,10.011942675159236 +91,,10.011942675159236 +92,,10.011942675159236 +93,,10.011942675159236 +94,,10.011942675159236 +95,,10.011942675159236 +96,,10.011942675159236 +97,,10.011942675159236 +98,,10.011942675159236 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_1_Dec3.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_1_Dec3.csv new file mode 100644 index 00000000000..b7695e99323 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.317513590405701,10.011942675159236 +2,2.3227585500972285,16.620222929936304 +3,2.278825556396679,17.31687898089172 +4,2.2049900862821348,17.28702229299363 +5,2.1641019848501606,17.595541401273884 +6,2.12035723021076,17.74482484076433 +7,2.0921084933979497,17.923964968152866 +8,2.055248326556698,17.8343949044586 +9,2.0181264877319336,19.357085987261147 +10,1.9881900176880465,22.07404458598726 +11,1.956928676101053,21.855095541401273 +12,1.917935112479386,25.179140127388536 +13,1.9078728689509592,25.607085987261147 +14,1.8417129091396454,28.5828025477707 +15,1.8275016485505802,28.333996815286625 +16,1.833141134043408,28.105095541401273 +17,1.7917638819688444,29.189888535031848 +18,1.773127031174435,29.428742038216562 +19,1.7599657880272834,29.597929936305732 +20,1.7509957605106816,29.88654458598726 +21,1.7125494085299742,30.573248407643312 +22,1.7152185386912837,31.070859872611464 +23,1.7039620443514198,31.170382165605094 +24,1.6854081799270242,32.32484076433121 +25,1.677834677848087,32.45421974522293 +26,1.6655113681866105,32.41441082802548 +27,1.6848400504725753,32.8921178343949 +28,1.645363698339766,33.47929936305732 +29,1.6290871535137201,34.1859076433121 +30,1.6028773298688754,34.613853503184714 +31,1.6138788400941593,35.05175159235669 +32,1.6260188954650976,34.613853503184714 +33,1.5675741274645374,36.36544585987261 +34,1.5461316146668356,36.922770700636946 +35,1.5665764406228522,36.873009554140125 +36,1.5462818039450676,37.78861464968153 +37,1.5406768010680083,37.848328025477706 +38,1.5429124824560372,37.85828025477707 +39,1.5168198757110887,39.35111464968153 +40,1.515647283025608,39.95820063694268 +41,1.4807694968144605,40.973328025477706 +42,1.4756955166531216,41.41122611464968 +43,1.4610729240308142,41.560509554140125 +44,1.4495326690613084,42.46616242038217 +45,1.4646001591044626,42.02826433121019 +46,1.4423964114705468,43.11305732484077 +47,1.445245732167724,43.36186305732484 +48,1.4352921930847653,44.128184713375795 +49,1.4071293211286995,45.25278662420382 +50,1.335633987074445,48.37778662420382 +51,1.3564949779753472,46.82523885350319 +52,1.39510031034992,45.75039808917197 +53,1.368980968074434,47.23328025477707 +54,1.3781029646563683,47.15366242038217 +55,1.3729616699704699,47.80055732484077 +56,1.3489895990699718,48.447452229299365 +57,1.3685547356392926,47.68113057324841 +58,1.3301681940722618,49.75119426751592 +59,1.2986377090405508,50.9156050955414 +60,1.280193641686895,51.82125796178344 +61,1.2907490904923458,51.244028662420384 +62,1.2764518936728215,52.41839171974522 +63,1.2433513129592701,53.672372611464965 +64,1.2162286411425112,55.17515923566879 +65,1.2227498945916535,54.836783439490446 +66,1.2302325724796126,54.55812101910828 +67,1.1996513096390256,55.77229299363057 +68,1.1800583096066857,56.96656050955414 +69,1.1812749220307466,56.91679936305732 +70,1.1639962830361288,57.34474522292994 +71,1.185037746930578,56.30971337579618 +72,1.1614531673443544,58.11106687898089 +73,1.1340249746468416,59.06648089171974 +74,1.1347766446459824,58.67834394904459 +75,1.082742911235542,60.98726114649681 +76,1.1114917245640117,60.001990445859875 +77,1.110927372221734,60.171178343949045 +78,1.1017470374988143,60.09156050955414 +79,1.0758313623962887,62.27109872611465 +80,1.0638814617873757,62.40047770700637 +81,1.0572041261727643,62.480095541401276 +82,1.0614426337229979,62.569665605095544 +83,1.0410922336730228,64.04259554140127 +84,1.0421791422139308,63.90326433121019 +85,1.0514179657978617,63.61464968152866 +86,1.0380067643086621,63.84355095541401 +87,1.0376996694097094,63.2265127388535 +88,1.0258884232514982,64.51035031847134 +89,1.0235747303932337,64.40087579617834 +90,1.0069570996958739,65.48566878980891 +91,0.9859500447655939,66.14251592356688 +92,1.0323409214141264,64.15207006369427 +93,0.9749441401214357,66.64012738853503 +94,0.9594258855862222,66.9984076433121 +95,0.9779615144061434,66.56050955414013 +96,0.9652621153813259,66.83917197452229 +97,0.9474562858320346,67.49601910828025 +98,0.9233331847342716,68.72014331210191 +99,0.9408684183078208,67.71496815286625 +100,0.9410608585473079,67.80453821656052 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_2_Dec3.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_2_Dec3.csv new file mode 100644 index 00000000000..4e0940547c9 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.317281559014776,9.952229299363058 +2,2.3284126634051088,14.818869426751592 +3,2.2938161306320484,17.54578025477707 +4,2.2273687329261924,17.38654458598726 +5,2.164983667385806,17.585589171974522 +6,2.121609875351001,17.864251592356688 +7,2.0930649900132683,18.053343949044585 +8,2.0579800939863655,18.30214968152866 +9,2.0171253013003403,19.227707006369428 +10,1.9854549830126915,20.90963375796178 +11,1.9419559004959788,24.363057324840764 +12,1.9060968191001066,25.567277070063696 +13,1.8767734887493643,27.547770700636942 +14,1.844515098887644,28.214570063694268 +15,1.8515851133188623,26.940684713375795 +16,1.8188266860451667,27.916003184713375 +17,1.8023194978191595,29.946257961783438 +18,1.7993444128400962,29.279458598726116 +19,1.7757967285289886,29.64769108280255 +20,1.7440998288476544,30.752388535031848 +21,1.7348028671969273,30.523487261146496 +22,1.730203231428839,31.12062101910828 +23,1.708460484340692,31.399283439490446 +24,1.6805128124868793,31.926751592356688 +25,1.691623891994452,31.77746815286624 +26,1.6802044825948728,32.3546974522293 +27,1.7033767631858776,31.588375796178344 +28,1.6456254735873763,33.4593949044586 +29,1.654826972894608,33.11106687898089 +30,1.6082125902175903,34.723328025477706 +31,1.610076768383099,34.693471337579616 +32,1.5974302443729085,35.141321656050955 +33,1.597859656734831,35.15127388535032 +34,1.56708100950642,36.24601910828026 +35,1.5498854673592148,36.99243630573248 +36,1.559695000861101,37.13176751592356 +37,1.5400847735678314,37.83837579617835 +38,1.5050054651916407,38.455414012738856 +39,1.5290148637856646,38.37579617834395 +40,1.5292110891099189,38.89331210191083 +41,1.5143968223766158,39.440684713375795 +42,1.4850042716712708,40.40605095541401 +43,1.455088720200168,41.37141719745223 +44,1.4432589848330066,41.9984076433121 +45,1.449444992527081,41.620222929936304 +46,1.457580987814885,41.33160828025478 +47,1.4384789102396387,41.9984076433121 +48,1.4365939000609573,42.505971337579616 +49,1.4239432492833228,43.0234872611465 +50,1.3708980637750807,44.82484076433121 +51,1.4138488093758845,43.431528662420384 +52,1.3807122282161834,44.59593949044586 +53,1.3898156106851662,44.8546974522293 +54,1.3696621048981976,45.36226114649681 +55,1.3662693454961108,45.62101910828026 +56,1.378568785965063,45.64092356687898 +57,1.3505222174772031,46.725716560509554 +58,1.3320081408616085,48.059315286624205 +59,1.3289900562565797,48.397691082802545 +60,1.3200437923905197,48.66640127388535 +61,1.2952547240409122,49.05453821656051 +62,1.2839778369399393,49.83081210191083 +63,1.281483649827872,50.1890923566879 +64,1.268922805026838,50.05971337579618 +65,1.265844342055594,51.12460191082803 +66,1.261987210838658,51.552547770700635 +67,1.258567152509264,51.85111464968153 +68,1.2304436108868593,53.115047770700635 +69,1.2619890054320073,52.3984872611465 +70,1.2277923571835658,53.23447452229299 +71,1.2164468829798851,53.951035031847134 +72,1.2302090396547014,53.443471337579616 +73,1.202986911983247,54.9562101910828 +74,1.2245690051917058,54.38893312101911 +75,1.1632794062043452,56.628184713375795 +76,1.1753962632197483,56.38933121019108 +77,1.185923150010929,55.77229299363057 +78,,10.011942675159236 +79,,10.011942675159236 +80,,10.011942675159236 +81,,10.011942675159236 +82,,10.011942675159236 +83,,10.011942675159236 +84,,10.011942675159236 +85,,10.011942675159236 +86,,10.011942675159236 +87,,10.011942675159236 +88,,10.011942675159236 +89,,10.011942675159236 +90,,10.011942675159236 +91,,10.011942675159236 +92,,10.011942675159236 +93,,10.011942675159236 +94,,10.011942675159236 +95,,10.011942675159236 +96,,10.011942675159236 +97,,10.011942675159236 +98,,10.011942675159236 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_3_Dec3.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_3_Dec3.csv new file mode 100644 index 00000000000..0d9b5db5589 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.319056872349636,11.246019108280255 +2,2.3450232979598318,13.01751592356688 +3,2.332870402913185,15.764331210191083 +4,2.2539441297008733,17.665207006369428 +5,2.200398282640299,17.77468152866242 +6,2.1396267649474416,18.073248407643312 +7,2.1033118887312092,18.19267515923567 +8,2.080652495858016,18.212579617834393 +9,2.035931199219576,18.39171974522293 +10,2.0057433767683186,19.446656050955415 +11,1.9664358956039332,20.44187898089172 +12,1.9305748461158412,24.751194267515924 +13,1.8944166230547959,26.871019108280255 +14,1.8831628257301962,26.63216560509554 +15,1.8995706594673691,25.835987261146496 +16,1.8274966075921515,29.110270700636942 +17,1.824737582237098,29.219745222929937 +18,1.8015564004327083,29.309315286624205 +19,1.7621012265515175,30.155254777070063 +20,1.7331014271754368,30.53343949044586 +21,1.744538200888664,30.812101910828027 +22,1.705459985763404,31.28980891719745 +23,1.7073833084410164,31.170382165605094 +24,1.693425268124623,31.648089171974522 +25,1.6734162121062066,32.25517515923567 +26,1.655963968319498,32.961783439490446 +27,1.6687628850815401,32.822452229299365 +28,1.6791109803375925,32.32484076433121 +29,1.668835074278959,32.90207006369427 +30,1.6058211675874747,33.70820063694268 +31,1.6160292769693265,34.00676751592356 +32,1.618814370434755,34.6437101910828 +33,1.6082783352797199,34.524283439490446 +34,1.6103419194555586,34.51433121019108 +35,1.583064482470227,35.48964968152866 +36,1.5380315499700559,36.13654458598726 +37,1.5480228032276129,36.36544585987261 +38,1.5476305461992883,36.902866242038215 +39,1.5380399485302578,37.66918789808917 +40,1.524647308003371,37.63933121019108 +41,1.52955558345576,37.82842356687898 +42,1.4916533406373043,38.92316878980892 +43,1.4933992145927089,39.211783439490446 +44,1.5067899766241668,39.28144904458599 +45,1.4639890968419944,39.69944267515923 +46,1.4480176442747663,40.833996815286625 +47,1.455558425301959,40.50557324840764 +48,1.438302493399116,41.620222929936304 +49,1.4153193334105667,42.794585987261144 +50,1.3606608392326696,45.42197452229299 +51,1.4026683151342307,43.32205414012739 +52,1.4255448169768996,41.98845541401274 +53,1.3819424597321042,44.45660828025478 +54,1.394709873351322,44.25756369426752 +55,1.4109474299060312,44.068471337579616 +56,1.4247245765795373,43.55095541401274 +57,1.3783686791255976,45.17316878980892 +58,1.3449178641768778,47.01433121019108 +59,1.3380767775189346,47.531847133757964 +60,1.3255827791371924,48.119028662420384 +61,1.3545889406447198,47.1437101910828 +62,1.3123258416819725,48.86544585987261 +63,1.295397851117857,49.91042993630573 +64,1.2963938006929532,50.1890923566879 +65,1.2778365976491552,51.51273885350319 +66,1.2802819886784644,51.09474522292994 +67,1.2649931577360554,52.07006369426752 +68,1.263152537831835,52.080015923566876 +69,1.232448216076869,53.28423566878981 +70,1.2357620445026714,53.29418789808917 +71,1.2136113966346547,54.54816878980892 +72,1.1978436723636214,55.44386942675159 +73,1.2097799094619266,54.896496815286625 +74,1.174727884827146,56.35947452229299 +75,1.1220155616474758,59.00676751592356 +76,1.1235416899820803,59.42476114649681 +77,1.203846106483678,56.568471337579616 +78,1.2242563708572631,54.896496815286625 +79,1.149773919278649,58.359872611464965 +80,1.1602110783005977,58.0015923566879 +81,1.1344886657538686,59.2953821656051 +82,1.1091344880450302,60.80812101910828 +83,1.091761458451581,61.3953025477707 +84,1.1112640344413223,60.141321656050955 +85,1.097751692981477,60.63893312101911 +86,1.0829582916703193,62.07205414012739 +87,1.0843992320595273,61.8531050955414 +88,1.0567907877029128,63.156847133757964 +89,1.0636675991829794,62.91799363057325 +90,1.0615562439724138,62.96775477707006 +91,1.0617064465383055,62.679140127388536 +92,1.0210659128085824,64.98805732484077 +93,0.9985898467385845,65.50557324840764 +94,1.036714878431551,64.5203025477707 +95,1.0314311377561776,64.2515923566879 +96,1.002359115773705,65.68471337579618 +97,0.9997875865098018,65.49562101910828 +98,0.9984552093372223,65.90366242038216 +99,0.9835702704775865,66.42117834394904 +100,0.9705449316152341,66.77945859872611 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_4_Dec3.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_4_Dec3.csv new file mode 100644 index 00000000000..6bf88bcba57 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_4_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3261087912662775,10.021894904458598 +2,2.3515593033687323,9.982085987261147 +3,2.306851751485448,17.625398089171973 +4,2.2276214323226053,17.22730891719745 +5,2.1677527412487443,17.685111464968152 +6,2.11821678261848,17.963773885350317 +7,2.086785866196748,18.113057324840764 +8,2.04875708917144,18.36186305732484 +9,2.0177180319075374,20.35230891719745 +10,1.9794360627034666,22.054140127388536 +11,1.9407894262083016,25.985270700636942 +12,1.9113791588765041,27.786624203821656 +13,1.8935848087262197,27.259156050955415 +14,1.861398677917043,27.866242038216562 +15,1.8416226472064947,28.393710191082803 +16,1.8525195395111278,28.473328025477706 +17,1.815178857487478,29.010748407643312 +18,1.7936502520445805,29.120222929936304 +19,1.7809631232243435,29.81687898089172 +20,1.7600809434416946,30.354299363057326 +21,1.7804151287504062,28.562898089171973 +22,1.736003083028611,30.941480891719745 +23,1.726373005065189,31.160429936305732 +24,1.7049142866377618,31.30971337579618 +25,1.707506920881332,31.498805732484076 +26,1.688632340947534,31.66799363057325 +27,1.701200013707398,32.10589171974522 +28,1.6775113571980955,32.61345541401274 +29,1.6464275569672797,33.20063694267516 +30,1.6360152428317223,33.379777070063696 +31,1.6159283932606885,33.92714968152866 +32,1.6009774769947027,34.68351910828026 +33,1.590011355223929,35.111464968152866 +34,1.5945264085842545,35.7484076433121 +35,1.5921509987229754,35.43988853503185 +36,1.602451107304567,35.56926751592356 +37,1.5591301022061876,36.40525477707006 +38,1.5645373869853414,36.594347133757964 +39,1.5387873869792672,36.63415605095541 +40,1.5299097876639882,37.66918789808917 +41,1.5353789253599326,37.908041401273884 +42,1.5334826138368838,38.36584394904459 +43,1.5231132135269747,39.022691082802545 +44,1.4905688185600718,39.90843949044586 +45,1.5009083353030455,39.072452229299365 +46,1.4748817925240583,39.9781050955414 +47,1.4575583031223078,40.833996815286625 +48,1.469700433646038,40.84394904458599 +49,1.4714923702227842,40.92356687898089 +50,1.3962305267904973,43.730095541401276 +51,1.4092413187026978,42.9140127388535 +52,1.4493352812566576,41.96855095541401 +53,1.4039085890836775,43.093152866242036 +54,1.4356648739735791,43.172770700636946 +55,1.3978015397005021,44.08837579617835 +56,1.4005005754482973,44.934315286624205 +57,1.3695147925881064,44.83479299363057 +58,1.3826029072901247,45.20302547770701 +59,1.3602667393957733,46.09872611464968 +60,1.3736782362506648,45.79020700636943 +61,1.3400383284137507,47.113853503184714 +62,1.3141414314318614,48.30812101910828 +63,1.3182108865422049,48.258359872611464 +64,1.2991736045308933,49.31329617834395 +65,1.3056614831754356,49.46257961783439 +66,1.264577162493566,51.970541401273884 +67,1.2696671026527502,50.77627388535032 +68,1.265191097927701,51.34355095541401 +69,1.2752400048219474,51.81130573248408 +70,1.256062604059839,52.11982484076433 +71,1.2629442514887281,52.03025477707006 +72,1.221168233330842,54.07046178343949 +73,1.1908897233616775,55.43391719745223 +74,1.2135376524014079,54.24960191082803 +75,1.1442363429221378,57.45421974522293 +76,1.154370461679568,57.32484076433121 +77,1.1654253503319565,57.046178343949045 +78,1.1536167176665775,58.06130573248408 +79,1.1364724822105117,58.66839171974522 +80,1.131674334881412,58.86743630573248 +81,1.1140134642078618,60.19108280254777 +82,1.1041763796927824,60.70859872611465 +83,1.1056978129277564,60.201035031847134 +84,1.122638278326411,59.82285031847134 +85,1.1101808669460806,60.1015127388535 +86,1.0609511137008667,62.59952229299363 +87,1.065805388104384,61.97253184713376 +88,1.0389694150086421,63.6046974522293 +89,1.0550565905631728,62.36066878980892 +90,1.0341463639478015,63.66441082802548 +91,1.026776074224217,63.853503184713375 +92,1.0025297794372412,64.92834394904459 +93,1.0062623464377822,65.29657643312102 +94,1.008328069167532,64.92834394904459 +95,1.0160031144026738,64.41082802547771 +96,0.9930159107894655,65.34633757961784 +97,0.9876916700867331,65.40605095541402 +98,0.9821115751175364,65.96337579617834 +99,0.9566354299806485,66.7296974522293 +100,0.9719549288415605,66.55055732484077 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_5_Dec3.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_5_Dec3.csv new file mode 100644 index 00000000000..e6834973c77 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_5_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3200641179540353,9.952229299363058 +2,2.3326137430348974,14.759156050955413 +3,2.2943672480856536,17.54578025477707 +4,2.2189645752026017,17.486066878980893 +5,2.1824596596371597,17.74482484076433 +6,2.1257265555630824,18.212579617834393 +7,2.0978480676177202,18.312101910828027 +8,2.0629749852380934,18.282245222929937 +9,2.029276000466316,19.675557324840764 +10,1.996370539543735,21.307722929936304 +11,1.940650716708724,25.12937898089172 +12,1.9198999875670026,25.816082802547772 +13,1.875836424766832,27.826433121019107 +14,1.86781438596689,28.005573248407643 +15,1.828660272488928,28.562898089171973 +16,1.8056289390393883,29.16003184713376 +17,1.807242114832447,29.418789808917197 +18,1.7711778059127226,30.354299363057326 +19,1.7861171520439683,29.398885350318473 +20,1.7486517201563356,30.13535031847134 +21,1.728117706669364,31.12062101910828 +22,1.7183431986790554,31.399283439490446 +23,1.700866291477422,31.757563694267517 +24,1.7088133210589171,31.827229299363058 +25,1.6609564351428086,32.3546974522293 +26,1.6626551280355757,32.076035031847134 +27,1.645089166938879,32.91202229299363 +28,1.6677715854280313,32.48407643312102 +29,1.6330569693996648,33.26035031847134 +30,1.6149157809603745,33.777866242038215 +31,1.6288357418813524,34.48447452229299 +32,1.6007611075783992,34.942277070063696 +33,1.6150031408686547,34.76313694267516 +34,1.605435286357904,35.2109872611465 +35,1.5767694035912776,35.82802547770701 +36,1.5800612398013947,35.98726114649681 +37,1.54439993800631,37.58957006369427 +38,1.5474813257812694,37.55971337579618 +39,1.522053401940947,38.80374203821656 +40,1.5040113553879366,39.639729299363054 +41,1.5458406050493763,39.45063694267516 +42,1.5123681353915268,39.7093949044586 +43,1.4823242820751894,41.142515923566876 +44,1.4837903376597508,40.92356687898089 +45,1.4541151068013185,42.565684713375795 +46,1.4503898810429179,42.49601910828026 +47,1.4403325061129917,43.63057324840764 +48,1.4413731082989152,43.50119426751592 +49,1.410769252260779,44.61584394904459 +50,1.3515059124132631,47.15366242038217 +51,1.4238019384396303,44.55613057324841 +52,1.3822369461606263,46.40724522292994 +53,1.393196594183612,46.17834394904459 +54,1.4052813994656703,45.59116242038217 +55,1.3663913406384218,47.21337579617835 +56,1.3483250665057236,48.56687898089172 +57,1.3485631092338806,48.477308917197455 +58,1.3185010165165945,49.78105095541401 +59,1.3053698980124893,50.35828025477707 +60,1.306766574549827,50.318471337579616 +61,1.267537006147348,52.34872611464968 +62,1.3066887369581088,50.80613057324841 +63,1.264975130558014,52.11982484076433 +64,1.2504711963568524,53.15485668789809 +65,1.2236004733735588,54.91640127388535 +66,1.2444400662069868,53.97093949044586 +67,1.221459321535317,55.07563694267516 +68,1.237726544498638,54.73726114649681 +69,1.207326017367612,55.86186305732484 +70,1.1740631518090607,57.27507961783439 +71,1.186907345322287,56.92675159235669 +72,1.1604488025045698,57.76273885350319 +73,1.1476669311523438,58.39968152866242 +74,1.1477265897070525,58.33996815286624 +75,1.08883371854284,60.98726114649681 +76,1.0854287546151762,60.698646496815286 +77,1.0851742473377544,61.26592356687898 +78,1.0862012729523287,61.36544585987261 +79,1.1148166667883563,60.22093949044586 +80,1.0971778228784064,60.70859872611465 +81,1.0647296415772407,62.72890127388535 +82,1.0911882041366237,61.71377388535032 +83,1.062179809542978,62.55971337579618 +84,1.049756531882438,63.38574840764331 +85,1.0215218663215637,64.23168789808918 +86,1.0301199035280069,63.92316878980892 +87,1.0168022737381563,64.46058917197452 +88,1.03384304616102,63.72412420382165 +89,1.035285537030287,63.90326433121019 +90,1.0127799176866081,64.93829617834395 +91,1.0360536062793366,64.32125796178345 +92,0.9873046495352581,65.74442675159236 +93,0.9841956082423022,65.76433121019109 +94,0.9719877189891354,66.53065286624204 +95,0.9937677204988564,66.20222929936305 +96,0.9614188940661728,66.75955414012739 +97,0.9459627004945355,67.63535031847134 +98,0.9486434725439472,68.05334394904459 +99,0.9450264983116441,68.04339171974522 +100,0.971749046805558,66.86902866242038 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_6_Dec3.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_6_Dec3.csv new file mode 100644 index 00000000000..a3dc2c945af --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_False_seed_6_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3244144521701107,10.280652866242038 +2,2.3498430692466203,9.982085987261147 +3,2.3063128374184774,17.41640127388535 +4,2.2267012945405997,17.70501592356688 +5,2.1701724263513165,17.824442675159236 +6,2.1284478523169352,17.923964968152866 +7,2.096423910681609,18.09315286624204 +8,2.0614887111505884,17.983678343949045 +9,2.0257558405019673,18.740047770700638 +10,2.0004703755591327,20.332404458598727 +11,1.9728527312066144,21.83519108280255 +12,1.9409266277483315,23.40764331210191 +13,1.914400919987138,24.522292993630572 +14,1.8741953980391193,26.49283439490446 +15,1.8478120155395217,28.801751592356688 +16,1.8404861339338265,28.045382165605094 +17,1.8294284047594496,28.134952229299362 +18,1.8158291175866583,28.68232484076433 +19,1.8095412580830277,29.13017515923567 +20,1.7896723671323935,28.78184713375796 +21,1.754868684300951,29.91640127388535 +22,1.7471009341015178,30.1453025477707 +23,1.7440882587129143,30.324442675159236 +24,1.7258319391566477,29.498407643312103 +25,1.7233991486251734,31.359474522292995 +26,1.6928940639374361,32.245222929936304 +27,1.6902253696113636,32.6234076433121 +28,1.6719991819114441,33.03144904458599 +29,1.6529228702472274,34.31528662420382 +30,1.645463650393638,34.195859872611464 +31,1.6549031590200534,33.6484872611465 +32,1.6179012629636533,35.12141719745223 +33,1.6142644669599593,35.728503184713375 +34,1.6083544712917062,36.02707006369427 +35,1.6022424022103572,36.176353503184714 +36,1.5749145776602873,37.181528662420384 +37,1.5619384285750662,37.19148089171974 +38,1.5577723509187151,37.75875796178344 +39,1.56338301889456,38.017515923566876 +40,1.5354505147144293,38.52507961783439 +41,1.5360791538931002,38.81369426751592 +42,1.5188480645987639,39.59992038216561 +43,1.4798053988985196,39.40087579617835 +44,1.5043452416255976,39.57006369426752 +45,1.4824665260922378,40.99323248407644 +46,1.4888395944218726,41.12261146496815 +47,1.4597126169569175,41.47093949044586 +48,1.4266225441246276,42.13773885350319 +49,1.4244519456936295,42.38654458598726 +50,1.380249192760249,44.347133757961785 +51,1.4127755643455846,43.32205414012739 +52,1.4140273977996438,43.202627388535035 +53,1.4250790480595485,43.55095541401274 +54,1.404286598703664,43.80971337579618 +55,1.373754137640546,45.03383757961783 +56,1.4121311789105653,44.88455414012739 +57,1.3897745943373176,45.34235668789809 +58,1.3533651373188966,45.99920382165605 +59,1.3564991685235577,46.28781847133758 +60,1.3236843210876368,47.611464968152866 +61,1.3387993870267443,47.26313694267516 +62,1.306410319865889,48.755971337579616 +63,1.30612536296723,48.97492038216561 +64,1.2903116865522544,49.681528662420384 +65,1.2690733014398319,50.97531847133758 +66,1.263463890096944,50.85589171974522 +67,1.2570370709060863,51.33359872611465 +68,1.2452409073805353,52.109872611464965 +69,1.2319821920364527,53.22452229299363 +70,1.2422483449528932,52.6671974522293 +71,1.2279121951692422,53.333996815286625 +72,1.2315509960909559,52.81648089171974 +73,1.204415466755059,54.727308917197455 +74,1.1980196343865364,54.647691082802545 +75,1.1385009926595506,57.265127388535035 +76,1.1807830774100723,56.210191082802545 +77,1.1790174739375996,55.56329617834395 +78,1.1699670203931771,56.4390923566879 +79,1.1735942181508252,55.91162420382165 +80,1.1642429509739967,56.797372611464965 +81,1.14777501373534,58.31011146496815 +82,1.1193977632340353,59.1859076433121 +83,1.1476432601357722,57.92197452229299 +84,1.1180423581676118,59.34514331210191 +85,1.0810916723719068,60.88773885350319 +86,1.0883370444273492,60.53941082802548 +87,1.0913354302667508,61.086783439490446 +88,1.0861935740823199,60.619028662420384 +89,1.0624557650013335,62.16162420382165 +90,1.05482927894896,62.6890923566879 +91,1.0590154741220414,62.21138535031847 +92,1.031386842013924,63.684315286624205 +93,1.022948007295086,63.913216560509554 +94,1.0145901107484367,64.65963375796179 +95,1.0234427201520107,63.853503184713375 +96,1.0151579888762943,64.69944267515923 +97,1.005190831840418,65.00796178343948 +98,0.9911643095836518,65.515525477707 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_1_Dec3.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_1_Dec3.csv new file mode 100644 index 00000000000..5462a5e6bc6 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.31981011864486,9.952229299363058 +2,2.3270803545690644,16.401273885350317 +3,2.236011638762845,17.565684713375795 +4,2.188204462361184,18.003582802547772 +5,2.165380006383179,18.083200636942674 +6,2.0918406377172776,18.481289808917197 +7,2.035984041584525,19.2078025477707 +8,1.9866781910513616,24.97014331210191 +9,1.9335860135448966,26.880971337579616 +10,1.8882596667405147,26.373407643312103 +11,1.8962186051022476,26.20421974522293 +12,1.8427529061675831,28.81170382165605 +13,1.8003868593531809,29.74721337579618 +14,1.7796710463845806,29.88654458598726 +15,1.8387379190724367,30.384156050955415 +16,1.845039130016497,31.568471337579616 +17,1.7104304687232728,32.12579617834395 +18,1.7230374562512538,32.27507961783439 +19,1.7485516139656117,32.06608280254777 +20,1.7054309822191858,31.031050955414013 +21,1.683143002971722,32.991640127388536 +22,1.6683035101860193,34.53423566878981 +23,1.689530695319935,34.1062898089172 +24,1.6692868676155237,34.08638535031847 +25,1.6176058031191491,34.693471337579616 +26,1.6073091250316354,35.19108280254777 +27,1.569430183453165,36.086783439490446 +28,1.5652622736183701,37.45023885350319 +29,1.5459922187647241,38.017515923566876 +30,1.5250392499243377,38.13694267515923 +31,1.50202064833064,40.19705414012739 +32,1.5108314054027485,39.56011146496815 +33,1.5328771498552554,39.271496815286625 +34,1.512309779027465,39.83877388535032 +35,1.530451165642708,39.77906050955414 +36,1.503982405753652,40.555334394904456 +37,1.461535419628119,41.9187898089172 +38,1.4157442112637173,43.36186305732484 +39,1.4603690987179994,42.09792993630573 +40,1.396739786597574,45.15326433121019 +41,1.401677848427159,44.61584394904459 +42,1.4154822917500878,44.576035031847134 +43,1.3918676406714567,45.60111464968153 +44,1.4229601150865008,44.735270700636946 +45,1.37197117061372,46.357484076433124 +46,1.3780541776851485,46.50676751592356 +47,1.3585029476007837,47.94984076433121 +48,1.320797633213602,49.30334394904459 +49,1.3025498390197754,50.74641719745223 +50,1.2413258947384584,52.9359076433121 +51,1.2163602421238164,54.10031847133758 +52,1.2681184331322932,51.66202229299363 +53,1.2796791025028107,50.21894904458599 +54,1.2278536683434893,54.339171974522294 +55,1.2310541272163391,54.28941082802548 +56,1.2122824294551922,54.07046178343949 +57,1.2186445366045473,53.951035031847134 +58,1.2698134126936553,52.73686305732484 +59,1.243131643647601,54.120222929936304 +60,1.1684505548446802,57.0859872611465 +61,1.1549512337727152,57.7328821656051 +62,1.2166920137253536,55.453821656050955 +63,1.154614016128953,57.94187898089172 +64,1.151412794924086,57.832404458598724 +65,1.0975065322438622,60.76831210191083 +66,1.125882822996492,59.942277070063696 +67,1.1554146967116434,59.21576433121019 +68,1.1139833915765118,60.7484076433121 +69,1.0832213622749232,62.2312898089172 +70,1.1191623123588077,60.83797770700637 +71,1.0409755160094827,64.11226114649682 +72,1.0451143080261862,63.47531847133758 +73,1.0921003032641805,62.16162420382165 +74,,10.011942675159236 +75,,10.011942675159236 +76,,10.011942675159236 +77,,10.011942675159236 +78,,10.011942675159236 +79,,10.011942675159236 +80,,10.011942675159236 +81,,10.011942675159236 +82,,10.011942675159236 +83,,10.011942675159236 +84,,10.011942675159236 +85,,10.011942675159236 +86,,10.011942675159236 +87,,10.011942675159236 +88,,10.011942675159236 +89,,10.011942675159236 +90,,10.011942675159236 +91,,10.011942675159236 +92,,10.011942675159236 +93,,10.011942675159236 +94,,10.011942675159236 +95,,10.011942675159236 +96,,10.011942675159236 +97,,10.011942675159236 +98,,10.011942675159236 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_2_Dec3.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_2_Dec3.csv new file mode 100644 index 00000000000..007c56c2517 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.32428282992855,9.952229299363058 +2,2.3174386890071212,16.510748407643312 +3,2.2616962202035698,17.496019108280255 +4,2.223850304913369,17.983678343949045 +5,2.1498559022405344,18.312101910828027 +6,2.0937738775447676,17.84434713375796 +7,2.0556424279121837,21.705812101910826 +8,1.9705185259983038,25.189092356687897 +9,1.9262793998050083,25.248805732484076 +10,1.8903633287757824,25.94546178343949 +11,1.8533720028628209,28.25437898089172 +12,1.8260794452800873,27.50796178343949 +13,1.791961477820281,28.134952229299362 +14,1.8028962604559151,30.971337579617835 +15,1.8314284458281889,31.240047770700638 +16,1.7413975152240437,31.66799363057325 +17,1.76040525193427,30.224920382165607 +18,1.7500609394851003,31.468949044585987 +19,1.7063926549474144,31.79737261146497 +20,1.6780576113682644,32.98168789808917 +21,1.687206389797721,33.608678343949045 +22,1.683450806672406,34.583996815286625 +23,1.70664686458126,33.30015923566879 +24,1.5966202286398334,35.83797770700637 +25,1.6194573132095822,34.21576433121019 +26,1.5904999903053234,35.758359872611464 +27,1.573032574289164,37.08200636942675 +28,1.5442287473921563,38.067277070063696 +29,1.5436396378620414,37.45023885350319 +30,1.5275341105309261,36.57444267515923 +31,1.4991916812908876,38.544984076433124 +32,1.5019620755675491,38.69426751592356 +33,1.516260206319724,39.80891719745223 +34,1.545366729141041,39.43073248407644 +35,1.526906736337455,41.0828025477707 +36,1.4906442719659987,40.8937101910828 +37,1.417348074305589,43.39171974522293 +38,1.4583478087832213,42.12778662420382 +39,1.4247253723205275,44.02866242038217 +40,1.4191510669744698,43.013535031847134 +41,1.4328371263613366,44.00875796178344 +42,1.3982543315097784,43.929140127388536 +43,1.423313855365583,44.16799363057325 +44,1.4127953963674558,45.163216560509554 +45,1.4131687856783532,43.25238853503185 +46,1.4124792897777192,45.909633757961785 +47,1.3586350117519403,47.392515923566876 +48,1.3291723507984428,48.845541401273884 +49,1.3056743547415277,48.68630573248408 +50,1.2475915076626334,52.8562898089172 +51,1.3096728901954213,49.70143312101911 +52,1.2950657564363661,49.25358280254777 +53,1.2907564920984256,51.73168789808917 +54,1.2776526641693844,51.154458598726116 +55,1.2290187352781843,51.46297770700637 +56,1.2637851223064835,51.33359872611465 +57,1.307064347965702,50.78622611464968 +58,1.2671800225403658,52.65724522292994 +59,1.2207980045847073,54.169984076433124 +60,1.1866171356219395,55.24482484076433 +61,1.2352016556794476,53.40366242038217 +62,1.203970708664815,55.483678343949045 +63,1.1808205645555143,55.35429936305732 +64,1.1494090283752247,57.30493630573248 +65,1.151600067782554,57.603503184713375 +66,1.211167562159763,56.230095541401276 +67,1.133381357238551,58.409633757961785 +68,1.1619057298465898,58.051353503184714 +69,1.2784091351897853,55.72253184713376 +70,1.0778594241020785,61.52468152866242 +71,1.0602612977574586,62.27109872611465 +72,1.0830136879234558,61.5843949044586 +73,1.0724899814387037,61.88296178343949 +74,1.1194314356822117,60.619028662420384 +75,1.0437630718680704,63.34593949044586 +76,1.1226397813505429,60.67874203821656 +77,1.1048539990832091,61.27587579617835 +78,1.0811341875677656,63.3359872611465 +79,1.065729108206026,63.067277070063696 +80,1.0473899970388716,63.94307324840764 +81,1.057944452307027,63.50517515923567 +82,1.0381776857527958,64.84872611464968 +83,1.0324998847238578,64.96815286624204 +84,1.051732201864765,64.54020700636943 +85,1.000599786354478,66.0031847133758 +86,0.9968066860915749,66.13256369426752 +87,0.9817091029161101,67.11783439490446 +88,0.9653584562289487,67.88415605095541 +89,0.9999591860042256,66.43113057324841 +90,0.9418940191056319,67.93391719745223 +91,0.9727236176751981,67.82444267515923 +92,0.995132986906987,67.47611464968153 +93,0.9654969254117103,67.88415605095541 +94,0.9135257005691528,69.45660828025478 +95,0.9492163764443368,68.28224522292993 +96,0.9684970971125706,68.46138535031847 +97,0.9400283531018883,69.18789808917198 +98,0.942237958027299,69.30732484076434 +99,0.9343463778495789,69.44665605095541 +100,0.9304855424127761,69.64570063694268 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_3_Dec3.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_3_Dec3.csv new file mode 100644 index 00000000000..41371b8f17d --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.318576755037733,14.798964968152866 +2,2.3436634859461694,13.684315286624203 +3,2.3137021824053137,15.833996815286625 +4,2.2239066354788033,16.22213375796178 +5,2.139645654684419,18.13296178343949 +6,2.119863986968994,18.312101910828027 +7,2.0594181103311526,18.172770700636942 +8,1.9774596767061074,22.36265923566879 +9,1.9499407156257873,23.457404458598727 +10,1.9016578121549765,26.443073248407643 +11,1.8564548226678448,29.03065286624204 +12,1.8155133405308814,29.637738853503183 +13,1.8543380483700211,29.737261146496817 +14,1.9037148026144428,30.31449044585987 +15,1.7695758054210882,31.15047770700637 +16,1.804499611733066,29.6875 +17,1.7662918438577349,31.787420382165607 +18,1.7175361586224502,29.75716560509554 +19,1.6829303260062152,31.956608280254777 +20,1.6581202084851112,33.68829617834395 +21,1.718699724810898,32.86226114649681 +22,1.6937123825595637,32.8125 +23,1.6135687721762688,33.70820063694268 +24,1.6256142004280334,34.07643312101911 +25,1.6010351461969363,34.91242038216561 +26,1.5681287240070902,36.55453821656051 +27,1.5617059894428131,36.2062101910828 +28,1.5399045921435022,36.29578025477707 +29,1.553810565334976,37.02229299363057 +30,1.489670344978381,38.05732484076433 +31,1.5156386513618907,38.495222929936304 +32,1.537633762238132,37.480095541401276 +33,1.5782394234541874,38.52507961783439 +34,1.5314634127222049,39.23168789808917 +35,1.5214624609916834,39.689490445859875 +36,1.471343852911785,42.1078821656051 +37,1.5118912898810806,39.74920382165605 +38,1.4295217110093232,43.05334394904459 +39,1.4262930116835673,43.16281847133758 +40,1.436829971659715,42.705015923566876 +41,1.4146741332521864,43.44148089171974 +42,1.4404134218859825,43.45143312101911 +43,1.4150942548824723,43.86942675159236 +44,1.4078693344334887,43.94904458598726 +45,1.4617881828052983,44.77507961783439 +46,1.3978098737206428,46.267914012738856 +47,1.33747956327572,47.94984076433121 +48,1.333851676078359,47.20342356687898 +49,1.2842160425368387,50.179140127388536 +50,1.2367805709504778,52.76671974522293 +51,1.3012755232252133,49.25358280254777 +52,1.3140822440195994,49.71138535031847 +53,1.28964267300952,50.11942675159236 +54,1.2681316156296214,50.89570063694268 +55,1.25238521919129,52.61743630573248 +56,1.309001599147821,50.11942675159236 +57,1.2756021679586667,51.96058917197452 +58,1.2322705642432923,53.7718949044586 +59,1.199052803075997,55.63296178343949 +60,1.2686265372926262,52.080015923566876 +61,1.2004339193842213,55.83200636942675 +62,1.1677234184210468,56.40923566878981 +63,1.1610586373669327,57.65326433121019 +64,1.1620658351357576,57.434315286624205 +65,1.20312394685806,56.19028662420382 +66,1.1692637888489255,58.48925159235669 +67,1.1284322605770865,59.96218152866242 +68,1.1938037310436274,56.68789808917197 +69,1.0864540953545054,61.922770700636946 +70,1.067044326454211,62.261146496815286 +71,1.0898799660858836,61.41520700636943 +72,1.0901951877174862,60.957404458598724 +73,1.0997136751557612,61.23606687898089 +74,1.1328100068553997,60.330414012738856 +75,1.0563614926520426,63.16679936305732 +76,1.1006004878669788,61.32563694267516 +77,1.0901535829161382,62.13176751592356 +78,,10.011942675159236 +79,,10.011942675159236 +80,,10.011942675159236 +81,,10.011942675159236 +82,,10.011942675159236 +83,,10.011942675159236 +84,,10.011942675159236 +85,,10.011942675159236 +86,,10.011942675159236 +87,,10.011942675159236 +88,,10.011942675159236 +89,,10.011942675159236 +90,,10.011942675159236 +91,,10.011942675159236 +92,,10.011942675159236 +93,,10.011942675159236 +94,,10.011942675159236 +95,,10.011942675159236 +96,,10.011942675159236 +97,,10.011942675159236 +98,,10.011942675159236 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_4_Dec3_mu_0.001.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_4_Dec3_mu_0.001.csv new file mode 100644 index 00000000000..125f8952491 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_4_Dec3_mu_0.001.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.332164670251737,11.634156050955413 +2,2.3600634617410647,15.565286624203821 +3,2.2847265088634128,16.22213375796178 +4,2.1907860701251183,17.724920382165607 +5,2.1625176280926746,18.740047770700638 +6,2.0913792142442835,18.26234076433121 +7,2.025095403574075,19.287420382165607 +8,1.9940613576561024,21.098726114649683 +9,1.948790239680345,25.93550955414013 +10,1.8918789678318486,29.16998407643312 +11,1.8516615416593611,29.249601910828027 +12,1.8798195715922459,28.871417197452228 +13,1.8941533671822517,30.095541401273884 +14,1.816947561160774,29.796974522292995 +15,1.7963579118631448,30.364251592356688 +16,1.7748334050937822,31.110668789808916 +17,1.775861630014553,30.523487261146496 +18,1.7402516565505106,31.458996815286625 +19,1.7147097944454024,32.69307324840764 +20,1.7010173774828576,32.832404458598724 +21,1.7250190768272253,31.30971337579618 +22,1.6595818221948708,32.076035031847134 +23,1.6806901435183872,32.05613057324841 +24,1.6849109815184478,33.66839171974522 +25,1.6249606730831656,35.15127388535032 +26,1.6317910069872619,35.22093949044586 +27,1.6110359498649647,34.4546178343949 +28,1.5725787832478808,33.88734076433121 +29,1.5758311915549503,35.40007961783439 +30,1.5816088018903307,36.94267515923567 +31,1.5758677660279972,36.514729299363054 +32,1.5910379582909262,37.05214968152866 +33,1.5575890001977326,38.067277070063696 +34,1.5364814898011032,38.37579617834395 +35,1.5048534444942596,39.580015923566876 +36,1.4931848079535612,39.689490445859875 +37,1.5070037234361005,40.555334394904456 +38,1.5241172875568365,40.276671974522294 +39,1.4787513875657585,41.57046178343949 +40,1.4333156886374114,42.535828025477706 +41,1.4766970181920727,41.033041401273884 +42,1.4682770329675856,42.09792993630573 +43,1.4334955769739333,42.60549363057325 +44,1.4441563657894256,44.67555732484077 +45,1.3774640256432211,45.78025477707006 +46,1.3553641465059512,47.43232484076433 +47,1.3996198238081234,44.17794585987261 +48,1.3014150561800428,48.367834394904456 +49,1.3757337491223767,48.5171178343949 +50,1.2333780079130914,51.383359872611464 +51,1.2653272934020705,52.388535031847134 +52,1.280003587531436,50.597133757961785 +53,1.272077521700768,49.38296178343949 +54,1.2785201866155977,51.31369426751592 +55,1.337269169889438,49.402866242038215 +56,1.3142731831331922,50.7265127388535 +57,1.2196047507273924,53.085191082802545 +58,1.2036343376347973,54.279458598726116 +59,1.2967431947683832,51.582404458598724 +60,1.2092859893088128,56.16042993630573 +61,1.1867585083481613,56.070859872611464 +62,1.1393842978082644,58.59872611464968 +63,1.1955800120997582,56.27985668789809 +64,1.180055622841902,57.31488853503185 +65,1.157463842516492,58.31011146496815 +66,1.166901686009328,57.663216560509554 +67,1.1806429932071905,58.26035031847134 +68,1.1213070400960885,61.04697452229299 +69,1.0591137025766313,62.121815286624205 +70,1.0600426588088843,61.534633757961785 +71,1.084704800775856,62.00238853503185 +72,1.110198599517725,60.60907643312102 +73,1.0991034363485446,61.345541401273884 +74,1.072368211427312,62.78861464968153 +75,0.9954288176670196,65.67476114649682 +76,1.0309445026573862,64.90843949044586 +77,1.039737315694238,64.43073248407643 +78,1.0563818527634736,64.24164012738854 +79,1.0542856511796357,63.53503184713376 +80,1.0288312951470637,64.87858280254777 +81,1.043891834984919,64.6297770700637 +82,1.0278291129002906,65.515525477707 +83,0.9602611349646453,67.7249203821656 +84,1.0014710395958772,66.22213375796179 +85,0.9853204929145278,66.05294585987261 +86,1.004773197660021,66.1624203821656 +87,0.9919794262594478,66.49084394904459 +88,0.9553457870604886,67.70501592356688 +89,0.9496707312620369,68.2125796178344 +90,1.0598031324186143,63.86345541401274 +91,0.9316996597939995,68.63057324840764 +92,0.9155371075223206,69.1281847133758 +93,0.9586323361108258,68.08320063694268 +94,0.9567545432194023,68.06329617834395 +95,0.9542987657960054,68.43152866242038 +96,0.9319428334570234,69.17794585987261 +97,0.9021389962761266,70.16321656050955 +98,0.9062754868701764,70.32245222929936 +99,0.9215340690248331,69.59593949044586 +100,0.8790523702171957,70.92953821656052 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_5_Dec3_mu_0.001.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_5_Dec3_mu_0.001.csv new file mode 100644 index 00000000000..611864a4eb8 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_5_Dec3_mu_0.001.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3233751886209864,12.689092356687897 +2,2.326752143301022,15.117436305732484 +3,2.2406746460373994,17.54578025477707 +4,2.200015509963795,17.585589171974522 +5,2.124900021370809,17.67515923566879 +6,2.0673210112152587,18.003582802547772 +7,2.0402388557506974,18.33200636942675 +8,1.9989694546742045,20.302547770700638 +9,1.9317926563275087,27.57762738853503 +10,1.8824377735708928,27.448248407643312 +11,1.8831339201350121,29.289410828025478 +12,1.9242145551997385,28.851512738853504 +13,1.798594899238295,30.65286624203822 +14,1.8013700429041675,29.25955414012739 +15,1.8186901534438893,30.165207006369428 +16,1.7717712798695655,30.513535031847134 +17,1.7198104957106766,31.22014331210191 +18,1.69781058457247,33.379777070063696 +19,1.757574130775063,31.618232484076433 +20,1.7265601742799115,30.80214968152866 +21,1.6750702463137876,32.61345541401274 +22,1.671069555981144,31.66799363057325 +23,1.6325913690457678,33.84753184713376 +24,1.599509985583603,36.116640127388536 +25,1.6126683373360118,36.27587579617835 +26,1.592764130063877,36.0171178343949 +27,1.5537425385918586,37.55971337579618 +28,1.5504689095126596,37.121815286624205 +29,1.570036510753024,38.13694267515923 +30,1.5913533124194783,36.504777070063696 +31,1.620058111324432,38.067277070063696 +32,1.5573317078268452,38.883359872611464 +33,1.5041023272617606,39.80891719745223 +34,1.49523916365994,41.391321656050955 +35,1.479119137593895,41.37141719745223 +36,1.4633240160668732,43.710191082802545 +37,1.4610535475858457,42.595541401273884 +38,1.4614848885566565,43.730095541401276 +39,1.4461102774188777,43.5609076433121 +40,1.4685331378013464,43.08320063694268 +41,1.4698412699304568,44.86464968152866 +42,1.4211195099885297,44.317277070063696 +43,1.4475286029706336,45.71058917197452 +44,1.3558572120727248,48.29816878980892 +45,1.3319543288771514,48.6265923566879 +46,1.343918844013457,48.38773885350319 +47,1.2817655213319572,50.766321656050955 +48,1.320669106237448,49.80095541401274 +49,1.3423245765600995,49.74124203821656 +50,1.2215349176886734,54.46855095541401 +51,1.2616455031048721,52.75676751592356 +52,1.2618438590104413,51.82125796178344 +53,1.242122257591053,53.42356687898089 +54,1.2896742539800656,52.607484076433124 +55,1.2744897903910108,52.82643312101911 +56,1.2008773077065777,55.682722929936304 +57,1.1927502079374472,55.75238853503185 +58,1.2266267689929646,54.35907643312102 +59,1.230928825345009,56.259952229299365 +60,1.1567878818056385,57.464171974522294 +61,1.1687966281441367,58.0015923566879 +62,1.1756701701006311,57.53383757961783 +63,1.174668044800971,58.50915605095541 +64,1.134730955218054,59.77308917197452 +65,1.1463057121653466,59.28542993630573 +66,1.1764519320931404,57.52388535031847 +67,1.084714452552188,61.484872611464965 +68,1.0763807452408372,61.3953025477707 +69,1.0687900979048128,62.52985668789809 +70,1.0961741041985287,61.564490445859875 +71,1.0746188611741279,62.878184713375795 +72,1.0768126158197975,62.98765923566879 +73,1.1083998513069881,62.151671974522294 +74,1.092948633774071,63.35589171974522 +75,1.0105081006979486,65.83399681528662 +76,1.0575302721588475,64.46058917197452 +77,1.0821689879818328,63.4156050955414 +78,1.0436086772353785,65.13734076433121 +79,1.0154315142115211,65.99323248407643 +80,1.0203678915455083,65.83399681528662 +81,1.0593194236421282,64.0625 +82,1.0174874568441112,65.52547770700637 +83,0.9946525495523101,65.86385350318471 +84,0.990163024823377,66.66003184713375 +85,0.9810423596649412,67.1875 +86,0.9999548827007319,66.98845541401273 +87,0.9669929590954143,67.7547770700637 +88,1.0009670849818333,66.95859872611464 +89,0.9952846294755389,67.59554140127389 +90,0.9374732128374136,68.71019108280255 +91,0.9173880982550846,68.95899681528662 +92,0.9679231241250493,68.42157643312102 +93,0.9589443738293496,68.5907643312102 +94,0.9315782345024644,69.4267515923567 +95,0.9497407997489735,69.46656050955414 +96,0.9256639419847233,69.49641719745223 +97,0.9199216377203632,69.95421974522293 +98,0.9123693347736529,69.80493630573248 +99,0.9006446032387436,70.11345541401273 +100,0.9684686558261798,69.17794585987261 diff --git a/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_6_Dec3_mu_0.001.csv b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_6_Dec3_mu_0.001.csv new file mode 100644 index 00000000000..bbb03857900 --- /dev/null +++ b/baselines/fednova/fednova/results/proximal_fednova_varEpoch_True_seed_6_Dec3_mu_0.001.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3308039258240134,9.982085987261147 +2,2.3341928652137707,14.430732484076433 +3,2.28608138090486,17.25716560509554 +4,2.197823017266146,17.366640127388536 +5,2.1159619320729735,17.73487261146497 +6,2.0765644053744663,18.371815286624205 +7,2.056024155798991,18.381767515923567 +8,2.0055505713080146,22.681130573248407 +9,1.9501451580387772,24.47253184713376 +10,1.9591030231706656,25.348328025477706 +11,1.9581790471532543,28.562898089171973 +12,1.8738752580752038,28.57285031847134 +13,1.8525162851734527,29.309315286624205 +14,1.8773574631684904,28.08519108280255 +15,1.8178536724892391,30.005971337579616 +16,1.7878017767219787,29.956210191082803 +17,1.771775235795671,30.07563694267516 +18,1.7761196611793177,30.901671974522294 +19,1.7616703912710687,31.598328025477706 +20,1.727610955572432,29.71735668789809 +21,1.6965343109361686,32.39450636942675 +22,1.6888474939735072,33.12101910828026 +23,1.6472218423891978,35.82802547770701 +24,1.6295601577515815,35.280652866242036 +25,1.621229994828534,35.42993630573248 +26,1.6251212373660628,35.41003184713376 +27,1.602142844989801,36.41520700636943 +28,1.589846054459833,36.982484076433124 +29,1.6124664021145767,37.39052547770701 +30,1.6203238349051992,37.30095541401274 +31,1.567192535491506,38.53503184713376 +32,1.5765465520749427,37.63933121019108 +33,1.5186552750836513,39.87858280254777 +34,1.5440970909823277,38.36584394904459 +35,1.5257963496408644,39.858678343949045 +36,1.523234294478301,39.022691082802545 +37,1.501398852676343,41.451035031847134 +38,1.4554496532792498,41.73964968152866 +39,1.489778498935092,41.560509554140125 +40,1.4830294794337764,42.46616242038217 +41,1.4666260086047422,41.93869426751592 +42,1.4559013486667802,44.41679936305732 +43,1.4065023964377725,44.84474522292994 +44,1.385857704338754,44.98407643312102 +45,1.4199036245892762,44.715366242038215 +46,1.3849143792109884,44.92436305732484 +47,1.3482162815750025,45.690684713375795 +48,1.3197058587317254,47.77070063694268 +49,1.306454715835061,49.8109076433121 +50,1.269059752962392,51.39331210191083 +51,1.301755104854608,47.98964968152866 +52,1.2834837823916392,49.24363057324841 +53,1.3419004378804735,48.15883757961783 +54,1.2948818799037083,49.95023885350319 +55,1.2572851708740185,50.68670382165605 +56,1.245414524700991,52.298964968152866 +57,1.3534862478827214,48.119028662420384 +58,1.24263478274558,51.552547770700635 +59,1.2323850860261614,52.53781847133758 +60,1.2164362034979899,53.52308917197452 +61,1.2451702561348108,52.975716560509554 +62,1.2066168610457402,54.24960191082803 +63,1.2041017602963053,54.6078821656051 +64,1.24777557705618,54.15007961783439 +65,1.313431821431324,53.83160828025478 +66,1.1297616616935486,58.25039808917197 +67,1.1415103696713782,57.52388535031847 +68,1.1118545243694524,58.409633757961785 +69,1.1600016404868692,57.78264331210191 +70,1.1204198629233488,57.93192675159236 +71,1.1363199694900756,57.84235668789809 +72,1.1454413567379023,57.991640127388536 +73,1.1388245710901395,58.30015923566879 +74,1.1602470665980296,58.23049363057325 +75,1.0570165761716805,62.06210191082803 +76,1.0815854585094817,61.21616242038217 +77,1.0947800210327099,60.111464968152866 +78,1.1015385146353656,61.09673566878981 +79,1.092564936276454,60.56926751592356 +80,1.0585083198395504,61.922770700636946 +81,1.0250139179503082,63.883359872611464 +82,1.0228960916494867,64.47054140127389 +83,1.004765330226558,64.40087579617834 +84,1.0029991941087564,65.37619426751593 +85,1.0189822919809135,63.913216560509554 +86,0.9971144996630917,64.69944267515923 +87,1.0010741185990109,65.4657643312102 +88,0.9972102383899081,65.90366242038216 +89,0.9986499449250045,65.97332802547771 +90,0.9462861175749712,67.62539808917198 +91,0.9847662604538499,65.98328025477707 +92,0.9612684170151972,67.60549363057325 +93,0.9749008823352255,66.93869426751593 +94,0.9606475488395448,67.0282643312102 +95,0.9189126639609124,68.80971337579618 +96,0.9458716302920299,68.55095541401273 +97,0.9372786875743016,68.72014331210191 +98,0.9400641527145531,68.66042993630573 +99,1.025105722390922,66.04299363057325 +100,0.967315807084369,67.24721337579618 diff --git a/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_1_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_1_Dec3.csv new file mode 100644 index 00000000000..b9984234f6d --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.315098416273761,9.952229299363058 +2,2.337856440027808,10.519506369426752 +3,2.2765439483010845,17.207404458598727 +4,2.22455447646463,17.74482484076433 +5,2.2110284650401706,22.78065286624204 +6,2.149824983754735,21.785429936305732 +7,2.1224543668661906,23.556926751592357 +8,2.086315421541785,23.974920382165607 +9,2.0711476810418876,24.691480891719745 +10,2.0098112525453993,25.328423566878982 +11,1.9755257838850568,26.13455414012739 +12,1.927691510528516,28.294187898089174 +13,1.9316287427950816,27.040207006369428 +14,1.899698277187955,29.00079617834395 +15,1.8521906479149108,30.165207006369428 +16,1.8396973564366625,30.443869426751593 +17,1.8140030135015013,30.165207006369428 +18,1.8695901169139109,28.980891719745223 +19,1.821781297398221,30.812101910828027 +20,1.7905250939593953,31.439092356687897 +21,1.7801622964773969,32.02627388535032 +22,1.752649104519255,31.976512738853504 +23,1.7622974533943614,32.265127388535035 +24,1.80207741640176,31.84713375796178 +25,1.7312012083211523,33.49920382165605 +26,1.7055704084930905,34.06648089171974 +27,1.7052095224902888,33.95700636942675 +28,1.711177444002431,34.5640923566879 +29,1.6853135755866955,34.982085987261144 +30,1.736624691137083,34.25557324840764 +31,1.6816577068559684,35.65883757961783 +32,1.6849196762036367,36.05692675159236 +33,1.665765095668234,36.484872611464965 +34,1.6666542284048287,36.176353503184714 +35,1.6278100773027748,36.60429936305732 +36,1.6288466119462517,37.350716560509554 +37,1.6499857887340958,37.41042993630573 +38,1.624695550104615,38.465366242038215 +39,1.6034459460313153,39.83877388535032 +40,1.613893952339318,40.20700636942675 +41,1.5848291254347298,39.91839171974522 +42,1.5784353306339045,40.943471337579616 +43,1.5371476009393195,41.85907643312102 +44,1.5262270998802914,41.71974522292994 +45,1.5213908511362257,42.51592356687898 +46,1.5657064276895705,43.04339171974522 +47,1.5130913181669394,43.35191082802548 +48,1.4632667318271224,43.62062101910828 +49,1.4861029545972302,44.91441082802548 +50,1.4415780321048324,46.77547770700637 +51,1.4473370389573892,46.96457006369427 +52,1.4431290983394454,47.452229299363054 +53,1.4240832526213045,47.482085987261144 +54,1.4447427676741484,47.65127388535032 +55,1.4495679724747967,47.69108280254777 +56,1.4239779315936338,48.23845541401274 +57,1.3903029466130932,49.28343949044586 +58,1.3696297376778475,49.791003184713375 +59,1.3524930127866708,50.656847133757964 +60,1.3376504858587956,51.51273885350319 +61,1.3437763703097203,51.4828821656051 +62,1.3868736157751387,51.23407643312102 +63,1.3282797427693749,51.4828821656051 +64,1.3377866574153778,52.298964968152866 +65,1.3129025682522233,53.61265923566879 +66,1.3253401396380868,53.194665605095544 +67,1.3056597964019532,53.891321656050955 +68,1.3173768717771883,53.2046178343949 +69,1.2636647797693872,55.35429936305732 +70,1.348484317967846,54.62778662420382 +71,1.2195875659869735,56.77746815286624 +72,1.2417937961353618,56.72770700636943 +73,1.245372197810252,55.78224522292994 +74,1.2311008621932595,57.45421974522293 +75,1.1492978797596731,59.93232484076433 +76,1.2141930335646223,58.17078025477707 +77,1.20923964005367,58.59872611464968 +78,1.2069563250632802,59.1859076433121 +79,1.2116140286633923,59.20581210191083 +80,1.1685718696588163,60.09156050955414 +81,1.165917597758542,59.87261146496815 +82,1.1521826561089534,60.98726114649681 +83,1.1392407546377485,61.21616242038217 +84,1.1319843667327978,60.51950636942675 +85,1.155537183497362,60.728503184713375 +86,1.145231395390383,60.390127388535035 +87,1.1485279711188785,61.873009554140125 +88,1.1579631927666392,60.62898089171974 +89,1.1171996673201299,62.0421974522293 +90,1.154524060950917,61.733678343949045 +91,1.0968473861171941,62.89808917197452 +92,1.0948532899473882,63.236464968152866 +93,1.1170398691657242,62.85828025477707 +94,1.0802056884310047,63.50517515923567 +95,1.0858875953467788,63.89331210191083 +96,1.0744325195907787,64.26154458598727 +97,1.0734240761987723,64.04259554140127 +98,1.0857135786372385,63.097133757961785 +99,1.0549505690860141,64.47054140127389 +100,1.0703523272921325,64.32125796178345 diff --git a/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_2_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_2_Dec3.csv new file mode 100644 index 00000000000..06bb9c0fdca --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.323466275148331,9.952229299363058 +2,2.3487883206385716,9.952229299363058 +3,2.2808813471703013,17.11783439490446 +4,2.240513557081769,18.531050955414013 +5,2.213022259390278,22.75079617834395 +6,2.15295278950102,22.999601910828027 +7,2.1328407070439335,23.50716560509554 +8,2.1122883998664324,23.736066878980893 +9,2.073956640662661,24.37300955414013 +10,2.0258204246022897,24.591958598726116 +11,1.976819170508415,25.288614649681527 +12,1.9645711639124877,25.328423566878982 +13,1.9187730945599306,27.030254777070063 +14,1.9333772818753674,26.064888535031848 +15,1.8692992530810606,28.383757961783438 +16,1.8414717624141912,29.6875 +17,1.8119541778685941,30.04578025477707 +18,1.8536140182215697,29.45859872611465 +19,1.803924865024105,30.443869426751593 +20,1.8025869313319018,30.86186305732484 +21,1.7618995608797499,31.976512738853504 +22,1.7898432335276513,30.931528662420384 +23,1.7485907161311738,32.434315286624205 +24,1.7605761380711937,32.48407643312102 +25,1.743215579136162,33.07125796178344 +26,1.7282477708379174,33.23049363057325 +27,1.742697487211531,34.80294585987261 +28,1.7508670213116202,35.41003184713376 +29,1.7454238560549014,34.15605095541401 +30,1.7680819550896907,33.9171974522293 +31,1.657139300540754,37.6890923566879 +32,1.6954226341976482,36.35549363057325 +33,1.6603296478842473,37.738853503184714 +34,1.6722210531781434,37.569665605095544 +35,1.6462219953536987,37.74880573248408 +36,1.6204258628711579,39.082404458598724 +37,1.651900043912754,38.744028662420384 +38,1.6445934263763913,39.74920382165605 +39,1.6220688030218622,40.50557324840764 +40,1.590855087444281,41.05294585987261 +41,1.5781808134856496,41.361464968152866 +42,1.5672793532632718,41.79936305732484 +43,1.5337202465458282,42.07802547770701 +44,1.546882406161849,42.99363057324841 +45,1.5217988916263459,42.923964968152866 +46,1.5267101966651382,43.431528662420384 +47,1.486888017624047,44.735270700636946 +48,1.472653646378001,44.8546974522293 +49,1.496505322729706,45.44187898089172 +50,1.4511285450807803,46.76552547770701 +51,1.4264497164708034,46.76552547770701 +52,1.4699144014127694,46.28781847133758 +53,1.4399466233648313,46.74562101910828 +54,1.3969843934296042,47.919984076433124 +55,1.4356390260587073,47.830414012738856 +56,1.3975805127696626,48.984872611464965 +57,1.3451321481899092,49.95023885350319 +58,1.3839698824912878,50.21894904458599 +59,1.3858487970510107,50.21894904458599 +60,1.3985539150845474,49.850716560509554 +61,1.3876737006910287,50.8359872611465 +62,1.3523399298358116,52.19944267515923 +63,1.3301775516218441,52.61743630573248 +64,1.3109115384946204,52.517914012738856 +65,1.3039750411252307,53.45342356687898 +66,1.2977817658406154,54.02070063694268 +67,1.2963411291693425,54.448646496815286 +68,1.289435508144889,54.080414012738856 +69,1.289232185691785,54.48845541401274 +70,1.2767832636073897,54.697452229299365 +71,1.291308511973946,55.702627388535035 +72,1.281802067711095,54.98606687898089 +73,1.2684164950802068,55.99124203821656 +74,1.2781846534674335,56.41918789808917 +75,1.1967287636866235,58.25039808917197 +76,1.2493930796908725,57.294984076433124 +77,1.221498523927798,57.8125 +78,1.2394554854198625,58.52906050955414 +79,1.2093251074195668,58.62858280254777 +80,1.2252991757575113,58.28025477707006 +81,1.2197124183557595,58.7281050955414 +82,1.1807742232729674,58.42953821656051 +83,1.1912473333869011,59.43471337579618 +84,1.1723994047019133,59.32523885350319 +85,1.2800010970443676,57.34474522292994 +86,1.1876720505155576,58.190684713375795 +87,1.1723668051373428,60.19108280254777 +88,1.1725884960715178,59.73328025477707 +89,1.179050163098961,60.05175159235669 +90,1.1652895493112552,60.68869426751592 +91,1.1660986709746586,60.22093949044586 +92,1.142228449226185,60.90764331210191 +93,1.137061162739043,61.78343949044586 +94,1.1442972843054753,60.98726114649681 +95,1.1570586820316922,61.594347133757964 +96,1.1204857602240934,61.116640127388536 +97,1.1084931135936906,62.02229299363057 +98,1.1601466301140513,61.843152866242036 +99,1.1381644678723282,62.28105095541401 +100,1.113477860286737,62.509952229299365 diff --git a/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_3_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_3_Dec3.csv new file mode 100644 index 00000000000..76086321062 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3285531754706317,9.952229299363058 +2,2.3654619356629194,9.96218152866242 +3,2.3148523394469245,16.968550955414013 +4,2.27810956869915,17.207404458598727 +5,2.2135774664058805,18.958996815286625 +6,2.1859006669111314,21.954617834394906 +7,2.1378809456612653,23.63654458598726 +8,2.1619099150797365,23.23845541401274 +9,2.0732571790172796,24.80095541401274 +10,2.0726065514193976,24.910429936305732 +11,1.9795100780049706,26.62221337579618 +12,1.9749686938182565,27.348726114649683 +13,1.910833066436136,28.732085987261147 +14,1.9184879163268265,28.761942675159236 +15,1.8766120186277255,29.418789808917197 +16,1.8777815665409063,30.21496815286624 +17,1.8216498642210748,30.911624203821656 +18,1.8243526174763964,31.369426751592357 +19,1.8039295141863976,31.458996815286625 +20,1.8242056893694931,30.015923566878982 +21,1.814560458918286,30.523487261146496 +22,1.8002953225639975,31.538614649681527 +23,1.7548981479778412,32.31488853503185 +24,1.779968604160722,32.48407643312102 +25,1.7637105360152616,32.852308917197455 +26,1.7721984333293452,32.41441082802548 +27,1.7117962943520515,33.32006369426752 +28,1.7709698692248885,33.051353503184714 +29,1.7246121547784015,34.04657643312102 +30,1.761610577820213,34.195859872611464 +31,1.7285936653234397,34.04657643312102 +32,1.6869528680849986,35.46974522292994 +33,1.6894164837090073,36.455015923566876 +34,1.6847156969604977,36.36544585987261 +35,1.678504987127462,36.455015923566876 +36,1.6358946941460772,36.99243630573248 +37,1.6700523947454562,37.83837579617835 +38,1.6715692357652505,37.569665605095544 +39,1.6500292279917723,38.05732484076433 +40,1.6027081840357202,38.95302547770701 +41,1.6359784048833665,39.35111464968153 +42,1.6054035470743848,39.968152866242036 +43,1.604127869484531,40.51552547770701 +44,1.588912450583877,40.22691082802548 +45,1.5950988052756923,40.96337579617835 +46,1.5526322521221865,42.43630573248408 +47,1.5632283292758238,42.2671178343949 +48,1.5278441237795883,43.52109872611465 +49,1.5608733839290156,43.03343949044586 +50,1.503746925645573,44.87460191082803 +51,1.5355708697798904,44.50636942675159 +52,1.4926049063919455,44.46656050955414 +53,1.4971838817474947,45.073646496815286 +54,1.4962773581219326,45.45183121019108 +55,1.467399329136891,45.11345541401274 +56,1.4867308086650386,45.41202229299363 +57,1.4850102708597852,46.25796178343949 +58,1.4599204124159115,47.17356687898089 +59,1.4499942155400658,47.482085987261144 +60,1.4286031760987203,48.14888535031847 +61,1.4068254862621332,49.49243630573248 +62,1.3884757795151632,48.54697452229299 +63,1.3719631418301041,49.87062101910828 +64,1.3593191789214019,50.50756369426752 +65,1.4154139081383967,50.517515923566876 +66,1.351789884506517,51.015127388535035 +67,1.3825372791594002,50.0 +68,1.3575056578702986,51.92078025477707 +69,1.3246925279593011,52.498009554140125 +70,1.339612803261751,52.169585987261144 +71,1.3444197716986297,52.27906050955414 +72,1.330508306147946,53.5828025477707 +73,1.2908758574230657,53.97093949044586 +74,1.3360207137788178,53.443471337579616 +75,1.2522397663942568,55.264729299363054 +76,1.297100572829034,54.110270700636946 +77,1.2584782975494482,54.81687898089172 +78,1.2801251081144733,55.13535031847134 +79,1.2693661834783614,55.01592356687898 +80,1.3058928638506846,54.2296974522293 +81,1.2813535700937746,55.5234872611465 +82,1.2704921444510198,56.0609076433121 +83,1.284829007592171,55.642914012738856 +84,1.2291330064937567,56.57842356687898 +85,1.2117739384341393,57.34474522292994 +86,1.2236582746930942,57.14570063694268 +87,1.242034708238711,57.05613057324841 +88,1.232121764854261,57.09593949044586 +89,1.211444827401714,57.5437898089172 +90,1.1932390848542476,57.91202229299363 +91,1.1922940813052427,57.90207006369427 +92,1.2242926070644597,58.807722929936304 +93,1.1768954388654915,59.15605095541401 +94,1.1684875332625808,59.03662420382165 +95,1.1666060443137103,59.96218152866242 +96,1.196403312455317,60.06170382165605 +97,1.1734215712091725,59.93232484076433 +98,1.1842217635197245,60.05175159235669 +99,1.151553297878071,60.917595541401276 +100,1.1517793699434609,60.001990445859875 diff --git a/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_4_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_4_Dec3.csv new file mode 100644 index 00000000000..a9344b84406 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_4_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3257128584916424,9.952229299363058 +2,2.3682007516265675,9.952229299363058 +3,2.2990773225286203,17.70501592356688 +4,2.264329805495633,18.69028662420382 +5,2.1979098608539362,20.322452229299362 +6,2.164816665041978,22.014331210191084 +7,2.153661846355268,23.228503184713375 +8,2.1205387107885567,23.576831210191084 +9,2.0636465982267054,24.28343949044586 +10,2.0343253976979834,24.45262738853503 +11,2.003464094392813,25.19904458598726 +12,1.96862015450836,27.776671974522294 +13,1.93187928503486,27.428343949044585 +14,1.9264483383506725,27.647292993630572 +15,1.8969829674738987,28.115047770700638 +16,1.8585981502654447,29.88654458598726 +17,1.8341806891617503,30.025875796178344 +18,1.8332432007334034,30.812101910828027 +19,1.847976124970017,29.71735668789809 +20,1.8068483665490607,31.001194267515924 +21,1.808039576384672,31.011146496815286 +22,1.738753127444322,32.10589171974522 +23,1.7750636407524158,31.83718152866242 +24,1.7461367663304517,32.93192675159236 +25,1.83322019334052,31.96656050955414 +26,1.734885259039083,33.777866242038215 +27,1.7840523249024798,32.8921178343949 +28,1.7310755791937469,34.50437898089172 +29,1.7175504265317492,34.57404458598726 +30,1.7164430641064978,34.68351910828026 +31,1.7083575125712498,34.93232484076433 +32,1.6613009833985832,35.88773885350319 +33,1.6644547638619782,36.10668789808917 +34,1.682807098528382,36.13654458598726 +35,1.640875984149374,37.20143312101911 +36,1.6409729779905575,38.077229299363054 +37,1.618058241856326,38.823646496815286 +38,1.6957292078406947,37.22133757961783 +39,1.5829515859579584,39.639729299363054 +40,1.7108366861464872,37.519904458598724 +41,1.559394064982226,39.84872611464968 +42,1.5784516357312537,41.3515127388535 +43,1.5705118490632173,41.47093949044586 +44,1.5470114050397448,42.366640127388536 +45,1.5687286770267852,42.46616242038217 +46,1.5407611982078309,42.62539808917197 +47,1.5106236471492014,44.00875796178344 +48,1.5147261110840329,43.87937898089172 +49,1.4923679752714316,44.546178343949045 +50,1.455465634916998,46.02906050955414 +51,1.4969496537166036,45.64092356687898 +52,1.4505785954226353,46.6859076433121 +53,1.4663648893878718,48.49721337579618 +54,1.442742423646769,47.56170382165605 +55,1.465631609509705,47.40246815286624 +56,1.4301050529358492,47.74084394904459 +57,1.4128159193476295,48.2484076433121 +58,1.4073445827338347,48.97492038216561 +59,1.4050036380245428,48.88535031847134 +60,1.3708834139404782,49.87062101910828 +61,1.3813689635817412,50.67675159235669 +62,1.335260830107768,50.736464968152866 +63,1.3842236054171422,50.47770700636943 +64,1.3385737488983542,51.214171974522294 +65,1.339955105523395,52.03025477707006 +66,1.3358723228904092,52.3984872611465 +67,1.3150682532863252,52.219347133757964 +68,1.298680578067804,53.125 +69,1.3193801789526727,53.0453821656051 +70,1.3199887647750272,53.48328025477707 +71,1.2998607834433293,54.697452229299365 +72,1.243542980995907,55.1453025477707 +73,1.2472853394830303,55.652866242038215 +74,1.3164761556181939,53.41361464968153 +75,1.200980187980992,57.19546178343949 +76,1.2656719483387697,54.91640127388535 +77,1.2455966647263546,55.89171974522293 +78,1.2168759502423037,56.38933121019108 +79,1.2143318349388754,57.294984076433124 +80,1.2053051712406668,57.44426751592356 +81,1.206967518967428,57.19546178343949 +82,1.2005811265319775,58.051353503184714 +83,1.185360090368113,58.359872611464965 +84,1.178354038554392,59.1062898089172 +85,1.161377242036686,59.47452229299363 +86,1.134725017912069,59.166003184713375 +87,1.1645015436372939,59.47452229299363 +88,1.1320551637631313,61.13654458598726 +89,1.154139031270507,60.370222929936304 +90,1.1414722640802906,61.2062101910828 +91,1.1539799916516444,61.03702229299363 +92,1.1098731517032454,61.88296178343949 +93,1.1191980455331743,62.45023885350319 +94,1.1315414624609006,60.340366242038215 +95,1.133795601547144,62.06210191082803 +96,1.1431587516881858,61.79339171974522 +97,1.1133974167951353,62.88813694267516 +98,1.1107740766683203,62.93789808917197 +99,1.1072230339050293,63.18670382165605 +100,1.0919726733948774,63.42555732484077 diff --git a/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_5_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_5_Dec3.csv new file mode 100644 index 00000000000..1458e9f3ab6 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_5_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3261282018795133,9.952229299363058 +2,2.344807527627155,9.96218152866242 +3,2.2863548758682932,17.41640127388535 +4,2.2756532802703275,18.939092356687897 +5,2.258827645307893,22.969745222929937 +6,2.195717693893773,23.347929936305732 +7,2.192596669409685,23.79578025477707 +8,2.124985895339091,24.34315286624204 +9,2.0646798937184037,25.019904458598727 +10,2.0368810360598717,25.298566878980893 +11,2.0319249349035275,25.179140127388536 +12,1.9643333535285512,26.811305732484076 +13,1.95663742578713,27.348726114649683 +14,1.8916230482660281,29.23964968152866 +15,1.8818028603389765,29.29936305732484 +16,1.927175877959865,27.199442675159236 +17,1.830762740153416,29.667595541401273 +18,1.8860216512801542,28.592754777070063 +19,1.8106606006622314,30.672770700636942 +20,1.8425343173324682,29.88654458598726 +21,1.8338072345514966,30.294585987261147 +22,1.8242379723081164,31.7078025477707 +23,1.7790103087759321,32.42436305732484 +24,1.7597520898102195,32.69307324840764 +25,1.7515804957432353,33.48925159235669 +26,1.7405321909363862,34.49442675159236 +27,1.748784697739182,34.583996815286625 +28,1.7482100937776506,35.031847133757964 +29,1.698432469064263,36.086783439490446 +30,1.684297588980122,36.46496815286624 +31,1.6979818047991224,37.3109076433121 +32,1.664109163223558,36.52468152866242 +33,1.680640135601068,38.00756369426752 +34,1.6758690708002466,37.28105095541401 +35,1.6811399201678623,38.19665605095541 +36,1.6676196376229548,37.60947452229299 +37,1.6685638291061304,39.0625 +38,1.608441377141673,40.107484076433124 +39,1.5764115297110977,41.222133757961785 +40,1.5995785749641953,39.828821656050955 +41,1.6082524744568356,41.21218152866242 +42,1.576624083670841,41.38136942675159 +43,1.5913445569907025,41.96855095541401 +44,1.539028661266254,42.82444267515923 +45,1.546350092644904,42.99363057324841 +46,1.5145688664381671,44.03861464968153 +47,1.528316251791207,44.80493630573248 +48,1.50755170727991,44.95421974522293 +49,1.5843883851531204,43.83957006369427 +50,1.4800822309627655,46.28781847133758 +51,1.426861801724525,47.780652866242036 +52,1.4513222396753396,47.46218152866242 +53,1.4141722006402957,47.59156050955414 +54,1.4617737410174814,47.37261146496815 +55,1.4214916510187137,47.95979299363057 +56,1.3889910066203706,49.29339171974522 +57,1.3659772508463282,49.53224522292994 +58,1.4268569392003831,49.24363057324841 +59,1.40575153129116,48.427547770700635 +60,1.395666372244525,49.78105095541401 +61,1.3706199204086498,51.214171974522294 +62,1.3108918754158505,51.323646496815286 +63,1.3571762340084004,52.189490445859875 +64,1.335791998608097,51.87101910828026 +65,1.341822493607831,52.19944267515923 +66,1.3240352299562685,52.886146496815286 +67,1.3069520232024465,53.43351910828026 +68,1.2876859265527907,54.05055732484077 +69,1.3076640769934198,52.56767515923567 +70,1.3046062588691711,53.98089171974522 +71,1.2838152016803717,54.16003184713376 +72,1.2680606162472137,55.10549363057325 +73,1.2609794132269112,56.29976114649681 +74,1.2345086901810518,56.041003184713375 +75,1.1715018183562407,58.0015923566879 +76,1.2568641377102798,56.91679936305732 +77,1.2096166792948535,56.55851910828026 +78,1.2855331370025684,56.80732484076433 +79,1.196938306662687,56.658041401273884 +80,1.246288017862162,56.0609076433121 +81,1.2277057174664394,57.86226114649681 +82,1.2170130523147098,58.09116242038217 +83,1.1985959790314837,57.7328821656051 +84,1.2240088479534077,57.34474522292994 +85,1.1815188162645716,58.7281050955414 +86,1.1713874613403514,59.42476114649681 +87,1.1862385899397978,59.88256369426752 +88,1.1654070209545695,59.355095541401276 +89,1.230965736944964,59.15605095541401 +90,1.1575936219494813,60.80812101910828 +91,1.1531452859283253,60.56926751592356 +92,1.1365315644604386,61.30573248407644 +93,1.1472842826205454,60.98726114649681 +94,1.1180110843318283,60.7484076433121 +95,1.1328913558060956,61.116640127388536 +96,1.109844853923579,61.932722929936304 +97,1.1469529897544035,62.14171974522293 +98,1.09671987849436,62.848328025477706 +99,1.1256488702099794,61.24601910828026 +100,1.083526035023343,63.59474522292994 diff --git a/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_6_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_6_Dec3.csv new file mode 100644 index 00000000000..a128dca7178 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_False_seed_6_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.333965530820713,9.952229299363058 +2,2.357863819523222,11.514729299363058 +3,2.3073379310073365,19.934315286624205 +4,2.2724602192070833,20.949442675159236 +5,2.218626069415147,21.964570063694268 +6,2.2103775382801225,22.91998407643312 +7,2.151092839089169,22.98964968152866 +8,2.1052965852105694,23.736066878980893 +9,2.0714114160294743,23.96496815286624 +10,2.0444195300910124,24.562101910828027 +11,1.9924939422850396,25.378184713375795 +12,2.005679951351919,25.62699044585987 +13,1.9294419691061517,28.06528662420382 +14,1.940396917094091,26.940684713375795 +15,1.8970197256962964,28.463375796178344 +16,1.8960979721348756,28.06528662420382 +17,1.8577176195800684,28.891321656050955 +18,1.860651183280216,29.468550955414013 +19,1.8389720438392299,29.767117834394906 +20,1.836010532014689,30.294585987261147 +21,1.8158057032117418,30.851910828025478 +22,1.8380485773086548,30.89171974522293 +23,1.7887446606994435,31.747611464968152 +24,1.842593110291062,29.956210191082803 +25,1.7970748881625522,32.27507961783439 +26,1.790601864741866,32.822452229299365 +27,1.7773216871698951,33.5390127388535 +28,1.7710255764092608,34.524283439490446 +29,1.77255768912613,34.24562101910828 +30,1.7724094512356314,34.67356687898089 +31,1.7133402976260823,34.922372611464965 +32,1.718969932786978,35.7484076433121 +33,1.6950881944340506,35.84792993630573 +34,1.6894611887111786,36.24601910828026 +35,1.6872999037906622,36.7734872611465 +36,1.6644591776428708,37.519904458598724 +37,1.666480101597537,38.50517515923567 +38,1.6551824542367535,38.24641719745223 +39,1.639491803327184,38.544984076433124 +40,1.6195538939943739,39.689490445859875 +41,1.588538318682628,39.67953821656051 +42,1.622480962686478,40.50557324840764 +43,1.6041445557478886,41.13256369426752 +44,1.6860352443282012,40.67476114649681 +45,1.5678306711707146,42.06807324840764 +46,1.5697739359679495,42.12778662420382 +47,1.5246303445973974,42.844347133757964 +48,1.5486837511609315,43.769904458598724 +49,1.5492160730301194,43.58081210191083 +50,1.4975614319941042,45.67078025477707 +51,1.4620170927351448,45.60111464968153 +52,1.462179414026297,45.98925159235669 +53,1.47844786780655,45.65087579617835 +54,1.442201646270266,45.491640127388536 +55,1.4195317834805532,48.457404458598724 +56,1.4527172161515352,47.392515923566876 +57,1.443949482243532,47.860270700636946 +58,1.435226962824536,48.60668789808917 +59,1.4259769878569681,48.27826433121019 +60,1.4069889556070803,49.63176751592356 +61,1.4269873139205251,49.12420382165605 +62,1.3938029116126383,49.58200636942675 +63,1.3748475578939838,49.990047770700635 +64,1.4097705726410932,50.33837579617835 +65,1.4133357007032747,50.74641719745223 +66,1.3741058399722834,51.1046974522293 +67,1.304228616368239,52.945859872611464 +68,1.33787515550662,52.78662420382165 +69,1.3174102837872352,52.56767515923567 +70,1.369038693844133,53.105095541401276 +71,1.383254609290202,52.53781847133758 +72,1.3162937950176798,53.83160828025478 +73,1.2771745510162062,53.83160828025478 +74,1.3083601278863894,54.21974522292994 +75,1.2245172926574757,56.05095541401274 +76,1.2673011562626832,55.86186305732484 +77,1.286227634757947,55.85191082802548 +78,1.2477420617820352,55.56329617834395 +79,1.2857425660844062,55.38415605095541 +80,1.271236868800631,56.20023885350319 +81,1.237036626430074,56.46894904458599 +82,1.2741309013336328,55.91162420382165 +83,1.2408196087096148,57.205414012738856 +84,1.2107216609511406,57.51393312101911 +85,1.2415018199355738,57.5437898089172 +86,1.2425652047631088,57.32484076433121 +87,1.2117182570657912,58.36982484076433 +88,1.1734093226444948,58.09116242038217 +89,1.2231050843645812,58.36982484076433 +90,1.193019713565802,58.15087579617835 +91,1.3194695954110212,56.259952229299365 +92,1.174490580513219,59.60390127388535 +93,1.1756449087410217,59.60390127388535 +94,1.1538755905096698,59.48447452229299 +95,1.1530497260154433,59.96218152866242 +96,1.1471694077655767,60.340366242038215 +97,1.1617654770802541,60.08160828025478 +98,1.1586311144433963,59.90246815286624 +99,1.112465106757583,61.285828025477706 +100,1.1361416578292847,60.25079617834395 diff --git a/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_True_seed_1_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_True_seed_1_Dec3.csv new file mode 100644 index 00000000000..936c9c021db --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_True_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3171806578423566,9.952229299363058 +2,2.3161499895107975,17.018312101910826 +3,2.2593577318130786,17.665207006369428 +4,2.224910573594889,23.20859872611465 +5,2.18152047570344,23.815684713375795 +6,2.099919057196113,24.41281847133758 +7,2.1126238661966505,24.51234076433121 +8,2.040565070832611,25.58718152866242 +9,2.0125887507845643,26.025079617834393 +10,1.976196813735233,28.453423566878982 +11,1.9502596817198832,28.035429936305732 +12,1.927351994119632,28.960987261146496 +13,1.8803515024245925,29.74721337579618 +14,1.8899626018135411,28.931130573248407 +15,1.8875222661692626,29.896496815286625 +16,1.9067413062806342,29.388933121019107 +17,1.8579178539810666,30.80214968152866 +18,1.849715954938512,31.399283439490446 +19,1.7986317280751125,32.882165605095544 +20,1.800214381734277,32.464171974522294 +21,1.788710636697757,32.92197452229299 +22,1.8054065461371356,33.14092356687898 +23,1.8051729020039746,33.767914012738856 +24,1.7801599335518612,34.394904458598724 +25,1.7726715005886782,34.46457006369427 +26,1.7787873122342832,35.07165605095541 +27,1.748221923591225,36.255971337579616 +28,1.7259355221584345,36.03702229299363 +29,1.6943521598342117,37.63933121019108 +30,1.6807940044220846,38.047372611464965 +31,1.6329102698405078,38.465366242038215 +32,1.6649996710431045,38.75398089171974 +33,1.6660041786303186,39.00278662420382 +34,1.6302533111754496,39.73925159235669 +35,1.663052435893162,40.644904458598724 +36,1.6059714555740356,41.21218152866242 +37,1.5988158276126643,41.78941082802548 +38,1.592546970980942,42.01831210191083 +39,1.5642544957482891,44.04856687898089 +40,1.6380711512960446,42.71496815286624 +41,1.5568458669504541,44.23765923566879 +42,1.519542276479636,45.28264331210191 +43,1.512171056619875,44.994028662420384 +44,1.5029737205262397,46.078821656050955 +45,1.5031975036973406,45.76035031847134 +46,1.5058311542887597,48.00955414012739 +47,1.4737037891035627,47.113853503184714 +48,1.4641765766083055,48.12898089171974 +49,1.4359541637882305,49.52229299363057 +50,1.4008346666955644,51.711783439490446 +51,1.4058067540454258,50.85589171974522 +52,1.3845661969701195,50.97531847133758 +53,1.4174281616879116,52.189490445859875 +54,1.35914263983441,52.2093949044586 +55,1.3827601139712486,52.388535031847134 +56,1.390297649013009,52.58757961783439 +57,1.35953993098751,53.3937101910828 +58,1.3281808009572849,54.65764331210191 +59,1.3550412988966438,52.65724522292994 +60,1.278298006695547,55.44386942675159 +61,1.341233622496295,54.369028662420384 +62,1.319410433055489,54.82683121019108 +63,1.3722867737909792,53.363853503184714 +64,1.3097198787768176,56.1703821656051 +65,1.2523249786370878,56.15047770700637 +66,1.3097393053352453,56.13057324840764 +67,1.2758295706882599,56.80732484076433 +68,1.2801658921181016,57.45421974522293 +69,1.2779074163193915,57.90207006369427 +70,1.2898074673239592,57.91202229299363 +71,1.2797374588668726,58.797770700636946 +72,1.2173670982099642,59.59394904458599 +73,1.2190008212806314,59.49442675159236 +74,1.2287693513426812,59.51433121019108 +75,1.1463942611293427,61.72372611464968 +76,1.2106905070839413,60.83797770700637 +77,1.2219884103270853,60.2109872611465 +78,1.2302024763101225,59.982085987261144 +79,1.1989624310450948,61.315684713375795 +80,1.1603717978592891,61.74363057324841 +81,1.17882004475138,61.6640127388535 +82,1.16731097060404,62.00238853503185 +83,1.158657202295437,62.65923566878981 +84,1.1463340042503016,62.93789808917197 +85,1.1529374137805526,62.679140127388536 +86,1.144753782612503,63.16679936305732 +87,1.122070068766357,63.86345541401274 +88,1.1398101665411786,63.35589171974522 +89,1.1537133861499227,63.42555732484077 +90,1.1640828062014974,63.55493630573248 +91,1.1240035363822987,63.76393312101911 +92,1.107066699653674,63.6046974522293 +93,1.1787660030802345,63.266321656050955 +94,1.0949138930648754,64.49044585987261 +95,1.1171948321306022,64.5203025477707 +96,1.0721901006000056,65.45581210191082 +97,1.081814701769762,65.45581210191082 +98,1.0859216774345204,64.99800955414013 +99,1.0919327052535526,65.09753184713375 +100,1.0677139580629433,65.56528662420382 diff --git a/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_True_seed_2_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_True_seed_2_Dec3.csv new file mode 100644 index 00000000000..2992b820f37 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_True_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.317762330838829,9.952229299363058 +2,2.314884289055114,14.798964968152866 +3,2.2610698034808894,19.635748407643312 +4,2.2232258319854736,23.138933121019107 +5,2.17917364266268,23.875398089171973 +6,2.1594115981630457,24.15406050955414 +7,2.1103991991395405,23.616640127388536 +8,2.0503128470888563,25.268710191082803 +9,1.9859518837776913,25.766321656050955 +10,1.9461528472839646,27.328821656050955 +11,1.9044560497733438,28.602707006369428 +12,1.8935849955127497,28.871417197452228 +13,1.8654418561109312,30.473726114649683 +14,1.9405074727003742,27.328821656050955 +15,1.9124419970117557,28.523089171974522 +16,1.8071222297704903,31.329617834394906 +17,1.8153368265006193,31.269904458598727 +18,1.78618532229381,32.98168789808917 +19,1.86611772190993,30.782245222929937 +20,1.7854131938545568,32.8921178343949 +21,1.7693518445749952,33.23049363057325 +22,1.7625077446554875,34.51433121019108 +23,1.7021335583583566,35.54936305732484 +24,1.7995659705180271,34.96218152866242 +25,1.7042453334589673,35.87778662420382 +26,1.72859872222706,35.06170382165605 +27,1.6989239552977737,36.982484076433124 +28,1.6610256775169616,38.28622611464968 +29,1.658191971718126,38.58479299363057 +30,1.6666244632878882,38.37579617834395 +31,1.6432029570743536,39.80891719745223 +32,1.6298912087823176,40.45581210191083 +33,1.6140697716148036,40.644904458598724 +34,1.609640065272143,41.02308917197452 +35,1.5749763910937462,42.41640127388535 +36,1.573251466082919,43.41162420382165 +37,1.4838618184350858,45.21297770700637 +38,1.5436649451589888,43.88933121019108 +39,1.4995060620034577,44.38694267515923 +40,1.5417871862460093,44.904458598726116 +41,1.4933777174372582,45.551353503184714 +42,1.566203020940161,45.2328821656051 +43,1.468080917741083,47.641321656050955 +44,1.4819035097292275,46.835191082802545 +45,1.4380261898040771,49.05453821656051 +46,1.4048829276090975,49.52229299363057 +47,1.4363270975222253,49.94028662420382 +48,1.4055778395598102,50.12937898089172 +49,1.4248574000255319,49.77109872611465 +50,1.363719998271602,52.92595541401274 +51,1.3663171226051962,52.31886942675159 +52,1.3795468370625927,52.358678343949045 +53,1.4143511330246166,52.080015923566876 +54,1.3969739614778263,52.776671974522294 +55,1.372708792899065,53.32404458598726 +56,1.3491569142432729,53.164808917197455 +57,1.3286981138454121,53.94108280254777 +58,1.3460517909116805,53.951035031847134 +59,1.3156961027983647,55.40406050955414 +60,1.336571980433859,55.21496815286624 +61,1.3230574514455855,55.82205414012739 +62,1.314771592617035,56.02109872611465 +63,1.293406800479646,56.50875796178344 +64,1.2796124922242134,56.05095541401274 +65,1.250173754373174,57.016321656050955 +66,1.2854488924810081,56.658041401273884 +67,1.2853171366035558,57.215366242038215 +68,1.2440201347800577,57.95183121019108 +69,1.245103023993741,57.75278662420382 +70,,10.011942675159236 +71,,10.011942675159236 +72,,10.011942675159236 +73,,10.011942675159236 +74,,10.011942675159236 +75,,10.011942675159236 +76,,10.011942675159236 +77,,10.011942675159236 +78,,10.011942675159236 +79,,10.011942675159236 +80,,10.011942675159236 +81,,10.011942675159236 +82,,10.011942675159236 +83,,10.011942675159236 +84,,10.011942675159236 +85,,10.011942675159236 +86,,10.011942675159236 +87,,10.011942675159236 +88,,10.011942675159236 +89,,10.011942675159236 +90,,10.011942675159236 +91,,10.011942675159236 +92,,10.011942675159236 +93,,10.011942675159236 +94,,10.011942675159236 +95,,10.011942675159236 +96,,10.011942675159236 +97,,10.011942675159236 +98,,10.011942675159236 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_True_seed_3_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_True_seed_3_Dec3.csv new file mode 100644 index 00000000000..f5b94ee32bb --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fedavg_varEpoch_True_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3298327695032595,9.952229299363058 +2,2.35711239097984,9.952229299363058 +3,2.291669001245195,17.14769108280255 +4,2.2302437193074804,22.691082802547772 +5,2.184029919326685,21.128582802547772 +6,2.153707992499042,23.86544585987261 +7,2.1008470483646273,24.193869426751593 +8,2.048969163256846,25.87579617834395 +9,2.0274119126568935,26.054936305732483 +10,1.9644073149201218,26.801353503184714 +11,1.9341991433672086,28.662420382165607 +12,1.9016002340681235,29.418789808917197 +13,1.8669152054817053,29.697452229299362 +14,1.9080346017886118,28.57285031847134 +15,1.8138348258984316,31.27985668789809 +16,1.7891945064447488,31.658041401273884 +17,1.7744468351837936,32.41441082802548 +18,1.8425328420225981,30.89171974522293 +19,1.8102006479433388,32.38455414012739 +20,1.7283429195926447,33.5390127388535 +21,1.7510857855438426,33.81767515923567 +22,1.811167813410425,33.14092356687898 +23,1.7564858767637022,33.638535031847134 +24,1.7168584644414817,35.42993630573248 +25,1.7260042520085717,35.98726114649681 +26,1.6749096364732001,36.116640127388536 +27,1.7472501727426129,36.05692675159236 +28,1.7095191311684383,37.33081210191083 +29,1.7028017492051337,37.818471337579616 +30,1.6890203732593803,37.44028662420382 +31,1.6732367603642166,38.485270700636946 +32,1.6781796103070497,38.11703821656051 +33,1.7001907119325772,38.55493630573248 +34,1.5912069256897945,40.91361464968153 +35,1.6340639568438196,41.90883757961783 +36,1.6579018170666542,39.3312101910828 +37,1.6246151726716642,42.57563694267516 +38,1.6399096037931502,42.67515923566879 +39,1.5407003194663176,45.17316878980892 +40,1.5602316780454795,44.317277070063696 +41,1.5884619070466157,44.69546178343949 +42,1.509517999970989,47.5218949044586 +43,1.5310269837166852,45.59116242038217 +44,1.5204646594964775,47.17356687898089 +45,1.5371819628272088,46.725716560509554 +46,1.524842061814229,46.914808917197455 +47,1.4470269535757174,48.71616242038217 +48,1.496143416234642,48.74601910828026 +49,1.4745185261319398,49.49243630573248 +50,1.4087872277399538,51.89092356687898 +51,1.4783683787485598,50.10947452229299 +52,1.4290137222618053,52.26910828025478 +53,1.4285061594786916,52.159633757961785 +54,1.467561481864589,50.61703821656051 +55,1.3659306620336642,51.154458598726116 +56,1.4318216856877515,51.492834394904456 +57,1.3711483091305776,52.557722929936304 +58,1.3645690558062997,53.79179936305732 +59,1.4074680896321679,52.388535031847134 +60,1.3630276246435324,54.369028662420384 +61,1.4020400199161214,53.49323248407644 +62,1.3121037175700923,54.866640127388536 +63,1.3514161778103775,54.40883757961783 +64,1.3526850111165625,54.896496815286625 +65,1.3544097182097707,54.57802547770701 +66,1.3496999767175906,55.24482484076433 +67,1.3490746241466256,55.10549363057325 +68,1.3052261764076865,55.623009554140125 +69,1.3361587680069504,56.14052547770701 +70,1.2861725703166549,56.797372611464965 +71,1.2735075438098542,57.245222929936304 +72,1.3052819230753905,56.74761146496815 +73,1.2966536302475413,56.7078025477707 +74,1.2623032684538775,56.240047770700635 +75,1.171484485173681,58.21058917197452 +76,1.2488224373501577,58.220541401273884 +77,1.252366475618569,58.638535031847134 +78,1.2130101835651763,58.59872611464968 +79,1.2498150953821316,59.28542993630573 +80,1.1988909297687993,59.27547770700637 +81,1.2363772616264925,59.07643312101911 +82,1.2290112493903773,59.554140127388536 +83,1.2149650689902578,60.56926751592356 +84,1.2049139984853707,60.19108280254777 +85,1.176341578459284,60.76831210191083 +86,1.186043937115153,60.41003184713376 +87,1.201699774736052,60.71855095541401 +88,1.1894946064159369,60.43988853503185 +89,1.1902627257784462,60.80812101910828 +90,1.1788726840049597,61.27587579617835 +91,1.190172308569501,61.43511146496815 +92,1.1787632005229878,61.5843949044586 +93,1.173830801134656,61.96257961783439 +94,1.1621336693976336,61.96257961783439 +95,1.1797626701889523,61.285828025477706 +96,1.150402984421724,62.54976114649681 +97,1.1271544896113646,62.738853503184714 +98,1.1416426692039343,63.326035031847134 +99,1.160589372656148,63.28622611464968 +100,1.1250231801324588,63.03742038216561 diff --git a/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_1_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_1_Dec3.csv new file mode 100644 index 00000000000..7927040090a --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.315104797387579,15.10748407643312 +2,2.3260210638592955,16.580414012738853 +3,2.28365945967899,17.018312101910826 +4,2.2111056853251854,17.406449044585987 +5,2.1490962786279666,17.57563694267516 +6,2.1127017402345207,17.963773885350317 +7,2.0845411886834793,18.003582802547772 +8,2.0617601188125123,18.043391719745223 +9,2.020969150931972,18.998805732484076 +10,1.9786929241411246,21.407245222929937 +11,1.9331608539933611,23.01950636942675 +12,1.8941924177157652,25.019904458598727 +13,1.8944581936878764,24.45262738853503 +14,1.8332013514391177,28.274283439490446 +15,1.825117329882968,28.523089171974522 +16,1.8080959745273468,28.55294585987261 +17,1.7686849247877765,29.478503184713375 +18,1.7711238686446171,29.667595541401273 +19,1.7472322678110401,29.826831210191084 +20,1.7114847898483276,30.951433121019107 +21,1.7206215319360139,30.82205414012739 +22,1.728438775250866,30.772292993630572 +23,1.6870678807519803,31.66799363057325 +24,1.6711741526415393,31.916799363057326 +25,1.65371130226524,32.10589171974522 +26,1.6629289115310475,32.47412420382165 +27,1.6791106432106844,32.75278662420382 +28,1.6610858334097893,33.30015923566879 +29,1.6405503499280116,33.73805732484077 +30,1.6479292804268515,33.89729299363057 +31,1.6095530736218593,34.80294585987261 +32,1.5938689685930871,35.031847133757964 +33,1.5989497467211098,35.15127388535032 +34,1.56522613498056,36.37539808917197 +35,1.5489937499829918,36.72372611464968 +36,1.574865690462149,37.11186305732484 +37,1.5393632088497187,38.067277070063696 +38,1.521383968887815,38.913216560509554 +39,1.5234160575137776,39.23168789808917 +40,1.4854691681588532,40.445859872611464 +41,1.4812940321150858,40.25676751592356 +42,1.5320029008160732,39.0625 +43,1.4824049670225496,41.09275477707006 +44,1.4738725636415422,41.30175159235669 +45,1.4329258567967993,42.24721337579618 +46,1.4778273105621338,41.34156050955414 +47,1.4430260255837897,42.96377388535032 +48,1.4422416504780957,42.71496815286624 +49,1.414145255544383,44.46656050955414 +50,1.3545647214172751,47.57165605095541 +51,1.3608640394393046,46.78542993630573 +52,1.3950842877102505,45.720541401273884 +53,1.3846154714086254,45.889729299363054 +54,1.3847015200147204,46.40724522292994 +55,1.3826055033191753,46.307722929936304 +56,1.3340929427723975,48.676353503184714 +57,1.32647246008466,49.0843949044586 +58,1.3103613648444983,49.8109076433121 +59,1.296227425147014,50.318471337579616 +60,1.2762422314874686,51.33359872611465 +61,1.2567550790537694,52.84633757961783 +62,1.252274065640322,52.73686305732484 +63,1.2559963263523806,52.76671974522293 +64,1.2548289541985578,53.17476114649681 +65,1.2425169193061294,53.41361464968153 +66,1.3033622453926474,50.70660828025478 +67,1.2338150367615328,53.84156050955414 +68,1.1895141430721161,56.488853503184714 +69,1.1981907456543794,56.34952229299363 +70,1.2134540092413593,55.36425159235669 +71,1.1679677150811358,57.31488853503185 +72,1.1554026804911863,58.29020700636943 +73,1.1384975348308588,59.21576433121019 +74,1.1407738848097007,59.056528662420384 +75,1.0894177806605199,61.594347133757964 +76,1.1283674281873521,59.60390127388535 +77,1.1309005526980018,59.753184713375795 +78,1.130795302284751,60.330414012738856 +79,1.1060485744931896,60.728503184713375 +80,1.087908006397782,61.285828025477706 +81,1.0822441801903353,62.121815286624205 +82,1.0626317892864252,62.848328025477706 +83,1.0704573123318375,62.24124203821656 +84,1.0789131301983146,62.60947452229299 +85,1.0509935659208116,63.35589171974522 +86,1.0540300641849543,63.73407643312102 +87,1.0746613870001143,62.07205414012739 +88,1.053147126534942,63.2265127388535 +89,1.01313672779472,64.8984872611465 +90,1.0061024393245672,65.30652866242038 +91,0.9811442042611966,66.07285031847134 +92,0.9904579748013976,66.3515127388535 +93,0.9867918635629545,66.77945859872611 +94,0.9784311063730033,66.85907643312102 +95,0.9937766877708921,66.12261146496816 +96,0.9783846246209115,66.50079617834395 +97,0.9609432448247436,66.77945859872611 +98,0.9480376877602498,67.89410828025478 +99,0.9474712838033202,68.11305732484077 +100,0.9404911079983802,68.16281847133757 diff --git a/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_2_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_2_Dec3.csv new file mode 100644 index 00000000000..f0f8dc0427a --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3210621821652553,9.952229299363058 +2,2.33184570871341,10.4796974522293 +3,2.285424016843176,17.15764331210191 +4,2.216387540671476,16.978503184713375 +5,2.1618236409630747,17.456210191082803 +6,2.117807229613043,17.63535031847134 +7,2.0862768858101717,17.943869426751593 +8,2.052160153723067,18.670382165605094 +9,2.004997902615055,19.844745222929937 +10,1.9576816930892362,23.85549363057325 +11,1.9497562031837026,22.671178343949045 +12,1.9147363680942802,25.895700636942674 +13,1.8921080691039942,25.87579617834395 +14,1.8692180715548765,27.24920382165605 +15,1.8484045282291,27.746815286624205 +16,1.8248192216180692,28.174761146496817 +17,1.7949494958683183,29.667595541401273 +18,1.7923618517104227,30.095541401273884 +19,1.766240251292089,30.10549363057325 +20,1.7612026140188715,30.254777070063696 +21,1.7405842535055367,30.82205414012739 +22,1.7262152425802437,31.429140127388536 +23,1.6991300301946652,31.69785031847134 +24,1.70669464244964,31.568471337579616 +25,1.6737710875310716,32.742834394904456 +26,1.6802855805986245,32.52388535031847 +27,1.653413758156406,33.30015923566879 +28,1.6508483962648233,33.190684713375795 +29,1.6394462927131896,33.548964968152866 +30,1.633474069036496,33.608678343949045 +31,1.5919016812257707,35.80812101910828 +32,1.6024055313912167,34.25557324840764 +33,1.584324297631622,36.49482484076433 +34,1.5568788416066748,36.75358280254777 +35,1.562315649287716,37.13176751592356 +36,1.5686827396890919,37.38057324840764 +37,1.5444498677162608,38.05732484076433 +38,1.5371561202274007,38.47531847133758 +39,1.5230295923864765,39.00278662420382 +40,1.5275894449015333,39.609872611464965 +41,1.4716827877008232,40.644904458598724 +42,1.4913360131014683,40.42595541401274 +43,1.4770933473186127,40.7046178343949 +44,1.4334840425260507,41.948646496815286 +45,1.45891783571547,41.44108280254777 +46,1.4399281884454618,42.15764331210191 +47,1.4804486112230142,40.92356687898089 +48,1.409187941034888,43.41162420382165 +49,1.4024751224335592,44.22770700636943 +50,1.3561452687925595,46.12858280254777 +51,1.3493062341289155,46.48686305732484 +52,1.3766252531367502,45.1234076433121 +53,1.3606374461180086,46.138535031847134 +54,1.3750066157359226,45.630971337579616 +55,1.3435126125432884,46.45700636942675 +56,1.3281810670901255,47.58160828025478 +57,1.3138972482863505,48.427547770700635 +58,1.2981571650049488,49.233678343949045 +59,1.3231063139666417,47.96974522292994 +60,1.2962356209754944,49.80095541401274 +61,1.2769347615302749,49.930334394904456 +62,1.266708990570846,51.02507961783439 +63,1.261244315250664,51.23407643312102 +64,1.2537907696073982,52.517914012738856 +65,1.2409277471007816,52.65724522292994 +66,1.2238047760762987,53.55294585987261 +67,1.2231052369828437,53.25437898089172 +68,1.22216305003804,54.01074840764331 +69,1.211393605371949,54.697452229299365 +70,1.2206465051432325,54.21974522292994 +71,1.1765960253727663,55.92157643312102 +72,1.201137514251053,55.75238853503185 +73,1.1771395806294338,56.568471337579616 +74,1.152673157157412,56.857085987261144 +75,1.113830071725663,58.86743630573248 +76,1.1368588482498363,57.75278662420382 +77,1.1954587375282482,56.658041401273884 +78,1.1282154033138494,58.70820063694268 +79,1.127738923783515,58.67834394904459 +80,1.1228320909913179,59.09633757961783 +81,1.1120972773831361,59.67356687898089 +82,1.0855386572278989,60.12141719745223 +83,1.065429972994859,61.26592356687898 +84,1.0545014663107077,61.74363057324841 +85,1.0792869120646433,61.116640127388536 +86,1.0788076618674454,60.957404458598724 +87,1.0786574023544409,61.26592356687898 +88,1.0600148374867286,61.88296178343949 +89,1.0495036885996534,62.708996815286625 +90,1.0305332298491412,63.18670382165605 +91,1.043065076421021,63.067277070063696 +92,1.040035002930149,63.25636942675159 +93,1.0177269016101862,64.30135350318471 +94,1.0120814822282,64.53025477707007 +95,1.027845085806148,64.01273885350318 +96,0.9952852346335247,64.90843949044586 +97,1.029985146537708,64.3312101910828 +98,0.9820650667901252,66.33160828025478 +99,0.9698017209198824,66.3017515923567 +100,0.9851367431841079,65.54538216560509 diff --git a/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_3_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_3_Dec3.csv new file mode 100644 index 00000000000..e74d55c43e9 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3199906273252644,10.619028662420382 +2,2.344547958131049,10.778264331210192 +3,2.3331558400658285,17.665207006369428 +4,2.246501372877959,17.486066878980893 +5,2.1758382927839923,17.764729299363058 +6,2.1556734894491303,17.376592356687897 +7,2.092506854397476,18.36186305732484 +8,2.085138530488227,18.172770700636942 +9,2.0268479206000163,18.431528662420384 +10,1.9983871279248766,19.038614649681527 +11,1.9589628429169867,20.989251592356688 +12,1.9364035516787486,23.556926751592357 +13,1.8877565503879716,26.771496815286625 +14,1.8686993828245029,27.53781847133758 +15,1.829021926138811,28.78184713375796 +16,1.819847058338724,29.45859872611465 +17,1.8185040411675812,28.861464968152866 +18,1.8142925721065255,29.428742038216562 +19,1.7618285698495852,30.59315286624204 +20,1.7464169635894193,30.76234076433121 +21,1.735921292547967,31.100716560509554 +22,1.7567533846873387,30.354299363057326 +23,1.6955365139967318,32.13574840764331 +24,1.6953731911956884,32.02627388535032 +25,1.682507535454574,32.464171974522294 +26,1.671998845543831,32.93192675159236 +27,1.6512294703987753,32.792595541401276 +28,1.6487934490677658,33.379777070063696 +29,1.625056453571198,33.68829617834395 +30,1.6340319457327483,33.6484872611465 +31,1.61326921213964,34.23566878980892 +32,1.577061002421531,34.79299363057325 +33,1.5765688100438209,34.922372611464965 +34,1.582812701820568,35.758359872611464 +35,1.5735228076861922,36.007165605095544 +36,1.536245237490174,37.07205414012739 +37,1.526554007439097,36.703821656050955 +38,1.5475337429411093,37.97770700636943 +39,1.541651898888266,37.77866242038217 +40,1.5187541231228288,38.31608280254777 +41,1.4959593449428583,39.19187898089172 +42,1.51339887965257,38.61464968152866 +43,1.5110007334666646,39.64968152866242 +44,1.489702357608042,40.216958598726116 +45,1.4990559990998287,39.76910828025478 +46,1.4955920064525239,40.644904458598724 +47,1.4736669336914257,40.93351910828026 +48,1.4570230070952397,41.55055732484077 +49,1.4647515123816812,41.24203821656051 +50,1.3807958835249494,44.64570063694268 +51,1.435878952597357,41.9187898089172 +52,1.4274825047535502,42.87420382165605 +53,1.4594915862296038,40.88375796178344 +54,1.3849158879298313,44.8546974522293 +55,1.401944393564941,44.25756369426752 +56,1.374998960525367,45.491640127388536 +57,1.3725914264180858,45.45183121019108 +58,1.3461277257105349,46.805334394904456 +59,1.3530224751514994,46.466958598726116 +60,1.3793465635579103,45.98925159235669 +61,1.3490510252630634,47.223328025477706 +62,1.329806331995946,48.258359872611464 +63,1.31005409720597,48.69625796178344 +64,1.3081831484083917,48.91520700636943 +65,1.3345957178219108,48.228503184713375 +66,1.3011915357249557,50.13933121019108 +67,1.2806591683891928,50.80613057324841 +68,1.2669797847225408,51.40326433121019 +69,1.2615591021859722,52.169585987261144 +70,1.2444968781653483,52.64729299363057 +71,1.2321586593700822,53.71218152866242 +72,1.2470663474623565,53.105095541401276 +73,1.2735343560291703,52.58757961783439 +74,1.2208911431063512,54.48845541401274 +75,1.1546592131541793,58.051353503184714 +76,1.1697419126322315,57.67316878980892 +77,1.1632610483534018,57.91202229299363 +78,1.1576539851297998,57.832404458598724 +79,1.1653700057108691,57.34474522292994 +80,1.1688612270507084,57.68312101910828 +81,1.1671629255744302,58.07125796178344 +82,1.1663920051732641,57.56369426751592 +83,1.1383825912597074,58.966958598726116 +84,1.104478851245467,60.9375 +85,1.0837610861298386,61.902866242038215 +86,1.0982752461342296,61.455015923566876 +87,1.0970012219088852,60.27070063694268 +88,1.1096454050130904,60.001990445859875 +89,1.0982850023136017,61.04697452229299 +90,1.060265708501172,62.65923566878981 +91,1.0616325682895198,62.54976114649681 +92,1.0523872379284755,63.25636942675159 +93,1.031965898480385,63.83359872611465 +94,1.0597132402620497,62.99761146496815 +95,1.019922460720038,64.68949044585987 +96,1.0094370826794083,64.8984872611465 +97,1.0614238347217535,62.45023885350319 +98,1.010189239006893,65.01791401273886 +99,0.9923610463263882,65.67476114649682 +100,1.0035776275738029,65.45581210191082 diff --git a/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_4_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_4_Dec3.csv new file mode 100644 index 00000000000..2e3771ee303 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_4_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3265080376035847,10.788216560509554 +2,2.348465722077971,10.021894904458598 +3,2.3260630741240873,16.789410828025478 +4,2.2540617824360063,16.73964968152866 +5,2.1588023407444075,17.67515923566879 +6,2.1412409270644948,17.625398089171973 +7,2.1075834347184297,17.914012738853504 +8,2.070081549085629,18.19267515923567 +9,2.0364567489381047,18.630573248407643 +10,1.9959108730789963,20.033837579617835 +11,1.976537163090554,22.143710191082803 +12,1.9260592301180408,25.009952229299362 +13,1.8922959573709281,27.816480891719745 +14,1.8673124624665376,27.63734076433121 +15,1.8449549530721774,29.120222929936304 +16,1.8271800962982663,29.14012738853503 +17,1.7842064040481664,29.856687898089174 +18,1.7909650066096312,30.005971337579616 +19,1.7604795990476183,30.463773885350317 +20,1.7514672803271347,30.7921974522293 +21,1.7644758907852658,30.712579617834393 +22,1.7233453404371906,31.140525477707005 +23,1.7312301989573582,31.30971337579618 +24,1.7021149062806633,31.79737261146497 +25,1.6876605354296934,31.857085987261147 +26,1.704269173038993,32.11584394904459 +27,1.694101817288976,32.55374203821656 +28,1.6707786465906034,32.68312101910828 +29,1.637502833536476,32.822452229299365 +30,1.6364231891692824,33.42953821656051 +31,1.61962623656935,34.056528662420384 +32,1.6140485758994036,34.355095541401276 +33,1.5899127592706377,34.66361464968153 +34,1.593933606603343,34.51433121019108 +35,1.5938462056931417,35.46974522292994 +36,1.585784589409069,35.788216560509554 +37,1.579340593070741,36.007165605095544 +38,1.569418361232539,36.733678343949045 +39,1.54916065665567,37.11186305732484 +40,1.5336756782167276,37.52985668789809 +41,1.5171471667137875,38.13694267515923 +42,1.535977671100835,37.7687101910828 +43,1.5165299982022329,38.84355095541401 +44,1.4896786152177555,39.76910828025478 +45,1.4839063579109824,40.276671974522294 +46,1.4753575742624367,40.48566878980892 +47,1.4727329835770235,40.694665605095544 +48,1.4626605062727716,41.24203821656051 +49,1.4473735777435788,41.9187898089172 +50,1.3791278714586974,45.05374203821656 +51,1.4104657013704822,43.30214968152866 +52,1.4204856643251553,43.26234076433121 +53,1.4362682225597891,43.24243630573248 +54,1.3759325788279249,46.20820063694268 +55,1.389002083213466,46.048964968152866 +56,1.3822320980630862,45.25278662420382 +57,1.370627620417601,46.05891719745223 +58,1.3608799367953257,47.083996815286625 +59,1.3526695108717415,48.03941082802548 +60,1.3471092122375585,47.641321656050955 +61,1.3139577196661834,49.402866242038215 +62,1.3086634126438457,49.69148089171974 +63,1.3161848722749454,49.32324840764331 +64,1.2787934048160625,50.77627388535032 +65,1.2920136911094569,50.75636942675159 +66,1.2558282165770318,52.517914012738856 +67,1.2346507417168586,53.48328025477707 +68,1.2162883520885637,54.38893312101911 +69,1.210828943617025,55.065684713375795 +70,1.19645188568504,55.39410828025478 +71,1.1756404296607728,56.66799363057325 +72,1.1875291595793074,56.29976114649681 +73,1.1752315569835103,57.05613057324841 +74,1.1564692847288338,58.379777070063696 +75,1.1003052770711814,60.53941082802548 +76,1.1482556891289486,58.25039808917197 +77,1.1374990389605237,58.69824840764331 +78,1.1148605012589958,59.68351910828026 +79,1.102874192082958,60.360270700636946 +80,1.1094279923256796,60.05175159235669 +81,1.0604454354875406,62.54976114649681 +82,1.1005184616252874,61.04697452229299 +83,1.1158332672848064,60.90764331210191 +84,1.0887541801306853,61.65406050955414 +85,1.0663990082254835,62.66918789808917 +86,1.0550837494005822,62.97770700636943 +87,1.030121976023267,64.49044585987261 +88,1.0179227727233984,64.7093949044586 +89,1.0258066160663677,64.09235668789809 +90,1.0007069847386354,65.53542993630573 +91,0.9889320700791231,65.85390127388536 +92,0.9922785493218975,65.61504777070064 +93,0.9867820751135516,66.13256369426752 +94,1.0140298384769706,65.21695859872611 +95,0.9563467168504265,67.50597133757962 +96,0.9638854029831613,66.90883757961784 +97,0.9629493116573163,66.88893312101911 +98,0.9483788784142513,67.71496815286625 +99,0.9291016113985876,68.08320063694268 +100,0.9563307762145996,67.35668789808918 diff --git a/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_5_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_5_Dec3.csv new file mode 100644 index 00000000000..194e4971654 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_5_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.3209229700124947,9.952229299363058 +2,2.3369239348514825,17.396496815286625 +3,2.2842304569900413,17.21735668789809 +4,2.21466275081513,17.60549363057325 +5,2.166867366262302,17.80453821656051 +6,2.121183775792456,17.963773885350317 +7,2.086550834831918,18.172770700636942 +8,2.052600133950543,18.16281847133758 +9,2.0159612894058228,20.093550955414013 +10,1.9738247181959212,21.964570063694268 +11,1.9507204514400216,24.37300955414013 +12,1.9253248720412042,24.93033439490446 +13,1.876286070817595,28.284235668789808 +14,1.8712343714039796,27.587579617834393 +15,1.8379872908258135,29.050557324840764 +16,1.8170565784357156,29.189888535031848 +17,1.7929996730415685,29.408837579617835 +18,1.796822648898811,29.528264331210192 +19,1.7475147930679806,30.742436305732483 +20,1.7601069044914974,30.264729299363058 +21,1.7533337864906164,30.70262738853503 +22,1.712155247190196,30.7921974522293 +23,1.683953383925614,31.47890127388535 +24,1.6729382565067072,31.976512738853504 +25,1.6800418401220043,32.27507961783439 +26,1.665586402461787,32.434315286624205 +27,1.65294974472872,33.09116242038217 +28,1.6293529142999346,33.01154458598726 +29,1.6236198601449372,33.25039808917197 +30,1.6133419981428012,34.414808917197455 +31,1.6124947055889542,34.27547770700637 +32,1.6018111918382585,35.390127388535035 +33,1.6094300549501066,36.03702229299363 +34,1.576545922619522,36.116640127388536 +35,1.5640958570371009,37.11186305732484 +36,1.5333297761382572,37.62937898089172 +37,1.5432646722550605,38.077229299363054 +38,1.5308068155483077,38.24641719745223 +39,1.5279333948329756,39.09235668789809 +40,1.5197120851771846,38.236464968152866 +41,1.4876148723492957,40.445859872611464 +42,1.4849564095211636,40.14729299363057 +43,1.4716567681853179,40.833996815286625 +44,1.4575075138906004,41.978503184713375 +45,1.453014097395976,42.07802547770701 +46,1.4246623121249449,43.45143312101911 +47,1.4436965945419993,42.794585987261144 +48,1.4189290886471986,44.21775477707006 +49,1.4225328302687141,43.83957006369427 +50,1.3389827066166387,47.840366242038215 +51,1.379874581743957,45.75039808917197 +52,1.3581095246752357,47.024283439490446 +53,1.3541999409912497,47.00437898089172 +54,1.3563067419513775,47.54179936305732 +55,1.3600461930985663,47.442277070063696 +56,1.324563169934947,48.91520700636943 +57,1.327215452482746,48.86544585987261 +58,1.3110638321584958,49.72133757961783 +59,1.3044206264672007,50.0796178343949 +60,1.2880814956251982,50.796178343949045 +61,1.2947004558933768,50.32842356687898 +62,1.2739049837847425,52.14968152866242 +63,1.2178445253402563,53.97093949044586 +64,1.254139494744076,53.0453821656051 +65,1.2230704183791095,53.93113057324841 +66,1.2031940927930698,55.02587579617835 +67,1.2131105767693489,54.369028662420384 +68,1.175433565856545,56.36942675159236 +69,1.1799361474195105,56.11066878980892 +70,1.194132591508756,55.702627388535035 +71,1.1459354367225794,57.87221337579618 +72,1.155981286316161,57.42436305732484 +73,1.143575815258512,57.98168789808917 +74,1.1162095984835534,59.57404458598726 +75,1.0711976726343677,61.21616242038217 +76,1.0999910865619684,59.90246815286624 +77,1.084553015839522,60.977308917197455 +78,1.1089243072613029,59.972133757961785 +79,1.060910107223851,61.83320063694268 +80,1.0797623972983876,60.917595541401276 +81,1.08508862963148,61.06687898089172 +82,1.0719293765960984,61.43511146496815 +83,1.0851415634914567,61.285828025477706 +84,1.0568338359237477,62.19148089171974 +85,1.0207197089104136,63.883359872611464 +86,1.0314952021191834,63.36584394904459 +87,1.0199989983989934,63.853503184713375 +88,0.9930964541283382,65.20700636942675 +89,0.9806179882614476,66.03304140127389 +90,0.9833162180177725,66.09275477707007 +91,1.0059637283063998,64.42078025477707 +92,1.0217062663880123,64.83877388535032 +93,0.9463275447013272,67.04816878980891 +94,0.9653334207595534,66.82921974522293 +95,0.9626150518465953,66.66998407643312 +96,0.9285611981039594,67.77468152866243 +97,0.9502406746718535,67.17754777070064 +98,0.9297696989812668,67.98367834394904 +99,0.9319639084445444,68.01353503184713 +100,0.9144133416710386,68.4812898089172 diff --git a/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_6_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_6_Dec3.csv new file mode 100644 index 00000000000..2be31cf9e27 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_False_seed_6_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.323170036267323,11.29578025477707 +2,2.3476749195414746,10.738455414012739 +3,2.3094645518406183,16.968550955414013 +4,2.2170605537997687,17.24721337579618 +5,2.1648550094312924,17.585589171974522 +6,2.1258710402591974,17.983678343949045 +7,2.0889906420069897,18.13296178343949 +8,2.0533471031553425,17.87420382165605 +9,2.0173369266424968,18.81966560509554 +10,1.980418455828527,21.74562101910828 +11,1.9515831774207437,23.387738853503183 +12,1.9255661205121666,24.004777070063696 +13,1.8995675524328923,26.263933121019107 +14,1.9340127812828987,23.46735668789809 +15,1.8692498191906388,26.53264331210191 +16,1.867427232918466,26.642117834394906 +17,1.8435813621350914,27.27906050955414 +18,1.8188765466592873,28.423566878980893 +19,1.7816400383688082,29.777070063694268 +20,1.7895047786129508,29.279458598726116 +21,1.7674286897015419,29.926353503184714 +22,1.736599068732778,30.553343949044585 +23,1.7387556164128006,30.583200636942674 +24,1.7111573933036464,31.369426751592357 +25,1.7091061165378352,31.429140127388536 +26,1.7092156098906401,31.886942675159236 +27,1.6960373175371983,32.33479299363057 +28,1.6637079601834535,33.61863057324841 +29,1.643879387029417,33.65843949044586 +30,1.6360393899261572,34.583996815286625 +31,1.6251435925246804,34.524283439490446 +32,1.6190608398170228,35.25079617834395 +33,1.6384300031479757,35.867834394904456 +34,1.5966422125032753,36.74363057324841 +35,1.6017811814690852,37.11186305732484 +36,1.5684013435035755,37.72890127388535 +37,1.5735089444810417,37.62937898089172 +38,1.5741873691036443,37.37062101910828 +39,1.5492727900766263,37.649283439490446 +40,1.5282463905917612,39.50039808917197 +41,1.5363738620357148,39.32125796178344 +42,1.5198387636500559,39.20183121019108 +43,1.5322043242727874,39.32125796178344 +44,1.488476131372391,40.694665605095544 +45,1.5129829660342757,40.29657643312102 +46,1.468661473055554,41.580414012738856 +47,1.4458467952764718,42.49601910828026 +48,1.4736575670303054,41.38136942675159 +49,1.4428180296709583,43.30214968152866 +50,1.3852857176665287,44.53622611464968 +51,1.3963288873623891,43.62062101910828 +52,1.4216365214366062,43.341958598726116 +53,1.4051692007453578,44.068471337579616 +54,1.4080775907844494,44.55613057324841 +55,1.3935169718068117,44.92436305732484 +56,1.3554217974851086,46.138535031847134 +57,1.3385878102794575,46.81528662420382 +58,1.3420242617844016,46.666003184713375 +59,1.348436042761347,47.04418789808917 +60,1.3349300759613134,47.671178343949045 +61,1.3231583757764975,48.09912420382165 +62,1.3299932859505816,48.49721337579618 +63,1.2939354989938676,49.64171974522293 +64,1.2844839551646239,50.29856687898089 +65,1.2698227155740094,51.02507961783439 +66,1.2650193484725467,51.28383757961783 +67,1.2492882544827308,51.87101910828026 +68,1.245330235001388,52.109872611464965 +69,1.232016976471919,52.44824840764331 +70,1.2356244857144203,52.886146496815286 +71,1.2242896917519297,53.02547770700637 +72,1.294633028613534,51.46297770700637 +73,1.205980751924454,53.76194267515923 +74,1.1715272330934074,55.314490445859875 +75,1.1178062186119662,58.409633757961785 +76,1.1464271215116901,57.09593949044586 +77,1.1460535298487184,57.58359872611465 +78,1.1186232756657206,58.996815286624205 +79,1.1072798485209228,59.1062898089172 +80,1.0913811614558955,60.09156050955414 +81,1.079599334176179,61.13654458598726 +82,1.0642208946738274,62.091958598726116 +83,1.086357113282392,60.50955414012739 +84,1.107784345271481,59.8328025477707 +85,1.059586747057119,61.96257961783439 +86,1.0844638248917404,60.917595541401276 +87,1.0618516795194832,61.71377388535032 +88,1.028358872529048,63.405652866242036 +89,1.0594662613929458,62.2312898089172 +90,1.0122817902807977,64.18192675159236 +91,1.011283139893963,64.39092356687898 +92,1.0067660804766758,64.57006369426752 +93,0.9936128782618577,65.00796178343948 +94,0.9792866312014828,66.05294585987261 +95,1.0086930189163061,65.41600318471338 +96,0.972898439616914,66.13256369426752 +97,0.9951403999024895,65.32643312101911 +98,0.9554996190557055,66.74960191082802 +99,0.9357917153151931,67.61544585987261 +100,0.9595367536423313,67.22730891719745 diff --git a/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_True_seed_1_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_True_seed_1_Dec3.csv new file mode 100644 index 00000000000..2e82d3d07c6 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_True_seed_1_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.317422857709751,9.952229299363058 +2,2.315345864387075,16.520700636942674 +3,2.230932061079961,17.436305732484076 +4,2.1855118494884223,17.90406050955414 +5,2.1759652096754425,18.23248407643312 +6,2.0841863572977153,18.39171974522293 +7,2.0277935744850497,19.317277070063696 +8,1.976873764566555,26.194267515923567 +9,1.9050889447995811,26.92078025477707 +10,1.8374265341242408,28.433519108280255 +11,1.8474833851407289,28.134952229299362 +12,1.8186124737854976,28.81170382165605 +13,1.76847372161355,30.473726114649683 +14,1.7423642653568534,30.66281847133758 +15,1.77360634211522,31.130573248407643 +16,1.804514446076314,31.44904458598726 +17,1.7272089036406986,32.13574840764331 +18,1.7071246227641015,31.916799363057326 +19,1.7092719161586396,32.215366242038215 +20,1.6857397556304932,31.84713375796178 +21,1.652788580602901,33.59872611464968 +22,1.6331311411159053,34.87261146496815 +23,1.635786274436173,34.554140127388536 +24,1.642183461766334,34.225716560509554 +25,1.5835483582915775,34.26552547770701 +26,1.6102467798123694,33.31011146496815 +27,1.5740839258121078,36.35549363057325 +28,1.5688973346333595,37.03224522292994 +29,1.543909225494239,37.96775477707006 +30,1.5121322080587885,38.36584394904459 +31,1.5019000844590982,39.61982484076433 +32,1.5043539917393096,40.057722929936304 +33,1.5246041474069,39.45063694267516 +34,1.5403842781759371,39.29140127388535 +35,1.621570273569435,38.92316878980892 +36,1.5265084930286286,40.85390127388535 +37,1.4758203811706252,41.38136942675159 +38,1.4373788674166248,43.21257961783439 +39,1.4822998768205096,41.30175159235669 +40,1.418031204278302,44.52627388535032 +41,1.4523296637140262,43.21257961783439 +42,1.3915442691487112,44.83479299363057 +43,1.3773244429545797,45.54140127388535 +44,1.398947904823692,45.21297770700637 +45,1.3774229804421687,46.835191082802545 +46,1.3709150446448357,45.20302547770701 +47,1.3955913463215919,46.70581210191083 +48,1.3044706628580762,49.432722929936304 +49,1.2832908098864708,50.46775477707006 +50,1.2415438734801711,52.916003184713375 +51,1.2383386283923106,52.4781050955414 +52,1.2629424413298345,52.388535031847134 +53,1.270345842003063,51.26393312101911 +54,1.2171339730548252,53.84156050955414 +55,1.2367674708366394,53.781847133757964 +56,1.233558447877313,53.00557324840764 +57,1.2284201786016962,54.32921974522293 +58,1.2451291824602018,53.84156050955414 +59,1.2081015147980612,55.27468152866242 +60,1.1863474052423124,56.399283439490446 +61,1.1440658094776663,57.245222929936304 +62,1.2277068381856202,55.27468152866242 +63,1.1897015450107065,56.857085987261144 +64,1.1184641388571186,58.98686305732484 +65,1.1270065163351168,60.001990445859875 +66,1.1347854004544058,59.32523885350319 +67,1.1545618373876925,59.394904458598724 +68,1.1376394329556994,59.952229299363054 +69,1.1300721859476368,60.24084394904459 +70,1.1314961633105187,60.390127388535035 +71,1.0468371719311758,63.53503184713376 +72,1.029604573538349,63.64450636942675 +73,1.055295162899479,63.1468949044586 +74,1.058193756516572,63.13694267515923 +75,1.0029658219616884,65.37619426751593 +76,1.0704203046810854,63.126990445859875 +77,1.0803023143938393,62.55971337579618 +78,1.076910487785461,63.2265127388535 +79,1.0505587447221112,63.86345541401274 +80,1.0384932388165953,64.80891719745223 +81,1.0356739599993274,64.63972929936305 +82,1.044576655907236,64.39092356687898 +83,1.0137810467914412,65.99323248407643 +84,1.0231728276629357,65.71457006369427 +85,0.9951013095059972,66.04299363057325 +86,0.9187637241023361,68.69028662420382 +87,0.9617091402126725,67.30692675159236 +88,0.9836467094482131,67.12778662420382 +89,0.9541527560562085,67.71496815286625 +90,0.9856158624029463,67.51592356687898 +91,0.9315506944990462,68.640525477707 +92,0.9373066759413216,68.49124203821655 +93,0.9455711682131336,68.60071656050955 +94,0.93044430359154,68.79976114649682 +95,0.908236103262871,69.95421974522293 +96,0.9521328554411602,68.72014331210191 +97,0.9595020022361901,68.75995222929936 +98,0.9285405999535967,69.02866242038216 +99,0.9440389195824884,68.62062101910828 +100,0.8905244276022456,70.8499203821656 diff --git a/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_True_seed_2_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_True_seed_2_Dec3.csv new file mode 100644 index 00000000000..fe24a5caea5 --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_True_seed_2_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.323053435914835,9.952229299363058 +2,2.321219178521709,12.032245222929935 +3,2.2553766700112896,17.41640127388535 +4,2.197638183642345,18.13296178343949 +5,2.1433301025135503,16.391321656050955 +6,2.0567372536203665,19.19785031847134 +7,2.0252218550177896,24.41281847133758 +8,1.94583511656257,27.0203025477707 +9,1.8820141789260183,28.463375796178344 +10,1.8515147714857842,28.732085987261147 +11,1.8625184707580857,28.05533439490446 +12,1.7912364370504004,30.11544585987261 +13,1.7656986994348514,29.866640127388536 +14,1.7752910548714316,30.871815286624205 +15,1.8094612367593559,30.981289808917197 +16,1.7273729242336977,31.439092356687897 +17,1.7388568501563588,31.329617834394906 +18,1.7277991331306992,32.50398089171974 +19,1.7080323711322372,32.016321656050955 +20,1.652882606360563,33.130971337579616 +21,1.6659074452272646,34.34514331210191 +22,1.6895655978257489,33.84753184713376 +23,1.6708387667965736,33.12101910828026 +24,1.5836748871833655,33.966958598726116 +25,1.6145125050453624,34.056528662420384 +26,1.5727502836543283,36.116640127388536 +27,1.5552789390466775,37.75875796178344 +28,1.5865115094336735,37.37062101910828 +29,1.576968161163816,37.490047770700635 +30,1.5170947320901664,38.326035031847134 +31,1.5100541782986587,38.24641719745223 +32,1.5193407497588236,40.15724522292994 +33,1.566812023235734,38.326035031847134 +34,1.5663833648535856,39.659633757961785 +35,1.5111284035785941,40.416003184713375 +36,1.481950078040931,41.29179936305732 +37,1.4525175975386504,41.978503184713375 +38,1.4925338713226803,42.44625796178344 +39,1.5857112415277275,37.738853503184714 +40,1.4375476275280024,41.69984076433121 +41,1.4327905648832868,44.16799363057325 +42,1.4869527892701944,40.863853503184714 +43,1.4485413572590822,43.88933121019108 +44,1.404489765501326,44.5859872611465 +45,1.3912333819516904,43.99880573248408 +46,1.3922362722408999,46.54657643312102 +47,1.370101078300719,48.288216560509554 +48,1.3457654570318331,48.55692675159236 +49,1.3362862175437296,47.7109872611465 +50,1.2471910115260227,51.68192675159236 +51,1.3234738885976707,50.46775477707006 +52,1.2769316389302539,50.796178343949045 +53,1.2847694166147026,51.40326433121019 +54,1.2547558174011813,52.68710191082803 +55,1.2468236388674208,51.22412420382165 +56,1.2453281552928268,53.45342356687898 +57,1.2661642667594228,52.468152866242036 +58,1.263974366673998,53.5828025477707 +59,1.2211132634217572,54.85668789808917 +60,1.180359404178182,56.75756369426752 +61,1.23881491012634,54.38893312101911 +62,1.2902242237595236,53.99084394904459 +63,1.1461129044271579,56.74761146496815 +64,1.1151548282356019,60.1015127388535 +65,1.1719910692257487,58.11106687898089 +66,1.1705578273269022,59.11624203821656 +67,1.1612006270202102,58.857484076433124 +68,1.1357968183839398,60.68869426751592 +69,1.1828867599463007,59.335191082802545 +70,1.0984602528772536,61.88296178343949 +71,1.0390061853797572,64.19187898089172 +72,1.0674376833211086,62.96775477707006 +73,1.1217731385473992,61.3953025477707 +74,1.107467794114617,62.44028662420382 +75,1.0259245945389863,64.71934713375796 +76,1.1129859329029252,62.40047770700637 +77,1.0718858777337772,63.39570063694268 +78,1.082857313429474,63.83359872611465 +79,1.0557884247439682,64.36106687898089 +80,1.045524617289282,64.41082802547771 +81,1.0791358837656155,64.16202229299363 +82,1.020971412111999,66.49084394904459 +83,1.0022026972406228,66.50079617834395 +84,0.9902754435493688,66.93869426751593 +85,0.9882410935535553,67.87420382165605 +86,0.9684641756069888,67.3765923566879 +87,0.9414551438419683,68.13296178343948 +88,0.9535409941035471,68.79976114649682 +89,0.9533791395888966,68.25238853503184 +90,0.9736516568691108,68.50119426751593 +91,0.9507168795272802,69.03861464968153 +92,0.9703008236399122,68.84952229299363 +93,0.940281855642416,68.43152866242038 +94,0.9097011353179907,69.86464968152866 +95,0.9574422492722797,68.33200636942675 +96,0.9708465455443995,68.08320063694268 +97,0.9406123966168446,68.92914012738854 +98,0.9721986125608918,68.859474522293 +99,0.9053933656519386,70.10350318471338 +100,0.9318133774836352,70.22292993630573 diff --git a/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_True_seed_3_Dec3.csv b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_True_seed_3_Dec3.csv new file mode 100644 index 00000000000..a021d1894bd --- /dev/null +++ b/baselines/fednova/fednova/results/vanilla_fednova_varEpoch_True_seed_3_Dec3.csv @@ -0,0 +1,101 @@ +round,test_loss,test_accuracy +1,2.322097668981856,11.335589171974522 +2,2.3512930186690797,16.441082802547772 +3,2.296800385614869,15.92356687898089 +4,2.212728873939271,18.351910828025478 +5,2.127976627106879,18.242436305732483 +6,2.120145565385272,18.2921974522293 +7,2.0629556057559455,19.088375796178344 +8,1.9776615071448551,21.307722929936304 +9,1.967238001003387,23.07921974522293 +10,1.9365011567522765,25.109474522292995 +11,1.8895385128677271,28.84156050955414 +12,1.8438930184977829,28.393710191082803 +13,1.8740499110738182,29.09036624203822 +14,1.878917267368098,30.82205414012739 +15,1.773752624821511,31.399283439490446 +16,1.7917554310172985,31.28980891719745 +17,1.7760224031035308,31.67794585987261 +18,1.7565414206996846,31.588375796178344 +19,1.7005135937101523,32.58359872611465 +20,1.6944802346502899,33.15087579617835 +21,1.7396390794948409,32.822452229299365 +22,1.6872477713663867,33.160828025477706 +23,1.6420213568742108,34.554140127388536 +24,1.6783971391665709,33.578821656050955 +25,1.6217271590688427,34.67356687898089 +26,1.5867052731240632,36.315684713375795 +27,1.5953486580757579,36.514729299363054 +28,1.5969599735964635,36.38535031847134 +29,1.5778622095751915,35.390127388535035 +30,1.5358969565409764,38.1468949044586 +31,1.56532223209454,37.181528662420384 +32,1.5776945997954934,37.65923566878981 +33,1.6106544467294293,37.350716560509554 +34,1.5362199279153423,40.25676751592356 +35,1.5382185711222849,38.61464968152866 +36,1.4640603460324038,41.82921974522293 +37,1.533822179599932,40.14729299363057 +38,1.454336076785045,43.36186305732484 +39,1.4849179193472406,40.416003184713375 +40,1.47137078737757,41.98845541401274 +41,1.45907281310695,41.839171974522294 +42,1.4891309199059846,40.13734076433121 +43,1.4549119426945971,42.764729299363054 +44,1.4599462527378348,41.192277070063696 +45,1.4257656647141572,44.63574840764331 +46,1.4135652499593747,44.486464968152866 +47,1.338828225044688,47.23328025477707 +48,1.3825534749182926,44.82484076433121 +49,1.307464861566094,47.701035031847134 +50,1.2776346293983945,49.10429936305732 +51,1.3441938298523046,47.701035031847134 +52,1.3212076729270303,49.402866242038215 +53,1.3360372546372141,47.55175159235669 +54,1.300278852320021,48.7062101910828 +55,1.343466666094057,49.05453821656051 +56,1.3805833485475771,47.72093949044586 +57,1.31434104359074,49.47253184713376 +58,1.269891818997207,51.323646496815286 +59,1.2222657788331341,53.09514331210191 +60,1.3029375323064767,49.56210191082803 +61,1.2575010425725561,51.90087579617835 +62,1.217766563224185,54.110270700636946 +63,1.2282358385195398,53.76194267515923 +64,1.2324566241282566,55.39410828025478 +65,1.2165237243767757,54.16003184713376 +66,1.177224106849379,55.901671974522294 +67,1.215111520260003,55.24482484076433 +68,1.2429355538574753,53.83160828025478 +69,1.1372564423615765,59.01671974522293 +70,1.0938499269971422,60.30055732484077 +71,1.1212072566056708,59.06648089171974 +72,1.1461041133115246,58.51910828025478 +73,1.1461375670827878,58.548964968152866 +74,1.1358057063096647,58.748009554140125 +75,1.0694336010392305,61.843152866242036 +76,1.1292571493774464,59.056528662420384 +77,1.1200311574966284,60.7484076433121 +78,,10.011942675159236 +79,,10.011942675159236 +80,,10.011942675159236 +81,,10.011942675159236 +82,,10.011942675159236 +83,,10.011942675159236 +84,,10.011942675159236 +85,,10.011942675159236 +86,,10.011942675159236 +87,,10.011942675159236 +88,,10.011942675159236 +89,,10.011942675159236 +90,,10.011942675159236 +91,,10.011942675159236 +92,,10.011942675159236 +93,,10.011942675159236 +94,,10.011942675159236 +95,,10.011942675159236 +96,,10.011942675159236 +97,,10.011942675159236 +98,,10.011942675159236 +99,,10.011942675159236 +100,,10.011942675159236 diff --git a/baselines/fednova/fednova/server.py b/baselines/fednova/fednova/server.py new file mode 100644 index 00000000000..2fd7d42cde5 --- /dev/null +++ b/baselines/fednova/fednova/server.py @@ -0,0 +1,5 @@ +"""Create global evaluation function. + +Optionally, also define a new Server class (please note this is not needed in most +settings). +""" diff --git a/baselines/fednova/fednova/strategy.py b/baselines/fednova/fednova/strategy.py new file mode 100644 index 00000000000..91adb57b691 --- /dev/null +++ b/baselines/fednova/fednova/strategy.py @@ -0,0 +1,166 @@ +"""FedNova strategy.""" + +from logging import INFO +from typing import Dict, List, Optional, Tuple, Union + +import numpy as np +from flwr.common import ( + Metrics, + NDArray, + NDArrays, + Parameters, + Scalar, + ndarrays_to_parameters, + parameters_to_ndarrays, +) +from flwr.common.logger import log +from flwr.common.typing import FitRes +from flwr.server.client_proxy import ClientProxy +from flwr.server.strategy import FedAvg +from flwr.server.strategy.aggregate import aggregate +from omegaconf import DictConfig + + +class FedNova(FedAvg): + """FedNova.""" + + def __init__(self, exp_config: DictConfig, *args, **kwargs): + super().__init__(*args, **kwargs) + + # Maintain a momentum buffer for the weight updates across rounds of training + self.global_momentum_buffer: List[NDArray] = [] + if self.initial_parameters is not None: + self.global_parameters: List[NDArray] = parameters_to_ndarrays( + self.initial_parameters + ) + + self.exp_config = exp_config + self.lr = exp_config.optimizer.lr + + # momentum parameter for the server/strategy side momentum buffer + self.gmf = exp_config.optimizer.gmf + self.best_test_acc = 0.0 + + def aggregate_fit( + self, + server_round: int, + results: List[Tuple[ClientProxy, FitRes]], + failures: List[Union[Tuple[ClientProxy, FitRes], BaseException]], + ): + """Aggregate the results from the clients.""" + if not results: + return None, {} + + # Do not aggregate if there are failures and failures are not accepted + if not self.accept_failures and failures: + return None, {} + + # Compute tau_effective from summation of local client tau: Eqn-6: Section 4.1 + local_tau = [res.metrics["tau"] for _, res in results] + tau_eff = np.sum(local_tau) + + aggregate_parameters = [] + + for _client, res in results: + params = parameters_to_ndarrays(res.parameters) + # compute the scale by which to weight each client's gradient + # res.metrics["local_norm"] contains total number of local update steps + # for each client + # res.metrics["weight"] contains the ratio of client dataset size + # Below corresponds to Eqn-6: Section 4.1 + scale = tau_eff / float(res.metrics["local_norm"]) + scale *= float(res.metrics["weight"]) + + aggregate_parameters.append((params, scale)) + + # Aggregate all client parameters with a weighted average using the scale + # calculated above + agg_cum_gradient = aggregate(aggregate_parameters) + + # In case of Server or Hybrid Momentum, we decay the aggregated gradients + # with a momentum factor + self.update_server_params(agg_cum_gradient) + + return ndarrays_to_parameters(self.global_parameters), {} + + def update_server_params(self, cum_grad: NDArrays): + """Update the global server parameters by aggregating client gradients.""" + for i, layer_cum_grad in enumerate(cum_grad): + if self.gmf != 0: + # check if it's the first round of aggregation, if so, initialize the + # global momentum buffer + + if len(self.global_momentum_buffer) < len(cum_grad): + buf = layer_cum_grad / self.lr + self.global_momentum_buffer.append(buf) + + else: + # momentum updates using the global accumulated weights buffer + # for each layer of network + self.global_momentum_buffer[i] *= self.gmf + self.global_momentum_buffer[i] += layer_cum_grad / self.lr + + self.global_parameters[i] -= self.global_momentum_buffer[i] * self.lr + + else: + # weight updated eqn: x_new = x_old - gradient + # the layer_cum_grad already has all the learning rate multiple + self.global_parameters[i] -= layer_cum_grad + + def evaluate( + self, server_round: int, parameters: Parameters + ) -> Optional[Tuple[float, Dict[str, Scalar]]]: + """Overide default evaluate method to save model parameters.""" + if self.evaluate_fn is None: + # No evaluation function provided + return None + + parameters_ndarrays = parameters_to_ndarrays(parameters) + eval_res = self.evaluate_fn(server_round, parameters_ndarrays, {}) + + if eval_res is None: + return None + + loss, metrics = eval_res + accuracy = float(metrics["accuracy"]) + + if accuracy > self.best_test_acc: + self.best_test_acc = accuracy + + # Save model parameters and state + if server_round == 0: + return None + + np.savez( + f"{self.exp_config.checkpoint_path}bestModel_" + f"{self.exp_config.exp_name}_{self.exp_config.strategy}_" + f"varEpochs_{self.exp_config.var_local_epochs}.npz", + self.global_parameters, + [loss, self.best_test_acc], + self.global_momentum_buffer, + ) + + log(INFO, "Model saved with Best Test accuracy %.3f: ", self.best_test_acc) + + return loss, metrics + + +def weighted_average(metrics: List[Tuple[int, Metrics]]) -> Metrics: + """Aggregate the client metrics via weighted average for evaluation. + + Parameters + ---------- + metrics : List[Tuple[int, Metrics]] + The list of metrics to aggregate. + + Returns + ------- + Metrics + The weighted average metric. + """ + # Multiply accuracy of each client by number of examples used + accuracies = [num_examples * m["accuracy"] for num_examples, m in metrics] + examples = [num_examples for num_examples, _ in metrics] + + # Aggregate and return custom metric (weighted average) + return {"accuracy": np.sum(accuracies) / np.sum(examples)} diff --git a/baselines/fednova/fednova/utils.py b/baselines/fednova/fednova/utils.py new file mode 100644 index 00000000000..f3f7de1e8ac --- /dev/null +++ b/baselines/fednova/fednova/utils.py @@ -0,0 +1,185 @@ +"""Utility functions for FedNova such as computing accuracy, plotting results, etc.""" + + +import glob +import os +from typing import List, Tuple + +import matplotlib.pyplot as plt +import numpy as np +import pandas as pd +import torch +from flwr.common import Metrics +from omegaconf import DictConfig + + +def comp_accuracy(output, target, topk=(1,)): + """Compute accuracy over the k top predictions wrt the target.""" + with torch.no_grad(): + maxk = max(topk) + batch_size = target.size(0) + + _, pred = output.topk(maxk, 1, True, True) + pred = pred.t() + correct = pred.eq(target.view(1, -1).expand_as(pred)) + + res = [] + for k in topk: + correct_k = correct[:k].view(-1).float().sum(0, keepdim=True) + res.append(correct_k.mul_(100.0 / batch_size)) + return res + + +def weighted_average(metrics: List[Tuple[int, Metrics]]) -> Metrics: + """Return weighted average of accuracy metrics.""" + # Multiply accuracy of each client by number of examples used + accuracies = [num_examples * m["accuracy"] for num_examples, m in metrics] + examples = [num_examples for num_examples, _ in metrics] + + # Aggregate and return custom metric (weighted average) + return {"accuracy": np.sum(accuracies) / np.sum(examples)} + + +def fit_config(exp_config: DictConfig, server_round: int): + """Return training configuration dict for each round. + + Learning rate is reduced by a factor after set rounds. + """ + config = {} + + lr = exp_config.optimizer.lr + + if exp_config.lr_scheduling: + if server_round == int(exp_config.num_rounds / 2): + lr = exp_config.optimizer.lr / 10 + + elif server_round == int(exp_config.num_rounds * 0.75): + lr = exp_config.optimizer.lr / 100 + + config["lr"] = lr + config["server_round"] = server_round + return config + + +# pylint: disable=too-many-locals, too-many-statements +def generate_plots( + local_solvers: List[str], strategy: List[str], var_epochs: bool, momentum_plot=False +): + """Generate plots for all experiments, saved in directory _static.""" + root_path = "multirun/" + save_path = "_static/" + + def load_exp(exp_name: str, strat: str, var_epoch: bool): + exp_dirs = os.path.join( + root_path, + f"optimizer_{exp_name.lower()}_strategy_" + f"{strat.lower()}_var_local_epochs_{var_epoch}", + ) + exp_files = glob.glob(f"{exp_dirs}/*/*.csv") + + exp_df = [pd.read_csv(f) for f in exp_files] + exp_df = [df for df in exp_df if not df.isna().any().any()] + + assert len(exp_df) >= 1, ( + f"Atleast one results file must contain non-NaN values. " + f"NaN values found in all seed runs of {exp_df}" + ) + return exp_df + + def get_confidence_interval(data): + """Return 95% confidence intervals along with mean.""" + avg = np.mean(data, axis=0) + std = np.std(data, axis=0) + lower = avg - 1.96 * std / np.sqrt(len(data)) + upper = avg + 1.96 * std / np.sqrt(len(data)) + return avg, lower, upper + + # create tuple combination of experiment configuration for plotting + # [("vanilla", "fedavg", True), ("vanilla", "fednova", True)] + max_exp_len = max([len(local_solvers), len(strategy)]) + optim_exp_len = int(max_exp_len / len(local_solvers)) + strategy_exp_len = int(max_exp_len / len(strategy)) + var_epochs_len = int(max_exp_len) + exp_list = list( + zip( + local_solvers * optim_exp_len, + strategy * strategy_exp_len, + [var_epochs] * var_epochs_len, + ) + ) + + exp_data = [load_exp(*args) for args in exp_list] + + # Iterate over each experiment + plt.figure() + title = "" + for i, data_dfs in enumerate(exp_data): + # Iterate over multiple seeds of same experiment + combined_data = np.array([df["test_accuracy"].values for df in data_dfs]) + + mean, lower_ci, upper_ci = get_confidence_interval(combined_data) + + epochs = np.arange(1, len(mean) + 1) + + optimizer, server_strategy, variable_epoch = exp_list[i] + + # Assign more readable legends for each plot according to paper + if optimizer == "proximal" and server_strategy == "FedAvg": + label = "FedProx" + elif optimizer.lower() in ["server", "hybrid"]: + label = optimizer + elif optimizer.lower() == "vanilla" and momentum_plot: + label = "No Momentum" + else: + label = server_strategy + + plt.plot(epochs, mean, label=label) + plt.fill_between(epochs, lower_ci, upper_ci, alpha=0.3) + + if optimizer == "momentum": + optimizer_label = "SGD-M" + elif optimizer == "proximal": + optimizer_label = "SGD w/ Proximal" + else: + optimizer_label = "SGD" + + if var_epochs: + title = f"Local Solver: {optimizer_label}, Epochs ~ U(2, 5)" + else: + title = f"Local Solver: {optimizer_label}, Epochs = 2" + + print( + f"---------------------Local Solver: {optimizer.upper()}, " + f"Strategy: {server_strategy.upper()} Local Epochs Fixed: {variable_epoch}" + f"---------------------" + ) + print(f"Number of valid(not NaN) seeds for this experiment: {len(data_dfs)}") + + print(f"Test Accuracy: {mean[-1]:.2f} ± {upper_ci[-1] - mean[-1]:.2f}") + + if momentum_plot: + title = "Comparison of Momentum Schemes: FedNova" + save_name = "momentum_plot" + else: + save_name = local_solvers[0] + + plt.ylabel("Test Accuracy %", fontsize=12) + plt.xlabel("Communication rounds", fontsize=12) + plt.xlim([0, 103]) + plt.ylim([30, 80]) + plt.legend(loc="lower right", fontsize=12) + plt.grid() + plt.title(title, fontsize=15) + plt.savefig(f"{save_path}testAccuracy_{save_name}_varEpochs_{var_epochs}.png") + + plt.show() + + +if __name__ == "__main__": + for type_epoch_exp in [False, True]: + for solver in ["vanilla", "momentum", "proximal"]: + generate_plots([solver], ["FedAvg", "FedNova"], type_epoch_exp) + + generate_plots( + ["Hybrid", "Server", "Vanilla"], ["FedNova"], True, momentum_plot=True + ) diff --git a/baselines/fednova/pyproject.toml b/baselines/fednova/pyproject.toml new file mode 100644 index 00000000000..c9cc257239e --- /dev/null +++ b/baselines/fednova/pyproject.toml @@ -0,0 +1,144 @@ +[build-system] +requires = ["poetry-core>=1.4.0"] +build-backend = "poetry.masonry.api" + +[tool.poetry] +name = "fednova" # <----- Ensure it matches the name of your baseline directory containing all the source code +version = "1.0.0" +description = "Flower Baselines" +license = "Apache-2.0" +authors = ["The Flower Authors "] +readme = "README.md" +homepage = "https://flower.dev" +repository = "https://github.com/adap/flower" +documentation = "https://flower.dev" +classifiers = [ + "Development Status :: 3 - Alpha", + "Intended Audience :: Developers", + "Intended Audience :: Science/Research", + "License :: OSI Approved :: Apache Software License", + "Operating System :: MacOS :: MacOS X", + "Operating System :: POSIX :: Linux", + "Programming Language :: Python", + "Programming Language :: Python :: 3", + "Programming Language :: Python :: 3 :: Only", + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Programming Language :: Python :: Implementation :: CPython", + "Topic :: Scientific/Engineering", + "Topic :: Scientific/Engineering :: Artificial Intelligence", + "Topic :: Scientific/Engineering :: Mathematics", + "Topic :: Software Development", + "Topic :: Software Development :: Libraries", + "Topic :: Software Development :: Libraries :: Python Modules", + "Typing :: Typed", +] + +[tool.poetry.dependencies] +# tested with python == 3.10.11 +python = ">=3.10.0, <3.11.0" +flwr = { extras = ["simulation"], version = "1.5.0" } +hydra-core = "1.3.2" # don't change this +torch = { url = "https://download.pytorch.org/whl/cu117/torch-2.0.1%2Bcu117-cp310-cp310-linux_x86_64.whl"} +torchvision = { url = "https://download.pytorch.org/whl/cu117/torchvision-0.15.2%2Bcu117-cp310-cp310-linux_x86_64.whl"} +numpy = "1.21.6" +matplotlib = "3.5.3" +pandas = "1.3.5" + +[tool.poetry.dev-dependencies] +isort = "==5.11.5" +black = "==23.1.0" +docformatter = "==1.5.1" +mypy = "==1.4.1" +pylint = "==2.8.2" +flake8 = "==3.9.2" +pytest = "==6.2.4" +pytest-watch = "==4.2.0" +ruff = "==0.0.272" +types-requests = "==2.27.7" +virtualenv = "20.21.0" + +[tool.isort] +line_length = 88 +indent = " " +multi_line_output = 3 +include_trailing_comma = true +force_grid_wrap = 0 +use_parentheses = true + +[tool.black] +line-length = 88 +target-version = ["py38", "py39", "py310", "py311"] + +[tool.pytest.ini_options] +minversion = "6.2" +addopts = "-qq" +testpaths = [ + "flwr_baselines", +] + +[tool.mypy] +ignore_missing_imports = true +strict = false +plugins = "numpy.typing.mypy_plugin" + +[tool.pylint."MESSAGES CONTROL"] +disable = "bad-continuation,duplicate-code,too-few-public-methods,useless-import-alias" +good-names = "i,j,k,_,x,y,X,Y,lr,K,N,m,n,v,mu,p,g,df" +signature-mutators="hydra.main.main" + +[tool.pylint.typecheck] +generated-members="numpy.*, torch.*, tensorflow.*" + +[[tool.mypy.overrides]] +module = [ + "importlib.metadata.*", + "importlib_metadata.*", +] +follow_imports = "skip" +follow_imports_for_stubs = true +disallow_untyped_calls = false + +[[tool.mypy.overrides]] +module = "torch.*" +follow_imports = "skip" +follow_imports_for_stubs = true + +[tool.docformatter] +wrap-summaries = 88 +wrap-descriptions = 88 + +[tool.ruff] +target-version = "py38" +line-length = 88 +select = ["D", "E", "F", "W", "B", "ISC", "C4"] +fixable = ["D", "E", "F", "W", "B", "ISC", "C4"] +ignore = ["B024", "B027"] +exclude = [ + ".bzr", + ".direnv", + ".eggs", + ".git", + ".hg", + ".mypy_cache", + ".nox", + ".pants.d", + ".pytype", + ".ruff_cache", + ".svn", + ".tox", + ".venv", + "__pypackages__", + "_build", + "buck-out", + "build", + "dist", + "node_modules", + "venv", + "proto", +] + +[tool.ruff.pydocstyle] +convention = "numpy" diff --git a/doc/source/ref-changelog.md b/doc/source/ref-changelog.md index a25d8c3914b..7168386eaf0 100644 --- a/doc/source/ref-changelog.md +++ b/doc/source/ref-changelog.md @@ -12,6 +12,8 @@ - FedVSSL [#2412](https://github.com/adap/flower/pull/2412) + - FedNova [#2179](https://github.com/adap/flower/pull/2179) + ## v1.6.0 (2023-11-28) ### Thanks to our contributors