Views
No views yet
DistributedConfig.nn.Linear module:model.layers.{l}.mlp.experts.{i}.gate_proj.weight → [768, 2048]
model.layers.{l}.mlp.experts.{i}.up_proj.weight → [768, 2048]
model.layers.{l}.mlp.experts.{i}.down_proj.weight → [2048, 768]GroupedGemmParallel, RouterParallel, GatherParallel), which expect a single fused [num_experts, ...] tensor that can be sliced along the expert dimension across ranks.nn.Parameter tensors:model.layers.{l}.mlp.experts.gate_proj → [128, 768, 2048]
model.layers.{l}.mlp.experts.up_proj → [128, 768, 2048]
model.layers.{l}.mlp.experts.down_proj → [128, 2048, 768]GroupedGemmParallel can shard experts across EP ranks by slicing dim 0. For example, with EP=8, each rank loads 16 experts ([16, 768, 2048]).transformers with:Qwen3MoeRouter: returns (router_scores, router_indices) compatible with RouterParallelQwen3MoeExperts: holds fused nn.Parameter weights, forward loops over active local expertsbase_model_ep_plan in Qwen3MoeConfig: maps modules to EP parallelism styles/fsx/amine_dirhoussi/transformers (branch qwen3-moe-ep, based on v4.57.6).1# Accelerate config (fsdp2_ep.yaml)
2distributed_type: FSDP
3fsdp_config:
4 fsdp_version: 2
5 fsdp_auto_wrap_policy: TRANSFORMER_BASED_WRAP
6 fsdp_cpu_ram_efficient_loading: false
7 fsdp_offload_params: false
8num_machines: 1
9num_processes: 8
10parallelism_config:
11 parallelism_config_ep_size: 81accelerate launch --config_file fsdp2_ep.yaml trl/scripts/sft.py \
2 --model_name_or_path aminediroHF/Qwen3-30B-A3B-fused \
3 --enable_expert_parallel \
4 --dataset_name THUDM/LongAlign-10k \
5 --max_length 4096 --per_device_train_batch_size 1 \
6 --gradient_checkpointing true --packing --packing_strategy wrapped \
7 --bf16 true --max_steps 100 --logging_steps 1 \
8 --output_dir ./output --report_to none1import torch
2from transformers import AutoModelForCausalLM
3from transformers.distributed.configuration_utils import DistributedConfig
4
5model = AutoModelForCausalLM.from_pretrained(
6 "aminediroHF/Qwen3-30B-A3B-fused",
7 dtype=torch.bfloat16,
8 distributed_config=DistributedConfig(enable_expert_parallel=True),
9).cuda()| Property | Value |
|---|---|
| Base model | Qwen/Qwen3-30B-A3B |
| Total parameters | 30.5B (3.3B active per token) |
| Experts | 128 total, 8 active per token |
| EP sharding | dim 0 of fused expert tensors (128 / EP_size per rank) |
| Attention | NOT sharded by EP (num_kv_heads=4 < EP_size=8); FSDP2 handles memory |
| Checkpoint format | safetensors, 13 shards |
1python scripts/convert_qwen3_moe_to_fused.py \
2 --source_dir /path/to/Qwen3-30B-A3B \
3 --output_dir /path/to/Qwen3-30B-A3B-fusedscripts/convert_qwen3_moe_to_fused.py).