{"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/memory-efficient-pipeline-parallel-dnn","title":"Memory-Efficient Pipeline-Parallel DNN Training","arxiv_id":"2006.09503","date":"2020-06-16","proceeding":null,"authors":["Deepak Narayanan","Amar Phanishayee","Kaiyu Shi","Xie Chen","Matei Zaharia"],"abstract":"Many state-of-the-art ML results have been obtained by scaling up the number of parameters in existing models. However, parameters and activations for such large models often do not fit in the memory of a single accelerator device; this means that it is necessary to distribute training of large models over multiple accelerators. In this work, we propose PipeDream-2BW, a system that supports memory-efficient pipeline parallelism. PipeDream-2BW uses a novel pipelining and weight gradient coalescing strategy, combined with the double buffering of weights, to ensure high throughput, low memory footprint, and weight update semantics similar to data parallelism. In addition, PipeDream-2BW automatically partitions the model over the available hardware resources, while respecting hardware constraints such as memory capacities of accelerators and interconnect topologies. PipeDream-2BW can accelerate the training of large GPT and BERT language models by up to 20$\\times$ with similar final model accuracy.","url_abs":"https://arxiv.org/abs/2006.09503v3","url_pdf":"https://arxiv.org/pdf/2006.09503v3.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":"memory-efficient-pipeline-parallel-dnn","repo_url":"https://github.com/msr-fiddle/pipedream","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[],"methods":[{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"attention-dropout","method_name":"Attention Dropout"},{"method_slug":"bert","method_name":"BERT"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"cosine-annealing","method_name":"Cosine Annealing"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"discriminative-fine-tuning","method_name":"Discriminative Fine-Tuning"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"gpt","method_name":"GPT"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"linear-warmup-with-cosine-annealing","method_name":"Linear Warmup With Cosine Annealing"},{"method_slug":"linear-warmup-with-linear-decay","method_name":"Linear Warmup With Linear Decay"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"pipedream-2bw","method_name":"PipeDream-2BW"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"weight-decay","method_name":"Weight Decay"},{"method_slug":"wordpiece","method_name":"WordPiece"}],"datasets_introduced":[],"methods_introduced":[{"slug":"pipedream-2bw","name":"PipeDream-2BW","full_name":"PipeDream-2BW"}],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2006.09503","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2006.09503"}},"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/msr-fiddle/pipedream","reach":null}],"summary":{"ran":2,"unverified":8},"by_repo_kind":{"listed":{"samples":10,"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":0,"samples":[{"code_sha256_prefix":"3c265f2d8c92f3ee","entry":"Counter","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.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":"3c265f2d8c92f3ee"}},{"code_sha256_prefix":"111f03fa2d08d9c4","entry":"Queue","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.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":"111f03fa2d08d9c4"}},{"code_sha256_prefix":"89aff7109a54c076","entry":"CommunicationHandler","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"89aff7109a54c076"}},{"code_sha256_prefix":"3ae8ca5ecd61e9dc","entry":"ModulesWithDependencies","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3ae8ca5ecd61e9dc"}},{"code_sha256_prefix":"7cdedcfbbde8c89f","entry":"RuntimeStats","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"7cdedcfbbde8c89f"}},{"code_sha256_prefix":"2973f073a38c500d","entry":"StageRuntime","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2973f073a38c500d"}},{"code_sha256_prefix":"2ab17ec9dae4b8e0","entry":"_recv","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2ab17ec9dae4b8e0"}},{"code_sha256_prefix":"c577cb25127f2018","entry":"_send","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"c577cb25127f2018"}},{"code_sha256_prefix":"2d8868cdaa7fe53f","entry":"recv_helper_thread","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"2d8868cdaa7fe53f"}},{"code_sha256_prefix":"57414cce8342765c","entry":"send_helper_thread","repo":"msr-fiddle/pipedream","repo_kind":"listed","path":"runtime/runtime.py","file_url":"https://github.com/msr-fiddle/pipedream/blob/HEAD/runtime/runtime.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"57414cce8342765c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}