{"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/an-efficient-framework-for-clustered","title":"An Efficient Framework for Clustered Federated Learning","arxiv_id":"2006.04088","date":"2020-06-07","proceeding":"NeurIPS 2020 12","authors":["Avishek Ghosh","Jichan Chung","Dong Yin","Kannan Ramchandran"],"abstract":"We address the problem of federated learning (FL) where users are distributed and partitioned into clusters. This setup captures settings where different groups of users have their own objectives (learning tasks) but by aggregating their data with others in the same cluster (same learning task), they can leverage the strength in numbers in order to perform more efficient federated learning. For this new framework of clustered federated learning, we propose the Iterative Federated Clustering Algorithm (IFCA), which alternately estimates the cluster identities of the users and optimizes model parameters for the user clusters via gradient descent. We analyze the convergence rate of this algorithm first in a linear model with squared loss and then for generic strongly convex and smooth loss functions. We show that in both settings, with good initialization, IFCA is guaranteed to converge, and discuss the optimality of the statistical error rate. In particular, for the linear model with two clusters, we can guarantee that our algorithm converges as long as the initialization is slightly better than random. When the clustering structure is ambiguous, we propose to train the models by combining IFCA with the weight sharing technique in multi-task learning. In the experiments, we show that our algorithm can succeed even if we relax the requirements on initialization with random initialization and multiple restarts. We also present experimental results showing that our algorithm is efficient in non-convex problems such as neural networks. We demonstrate the benefits of IFCA over the baselines on several clustered FL benchmarks.","url_abs":"https://arxiv.org/abs/2006.04088v2","url_pdf":"https://arxiv.org/pdf/2006.04088v2.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":"an-efficient-framework-for-clustered","repo_url":"https://github.com/jichan3751/ifca","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"tf","reach":null},{"paper_slug":"an-efficient-framework-for-clustered","repo_url":"https://github.com/kun0906/brifca","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok"}},{"paper_slug":"an-efficient-framework-for-clustered","repo_url":"https://github.com/microsoft/feddrift","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"clustering","task_name":"Clustering"},{"task_slug":"federated-learning","task_name":"Federated Learning"},{"task_slug":"multi-task-learning","task_name":"Multi-Task Learning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2006.04088","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.04088"}},"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":"deterministic:regex_extraction","url":"https://github.com/jichan3751/ifca","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/kun0906/brifca","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/microsoft/feddrift","reach":null}],"summary":{"ran":2,"ran_draft_wrong":1},"by_repo_kind":{"official":{"samples":1,"ran":1,"repositories":1},"listed":{"samples":2,"ran":2,"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":1,"samples":[{"code_sha256_prefix":"e823e74333aea070","entry":"FedAvgEnsAggregatorClusterFL","repo":"microsoft/feddrift","repo_kind":"listed","path":"fedml_api/distributed/fedavg_ens/FedAvgEnsAggregatorClusterFL.py","file_url":"https://github.com/microsoft/feddrift/blob/HEAD/fedml_api/distributed/fedavg_ens/FedAvgEnsAggregatorClusterFL.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e823e74333aea070"}},{"code_sha256_prefix":"78b8b86c447a8050","entry":"Server","repo":"jichan3751/ifca","repo_kind":"official","path":"femnist/ifca/models/server.py","file_url":"https://github.com/jichan3751/ifca/blob/HEAD/femnist/ifca/models/server.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":"78b8b86c447a8050"}},{"code_sha256_prefix":"0e6f185a772e98b4","entry":"transform_list_to_tensor","repo":"microsoft/feddrift","repo_kind":"listed","path":"fedml_api/distributed/fedavg_ens/FedAvgEnsAggregatorClusterFL.py","file_url":"https://github.com/microsoft/feddrift/blob/HEAD/fedml_api/distributed/fedavg_ens/FedAvgEnsAggregatorClusterFL.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0e6f185a772e98b4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}