A high-throughput and memory-efficient inference and serving engine for LLMs
Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git
Synced Nov 15, 03:30 UTC
[Model] Adds support for SlimMoE models Phi-tiny-MoE-instruct (#20286)
Signed-off-by: Zichong Li <t-lizichong@microsoft.com@Reasoning-H100-VM3.drbuo4tcjzruhloch3eo0b25ef.cx.internal.cloudapp.net> Co-authored-by: Zichong Li <t-lizichong@microsoft.com@Reasoning-H100-VM3.drbuo4tcjzruhloch3eo0b25ef.cx.internal.cloudapp.net> Co-authored-by: Isotr0py <2037008807@qq.com>
zichongli5 committed
Jul 2, 2025 at 05:54 UTC
706ff1322468e8c445fe166a6bdc3136fba4698a
1 file changed
+10
-1
vllm/model_executor/models/phimoe.py
+10
-1
@@ -68,6 +68,7 @@ class PhiMoEConfig(PretrainedConfig):
68
num_hidden_layers=32,
69
num_attention_heads=32,
70
num_key_value_heads=8,
71
+ head_dim=None,
72
hidden_act="silu",
73
max_position_embeddings=4096 * 32,
74
initializer_range=0.02,
@@ -101,8 +102,11 @@ class PhiMoEConfig(PretrainedConfig):
102
# for backward compatibility
103
if num_key_value_heads is None:
104
num_key_value_heads = num_attention_heads
105
+ if head_dim is None:
106
+ head_dim = hidden_size // num_attention_heads
107
108
self.num_key_value_heads = num_key_value_heads
109
+ self.head_dim = head_dim
110
self.hidden_act = hidden_act
111
self.initializer_range = initializer_range
112
self.rms_norm_eps = rms_norm_eps
@@ -294,6 +298,7 @@ class PhiMoEAttention(nn.Module):
298
hidden_size: int,
299
num_heads: int,
300
num_kv_heads: int,
301
+ head_dim: Optional[int] = None,
302
max_position: int = 4096 * 32,
303
rope_theta: float = 10000,
304
cache_config: Optional[CacheConfig] = None,
@@ -317,7 +322,9 @@ class PhiMoEAttention(nn.Module):
322
# the KV heads across multiple tensor parallel GPUs.
323
assert tp_size % self.total_num_kv_heads == 0
324
self.num_kv_heads = max(1, self.total_num_kv_heads // tp_size)
320
- self.head_dim = hidden_size // self.total_num_heads
325
+ if head_dim is None:
326
+ head_dim = hidden_size // num_heads
327
+ self.head_dim = head_dim
328
self.q_size = self.num_heads * self.head_dim
329
self.kv_size = self.num_kv_heads * self.head_dim
330
self.scaling = self.head_dim**-0.5
@@ -387,6 +394,8 @@ class PhiMoEDecoderLayer(nn.Module):
394
num_heads=config.num_attention_heads,
395
max_position=config.max_position_embeddings,
396
num_kv_heads=config.num_key_value_heads,
397
+ head_dim=getattr(config, "head_dim",
398
+ self.hidden_size // config.num_attention_heads),
399
rope_theta=rope_theta,
400
cache_config=cache_config,
401
quant_config=quant_config,