{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/locally-adaptive-federated-learning-via","title":"Locally Adaptive Federated Learning","arxiv_id":"2307.06306","date":"2023-07-12","proceeding":null,"authors":["Sohom Mukherjee","Nicolas Loizou","Sebastian U. Stich"],"abstract":"Federated learning is a paradigm of distributed machine learning in which multiple clients coordinate with a central server to learn a model, without sharing their own training data. Standard federated optimization methods such as Federated Averaging (FedAvg) ensure balance among the clients by using the same stepsize for local updates on all clients. However, this means that all clients need to respect the global geometry of the function which could yield slow convergence. In this work, we propose locally adaptive federated learning algorithms, that leverage the local geometric information for each client function. We show that such locally adaptive methods with uncoordinated stepsizes across all clients can be particularly efficient in interpolated (overparameterized) settings, and analyze their convergence in the presence of heterogeneous data for convex and strongly convex settings. We validate our theoretical claims by performing illustrative experiments for both i.i.d. non-i.i.d. cases. Our proposed algorithms match the optimization performance of tuned FedAvg in the convex setting, outperform FedAvg as well as state-of-the-art adaptive federated algorithms like FedAMS for non-convex experiments, and come with superior generalization performance.","url_abs":"https://arxiv.org/abs/2307.06306v2","url_pdf":"https://arxiv.org/pdf/2307.06306v2.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"locally-adaptive-federated-learning-via","repo_url":"https://github.com/IssamLaradji/sps","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"federated-learning","task_name":"Federated Learning"}],"methods":[{"method_slug":"sps-1","method_name":"SPS"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2307.06306","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2307.06306"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/IssamLaradji/sps","reach":{"status":"ok"}}],"summary":{"ran":14,"unverified":2},"by_repo_kind":{"official":{"samples":16,"ran":14,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":16,"samples":[{"code_sha256_prefix":"ea1e46ba1761264d","entry":"DenseNet121","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/base_classifiers.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/base_classifiers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ea1e46ba1761264d"}},{"code_sha256_prefix":"7e932ad645f424c7","entry":"Mlp_model","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/base_classifiers.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/base_classifiers.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7e932ad645f424c7"}},{"code_sha256_prefix":"f08f92818962f759","entry":"cartesian_exp_group","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f08f92818962f759"}},{"code_sha256_prefix":"854edde073446d3f","entry":"compute_grad_norm","repo":"IssamLaradji/sps","repo_kind":"official","path":"sps/sps.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/sps/sps.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"854edde073446d3f"}},{"code_sha256_prefix":"1e773e6d3488f072","entry":"compute_max_eta_logistic_loss","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/datasets.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/datasets.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1e773e6d3488f072"}},{"code_sha256_prefix":"905eaf98adec7f06","entry":"compute_max_eta_squared_loss","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/datasets.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/datasets.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"905eaf98adec7f06"}},{"code_sha256_prefix":"ec42fac3f9092cdf","entry":"compute_metric_on_dataset","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/metrics.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ec42fac3f9092cdf"}},{"code_sha256_prefix":"0e62b13e0a76c17b","entry":"flatten_dict","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0e62b13e0a76c17b"}},{"code_sha256_prefix":"7f83ed823e106050","entry":"get_grad_list","repo":"IssamLaradji/sps","repo_kind":"official","path":"sps/sps.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/sps/sps.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"7f83ed823e106050"}},{"code_sha256_prefix":"c924c6e36674ea12","entry":"get_metric_function","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/metrics.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c924c6e36674ea12"}},{"code_sha256_prefix":"101a4188e9a3c415","entry":"get_metric_function","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"101a4188e9a3c415"}},{"code_sha256_prefix":"63bc3f6e6aa83022","entry":"logistic_l2_loss","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"63bc3f6e6aa83022"}},{"code_sha256_prefix":"8b7a581b3d5a8d9c","entry":"mse_score","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/metrics.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"8b7a581b3d5a8d9c"}},{"code_sha256_prefix":"eb27d1b939fc3342","entry":"opt_step","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/utils.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/utils.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"eb27d1b939fc3342"}},{"code_sha256_prefix":"a5848be464d3178c","entry":"get_classifier","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/base_classifiers.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/base_classifiers.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"a5848be464d3178c"}},{"code_sha256_prefix":"761b1112f10f4e8a","entry":"get_model","repo":"IssamLaradji/sps","repo_kind":"official","path":"src/models.py","file_url":"https://github.com/IssamLaradji/sps/blob/HEAD/src/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"761b1112f10f4e8a"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}