{"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/tutel-adaptive-mixture-of-experts-at-scale","title":"Tutel: Adaptive Mixture-of-Experts at Scale","arxiv_id":"2206.03382","date":"2022-06-07","proceeding":null,"authors":["Changho Hwang","Wei Cui","Yifan Xiong","Ziyue Yang","Ze Liu","Han Hu","Zilong Wang","Rafael Salas","Jithin Jose","Prabhat Ram","Joe Chau","Peng Cheng","Fan Yang","Mao Yang","Yongqiang Xiong"],"abstract":"Sparsely-gated mixture-of-experts (MoE) has been widely adopted to scale deep learning models to trillion-plus parameters with fixed computational cost. The algorithmic performance of MoE relies on its token routing mechanism that forwards each input token to the right sub-models or experts. While token routing dynamically determines the amount of expert workload at runtime, existing systems suffer inefficient computation due to their static execution, namely static parallelism and pipelining, which does not adapt to the dynamic workload. We present Flex, a highly scalable stack design and implementation for MoE with dynamically adaptive parallelism and pipelining. Flex designs an identical layout for distributing MoE model parameters and input data, which can be leveraged by all possible parallelism or pipelining methods without any mathematical inequivalence or tensor migration overhead. This enables adaptive parallelism/pipelining optimization at zero cost during runtime. Based on this key design, Flex also implements various MoE acceleration techniques. Aggregating all techniques, Flex finally delivers huge speedup at any scale -- 4.96x and 5.75x speedup of a single MoE layer over 16 and 2,048 A100 GPUs, respectively, over the previous state-of-the-art. Our evaluation shows that Flex efficiently and effectively runs a real-world MoE-based model named SwinV2-MoE, built upon Swin Transformer V2, a state-of-the-art computer vision architecture. On efficiency, Flex accelerates SwinV2-MoE, achieving up to 1.55x and 2.11x speedup in training and inference over Fairseq, respectively. On effectiveness, the SwinV2-MoE model achieves superior accuracy in both pre-training and down-stream computer vision tasks such as COCO object detection than the counterpart dense model, indicating the readiness of Flex for end-to-end real-world model training and inference.","url_abs":"https://arxiv.org/abs/2206.03382v2","url_pdf":"https://arxiv.org/pdf/2206.03382v2.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":"tutel-adaptive-mixture-of-experts-at-scale","repo_url":"https://github.com/microsoft/Swin-Transformer","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"tutel-adaptive-mixture-of-experts-at-scale","repo_url":"https://github.com/microsoft/tutel","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"mixture-of-experts","task_name":"Mixture-of-Experts"},{"task_slug":"object-detection","task_name":"Object Detection"}],"methods":[{"method_slug":"absolute-position-encodings","method_name":"Absolute Position Encodings"},{"method_slug":"adam","method_name":"Adam"},{"method_slug":"attention","method_name":"Attention"},{"method_slug":"bpe","method_name":"BPE"},{"method_slug":"dense-connections","method_name":"Dense Connections"},{"method_slug":"dropout","method_name":"Dropout"},{"method_slug":"label-smoothing","method_name":"Label Smoothing"},{"method_slug":"layer-normalization","method_name":"Layer Normalization"},{"method_slug":"linear-layer","method_name":"Linear Layer"},{"method_slug":"multi-head-attention","method_name":"Multi-Head Attention"},{"method_slug":"position-wise-feed-forward-layer","method_name":"Position-Wise Feed-Forward Layer"},{"method_slug":"residual-connection","method_name":"Residual Connection"},{"method_slug":"softmax","method_name":"Softmax"},{"method_slug":"stochastic-depth","method_name":"Stochastic Depth"},{"method_slug":"swin-transformer","method_name":"Swin Transformer"},{"method_slug":"transformer","method_name":"Transformer"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2206.03382","atlas_url":"https://app.syntology.ai/?focus=2206.03382","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2206.03382"}},"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/Swin-Transformer","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/microsoft/tutel","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":3,"unverified":6},"by_repo_kind":{"official":{"samples":9,"ran":3,"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":"2776ad89f773f827","entry":"load","repo":"microsoft/tutel","repo_kind":"official","path":"tutel/system.py","file_url":"https://github.com/microsoft/tutel/blob/HEAD/tutel/system.py","link_basis":"harvester_set","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":"2776ad89f773f827"}},{"code_sha256_prefix":"686044486fdeee35","entry":"load_importance_loss","repo":"microsoft/tutel","repo_kind":"official","path":"tutel/impls/losses.py","file_url":"https://github.com/microsoft/tutel/blob/HEAD/tutel/impls/losses.py","link_basis":"harvester_set","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":"686044486fdeee35"}},{"code_sha256_prefix":"baf6225757c307f6","entry":"record_time","repo":"microsoft/tutel","repo_kind":"official","path":"tutel/system.py","file_url":"https://github.com/microsoft/tutel/blob/HEAD/tutel/system.py","link_basis":"harvester_set","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":"baf6225757c307f6"}},{"code_sha256_prefix":"e3e62ba7aaa152c4","entry":"cast_if_autocast_enabled","repo":"microsoft/tutel","repo_kind":"official","path":"tutel/impls/moe_layer.py","file_url":"https://github.com/microsoft/tutel/blob/HEAD/tutel/impls/moe_layer.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":"e3e62ba7aaa152c4"}},{"code_sha256_prefix":"a83f2d199fefdfe9","entry":"create_groups_from_world","repo":"microsoft/tutel","repo_kind":"official","path":"tutel/impls/communicate.py","file_url":"https://github.com/microsoft/tutel/blob/HEAD/tutel/impls/communicate.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":"a83f2d199fefdfe9"}},{"code_sha256_prefix":"e27ff54f207ed25a","entry":"get_world_rank","repo":"microsoft/tutel","repo_kind":"official","path":"tutel/impls/communicate.py","file_url":"https://github.com/microsoft/tutel/blob/HEAD/tutel/impls/communicate.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":"e27ff54f207ed25a"}},{"code_sha256_prefix":"84f0fee712b16db3","entry":"get_world_size","repo":"microsoft/tutel","repo_kind":"official","path":"tutel/impls/communicate.py","file_url":"https://github.com/microsoft/tutel/blob/HEAD/tutel/impls/communicate.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":"84f0fee712b16db3"}},{"code_sha256_prefix":"cbdc2156b54d24c4","entry":"gshard_loss","repo":"microsoft/tutel","repo_kind":"official","path":"tutel/impls/losses.py","file_url":"https://github.com/microsoft/tutel/blob/HEAD/tutel/impls/losses.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":"cbdc2156b54d24c4"}},{"code_sha256_prefix":"9c8a0f437fd9e335","entry":"init_data_model_parallel","repo":"microsoft/tutel","repo_kind":"official","path":"tutel/system.py","file_url":"https://github.com/microsoft/tutel/blob/HEAD/tutel/system.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":"9c8a0f437fd9e335"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}