{"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/slowmo-improving-communication-efficient","title":"SlowMo: Improving Communication-Efficient Distributed SGD with Slow Momentum","arxiv_id":"1910.00643","date":"2019-10-01","proceeding":"ICLR 2020 1","authors":["Jianyu Wang","Vinayak Tantia","Nicolas Ballas","Michael Rabbat"],"abstract":"Distributed optimization is essential for training large models on large datasets. Multiple approaches have been proposed to reduce the communication overhead in distributed training, such as synchronizing only after performing multiple local SGD steps, and decentralized methods (e.g., using gossip algorithms) to decouple communications among workers. Although these methods run faster than AllReduce-based methods, which use blocking communication before every update, the resulting models may be less accurate after the same number of updates. Inspired by the BMUF method of Chen & Huo (2016), we propose a slow momentum (SlowMo) framework, where workers periodically synchronize and perform a momentum update, after multiple iterations of a base optimization algorithm. Experiments on image classification and machine translation tasks demonstrate that SlowMo consistently yields improvements in optimization and generalization performance relative to the base optimizer, even when the additional overhead is amortized over many updates so that the SlowMo runtime is on par with that of the base optimizer. We provide theoretical convergence guarantees showing that SlowMo converges to a stationary point of smooth non-convex losses. Since BMUF can be expressed through the SlowMo framework, our results also correspond to the first theoretical convergence guarantees for BMUF.","url_abs":"https://arxiv.org/abs/1910.00643v2","url_pdf":"https://arxiv.org/pdf/1910.00643v2.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":"slowmo-improving-communication-efficient","repo_url":"https://github.com/facebookresearch/fairscale/blob/main/fairscale/experimental/nn/data_parallel/gossip/distributed.py","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null},{"paper_slug":"slowmo-improving-communication-efficient","repo_url":"https://github.com/shuhuayu/dist-sign-momentum","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"blocking","task_name":"Blocking"},{"task_slug":"distributed-optimization","task_name":"Distributed Optimization"},{"task_slug":"image-classification","task_name":"Image Classification"},{"task_slug":"machine-translation","task_name":"Machine Translation"},{"task_slug":"translation","task_name":"Translation"},{"task_slug":"image-classification","task_name":"image-classification"}],"methods":[{"method_slug":"local-sgd","method_name":"Local SGD"},{"method_slug":"sgd","method_name":"SGD"},{"method_slug":"slowmo","method_name":"SlowMo"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1910.00643","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1910.00643"}},"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/shuhuayu/dist-sign-momentum","reach":{"status":"ok","spdx":"Apache-2.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/facebookresearch/fairscale/blob/main/fairscale/experimental/nn/data_parallel/gossip/distributed.py","reach":null}],"summary":{"unverified":3},"by_repo_kind":{"listed":{"samples":3,"ran":0,"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":"6531ba0f0e98d838","entry":"get_batch","repo":"shuhuayu/dist-sign-momentum","repo_kind":"listed","path":"nanoGPT/train_ddp.py","file_url":"https://github.com/shuhuayu/dist-sign-momentum/blob/HEAD/nanoGPT/train_ddp.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":"6531ba0f0e98d838"}},{"code_sha256_prefix":"a45844bbbc818cb3","entry":"get_device","repo":"shuhuayu/dist-sign-momentum","repo_kind":"listed","path":"fairscale/benchmarks/fsdp.py","file_url":"https://github.com/shuhuayu/dist-sign-momentum/blob/HEAD/fairscale/benchmarks/fsdp.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":"a45844bbbc818cb3"}},{"code_sha256_prefix":"bdf4c696b10f184e","entry":"get_lr","repo":"shuhuayu/dist-sign-momentum","repo_kind":"listed","path":"nanoGPT/train_ddp.py","file_url":"https://github.com/shuhuayu/dist-sign-momentum/blob/HEAD/nanoGPT/train_ddp.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":"bdf4c696b10f184e"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}