{"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/learning-to-route-among-specialized-experts","title":"Learning to Route Among Specialized Experts for Zero-Shot Generalization","arxiv_id":"2402.05859","date":"2024-02-08","proceeding":null,"authors":["Mohammed Muqeeth","Haokun Liu","Yufan Liu","Colin Raffel"],"abstract":"Recently, there has been a widespread proliferation of \"expert\" language models that are specialized to a specific task or domain through parameter-efficient fine-tuning. How can we recycle large collections of expert language models to improve zero-shot generalization to unseen tasks? In this work, we propose Post-Hoc Adaptive Tokenwise Gating Over an Ocean of Specialized Experts (PHATGOOSE), which learns to route among specialized modules that were produced through parameter-efficient fine-tuning. Unlike past methods that learn to route among specialized models, PHATGOOSE explores the possibility that zero-shot generalization will be improved if different experts can be adaptively chosen for each token and at each layer in the model. Crucially, our method is post-hoc - it does not require simultaneous access to the datasets used to create the specialized models and only requires a modest amount of additional compute after each expert model is trained. In experiments covering a range of specialized model collections and zero-shot generalization benchmarks, we find that PHATGOOSE outperforms past methods for post-hoc routing and, in some cases, outperforms explicit multitask training (which requires simultaneous data access). To better understand the routing strategy learned by PHATGOOSE, we perform qualitative experiments to validate that PHATGOOSE's performance stems from its ability to make adaptive per-token and per-module expert choices. We release all of our code to support future work on improving zero-shot generalization by recycling specialized experts.","url_abs":"https://arxiv.org/abs/2402.05859v2","url_pdf":"https://arxiv.org/pdf/2402.05859v2.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":"learning-to-route-among-specialized-experts","repo_url":"https://github.com/r-three/phatgoose","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"learning-to-route-among-specialized-experts","repo_url":"https://github.com/microsoft/mttl","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"learning-to-route-among-specialized-experts","repo_url":"https://github.com/Leeroo-AI/mergoo","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"LGPL-3.0"}}],"tasks":[{"task_slug":"zero-shot-generalization","task_name":"Zero-shot Generalization"},{"task_slug":"parameter-efficient-fine-tuning","task_name":"parameter-efficient fine-tuning"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2402.05859","atlas_url":"https://app.syntology.ai/?focus=2402.05859","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2402.05859"}},"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/microsoft/mttl","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Leeroo-AI/mergoo","reach":{"status":"ok","spdx":"LGPL-3.0"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/r-three/phatgoose","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":4},"by_repo_kind":{"official":{"samples":4,"ran":4,"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":"fedced48c9b4c513","entry":"align","repo":"r-three/phatgoose","repo_kind":"official","path":"src/models/interface_mixin.py","file_url":"https://github.com/r-three/phatgoose/blob/HEAD/src/models/interface_mixin.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fedced48c9b4c513"}},{"code_sha256_prefix":"20ab6b8e2c1bb286","entry":"get_attention_mask","repo":"r-three/phatgoose","repo_kind":"official","path":"src/models/interface_mixin.py","file_url":"https://github.com/r-three/phatgoose/blob/HEAD/src/models/interface_mixin.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"20ab6b8e2c1bb286"}},{"code_sha256_prefix":"954b47fd15de9002","entry":"get_augmented_class","repo":"r-three/phatgoose","repo_kind":"official","path":"src/models/addon_control_mixin.py","file_url":"https://github.com/r-three/phatgoose/blob/HEAD/src/models/addon_control_mixin.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"954b47fd15de9002"}},{"code_sha256_prefix":"73aba4d94c2bce93","entry":"replace_eos_by_pad","repo":"r-three/phatgoose","repo_kind":"official","path":"src/models/interface_mixin.py","file_url":"https://github.com/r-three/phatgoose/blob/HEAD/src/models/interface_mixin.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"73aba4d94c2bce93"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}