Model or dataset
InternLM/xtuner avatar
InternLM/xtuner

XTuner V1: InternLM's MoE Training Engine and Its Parallelism Trade-offs

A Next-Generation Training Engine Built for Ultra-Large MoE Models

5,195 stars448 forksPythonApache-2.0

At a glance

What is it?
XTuner V1 targets ultra-large Mixture-of-Experts training with a smaller expert-parallel dimension than traditional 3D parallelism. This review covers its stated mechanisms, the install and config path, its limits, and where Megatron-LM or DeepSpeed remain the better fit.
Who is it for?
Adopt XTuner V1 if you are training MoE models in the 200B to 1T range and want to avoid a large expert-parallel dimension, or if you are on Ascend NPU hardware where the project claims an advantage over H800. Do not adopt it if you need vLLM or SGLang inference integration, if you need DeepSeek V3, KIMI K2 or GPT OSS on NPU (all marked as in progress), or if you are training a dense model below the scale where the MoE-specific design pays off.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 1 day ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 15, 2026, and from our analysis. They are not legal advice.

DEEP OPEN-SOURCE ANALYSIS

The problem XTuner V1 is aimed at: dropless MoE training at 200B and beyond

Traditional large-scale training stacks, the ones descended from Megatron-LM, split a model across GPUs with a 3D scheme: data parallelism, tensor parallelism and pipeline parallelism, plus a fourth expert-parallel dimension once the model is an MoE. Each dimension costs communication, and expert parallelism costs it in the worst place, because tokens must be routed to whichever device holds their assigned expert. As the expert count grows, so does the size of that routing step. The XTuner V1 README frames its central claim around this: the engine is built so that 200B-scale MoE models train without expert parallelism at all, and 600B models need only intra-node expert parallelism. Dropless training, meaning no token is dropped when an expert is overloaded, is the property being preserved. The audience is narrow and identifiable. It is research groups and labs running MoE pre-training, supervised fine-tuning or reinforcement learning at a scale where a 3D parallel configuration file has become the hard part of the job. The topic list on the repository (deepseek-v3, gpt-oss, kimi-k2, qwen3-moe, intern-s1, internvl) names the model families the project is tracking. If you are fine-tuning a 7B dense model on one node, this is not the tool you need and the README does not pretend otherwise.

How the parallelism strategy actually differs from 3D training

