{"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/efficient-nearest-neighbor-language-models","title":"Efficient Nearest Neighbor Language Models","arxiv_id":"2109.04212","date":"2021-09-09","proceeding":"EMNLP 2021 11","authors":["Junxian He","Graham Neubig","Taylor Berg-Kirkpatrick"],"abstract":"Non-parametric neural language models (NLMs) learn predictive distributions of text utilizing an external datastore, which allows them to learn through explicitly memorizing the training datapoints. While effective, these models often require retrieval from a large datastore at test time, significantly increasing the inference overhead and thus limiting the deployment of non-parametric NLMs in practical applications. In this paper, we take the recently proposed $k$-nearest neighbors language model (Khandelwal et al., 2020) as an example, exploring methods to improve its efficiency along various dimensions. Experiments on the standard WikiText-103 benchmark and domain-adaptation datasets show that our methods are able to achieve up to a 6x speed-up in inference speed while retaining comparable performance. The empirical analysis we present may provide guidelines for future research seeking to develop or deploy more efficient non-parametric NLMs.","url_abs":"https://arxiv.org/abs/2109.04212v3","url_pdf":"https://arxiv.org/pdf/2109.04212v3.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":"efficient-nearest-neighbor-language-models","repo_url":"https://github.com/jxhe/efficient-knnlm","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"efficient-nearest-neighbor-language-models","repo_url":"https://github.com/cordercorder/knn-models","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"domain-adaptation","task_name":"Domain Adaptation"},{"task_slug":"language-modeling","task_name":"Language Modeling"},{"task_slug":"language-modelling","task_name":"Language Modelling"},{"task_slug":"retrieval","task_name":"Retrieval"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2109.04212","atlas_url":"https://app.syntology.ai/?focus=2109.04212","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2109.04212"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/jxhe/efficient-knnlm","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/cordercorder/knn-models","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"ran_fixture":1,"ran_honours":1,"unverified":1},"by_repo_kind":{"official":{"samples":3,"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":"0fb204a7e30e1277","entry":"interpolation","repo":"jxhe/efficient-knnlm","repo_kind":"official","path":"ef_knnlm/adaptive_retrieval/adaptive_retrieval.py","file_url":"https://github.com/jxhe/efficient-knnlm/blob/HEAD/ef_knnlm/adaptive_retrieval/adaptive_retrieval.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0fb204a7e30e1277"}},{"code_sha256_prefix":"47692827a1965ca0","entry":"parse_retrieve_fname","repo":"jxhe/efficient-knnlm","repo_kind":"official","path":"ef_knnlm/dstore_compression/greedy_merge.py","file_url":"https://github.com/jxhe/efficient-knnlm/blob/HEAD/ef_knnlm/dstore_compression/greedy_merge.py","link_basis":"first_harvest_node","language":"python","status":"ran_honours","verification_level":1,"contract_check":"HONOURS","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"47692827a1965ca0"}},{"code_sha256_prefix":"092769e9322f56fa","entry":"moe_interpolation","repo":"jxhe/efficient-knnlm","repo_kind":"official","path":"ef_knnlm/adaptive_retrieval/adaptive_retrieval.py","file_url":"https://github.com/jxhe/efficient-knnlm/blob/HEAD/ef_knnlm/adaptive_retrieval/adaptive_retrieval.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":"092769e9322f56fa"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}