Skip to content

Commit ebe8025

Browse files
mosheislandMoshe Island
andauthored
MOE: Support disable top2 2nd expert sampling (#362)
DeepSpeed's MoE top2 gating performs sampling to select 2nd expert. Support configuration for disabling of sampling (i.e. using argmax). New argument: --disable-moe-top2-2nd-expert-sampling. Signed-off-by: Moshe Island <misland@habana.ai> Co-authored-by: Moshe Island <misland@habana.ai>
1 parent df0e2e4 commit ebe8025

2 files changed

Lines changed: 17 additions & 12 deletions

File tree

megatron/arguments.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -899,6 +899,9 @@ def _add_training_args(parser):
899899
group.add_argument('--create-moe-param-group', action='store_true',
900900
help='Create separate groups for MoE params.'
901901
'This is necessary for techniques like ZeRO.')
902+
group.add_argument('--disable-moe-top2-2nd-expert-sampling', action='store_false',
903+
help='Disable MoE top2 sampling of the 2nd expert. Instead of sampling, use argmax.',
904+
dest='moe_top2_2nd_expert_sampling')
902905
group.add_argument('--use-flash-attn', '--use-flash-attn-v1', dest='use_flash_attn_v1', action='store_true',
903906
help='use first version FlashAttention implementation of attention. '
904907
'https://arxiv.org/abs/2205.14135')

megatron/model/transformer.py

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -952,18 +952,20 @@ def __init__(self, config,
952952
else: # DeepSpeed's MoE
953953
enable_expert_tensor_parallelism = args.enable_expert_tensor_parallelism
954954
self.mlp = MoE(args.hidden_size,
955-
ParallelMLP(config,
956-
moe=True,
957-
enable_expert_tensor_parallelism=enable_expert_tensor_parallelism),
958-
num_experts=self.num_experts,
959-
ep_size=args.moe_expert_parallel_size,
960-
k=args.topk,
961-
use_residual=(args.mlp_type == 'residual'),
962-
capacity_factor=args.moe_train_capacity_factor,
963-
eval_capacity_factor=args.moe_eval_capacity_factor,
964-
min_capacity=args.moe_min_capacity,
965-
drop_tokens=args.moe_token_dropping, use_tutel=args.use_tutel,
966-
enable_expert_tensor_parallelism=enable_expert_tensor_parallelism)
955+
ParallelMLP(config,
956+
moe=True,
957+
enable_expert_tensor_parallelism=enable_expert_tensor_parallelism),
958+
num_experts=self.num_experts,
959+
ep_size=args.moe_expert_parallel_size,
960+
k=args.topk,
961+
use_residual=(args.mlp_type == 'residual'),
962+
capacity_factor=args.moe_train_capacity_factor,
963+
eval_capacity_factor=args.moe_eval_capacity_factor,
964+
min_capacity=args.moe_min_capacity,
965+
drop_tokens=args.moe_token_dropping,
966+
use_tutel=args.use_tutel,
967+
enable_expert_tensor_parallelism=enable_expert_tensor_parallelism,
968+
top2_2nd_expert_sampling=args.moe_top2_2nd_expert_sampling)
967969

968970
# Set bias+dropout+add fusion grad_enable execution handler.
969971
TORCH_MAJOR = int(torch.__version__.split('.')[0])

0 commit comments

Comments
 (0)