{"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/mime-mimicking-centralized-stochastic","title":"Mime: Mimicking Centralized Stochastic Algorithms in Federated Learning","arxiv_id":"2008.03606","date":"2020-08-08","proceeding":null,"authors":["Sai Praneeth Karimireddy","Martin Jaggi","Satyen Kale","Mehryar Mohri","Sashank J. Reddi","Sebastian U. Stich","Ananda Theertha Suresh"],"abstract":"Federated learning (FL) is a challenging setting for optimization due to the heterogeneity of the data across different clients which gives rise to the client drift phenomenon. In fact, obtaining an algorithm for FL which is uniformly better than simple centralized training has been a major open problem thus far. In this work, we propose a general algorithmic framework, Mime, which i) mitigates client drift and ii) adapts arbitrary centralized optimization algorithms such as momentum and Adam to the cross-device federated learning setting. Mime uses a combination of control-variates and server-level statistics (e.g. momentum) at every client-update step to ensure that each local update mimics that of the centralized method run on iid data. We prove a reduction result showing that Mime can translate the convergence of a generic algorithm in the centralized setting into convergence in the federated setting. Further, we show that when combined with momentum based variance reduction, Mime is provably faster than any centralized method--the first such result. We also perform a thorough experimental exploration of Mime's performance on real world datasets.","url_abs":"https://arxiv.org/abs/2008.03606v2","url_pdf":"https://arxiv.org/pdf/2008.03606v2.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":"mime-mimicking-centralized-stochastic","repo_url":"https://github.com/google-research/public-data-in-dpfl","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"tf","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"federated-learning","task_name":"Federated Learning"}],"methods":[{"method_slug":"adam","method_name":"Adam"},{"method_slug":"sgd","method_name":"SGD"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2008.03606","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2008.03606"}},"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/google-research/public-data-in-dpfl","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_draft_wrong":1,"unverified":5},"by_repo_kind":{"listed":{"samples":6,"ran":1,"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":0,"samples":[{"code_sha256_prefix":"56987b87a91ec23f","entry":"keras_evaluate","repo":"google-research/public-data-in-dpfl","repo_kind":"listed","path":"mirror_descent.py","file_url":"https://github.com/google-research/public-data-in-dpfl/blob/HEAD/mirror_descent.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"56987b87a91ec23f"}},{"code_sha256_prefix":"8281a4a071224715","entry":"build_server_broadcast_message","repo":"google-research/public-data-in-dpfl","repo_kind":"listed","path":"mirror_descent.py","file_url":"https://github.com/google-research/public-data-in-dpfl/blob/HEAD/mirror_descent.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"8281a4a071224715"}},{"code_sha256_prefix":"a8a69933cc6b5164","entry":"build_to_ids_fn","repo":"google-research/public-data-in-dpfl","repo_kind":"listed","path":"data_word_prediction.py","file_url":"https://github.com/google-research/public-data-in-dpfl/blob/HEAD/data_word_prediction.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"a8a69933cc6b5164"}},{"code_sha256_prefix":"11fd482b84b16433","entry":"create_recurrent_model","repo":"google-research/public-data-in-dpfl","repo_kind":"listed","path":"language_models.py","file_url":"https://github.com/google-research/public-data-in-dpfl/blob/HEAD/language_models.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"11fd482b84b16433"}},{"code_sha256_prefix":"ded3310148b0bc17","entry":"per_position_loss","repo":"google-research/public-data-in-dpfl","repo_kind":"listed","path":"metrics.py","file_url":"https://github.com/google-research/public-data-in-dpfl/blob/HEAD/metrics.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ded3310148b0bc17"}},{"code_sha256_prefix":"d3671d4599d7e978","entry":"split_input_target","repo":"google-research/public-data-in-dpfl","repo_kind":"listed","path":"data_word_prediction.py","file_url":"https://github.com/google-research/public-data-in-dpfl/blob/HEAD/data_word_prediction.py","link_basis":"harvester_set","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d3671d4599d7e978"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}