You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Thanks for starting the refactoring. Here are a few comments to go even further. I will not mark anything as compulsory given the time constraints, but it would be great to save what will not be done as an issue for future work.
Optimization: in fed_benchmark.py, in as much as possible, initialize dataloaders after checking if the experiment needs to be run or not
Cutting main in fed_benchmark.py into sub-functions to make it even more readable (it's > 370 lines long at the moment...). I give more actionable suggestions below.
Split main into sub-functions pooled_training, local_training, strategy_training. That will make this main much more simpler (but +1 for the single_centric_training which is much better than before).
The logic for the tests if the exps are finished or not should be hidden in sub-functions for readability.
replace all the len(index_of_interest) < (NUM_CLIENTS + 1) tests to check if experiment is finished by a more explicit function like if check_exp_finished(df, hyperparameters, sname, num_updates)
same for all the statements #dealing with edge cases that should not happen --> in sub-functions
Lots of variables are assigned very short names, like training_dls for training_dataloaders, s for strategy, m for model... Better to use larger names
the logic for filling the hyperparameters' param could also be delegated in sub-functions.
conf.py should be renamed into something more explicit, like configuration_utils.py
The text was updated successfully, but these errors were encountered:
For the first point we need to find a quick way before initializing the dataloader if no experiments need to be run aka all results from the specified parameters set are already found in the dataframe. One should implement a function: check_new_xps_parameters_given() that takes the do_baseline dict, the strategy arguments and the seed and use the helper function already in benchmark utils to check that. If nothing is found it calls sys.exit() with a helpful message.
If and only if at least one xp is not found then we initialize dataloaders and thus we do not waste any time otherwise.
It would be very helpful when performing grid-search for different strategies in the same loop aka being able to use scripts similar to what is below:
Hi,
Thanks for starting the refactoring. Here are a few comments to go even further. I will not mark anything as compulsory given the time constraints, but it would be great to save what will not be done as an issue for future work.
replace all the len(index_of_interest) < (NUM_CLIENTS + 1) tests to check if experiment is finished by a more explicit function like if check_exp_finished(df, hyperparameters, sname, num_updates)
same for all the statements #dealing with edge cases that should not happen --> in sub-functions
The text was updated successfully, but these errors were encountered: