{"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/coupling-without-communication-and-drafter","title":"Coupling without Communication and Drafter-Invariant Speculative Decoding","arxiv_id":"2408.07978","date":"2024-08-15","proceeding":null,"authors":["Majid Daliri","Christopher Musco","Ananda Theertha Suresh"],"abstract":"Suppose Alice has a distribution $P$ and Bob has a distribution $Q$. Alice wants to draw a sample $a\\sim P$ and Bob a sample $b \\sim Q$ such that $a = b$ with as high of probability as possible. It is well-known that, by sampling from an optimal coupling between the distributions, Alice and Bob can achieve $\\Pr[a = b] = 1 - D_{TV}(P,Q)$, where $D_{TV}(P,Q)$ is the total variation distance between $P$ and $Q$. What if Alice and Bob must solve this same problem \\emph{without communicating at all?} Perhaps surprisingly, with access to public randomness, they can still achieve $\\Pr[a = b] \\geq \\frac{1 - D_{TV}(P,Q)}{1 + D_{TV}(P,Q)} \\geq 1-2D_{TV}(P,Q)$ using a simple protocol based on the Weighted MinHash algorithm. This bound was shown to be optimal in the worst-case by [Bavarian et al., 2020]. In this work, we revisit the communication-free coupling problem. We provide a simpler proof of the optimality result from [Bavarian et al., 2020]. We show that, while the worst-case success probability of Weighted MinHash cannot be improved, an equally simple protocol based on Gumbel sampling offers a Pareto improvement: for every pair of distributions $P, Q$, Gumbel sampling achieves an equal or higher value of $\\Pr[a = b]$ than Weighted MinHash. Importantly, this improvement translates to practice. We demonstrate an application of communication-free coupling to \\emph{speculative decoding}, a recent method for accelerating autoregressive large language models [Leviathan, Kalman, Matias, ICML 2023]. We show that communication-free protocols can be used to contruct \\emph{\\CSD{}} schemes, which have the desirable property that their output is fixed given a fixed random seed, regardless of what drafter is used for speculation. In experiments on a language generation task, Gumbel sampling outperforms Weighted MinHash. Code is available at https://github.com/majid-daliri/DISD.","url_abs":"https://arxiv.org/abs/2408.07978v3","url_pdf":"https://arxiv.org/pdf/2408.07978v3.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":"coupling-without-communication-and-drafter","repo_url":"https://github.com/majid-daliri/disd","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"text-generation","task_name":"Text Generation"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2408.07978","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2408.07978"}},"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":"deterministic:regex_extraction","url":"https://github.com/majid-daliri/DISD","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/majid-daliri/disd","reach":{"status":"ok"}}],"summary":{"ran_draft_wrong":5,"ran":2,"unverified":1},"by_repo_kind":{"official":{"samples":8,"ran":7,"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":8,"samples":[{"code_sha256_prefix":"f911f9bd006825c6","entry":"d_tv","repo":"majid-daliri/disd","repo_kind":"official","path":"plot_coupling_bounds.py","file_url":"https://github.com/majid-daliri/disd/blob/HEAD/plot_coupling_bounds.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f911f9bd006825c6"}},{"code_sha256_prefix":"291c879b8fd6bbe7","entry":"d_tv","repo":"majid-daliri/DISD","repo_kind":"official","path":"plot_coupling_bounds.py","file_url":"https://github.com/majid-daliri/DISD/blob/HEAD/plot_coupling_bounds.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"291c879b8fd6bbe7"}},{"code_sha256_prefix":"c749caa1397e26a9","entry":"gumbel_simulation","repo":"majid-daliri/disd","repo_kind":"official","path":"plot_coupling_bounds.py","file_url":"https://github.com/majid-daliri/disd/blob/HEAD/plot_coupling_bounds.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"c749caa1397e26a9"}},{"code_sha256_prefix":"eeea95f2937975c2","entry":"gumbel_simulation","repo":"majid-daliri/DISD","repo_kind":"official","path":"plot_coupling_bounds.py","file_url":"https://github.com/majid-daliri/DISD/blob/HEAD/plot_coupling_bounds.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"eeea95f2937975c2"}},{"code_sha256_prefix":"b60831067ed1c850","entry":"log_probs","repo":"majid-daliri/disd","repo_kind":"official","path":"generate_model_distribution.py","file_url":"https://github.com/majid-daliri/disd/blob/HEAD/generate_model_distribution.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b60831067ed1c850"}},{"code_sha256_prefix":"586b27e651101c24","entry":"sanitize_filename","repo":"majid-daliri/disd","repo_kind":"official","path":"generate_model_distribution.py","file_url":"https://github.com/majid-daliri/disd/blob/HEAD/generate_model_distribution.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"586b27e651101c24"}},{"code_sha256_prefix":"ea80be6ad6e47a5d","entry":"sanitize_filename","repo":"majid-daliri/disd","repo_kind":"official","path":"plot_coupling_bounds.py","file_url":"https://github.com/majid-daliri/disd/blob/HEAD/plot_coupling_bounds.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ea80be6ad6e47a5d"}},{"code_sha256_prefix":"d753515a5d74670c","entry":"generate","repo":"majid-daliri/disd","repo_kind":"official","path":"generate_model_distribution.py","file_url":"https://github.com/majid-daliri/disd/blob/HEAD/generate_model_distribution.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d753515a5d74670c"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}