{"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/characterizing-and-optimizing-end-to-end","title":"Characterizing and Optimizing End-to-End Systems for Private Inference","arxiv_id":"2207.07177","date":"2022-07-14","proceeding":null,"authors":["Karthik Garimella","Zahra Ghodsi","Nandan Kumar Jha","Siddharth Garg","Brandon Reagen"],"abstract":"In two-party machine learning prediction services, the client's goal is to query a remote server's trained machine learning model to perform neural network inference in some application domain. However, sensitive information can be obtained during this process by either the client or the server, leading to potential collection, unauthorized secondary use, and inappropriate access to personal information. These security concerns have given rise to Private Inference (PI), in which both the client's personal data and the server's trained model are kept confidential. State-of-the-art PI protocols consist of a pre-processing or offline phase and an online phase that combine several cryptographic primitives: Homomorphic Encryption (HE), Secret Sharing (SS), Garbled Circuits (GC), and Oblivious Transfer (OT). Despite the need and recent performance improvements, PI remains largely arcane today and is too slow for practical use. This paper addresses PI's shortcomings with a detailed characterization of a standard high-performance protocol to build foundational knowledge and intuition in the systems community. Our characterization pinpoints all sources of inefficiency -- compute, communication, and storage. In contrast to prior work, we consider inference request arrival rates rather than studying individual inferences in isolation and we find that the pre-processing phase cannot be ignored and is often incurred online as there is insufficient downtime to hide pre-compute latency. Finally, we leverage insights from our characterization and propose three optimizations to address the storage (Client-Garbler), computation (layer-parallel HE), and communication (wireless slot allocation) overheads. Compared to the state-of-the-art PI protocol, these optimizations provide a total PI speedup of 1.8$\\times$ with the ability to sustain inference requests up to a 2.24$\\times$ greater rate.","url_abs":"https://arxiv.org/abs/2207.07177v2","url_pdf":"https://arxiv.org/pdf/2207.07177v2.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":"links_only","authors_date_abstract":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license), from the Kaggle arXiv metadata snapshot of 2026-09-12"},"code_links":[{"paper_slug":"characterizing-and-optimizing-end-to-end","repo_url":"https://github.com/kvgarimella/characterizing-private-inference","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2207.07177","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2207.07177"}},"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/kvgarimella/characterizing-private-inference","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":4},"by_repo_kind":{"official":{"samples":4,"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":"436dbb098b2c74c8","entry":"get_data","repo":"kvgarimella/characterizing-private-inference","repo_kind":"official","path":"artifact/client_vs_server.py","file_url":"https://github.com/kvgarimella/characterizing-private-inference/blob/HEAD/artifact/client_vs_server.py","link_basis":"harvester_set","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":"436dbb098b2c74c8"}},{"code_sha256_prefix":"d39a3ad746698546","entry":"get_data","repo":"kvgarimella/characterizing-private-inference","repo_kind":"official","path":"artifact/latency_breakdown_server_garbler.py","file_url":"https://github.com/kvgarimella/characterizing-private-inference/blob/HEAD/artifact/latency_breakdown_server_garbler.py","link_basis":"harvester_set","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":"d39a3ad746698546"}},{"code_sha256_prefix":"cacd88da5725fa99","entry":"get_params","repo":"kvgarimella/characterizing-private-inference","repo_kind":"official","path":"artifact/client_vs_server.py","file_url":"https://github.com/kvgarimella/characterizing-private-inference/blob/HEAD/artifact/client_vs_server.py","link_basis":"harvester_set","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":"cacd88da5725fa99"}},{"code_sha256_prefix":"663c68ef5c68857f","entry":"get_prefix","repo":"kvgarimella/characterizing-private-inference","repo_kind":"official","path":"artifact/client_vs_server.py","file_url":"https://github.com/kvgarimella/characterizing-private-inference/blob/HEAD/artifact/client_vs_server.py","link_basis":"harvester_set","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":"663c68ef5c68857f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}