@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 1958bda9b4
Fork 0

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 13, 15:45 UTC

[Misc][Model][Refactor] Pass the prefix into Linear layers (#28259)

Signed-off-by: MengqingCao <cmq0113@163.com>

Mengqing Cao committed Nov 7, 2025 at 19:38 UTC 1958bda9b4ed893e0dff2e3709ac43be9a9b8e1b
26 files changed +190 -25
vllm/model_executor/models/arctic.py
+8 -1
@@ -75,7 +75,11 @@ class ArcticMLP(nn.Module):
75 )
76
77 self.w13 = MergedColumnParallelLinear(
78 - self.hidden_size, [self.ffn_dim] * 2, bias=False, quant_config=quant_config
78 + self.hidden_size,
79 + [self.ffn_dim] * 2,
80 + bias=False,
81 + quant_config=quant_config,
82 + prefix=f"{prefix}.w13",
83 )
84 self.w2 = RowParallelLinear(
85 self.ffn_dim,
@@ -83,6 +87,7 @@ class ArcticMLP(nn.Module):
87 bias=False,
88 reduce_results=reduce_results,
89 quant_config=quant_config,
90 + prefix=f"{prefix}.w2",
91 )
92 if config.hidden_act != "silu":
93 raise ValueError(
@@ -297,6 +302,7 @@ class ArcticAttention(nn.Module):
302 self.total_num_kv_heads,
303 bias=False,
304 quant_config=quant_config,
305 + prefix=f"{prefix}.qkv_proj",
306 )
307 self.o_proj = RowParallelLinear(
308 self.total_num_heads * self.head_dim,
@@ -304,6 +310,7 @@ class ArcticAttention(nn.Module):
310 bias=False,
311 reduce_results=True,
312 quant_config=quant_config,
313 + prefix=f"{prefix}.o_proj",
314 )
315
316 self.rotary_emb = get_rope(
vllm/model_executor/models/baichuan.py
+14 -2
@@ -98,13 +98,22 @@ class BaiChuanMLP(nn.Module):
98 intermediate_size: int,
99 hidden_act: str,
100 quant_config: QuantizationConfig | None = None,
101 + prefix: str = "",
102 ):
103 super().__init__()
104 self.gate_up_proj = MergedColumnParallelLinear(
104 - hidden_size, [intermediate_size] * 2, bias=False, quant_config=quant_config
105 + hidden_size,
106 + [intermediate_size] * 2,
107 + bias=False,
108 + quant_config=quant_config,
109 + prefix=f"{prefix}.gate_up_proj",
110 )
111 self.down_proj = RowParallelLinear(
107 - intermediate_size, hidden_size, bias=False, quant_config=quant_config
112 + intermediate_size,
113 + hidden_size,
114 + bias=False,
115 + quant_config=quant_config,
116 + prefix=f"{prefix}.down_proj",
117 )
118 if hidden_act != "silu":
119 raise ValueError(
@@ -152,12 +161,14 @@ class BaiChuanAttention(nn.Module):
161 self.total_num_heads,
162 bias=False,
163 quant_config=quant_config,
164 + prefix=f"{prefix}.W_pack",
165 )
166 self.o_proj = RowParallelLinear(
167 self.total_num_heads * self.head_dim,
168 hidden_size,
169 bias=False,
170 quant_config=quant_config,
171 + prefix=f"{prefix}.o_proj",
172 )
173 # Create the alibi slopes and slice them.
174 if self.position_embedding == "ALIBI":
@@ -235,6 +246,7 @@ class BaiChuanDecoderLayer(nn.Module):
246 intermediate_size=config.intermediate_size,
247 hidden_act=config.hidden_act,
248 quant_config=quant_config,
249 + prefix=f"{prefix}.mlp",
250 )
251 self.input_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
252 self.post_attention_layernorm = RMSNorm(
vllm/model_executor/models/bamba.py
+11 -2
@@ -60,6 +60,7 @@ class BambaMLP(nn.Module):
60 config: BambaConfig,
61 quant_config: QuantizationConfig | None = None,
62 bias: bool = False,
63 + prefix: str = "",
64 ) -> None:
65 super().__init__()
66 self.gate_up_proj = MergedColumnParallelLinear(
@@ -67,12 +68,14 @@ class BambaMLP(nn.Module):
68 output_sizes=[config.intermediate_size] * 2,
69 bias=bias,
70 quant_config=quant_config,
71 + prefix=f"{prefix}.gate_up_proj",
72 )
73 self.down_proj = RowParallelLinear(
74 input_size=config.intermediate_size,
75 output_size=config.hidden_size,
76 bias=bias,
77 quant_config=quant_config,
78 + prefix=f"{prefix}.down_proj",
79 )
80 if config.hidden_act != "silu":
81 raise ValueError(
@@ -118,7 +121,9 @@ class BambaMixerDecoderLayer(nn.Module):
121 prefix=f"{prefix}.mixer",
122 )
123
121 - self.feed_forward = BambaMLP(config, quant_config=quant_config)
124 + self.feed_forward = BambaMLP(
125 + config, quant_config=quant_config, prefix=f"{prefix}.feed_forward"
126 + )
127 self.input_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
128 self.pre_ff_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
129
@@ -202,12 +207,14 @@ class BambaAttentionDecoderLayer(nn.Module):
207 self.total_num_kv_heads,
208 bias=False,
209 quant_config=quant_config,
210 + prefix=f"{prefix}.qkv_proj",
211 )
212 self.o_proj = RowParallelLinear(
213 self.total_num_heads * self.head_dim,
214 config.hidden_size,
215 bias=False,
216 quant_config=quant_config,
217 + prefix=f"{prefix}.o_proj",
218 )
219
220 self.attn = Attention(
@@ -219,7 +226,9 @@ class BambaAttentionDecoderLayer(nn.Module):
226 prefix=f"{prefix}.attn",
227 )
228
222 - self.feed_forward = BambaMLP(config, quant_config=quant_config)
229 + self.feed_forward = BambaMLP(
230 + config, quant_config=quant_config, prefix=f"{prefix}.feed_forward"
231 + )
232 self.input_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
233 self.pre_ff_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
234
vllm/model_executor/models/bloom.py
+6 -1
@@ -108,12 +108,14 @@ class BloomAttention(nn.Module):
108 self.total_num_heads,
109 bias=True,
110 quant_config=quant_config,
111 + prefix=f"{prefix}.query_key_value",
112 )
113 self.dense = RowParallelLinear(
114 self.hidden_size,
115 self.hidden_size,
116 bias=True,
117 quant_config=quant_config,
118 + prefix=f"{prefix}.dense",
119 )
120
121 # Create the alibi slopes and slice them.
@@ -152,6 +154,7 @@ class BloomMLP(nn.Module):
154 self,
155 config: BloomConfig,
156 quant_config: QuantizationConfig | None = None,
157 + prefix: str = "",
158 ):
159 super().__init__()
160 hidden_size = config.hidden_size
@@ -159,12 +162,14 @@ class BloomMLP(nn.Module):
162 hidden_size,
163 4 * hidden_size,
164 quant_config=quant_config,
165 + prefix=f"{prefix}.dense_h_to_4h",
166 )
167 self.gelu_impl = get_act_fn("gelu")
168 self.dense_4h_to_h = RowParallelLinear(
169 4 * hidden_size,
170 hidden_size,
171 quant_config=quant_config,
172 + prefix=f"{prefix}.dense_4h_to_h",
173 )
174
175 def forward(self, x: torch.Tensor) -> torch.Tensor:
@@ -192,7 +197,7 @@ class BloomBlock(nn.Module):
197 self.post_attention_layernorm = nn.LayerNorm(
198 hidden_size, eps=config.layer_norm_epsilon
199 )
195 - self.mlp = BloomMLP(config, quant_config)
200 + self.mlp = BloomMLP(config, quant_config, prefix=f"{prefix}.mlp")
201 self.apply_residual_connection_post_layernorm = (
202 config.apply_residual_connection_post_layernorm
203 )
vllm/model_executor/models/chameleon.py
+7
@@ -227,6 +227,7 @@ class ChameleonMLP(nn.Module):
227 hidden_act: str,
228 quant_config: QuantizationConfig | None = None,
229 bias: bool = False,
230 + prefix: str = "",
231 ) -> None:
232 super().__init__()
233 self.gate_up_proj = MergedColumnParallelLinear(
@@ -234,12 +235,14 @@ class ChameleonMLP(nn.Module):
235 output_sizes=[intermediate_size] * 2,
236 bias=bias,
237 quant_config=quant_config,
238 + prefix=f"{prefix}.gate_up_proj",
239 )
240 self.down_proj = RowParallelLinear(
241 input_size=intermediate_size,
242 output_size=hidden_size,
243 bias=bias,
244 quant_config=quant_config,
245 + prefix=f"{prefix}.down_proj",
246 )
247 if hidden_act != "silu":
248 raise ValueError(
@@ -299,12 +302,14 @@ class ChameleonAttention(nn.Module):
302 total_num_kv_heads=self.total_num_kv_heads,
303 bias=bias,
304 quant_config=quant_config,
305 + prefix=f"{prefix}.qkv_proj",
306 )
307 self.o_proj = RowParallelLinear(
308 input_size=self.total_num_heads * self.head_dim,
309 output_size=hidden_size,
310 bias=bias,
311 quant_config=quant_config,
312 + prefix=f"{prefix}.o_proj",
313 )
314 self.q_norm = ChameleonLayerNorm((self.num_heads, self.head_dim))
315 self.k_norm = ChameleonLayerNorm((self.num_kv_heads, self.head_dim))
@@ -393,6 +398,7 @@ class ChameleonDecoderLayer(nn.Module):
398 hidden_act=config.hidden_act,
399 quant_config=quant_config,
400 bias=getattr(config, "mlp_bias", False),
401 + prefix=f"{prefix}.mlp",
402 )
403 self.input_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
404 self.post_attention_layernorm = RMSNorm(
@@ -462,6 +468,7 @@ class ChameleonSwinDecoderLayer(nn.Module):
468 hidden_act=config.hidden_act,
469 quant_config=quant_config,
470 bias=getattr(config, "mlp_bias", False),
471 + prefix=f"{prefix}.mlp",
472 )
473 self.input_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
474 self.post_attention_layernorm = RMSNorm(
vllm/model_executor/models/dbrx.py
+2
@@ -209,12 +209,14 @@ class DbrxAttention(nn.Module):
209 self.total_num_kv_heads,
210 bias=False,
211 quant_config=quant_config,
212 + prefix=f"{prefix}.Wqkv",
213 )
214 self.out_proj = RowParallelLinear(
215 self.d_model,
216 self.d_model,
217 bias=False,
218 quant_config=quant_config,
219 + prefix=f"{prefix}.out_proj",
220 )
221 self.rotary_emb = get_rope(
222 self.head_dim,
vllm/model_executor/models/deepseek.py
+8 -1
@@ -82,7 +82,11 @@ class DeepseekMLP(nn.Module):
82 ) -> None:
83 super().__init__()
84 self.gate_up_proj = MergedColumnParallelLinear(
85 - hidden_size, [intermediate_size] * 2, bias=False, quant_config=quant_config
85 + hidden_size,
86 + [intermediate_size] * 2,
87 + bias=False,
88 + quant_config=quant_config,
89 + prefix=f"{prefix}.gate_up_proj",
90 )
91 self.down_proj = RowParallelLinear(
92 intermediate_size,
@@ -90,6 +94,7 @@ class DeepseekMLP(nn.Module):
94 bias=False,
95 quant_config=quant_config,
96 reduce_results=reduce_results,
97 + prefix=f"{prefix}.down_proj",
98 )
99 if hidden_act != "silu":
100 raise ValueError(
@@ -239,6 +244,7 @@ class DeepseekAttention(nn.Module):
244 self.total_num_kv_heads,
245 bias=False,
246 quant_config=quant_config,
247 + prefix=f"{prefix}.qkv_proj",
248 )
249
250 self.o_proj = RowParallelLinear(
@@ -246,6 +252,7 @@ class DeepseekAttention(nn.Module):
252 hidden_size,
253 bias=False,
254 quant_config=quant_config,
255 + prefix=f"{prefix}.o_proj",
256 )
257
258 self.rotary_emb = get_rope(
vllm/model_executor/models/dots1.py
+2
@@ -240,6 +240,7 @@ class Dots1Attention(nn.Module):
240 self.total_num_kv_heads,
241 bias=attention_bias,
242 quant_config=quant_config,
243 + prefix=f"{prefix}.qkv_proj",
244 )
245
246 self.o_proj = RowParallelLinear(
@@ -247,6 +248,7 @@ class Dots1Attention(nn.Module):
248 hidden_size,
249 bias=False,
250 quant_config=quant_config,
251 + prefix=f"{prefix}.o_proj",
252 )
253
254 self.rotary_emb = get_rope(
vllm/model_executor/models/falcon.py
+6 -1
@@ -137,6 +137,7 @@ class FalconAttention(nn.Module):
137 bias=config.bias,
138 skip_bias_add=True,
139 quant_config=quant_config,
140 + prefix=f"{prefix}.query_key_value",
141 )
142 self.q_size = self.num_heads * self.head_dim
143 self.kv_size = self.num_kv_heads * self.head_dim
@@ -153,6 +154,7 @@ class FalconAttention(nn.Module):
154 skip_bias_add=True,
155 quant_config=quant_config,
156 reduce_results=self.reduce_row_parallel_results,
157 + prefix=f"{prefix}.dense",
158 )
159
160 self.use_rotary = config.rotary
@@ -227,6 +229,7 @@ class FalconMLP(nn.Module):
229 self,
230 config: FalconConfig,
231 quant_config: QuantizationConfig | None = None,
232 + prefix: str = "",
233 ):
234 super().__init__()
235 hidden_size = config.hidden_size
@@ -237,6 +240,7 @@ class FalconMLP(nn.Module):
240 bias=config.bias,
241 skip_bias_add=True,
242 quant_config=quant_config,
243 + prefix=f"{prefix}.dense_h_to_4h",
244 )
245 self.act = get_act_fn("gelu")
246 self.reduce_row_parallel_results = not (
@@ -249,6 +253,7 @@ class FalconMLP(nn.Module):
253 skip_bias_add=True,
254 reduce_results=self.reduce_row_parallel_results,
255 quant_config=quant_config,
256 + prefix=f"{prefix}.dense_4h_to_h",
257 )
258
259 def forward(self, x: torch.Tensor) -> torch.Tensor:
@@ -275,7 +280,7 @@ class FalconDecoderLayer(nn.Module):
280 self.self_attention = FalconAttention(
281 config, cache_config, quant_config, prefix=f"{prefix}.self_attention"
282 )
278 - self.mlp = FalconMLP(config, quant_config)
283 + self.mlp = FalconMLP(config, quant_config, prefix=f"{prefix}.mlp")
284 self.config = config
285
286 if not hasattr(config, "num_ln_in_parallel_attn"):
vllm/model_executor/models/falcon_h1.py
+4 -1
@@ -59,6 +59,7 @@ class FalconH1MLP(nn.Module):
59 config: FalconH1Config,
60 quant_config: QuantizationConfig | None = None,
61 bias: bool = False,
62 + prefix: str = "",
63 ) -> None:
64 super().__init__()
65 self.gate_up_proj = MergedColumnParallelLinear(
@@ -66,12 +67,14 @@ class FalconH1MLP(nn.Module):
67 output_sizes=[config.intermediate_size] * 2,
68 bias=bias,
69 quant_config=quant_config,
70 + prefix=f"{prefix}.gate_up_proj",
71 )
72 self.down_proj = RowParallelLinear(
73 input_size=config.intermediate_size,
74 output_size=config.hidden_size,
75 bias=bias,
76 quant_config=quant_config,
77 + prefix=f"{prefix}.down_proj",
78 )
79 self.tp_size = get_tensor_model_parallel_world_size()
80 self.intermediate_size = config.intermediate_size
@@ -365,7 +368,7 @@ class FalconH1ParallelHybrid(nn.Module):
368 self.attention_in_multiplier = config.attention_in_multiplier
369 self.attn_out_multiplier = config.attention_out_multiplier
370
368 - self.feed_forward = FalconH1MLP(config)
371 + self.feed_forward = FalconH1MLP(config, prefix=f"{prefix}.feed_forward")
372
373 self.input_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
374 self.pre_ff_layernorm = RMSNorm(config.hidden_size, eps=config.rms_norm_eps)
vllm/model_executor/models/gemma2.py
+14 -2
@@ -66,13 +66,22 @@ class Gemma2MLP(nn.Module):
66 hidden_act: str,
67 hidden_activation: str,
68 quant_config: QuantizationConfig | None = None,
69 + prefix: str = "",
70 ) -> None:
71 super().__init__()
72 self.gate_up_proj = MergedColumnParallelLinear(
72 - hidden_size, [intermediate_size] * 2, bias=False, quant_config=quant_config
73 + hidden_size,
74 + [intermediate_size] * 2,
75 + bias=False,
76 + quant_config=quant_config,
77 + prefix=f"{prefix}.gate_up_proj",
78 )
79 self.down_proj = RowParallelLinear(
75 - intermediate_size, hidden_size, bias=False, quant_config=quant_config
80 + intermediate_size,
81 + hidden_size,
82 + bias=False,
83 + quant_config=quant_config,
84 + prefix=f"{prefix}.down_proj",
85 )
86 if not (hidden_act == hidden_activation == "gelu_pytorch_tanh"):
87 raise ValueError(
@@ -134,12 +143,14 @@ class Gemma2Attention(nn.Module):
143 self.total_num_kv_heads,
144 bias=config.attention_bias,
145 quant_config=quant_config,
146 + prefix=f"{prefix}.qkv_proj",
147 )
148 self.o_proj = RowParallelLinear(
149 self.total_num_heads * self.head_dim,
150 hidden_size,
151 bias=config.attention_bias,
152 quant_config=quant_config,
153 + prefix=f"{prefix}.o_proj",
154 )
155 self.rotary_emb = get_rope(
156 self.head_dim,
@@ -208,6 +219,7 @@ class Gemma2DecoderLayer(nn.Module):
219 hidden_act=config.hidden_act,
220 hidden_activation=config.hidden_activation,
221 quant_config=quant_config,
222 + prefix=f"{prefix}.mlp",
223 )
224 self.input_layernorm = GemmaRMSNorm(config.hidden_size, eps=config.rms_norm_eps)
225 self.post_attention_layernorm = GemmaRMSNorm(
vllm/model_executor/models/gpt_j.py
+6 -1
@@ -78,12 +78,14 @@ class GPTJAttention(nn.Module):
78 self.total_num_heads,
79 bias=False,
80 quant_config=quant_config,
81 + prefix=f"{prefix}.qkv_proj",
82 )
83 self.out_proj = RowParallelLinear(
84 config.hidden_size,
85 config.hidden_size,
86 bias=False,
87 quant_config=quant_config,
88 + prefix=f"{prefix}.out_proj",
89 )
90
91 tp_world_size = get_tensor_model_parallel_world_size()
@@ -130,6 +132,7 @@ class GPTJMLP(nn.Module):
132 intermediate_size: int,
133 config: GPTJConfig,
134 quant_config: QuantizationConfig | None = None,
135 + prefix: str = "",
136 ):
137 super().__init__()
138 hidden_size = config.n_embd
@@ -137,11 +140,13 @@ class GPTJMLP(nn.Module):
140 hidden_size,
141 intermediate_size,
142 quant_config=quant_config,
143 + prefix=f"{prefix}.fc_in",
144 )
145 self.fc_out = RowParallelLinear(
146 intermediate_size,
147 hidden_size,
148 quant_config=quant_config,
149 + prefix=f"{prefix}.fc_out",
150 )
151 self.act = get_act_fn(config.activation_function)
152
@@ -166,7 +171,7 @@ class GPTJBlock(nn.Module):
171 self.attn = GPTJAttention(
172 config, cache_config, quant_config, prefix=f"{prefix}.attn"
173 )
169 - self.mlp = GPTJMLP(inner_dim, config, quant_config)
174 + self.mlp = GPTJMLP(inner_dim, config, quant_config, prefix=f"{prefix}.mlp")
175
176 def forward(
177 self,
vllm/model_executor/models/gpt_neox.py
+5
@@ -80,12 +80,14 @@ class GPTNeoXAttention(nn.Module):
80 self.total_num_heads,
81 bias=self.bias,
82 quant_config=quant_config,
83 + prefix=f"{prefix}.query_key_value",
84 )
85 self.dense = RowParallelLinear(
86 config.hidden_size,
87 config.hidden_size,
88 bias=self.bias,
89 quant_config=quant_config,
90 + prefix=f"{prefix}.dense",
91 )
92 scaling = self.head_size**-0.5
93 rotary_dim = int(self.head_size * config.rotary_pct)
@@ -125,17 +127,20 @@ class GPTNeoXMLP(nn.Module):
127 self,
128 config: GPTNeoXConfig,
129 quant_config: QuantizationConfig | None = None,
130 + prefix: str = "",
131 ):
132 super().__init__()
133 self.dense_h_to_4h = ColumnParallelLinear(
134 config.hidden_size,
135 config.intermediate_size,
136 quant_config=quant_config,
137 + prefix=f"{prefix}.dense_h_to_4h",
138 )
139 self.dense_4h_to_h = RowParallelLinear(
140 config.intermediate_size,
141 config.hidden_size,
142 quant_config=quant_config,
143 + prefix=f"{prefix}.dense_4h_to_h",
144 )
145 self.act = get_act_fn(config.hidden_act)
146
vllm/model_executor/models/jais.py
+7 -1
@@ -107,12 +107,14 @@ class JAISAttention(nn.Module):
107 total_num_heads,
108 bias=True,
109 quant_config=quant_config,
110 + prefix=f"{prefix}.c_attn",
111 )
112 self.c_proj = RowParallelLinear(
113 self.hidden_size,
114 self.hidden_size,
115 bias=True,
116 quant_config=quant_config,
117 + prefix=f"{prefix}.c_proj",
118 )
119
120 tp_rank = get_tensor_model_parallel_rank()
@@ -147,6 +149,7 @@ class JAISMLP(nn.Module):
149 intermediate_size: int,
150 config: JAISConfig,
151 quant_config: QuantizationConfig | None = None,
152 + prefix: str = "",
153 ):
154 super().__init__()
155 hidden_size = config.hidden_size
@@ -156,6 +159,7 @@ class JAISMLP(nn.Module):
159 intermediate_size,
160 bias=True,
161 quant_config=quant_config,
162 + prefix=f"{prefix}.c_fc",
163 )
164 self.c_fc2 = (
165 ColumnParallelLinear(
@@ -163,6 +167,7 @@ class JAISMLP(nn.Module):
167 intermediate_size,
168 bias=True,
169 quant_config=quant_config,
170 + prefix=f"{prefix}.c_fc2",
171 )
172 if self.swiglu
173 else None
@@ -172,6 +177,7 @@ class JAISMLP(nn.Module):
177 hidden_size,
178 bias=True,
179 quant_config=quant_config,
180 + prefix=f"{prefix}.c_proj",
181 )
182
183 self.act = SwiGLUActivation()
@@ -206,7 +212,7 @@ class JAISBlock(nn.Module):
212 config, cache_config, quant_config, prefix=f"{prefix}.attn"
213 )
214 self.ln_2 = nn.LayerNorm(hidden_size, eps=config.layer_norm_epsilon)
209 - self.mlp = JAISMLP(inner_dim, config, quant_config)
215 + self.mlp = JAISMLP(inner_dim, config, quant_config, prefix=f"{prefix}.mlp")
216
217 def forward(
218 self,
vllm/model_executor/models/jamba.py
+2
@@ -220,12 +220,14 @@ class JambaAttentionDecoderLayer(nn.Module):
220 self.total_num_kv_heads,
221 bias=False,
222 quant_config=quant_config,
223 + prefix=f"{prefix}.qkv_proj",
224 )
225 self.o_proj = RowParallelLinear(
226 self.total_num_heads * self.head_dim,
227 config.hidden_size,
228 bias=False,
229 quant_config=quant_config,
230 + prefix=f"{prefix}.o_proj",
231 )
232
233 self.attn = Attention(
vllm/model_executor/models/minicpm.py
+13 -2
@@ -191,13 +191,22 @@ class MiniCPMMLP(nn.Module):
191 hidden_act: str,
192 hidden_act_param: float,
193 quant_config: QuantizationConfig | None = None,
194 + prefix: str = "",
195 ) -> None:
196 super().__init__()
197 self.gate_up_proj = MergedColumnParallelLinear(
197 - hidden_size, [intermediate_size] * 2, bias=False, quant_config=quant_config
198 + hidden_size,
199 + [intermediate_size] * 2,
200 + bias=False,
201 + quant_config=quant_config,
202 + prefix=f"{prefix}.gate_up_proj",
203 )
204 self.down_proj = RowParallelLinear(
200 - intermediate_size, hidden_size, bias=False, quant_config=quant_config
205 + intermediate_size,
206 + hidden_size,
207 + bias=False,
208 + quant_config=quant_config,
209 + prefix=f"{prefix}.down_proj",
210 )
211 if hidden_act == "silu":
212 self.act_fn = SiluAndMul()
@@ -259,12 +268,14 @@ class MiniCPMAttention(nn.Module):
268 self.total_num_kv_heads,
269 bias=False,
270 quant_config=quant_config,
271 + prefix=f"{prefix}.qkv_proj",
272 )
273 self.o_proj = RowParallelLinear(
274 self.total_num_heads * self.head_dim,
275 hidden_size,
276 bias=False,
277 quant_config=quant_config,
278 + prefix=f"{prefix}.o_proj",
279 )
280
281 self.rotary_emb = get_rope(
vllm/model_executor/models/minicpm3.py
+4
@@ -96,6 +96,7 @@ class MiniCPM3Attention(nn.Module):
96 self.num_heads * self.qk_head_dim,
97 bias=False,
98 quant_config=quant_config,
99 + prefix=f"{prefix}.q_b_proj",
100 )
101
102 self.kv_a_proj_with_mqa = ReplicatedLinear(
@@ -103,6 +104,7 @@ class MiniCPM3Attention(nn.Module):
104 self.kv_lora_rank + self.qk_rope_head_dim,
105 bias=False,
106 quant_config=quant_config,
107 + prefix=f"{prefix}.kv_a_proj_with_mqa",
108 )
109 self.kv_a_layernorm = RMSNorm(self.kv_lora_rank, eps=config.rms_norm_eps)
110 self.kv_b_proj = ColumnParallelLinear(
@@ -110,6 +112,7 @@ class MiniCPM3Attention(nn.Module):
112 self.num_heads * (self.qk_nope_head_dim + self.v_head_dim),
113 bias=False,
114 quant_config=quant_config,
115 + prefix=f"{prefix}.kv_b_proj",
116 )
117 # O projection.
118 self.o_proj = RowParallelLinear(
@@ -117,6 +120,7 @@ class MiniCPM3Attention(nn.Module):
120 self.hidden_size,
121 bias=False,
122 quant_config=quant_config,
123 + prefix=f"{prefix}.o_proj",
124 )
125
126 self.rotary_emb = get_rope(
vllm/model_executor/models/mpt.py
+6 -1
@@ -83,6 +83,7 @@ class MPTAttention(nn.Module):
83 self.total_num_kv_heads,
84 bias=not config.no_bias,
85 quant_config=quant_config,
86 + prefix=f"{prefix}.Wqkv",
87 )
88 if self.qk_ln:
89 self.q_ln = nn.LayerNorm(self.d_model)
@@ -92,6 +93,7 @@ class MPTAttention(nn.Module):
93 self.d_model,
94 bias=not config.no_bias,
95 quant_config=quant_config,
96 + prefix=f"{prefix}.out_proj",
97 )
98
99 tp_world_size = get_tensor_model_parallel_world_size()
@@ -152,6 +154,7 @@ class MPTMLP(nn.Module):
154 self,
155 config: MptConfig,
156 quant_config: QuantizationConfig | None = None,
157 + prefix: str = "",
158 ):
159 super().__init__()
160 hidden_size = config.d_model
@@ -162,6 +165,7 @@ class MPTMLP(nn.Module):
165 intermediate_size,
166 bias=not config.no_bias,
167 quant_config=quant_config,
168 + prefix=f"{prefix}.up_proj",
169 )
170 self.act = get_act_fn("gelu")
171 self.down_proj = RowParallelLinear(
@@ -169,6 +173,7 @@ class MPTMLP(nn.Module):
173 hidden_size,
174 bias=not config.no_bias,
175 quant_config=quant_config,
176 + prefix=f"{prefix}.down_proj",
177 )
178
179 def forward(self, x: torch.Tensor) -> torch.Tensor:
@@ -193,7 +198,7 @@ class MPTBlock(nn.Module):
198 config, cache_config, quant_config, prefix=f"{prefix}.attn"
199 )
200 self.norm_2 = nn.LayerNorm(hidden_size)
196 - self.ffn = MPTMLP(config, quant_config)
201 + self.ffn = MPTMLP(config, quant_config, prefix=f"{prefix}.ffn")
202
203 def forward(
204 self,
vllm/model_executor/models/olmoe.py
+2
@@ -158,6 +158,7 @@ class OlmoeAttention(nn.Module):
158 self.total_num_kv_heads,
159 bias=False,
160 quant_config=quant_config,
161 + prefix=f"{prefix}.qkv_proj",
162 )
163 self.tp_size = tp_size
164 self.tp_rank = get_tensor_model_parallel_rank()
@@ -168,6 +169,7 @@ class OlmoeAttention(nn.Module):
169 self.hidden_size,
170 bias=False,
171 quant_config=quant_config,
172 + prefix=f"{prefix}.o_proj",
173 )
174
175 self.rotary_emb = get_rope(
vllm/model_executor/models/orion.py
+14 -2
@@ -52,13 +52,22 @@ class OrionMLP(nn.Module):
52 intermediate_size: int,
53 hidden_act: str,
54 quant_config: QuantizationConfig | None = None,
55 + prefix: str = "",
56 ) -> None:
57 super().__init__()
58 self.gate_up_proj = MergedColumnParallelLinear(
58 - hidden_size, [intermediate_size] * 2, bias=False, quant_config=quant_config
59 + hidden_size,
60 + [intermediate_size] * 2,
61 + bias=False,
62 + quant_config=quant_config,
63 + prefix=f"{prefix}.gate_up_proj",
64 )
65 self.down_proj = RowParallelLinear(
61 - intermediate_size, hidden_size, bias=False, quant_config=quant_config
66 + intermediate_size,
67 + hidden_size,
68 + bias=False,
69 + quant_config=quant_config,
70 + prefix=f"{prefix}.down_proj",
71 )
72 if hidden_act != "silu":
73 raise ValueError(
@@ -116,12 +125,14 @@ class OrionAttention(nn.Module):
125 self.total_num_kv_heads,
126 bias=False,
127 quant_config=quant_config,
128 + prefix=f"{prefix}.qkv_proj",
129 )
130 self.o_proj = RowParallelLinear(
131 self.total_num_heads * self.head_dim,
132 hidden_size,
133 bias=False,
134 quant_config=quant_config,
135 + prefix=f"{prefix}.o_proj",
136 )
137
138 self.rotary_emb = get_rope(
@@ -183,6 +194,7 @@ class OrionDecoderLayer(nn.Module):
194 intermediate_size=config.intermediate_size,
195 hidden_act=config.hidden_act,
196 quant_config=quant_config,
197 + prefix=f"{prefix}.mlp",
198 )
199
200 self.input_layernorm = nn.LayerNorm(config.hidden_size, eps=config.rms_norm_eps)
vllm/model_executor/models/persimmon.py
+19 -4
@@ -62,14 +62,23 @@ from .utils import (
62
63 class PersimmonMLP(nn.Module):
64 def __init__(
65 - self, config: PersimmonConfig, quant_config: QuantizationConfig | None = None
65 + self,
66 + config: PersimmonConfig,
67 + quant_config: QuantizationConfig | None = None,
68 + prefix: str = "",
69 ):
70 super().__init__()
71 self.dense_h_to_4h = ColumnParallelLinear(
69 - config.hidden_size, config.intermediate_size, quant_config=quant_config
72 + config.hidden_size,
73 + config.intermediate_size,
74 + quant_config=quant_config,
75 + prefix=f"{prefix}.dense_h_to_4h",
76 )
77 self.dense_4h_to_h = RowParallelLinear(
72 - config.intermediate_size, config.hidden_size, quant_config=quant_config
78 + config.intermediate_size,
79 + config.hidden_size,
80 + quant_config=quant_config,
81 + prefix=f"{prefix}.dense_4h_to_h",
82 )
83 self.act = get_act_fn(config.hidden_act)
84
@@ -110,12 +119,14 @@ class PersimmonAttention(nn.Module):
119 self.total_num_heads,
120 bias=True,
121 quant_config=quant_config,
122 + prefix=f"{prefix}.query_key_value",
123 )
124 self.dense = RowParallelLinear(
125 self.total_num_heads * self.head_dim,
126 self.hidden_size,
127 bias=True,
128 quant_config=quant_config,
129 + prefix=f"{prefix}.dense",
130 )
131 self.is_qk_layernorm = config.qk_layernorm
132
@@ -192,7 +203,11 @@ class PersimmonDecoderLayer(nn.Module):
203 quant_config=quant_config,
204 prefix=f"{prefix}.self_attn",
205 )
195 - self.mlp = PersimmonMLP(config, quant_config=quant_config)
206 + self.mlp = PersimmonMLP(
207 + config,
208 + quant_config=quant_config,
209 + prefix=f"{prefix}.mlp",
210 + )
211 self.input_layernorm = nn.LayerNorm(
212 config.hidden_size, eps=config.layer_norm_eps
213 )
vllm/model_executor/models/phi.py
+9 -2
@@ -99,11 +99,13 @@ class PhiAttention(nn.Module):
99 self.total_num_heads,
100 bias=True,
101 quant_config=quant_config,
102 + prefix=f"{prefix}.qkv_proj",
103 )
104 self.dense = RowParallelLinear(
105 self.hidden_size,
106 self.hidden_size,
107 quant_config=quant_config,
108 + prefix=f"{prefix}.dense",
109 )
110
111 scaling = self.head_size**-0.5
@@ -148,7 +150,10 @@ class PhiAttention(nn.Module):
150
151 class PhiMLP(nn.Module):
152 def __init__(
151 - self, config: PhiConfig, quant_config: QuantizationConfig | None = None
153 + self,
154 + config: PhiConfig,
155 + quant_config: QuantizationConfig | None = None,
156 + prefix: str = "",
157 ):
158 super().__init__()
159
@@ -159,11 +164,13 @@ class PhiMLP(nn.Module):
164 config.hidden_size,
165 n_inner,
166 quant_config=quant_config,
167 + prefix=f"{prefix}.fc1",
168 )
169 self.fc2 = RowParallelLinear(
170 n_inner,
171 config.hidden_size,
172 quant_config=quant_config,
173 + prefix=f"{prefix}.fc2",
174 )
175 self.act = get_act_fn(config.hidden_act)
176
@@ -189,7 +196,7 @@ class PhiLayer(nn.Module):
196 self.self_attn = PhiAttention(
197 config, cache_config, quant_config, prefix=f"{prefix}.self_attn"
198 )
192 - self.mlp = PhiMLP(config, quant_config)
199 + self.mlp = PhiMLP(config, quant_config, prefix=f"{prefix}.mlp")
200
201 def forward(
202 self,
vllm/model_executor/models/phimoe.py
+2
@@ -343,12 +343,14 @@ class PhiMoEAttention(nn.Module):
343 self.total_num_kv_heads,
344 bias=True,
345 quant_config=quant_config,
346 + prefix=f"{prefix}.qkv_proj",
347 )
348 self.o_proj = RowParallelLinear(
349 self.total_num_heads * self.head_dim,
350 hidden_size,
351 bias=True,
352 quant_config=quant_config,
353 + prefix=f"{prefix}.o_proj",
354 )
355 self.rotary_emb = get_rope(
356 self.head_dim,
vllm/model_executor/models/plamo2.py
+2
@@ -567,12 +567,14 @@ class Plamo2AttentionMixer(nn.Module):
567 self.total_num_kv_heads,
568 bias=False,
569 quant_config=quant_config,
570 + prefix=f"{prefix}.qkv_proj",
571 )
572 self.o_proj = RowParallelLinear(
573 self.total_num_heads * self.head_dim,
574 config.hidden_size,
575 bias=False,
576 quant_config=quant_config,
577 + prefix=f"{prefix}.o_proj",
578 )
579
580 self.rope_theta = config.rope_theta if hasattr(config, "rope_theta") else 10000
vllm/model_executor/models/qwen.py
+2
@@ -102,12 +102,14 @@ class QWenAttention(nn.Module):
102 self.total_num_heads,
103 bias=True,
104 quant_config=quant_config,
105 + prefix=f"{prefix}.c_attn",
106 )
107 self.c_proj = RowParallelLinear(
108 self.total_num_heads * self.head_dim,
109 hidden_size,
110 bias=False,
111 quant_config=quant_config,
112 + prefix=f"{prefix}.c_proj",
113 )
114 self.scaling = self.head_dim**-0.5
115
vllm/model_executor/models/zamba2.py
+15 -1
@@ -75,7 +75,12 @@ class Zamba2LoRA(nn.Module):
75 super().__init__()
76
77 self.A = ColumnParallelLinear(
78 - input_dim, rank, bias=False, quant_config=quant_config, gather_output=True
78 + input_dim,
79 + rank,
80 + bias=False,
81 + quant_config=quant_config,
82 + gather_output=True,
83 + prefix=f"{prefix}.A",
84 )
85
86 if isinstance(output_dim, list):
@@ -150,12 +155,14 @@ class Zamba2Attention(nn.Module):
155 self.total_num_attention_heads,
156 bias=False,
157 quant_config=quant_config,
158 + prefix=f"{prefix}.qkv_proj",
159 )
160 self.o_proj = RowParallelLinear(
161 self.attention_hidden_size,
162 config.hidden_size,
163 bias=False,
164 quant_config=quant_config,
165 + prefix=f"{prefix}.o_proj",
166 )
167
168 # Even though in Zamba2 weights are shared between attention layers, KV
@@ -197,18 +204,21 @@ class Zamba2Attention(nn.Module):
204 config.adapter_rank,
205 self.attention_hidden_size,
206 quant_config=quant_config,
207 + prefix=f"{prefix}.linear_q_adapter",
208 )
209 linear_k_adapter = Zamba2LoRA(
210 self.attention_hidden_size,
211 config.adapter_rank,
212 self.attention_hidden_size,
213 quant_config=quant_config,
214 + prefix=f"{prefix}.linear_k_adapter",
215 )
216 linear_v_adapter = Zamba2LoRA(
217 self.attention_hidden_size,
218 config.adapter_rank,
219 self.attention_hidden_size,
220 quant_config=quant_config,
221 + prefix=f"{prefix}.linear_v_adapter",
222 )
223 else:
224 linear_q_adapter = nn.Identity()
@@ -312,6 +322,7 @@ class Zamba2MLP(nn.Module):
322 2 * [self.intermediate_size], # 2x for gate and input projections
323 bias=self.config.add_bias_linear,
324 quant_config=quant_config,
325 + prefix=f"{prefix}.gate_up_proj",
326 )
327
328 self.down_proj = RowParallelLinear(
@@ -319,6 +330,7 @@ class Zamba2MLP(nn.Module):
330 self.hidden_size,
331 bias=self.config.add_bias_linear,
332 quant_config=quant_config,
333 + prefix=f"{prefix}.down_proj",
334 )
335
336 # Only allow GELU activations
@@ -418,6 +430,7 @@ class Zamba2AttentionDecoderLayer(nn.Module):
430 bare_block_idx=bare_block_idx,
431 num_hybrid_layers=num_hybrid_layers,
432 quant_config=quant_config,
433 + prefix=f"{prefix}.feed_forward",
434 )
435
436 # Initialize layer normalizations
@@ -599,6 +612,7 @@ class Zamba2HybridLayer(nn.Module):
612 config.hidden_size,
613 bias=False,
614 quant_config=quant_config,
615 + prefix=f"{prefix}.linear",
616 )
617 self.mamba_decoder = Zamba2MambaDecoderLayer(
618 config,