Skip to main content

1. Model Introduction

Qwen3 MoE is the Mixture-of-Experts branch of the Qwen3 series, available in two sizes: 30 B-A3B (single-node) and 235 B-A22B (multi-node). Key highlights:
  • Sparse MoE architecture: 30 B / 3 B-active and 235 B / 22 B-active variants, scaling capacity without proportional compute cost.
  • Strong reasoning and coding: shares the Qwen3 generation’s improvements in instruction following, math, and tool usage.
  • Long-context capability: 256 K-token context inherited from the Qwen3 series.
  • Flexible scaling: 30 B fits a single 8-GPU node; 235 B is the canonical multi-node target with FP8 rollout.

2. Supported Variants

3. Environment Setup

3.1 Required env vars

The 235 B launcher requires:
Everything else is a Typer flag: --model-dir (default /root/models) for the checkpoints, --data-dir (default /root/datasets) for the datasets, --output-dir (default /root/shared_data) for what the run writes. Point them at a shared FS path reachable from every node. The 30 B launcher reads no env vars at all.

3.2 Download model + datasets

3.3 HF → Megatron torch_dist conversion

Drive the conversion across more GPUs / nodes for the 235 B variant; the launcher reads <model-dir>/Qwen3-235B-A22B_torch_dist as --ref-load.

4. Launch

4.1 Quick start

4.2 Multi-node fan-out

run_qwen3_235b_a22b.py ssh-fans-out to workers via --ray-hostfile (default /root/mpi_rack_hostfile) itself; you only need MASTER_ADDR set on the head node. Pass --no-join-ray-workers when the cluster is already joined. The 30 B launcher is single-node.

5. Recipe Configuration

5.1 Parallelism

run_qwen3_235b_a22b.py sets --decoder-last-pipeline-num-layers 22 to balance the layer count across PP=4. Its rollout is disaggregated, so it needs a further 64 GPUs (--rollout-num-gpus) on top of the actor pool.

5.2 Algorithm

  • 30 B launcher: GRPO with --eps-clip 0.2 --eps-clip-high 0.28.
  • 235 B launcher: GSPO (--advantage-estimator gspo, --eps-clip 4e-4); --use-kl-loss is not passed.

5.3 Rollout & SGLang

run_qwen3_30b_a3b.py (H100, 1 node, BF16 rollout):
run_qwen3_235b_a22b.py:

5.4 Optimizer

Both run_qwen3_30b_a3b.py (H100, 1 node) and run_qwen3_235b_a22b.py enable CPU Adam:
run_qwen3_30b_a3b.py removes them when running on Blackwell (B200/B300/GB200/GB300) per the hardware match in the launcher.

5.5 Notable quirks

  • 30 B launcher supports FP8 / MXFP8 / INT4 rollout, Blackwell hardware, Megatron-bridge mode, and MIS via Typer flags.
  • 235 B defaults to the FP8 HF checkpoint — pass --no-rollout-fp8 to roll out from the BF16 directory instead.
  • R3 not on by default; opt-in via run_qwen3_30b_a3b.py --enable-mis (TIS / RS) for routing-stability experiments.

6. Pairs Well With