{"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/a-graph-theoretic-framework-of-recomputation","title":"A Graph Theoretic Framework of Recomputation Algorithms for Memory-Efficient Backpropagation","arxiv_id":"1905.11722","date":"2019-05-28","proceeding":"NeurIPS 2019 12","authors":["Mitsuru Kusumoto","Takuya Inoue","Gentaro Watanabe","Takuya Akiba","Masanori Koyama"],"abstract":"Recomputation algorithms collectively refer to a family of methods that aims to reduce the memory consumption of the backpropagation by selectively discarding the intermediate results of the forward propagation and recomputing the discarded results as needed. In this paper, we will propose a novel and efficient recomputation method that can be applied to a wider range of neural nets than previous methods. We use the language of graph theory to formalize the general recomputation problem of minimizing the computational overhead under a fixed memory budget constraint, and provide a dynamic programming solution to the problem. Our method can reduce the peak memory consumption on various benchmark networks by 36%~81%, which outperforms the reduction achieved by other methods.","url_abs":"https://arxiv.org/abs/1905.11722v1","url_pdf":"https://arxiv.org/pdf/1905.11722v1.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":"a-graph-theoretic-framework-of-recomputation","repo_url":"https://github.com/pfnet-research/recompute","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"a-graph-theoretic-framework-of-recomputation","repo_url":"https://github.com/PaddlePaddle/FleetX/blob/develop/examples/resnet/train_fleet_recompute.py","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"paddle","reach":null},{"paper_slug":"a-graph-theoretic-framework-of-recomputation","repo_url":"https://github.com/PaddlePaddle/FleetX/tree/develop/examples/recompute","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"paddle","reach":null}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1905.11722","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1905.11722"}},"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/PaddlePaddle/FleetX/tree/develop/examples/recompute","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/PaddlePaddle/FleetX/blob/develop/examples/resnet/train_fleet_recompute.py","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/pfnet-research/recompute","reach":null}],"summary":{"ran_draft_wrong":2},"by_repo_kind":{"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":2,"samples":[{"code_sha256_prefix":"bab4fc0d83551d44","entry":"function_initialization","repo":"pfnet-research/recompute","repo_kind":"listed","path":"scripts/run_schedule.py","file_url":"https://github.com/pfnet-research/recompute/blob/HEAD/scripts/run_schedule.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"bab4fc0d83551d44"}},{"code_sha256_prefix":"5e74d7a6d75a42be","entry":"get","repo":"pfnet-research/recompute","repo_kind":"listed","path":"scripts/run_schedule.py","file_url":"https://github.com/pfnet-research/recompute/blob/HEAD/scripts/run_schedule.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"5e74d7a6d75a42be"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}