The mechanism the README describes is a shift in where the parallelism budget is spent. Instead of treating expert parallelism as a first-class dimension of comparable weight to tensor and pipeline parallelism, XTuner V1 keeps the expert-parallel dimension small, relying on FSDP (PyTorch's fully sharded data parallel) to shard parameters and optimizer state instead. Sharding is a different kind of split from tensor parallelism: it partitions parameters across ranks and gathers them as needed rather than slicing individual matrix operations. That is why the README can claim 200B without expert parallelism and 600B with only intra-node expert parallelism. Intra-node matters because the interconnect between GPUs inside one node is much faster than the fabric between nodes, so keeping expert communication local removes the most expensive traffic class. The second half of the design is memory. The README states that a 200B MoE model trains at 64k sequence length without sequence parallelism, attributed to unspecified memory optimization techniques, and that DeepSpeed Ulysses sequence parallelism is supported as an option with maximum sequence length scaling linearly. The README does not name the memory optimizations, so the exact mechanism cannot be confirmed from the supplied material. Note also that the efficiency claim is bounded: the README says FSDP throughput surpasses traditional 3D parallel schemes for MoE models above 200B scale, which implies the comparison may not hold below that threshold.

Getting it running: what the material does and does not give you

The README does not contain an installation command, a config file example, or a training launch command. It links to the documentation at xtuner.readthedocs.io, and the repository publishes to PyPI under the name xtuner, but the page itself stops at feature description and a model support matrix. What can be confirmed from the supplied material: the package is Python, installable from PyPI, licensed Apache-2.0, and the default branch is main. There is a CONTRIBUTING.md referenced under .github. Everything else, the config keys, the parallelism flags, the dataset format, the launch entry point, has to come from the readthedocs site, and this review cannot verify those values because they were not provided. That is itself a finding worth stating plainly. For a training engine whose main selling point is a specific parallelism configuration, the README omits the configuration. Anyone evaluating XTuner V1 should open the readthedocs pages for their target model family (Intern S1, Qwen3 MoE, DeepSeek V3) before drawing conclusions, because the README alone is not enough to reproduce a run.

The support matrix is the real constraint, and it is uneven

The roadmap table is the most informative part of the README and the least promotional. It lists model support across three backends: GPU with FP8, GPU with BF16, and NPU with BF16. Intern S1, Intern VL, Qwen3 Dense and Qwen3 MoE are marked supported on all three. GPT OSS, DeepSeek V3 and KIMI K2 are supported on both GPU paths and marked as in progress on NPU. So the widest model coverage is on GPU, and the NPU path, which the README elsewhere emphasizes as a focus area with a claim of Ascend A3 Supernode efficiency exceeding NVIDIA H800, currently covers four model families rather than seven. That gap is a practical constraint, not a footnote: if you are on Ascend hardware and your target is DeepSeek V3, the table says wait. On the algorithm side, the implemented list is multimodal pre-training, multimodal supervised fine-tuning, and GRPO. MPO, DAPO and multi-turn agentic RL are listed as coming soon, which means the reinforcement learning surface is narrower than the topic tags on the repository might suggest. The inference integration list is similarly partial: LMDeploy is checked, vLLM and SGLang are unchecked.

When XTuner V1 is the wrong tool

Three cases stand out. First, dense models below the MoE scale the engine is built around. The throughput claim in the README is explicitly scoped to MoE models above 200B, and the entire design premise (a smaller expert-parallel dimension) is meaningless without experts. A team fine-tuning a dense 30B model gains nothing from the architecture and inherits a less familiar configuration surface. Second, any pipeline that depends on vLLM or SGLang for serving. The README marks both as unchecked, with only LMDeploy complete. If your training output must feed a vLLM deployment, XTuner V1 introduces a conversion step the roadmap has not closed. Third, NPU users targeting DeepSeek V3, KIMI K2 or GPT OSS, where the support table shows in-progress rather than supported. There is also a subtler failure mode in the design itself. Keeping expert parallelism small works when expert routing stays reasonably balanced across ranks. The README claims stability despite expert load imbalance during long sequence training, but does not describe the balancing mechanism, so how that stability is achieved and what its limits are cannot be assessed from the supplied material. Treat that claim as unverified until you find the corresponding documentation.

Megatron-LM and DeepSpeed: the difference in approach

The obvious alternative is Megatron-LM, which the XTuner README acknowledges as an inspiration. The two take opposite positions on the same question. Megatron-LM treats tensor, pipeline and expert parallelism as composable dimensions you tune per model, giving fine control at the cost of a configuration space that grows combinatorially; getting a 200B MoE configuration right is a specialist task. XTuner V1 pushes the parallelism decision toward FSDP sharding and a deliberately small expert-parallel dimension, trading that control for a configuration that the README presents as simpler at scale. DeepSpeed is the other reference point, and it is not really an either-or: XTuner V1 supports DeepSpeed Ulysses sequence parallelism as an option, and the README credits DeepSpeed among its foundations. The relevant difference is that DeepSpeed's ZeRO stages are a general-purpose memory optimization applicable to dense and MoE models alike, while XTuner V1's design choices are specifically justified by MoE routing costs. If your workload is dense, DeepSpeed's generality is the better match. If it is MoE at 200B or more and you want the expert-parallel dimension out of your configuration, XTuner V1 is making a targeted bet that Megatron-LM does not make.

Maintenance, release cadence and the Apache-2.0 terms

The release history shows a project in transition. v0.2.0 shipped in July 2025, v1.0.0rc0 in November 2025, and v1.0.1 in May 2026. The gap between a release candidate and a first stable release was roughly six months, which is a reasonable cadence for a training engine but also means the V1 API is young. The repository is not archived and the last push date is recent relative to the releases. The practical upgrade cost is the usual one for training code: configuration formats and parallelism flags are the parts most likely to move between minor versions, and the README gives no compatibility statement, so pinning the version in your environment is the only defensible default until the documentation states otherwise. On licensing, the repository is Apache-2.0, which permits commercial use and modification and includes an explicit patent grant. That is the standard permissive arrangement, but the README's acknowledgement section credits Torchtitan, DeepSpeed, MindSpeed and Megatron-LM as foundations, and those projects carry their own licences. Apache-2.0 on XTuner does not automatically resolve the terms of anything it incorporates or links against. Check the licence of each dependency you actually install; this is not legal advice and the dependency licences are outside what the supplied material covers.

Editorial conclusion

Adopt XTuner V1 if you are training MoE models in the 200B to 1T range and want to avoid a large expert-parallel dimension, or if you are on Ascend NPU hardware where the project claims an advantage over H800. Do not adopt it if you need vLLM or SGLang inference integration, if you need DeepSeek V3, KIMI K2 or GPT OSS on NPU (all marked as in progress), or if you are training a dense model below the scale where the MoE-specific design pays off. Before committing, verify two things against the readthedocs config pages: which parallelism keys your target model config actually sets, and whether your sequence length fits without Ulysses. Both determine whether the memory claims in the README apply to your run at all.

Official sources

  1. InternLM/xtuner on GitHub
  2. License: Apache-2.0
  3. Project website
  4. README
  5. Releases
Community notes

Community notes