{"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-general-approach-to-adding-differential","title":"A General Approach to Adding Differential Privacy to Iterative Training Procedures","arxiv_id":"1812.06210","date":"2018-12-15","proceeding":null,"authors":["H. Brendan McMahan","Galen Andrew","Ulfar Erlingsson","Steve Chien","Ilya Mironov","Nicolas Papernot","Peter Kairouz"],"abstract":"In this work we address the practical challenges of training machine learning\nmodels on privacy-sensitive datasets by introducing a modular approach that\nminimizes changes to training algorithms, provides a variety of configuration\nstrategies for the privacy mechanism, and then isolates and simplifies the\ncritical logic that computes the final privacy guarantees. A key challenge is\nthat training algorithms often require estimating many different quantities\n(vectors) from the same set of examples --- for example, gradients of different\nlayers in a deep learning architecture, as well as metrics and batch\nnormalization parameters. Each of these may have different properties like\ndimensionality, magnitude, and tolerance to noise. By extending previous work\non the Moments Accountant for the subsampled Gaussian mechanism, we can provide\nprivacy for such heterogeneous sets of vectors, while also structuring the\napproach to minimize software engineering challenges.","url_abs":"http://arxiv.org/abs/1812.06210v2","url_pdf":"http://arxiv.org/pdf/1812.06210v2.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-general-approach-to-adding-differential","repo_url":"https://github.com/ChrisWaites/pyvacy","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"gone","observed_at":"2026-09-18","how":"tree_404+repo_404"}},{"paper_slug":"a-general-approach-to-adding-differential","repo_url":"https://github.com/ebagdasa/pytorch-privacy","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"a-general-approach-to-adding-differential","repo_url":"https://github.com/facebookresearch/pytorch-dp","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}},{"paper_slug":"a-general-approach-to-adding-differential","repo_url":"https://github.com/nvw1/deep-learning-fairness-light","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=1812.06210","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1812.06210"}},"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/nvw1/deep-learning-fairness-light","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ebagdasa/pytorch-privacy","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/ChrisWaites/pyvacy","reach":{"status":"gone","observed_at":"2026-09-18","how":"tree_404+repo_404"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/facebookresearch/pytorch-dp","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_honours":1,"ran_draft_wrong":1},"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":0,"samples":[{"code_sha256_prefix":"b9fda299a49d212a","entry":"compute_norm","repo":"ebagdasa/pytorch-privacy","repo_kind":"listed","path":"training.py","file_url":"https://github.com/ebagdasa/pytorch-privacy/blob/HEAD/training.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b9fda299a49d212a"}},{"code_sha256_prefix":"542819b5905164fd","entry":"create_table","repo":"ebagdasa/pytorch-privacy","repo_kind":"listed","path":"training.py","file_url":"https://github.com/ebagdasa/pytorch-privacy/blob/HEAD/training.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":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"542819b5905164fd"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}