@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 4a9375fe9d
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 14, 05:30 UTC

[Model] Pass param prefix to LLMHead (#24862)

Signed-off-by: whx-sjtu <2952154980@qq.com>

whx committed Sep 17, 2025 at 16:01 UTC 4a9375fe9dbde2e88fde268fab40f5d3a2b6a8ff
58 files changed +102 -31
vllm/model_executor/models/arctic.py
+1
@@ -427,6 +427,7 @@ class ArcticForCausalLM(nn.Module, SupportsPP, SupportsQuant):
427 self.vocab_size,
428 config.hidden_size,
429 quant_config=quant_config,
430 + prefix=maybe_prefix(prefix, "lm_head"),
431 )
432 if self.config.tie_word_embeddings:
433 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/aria.py
+1
@@ -539,6 +539,7 @@ class AriaForConditionalGeneration(nn.Module, SupportsMultiModal):
539 config.text_config.hidden_size,
540 org_num_embeddings=self.language_model.org_vocab_size,
541 quant_config=quant_config,
542 + prefix=maybe_prefix(prefix, "lm_head"),
543 )
544 logit_scale = getattr(config, "logit_scale", 1.0)
545 self.logits_processor = LogitsProcessor(self.unpadded_vocab_size,
vllm/model_executor/models/baichuan.py
+4 -2
@@ -51,7 +51,8 @@ from vllm.sequence import IntermediateTensors
51
52 from .interfaces import SupportsLoRA, SupportsPP, SupportsQuant
53 from .utils import (AutoWeightsLoader, is_pp_missing_parameter,
54 - make_empty_intermediate_tensors_factory, make_layers)
54 + make_empty_intermediate_tensors_factory, make_layers,
55 + maybe_prefix)
56
57
58 def _get_alibi_slopes(total_num_heads: int) -> torch.Tensor:
@@ -394,7 +395,8 @@ class BaiChuanBaseForCausalLM(nn.Module, SupportsLoRA, SupportsPP,
395 position_embedding=position_embedding)
396 self.lm_head = ParallelLMHead(config.vocab_size,
397 config.hidden_size,
397 - quant_config=quant_config)
398 + quant_config=quant_config,
399 + prefix=maybe_prefix(prefix, "lm_head"))
400 self.lm_head.weight.weight_loader = self.lm_head_weight_loader
401 if self.config.tie_word_embeddings:
402 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/bamba.py
+1
@@ -514,6 +514,7 @@ class BambaForCausalLM(nn.Module, HasInnerState, SupportsLoRA, SupportsPP,
514 # We need bigger padding if using lora for kernel
515 # compatibility
516 if not lora_config else lora_config.lora_vocab_padding_size,
517 + prefix=maybe_prefix(prefix, "lm_head"),
518 )
519 # Used to track and store by the Mamba cache between steps.
520 self.mamba_cache: Optional[MambaCacheManager] = None
vllm/model_executor/models/bloom.py
+3 -1
@@ -330,7 +330,9 @@ class BloomForCausalLM(nn.Module, SupportsPP, SupportsQuant):
330 self.lm_head = self.transformer.word_embeddings
331 else:
332 self.lm_head = ParallelLMHead(self.config.vocab_size,
333 - self.config.hidden_size)
333 + self.config.hidden_size,
334 + prefix=maybe_prefix(
335 + prefix, "lm_head"))
336
337 self.logits_processor = LogitsProcessor(config.vocab_size)
338 self.make_empty_intermediate_tensors = (
vllm/model_executor/models/chameleon.py
+1
@@ -960,6 +960,7 @@ class ChameleonForConditionalGeneration(nn.Module, SupportsMultiModal,
960 self.lm_head = ParallelLMHead(
961 self.unpadded_vocab_size,
962 config.hidden_size,
963 + prefix=maybe_prefix(prefix, "lm_head"),
964 )
965 if config.tie_word_embeddings:
966 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/dbrx.py
+1
@@ -438,6 +438,7 @@ class DbrxForCausalLM(nn.Module, SupportsPP):
438 org_num_embeddings=config.vocab_size,
439 padding_size=DEFAULT_VOCAB_PADDING_SIZE,
440 quant_config=quant_config,
441 + prefix=maybe_prefix(prefix, "lm_head"),
442 )
443 self.logits_processor = LogitsProcessor(self.unpadded_vocab_size,
444 config.vocab_size)
vllm/model_executor/models/deepseek.py
+6 -3
@@ -453,9 +453,12 @@ class DeepseekForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
453 self.quant_config = quant_config
454 self.model = DeepseekModel(vllm_config=vllm_config,
455 prefix=maybe_prefix(prefix, "model"))
456 - self.lm_head = ParallelLMHead(config.vocab_size,
457 - config.hidden_size,
458 - quant_config=quant_config)
456 + self.lm_head = ParallelLMHead(
457 + config.vocab_size,
458 + config.hidden_size,
459 + quant_config=quant_config,
460 + prefix=maybe_prefix(prefix, "lm_head"),
461 + )
462 if self.config.tie_word_embeddings:
463 self.lm_head.weight = self.model.embed_tokens.weight
464 self.logits_processor = LogitsProcessor(config.vocab_size)
vllm/model_executor/models/deepseek_eagle.py
+2 -1
@@ -199,7 +199,8 @@ class EagleDeepseekV3ForCausalLM(DeepseekV3ForCausalLM):
199
200 self.lm_head = ParallelLMHead(self.config.vocab_size,
201 self.config.hidden_size,
202 - quant_config=quant_config)
202 + quant_config=quant_config,
203 + prefix=maybe_prefix(prefix, "lm_head"))
204
205 logit_scale = getattr(self.config, "logit_scale", 1.0)
206 self.logits_processor = LogitsProcessor(self.config.vocab_size,
vllm/model_executor/models/deepseek_v2.py
+6 -3
@@ -823,9 +823,12 @@ class DeepseekV2ForCausalLM(nn.Module, SupportsPP, MixtureOfExperts,
823 self.model = DeepseekV2Model(vllm_config=vllm_config,
824 prefix=maybe_prefix(prefix, "model"))
825 if get_pp_group().is_last_rank:
826 - self.lm_head = ParallelLMHead(config.vocab_size,
827 - config.hidden_size,
828 - quant_config=quant_config)
826 + self.lm_head = ParallelLMHead(
827 + config.vocab_size,
828 + config.hidden_size,
829 + quant_config=quant_config,
830 + prefix=maybe_prefix(prefix, "lm_head"),
831 + )
832 else:
833 self.lm_head = PPMissingLayer()
834 self.logits_processor = LogitsProcessor(config.vocab_size)
vllm/model_executor/models/dots1.py
+3 -1
@@ -504,7 +504,9 @@ class Dots1ForCausalLM(nn.Module, SupportsPP, SupportsLoRA):
504 if get_pp_group().is_last_rank:
505 self.lm_head = ParallelLMHead(config.vocab_size,
506 config.hidden_size,
507 - quant_config=quant_config)
507 + quant_config=quant_config,
508 + prefix=maybe_prefix(
509 + prefix, "lm_head"))
510 else:
511 self.lm_head = PPMissingLayer()
512 self.logits_processor = LogitsProcessor(config.vocab_size)
vllm/model_executor/models/ernie45_moe.py
+3 -1
@@ -562,7 +562,9 @@ class Ernie4_5_MoeForCausalLM(nn.Module, SupportsPP, SupportsLoRA):
562 if get_pp_group().is_last_rank:
563 self.lm_head = ParallelLMHead(config.vocab_size,
564 config.hidden_size,
565 - quant_config=quant_config)
565 + quant_config=quant_config,
566 + prefix=maybe_prefix(
567 + prefix, "lm_head"))
568 else:
569 self.lm_head = PPMissingLayer()
570
vllm/model_executor/models/ernie45_vl_moe.py
+3 -1
@@ -557,7 +557,9 @@ class Ernie4_5_VLMoeForCausalLM(nn.Module, SupportsPP):
557 if get_pp_group().is_last_rank:
558 self.lm_head = ParallelLMHead(config.vocab_size,
559 config.hidden_size,
560 - quant_config=quant_config)
560 + quant_config=quant_config,
561 + prefix=maybe_prefix(
562 + prefix, "lm_head"))
563 else:
564 self.lm_head = PPMissingLayer()
565
vllm/model_executor/models/ernie_mtp.py
+2 -1
@@ -158,7 +158,8 @@ class ErnieMTP(nn.Module, SupportsPP):
158 prefix=maybe_prefix(
159 prefix, "model"))
160 self.lm_head = ParallelLMHead(self.config.vocab_size,
161 - self.config.hidden_size)
161 + self.config.hidden_size,
162 + prefix=maybe_prefix(prefix, "lm_head"))
163 self.sampler = get_sampler()
164
165 if self.config.tie_word_embeddings:
vllm/model_executor/models/exaone.py
+1
@@ -502,6 +502,7 @@ class ExaoneForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
502 # compatibility
503 if not lora_config else lora_config.lora_vocab_padding_size,
504 quant_config=quant_config,
505 + prefix=maybe_prefix(prefix, "lm_head"),
506 )
507 if config.tie_word_embeddings:
508 self.lm_head.weight = self.transformer.wte.weight
vllm/model_executor/models/exaone4.py
+1
@@ -485,6 +485,7 @@ class Exaone4ForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
485 # compatibility
486 if not lora_config else lora_config.lora_vocab_padding_size,
487 quant_config=quant_config,
488 + prefix=maybe_prefix(prefix, "lm_head"),
489 )
490 if config.tie_word_embeddings:
491 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/falcon.py
+1
@@ -473,6 +473,7 @@ class FalconForCausalLM(nn.Module, SupportsPP):
473 config.vocab_size,
474 config.hidden_size,
475 quant_config=quant_config,
476 + prefix=maybe_prefix(prefix, "lm_head"),
477 )
478 self.logits_processor = LogitsProcessor(config.vocab_size)
479 self.make_empty_intermediate_tensors = (
vllm/model_executor/models/falcon_h1.py
+1
@@ -607,6 +607,7 @@ class FalconH1ForCausalLM(nn.Module, HasInnerState, SupportsLoRA, SupportsPP,
607 # compatibility
608 if not lora_config else
609 lora_config.lora_vocab_padding_size),
610 + prefix=maybe_prefix(prefix, "lm_head"),
611 )
612 self.lm_head_multiplier = config.lm_head_multiplier
613 if self.tie_word_embeddings:
vllm/model_executor/models/glm4_moe.py
+3 -1
@@ -608,7 +608,9 @@ class Glm4MoeForCausalLM(nn.Module, SupportsPP, SupportsLoRA):
608 if get_pp_group().is_last_rank:
609 self.lm_head = ParallelLMHead(config.vocab_size,
610 config.hidden_size,
611 - quant_config=quant_config)
611 + quant_config=quant_config,
612 + prefix=maybe_prefix(
613 + prefix, "lm_head"))
614 else:
615 self.lm_head = PPMissingLayer()
616 self.logits_processor = LogitsProcessor(config.vocab_size)
vllm/model_executor/models/gpt_bigcode.py
+2 -1
@@ -302,7 +302,8 @@ class GPTBigCodeForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
302 self.lm_head = ParallelLMHead(
303 self.transformer.vocab_size,
304 self.transformer.embed_dim,
305 - org_num_embeddings=self.config.vocab_size)
305 + org_num_embeddings=self.config.vocab_size,
306 + prefix=maybe_prefix(prefix, "lm_head"))
307 self.unpadded_vocab_size = config.vocab_size
308 if lora_config:
309 self.unpadded_vocab_size += lora_config.lora_extra_vocab_size
vllm/model_executor/models/gpt_j.py
+1
@@ -306,6 +306,7 @@ class GPTJForCausalLM(nn.Module, SupportsPP):
306 config.n_embd,
307 bias=True,
308 quant_config=quant_config,
309 + prefix=maybe_prefix(prefix, "lm_head"),
310 )
311 self.logits_processor = LogitsProcessor(config.vocab_size)
312 self.make_empty_intermediate_tensors = (
vllm/model_executor/models/gpt_oss.py
+1
@@ -655,6 +655,7 @@ class GptOssForCausalLM(nn.Module, SupportsPP):
655 self.lm_head = ParallelLMHead(
656 self.config.vocab_size,
657 self.config.hidden_size,
658 + prefix=maybe_prefix(prefix, "lm_head"),
659 )
660 self.logits_processor = LogitsProcessor(self.config.vocab_size)
661 self.make_empty_intermediate_tensors = (
vllm/model_executor/models/granite.py
+1
@@ -434,6 +434,7 @@ class GraniteForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
434 # compatibility
435 if not lora_config else lora_config.lora_vocab_padding_size,
436 quant_config=quant_config,
437 + prefix=maybe_prefix(prefix, "lm_head"),
438 )
439 if config.tie_word_embeddings:
440 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/granitemoe.py
+1
@@ -487,6 +487,7 @@ class GraniteMoeForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
487 # compatibility
488 if not lora_config else lora_config.lora_vocab_padding_size,
489 quant_config=quant_config,
490 + prefix=maybe_prefix(prefix, "lm_head"),
491 )
492 if config.tie_word_embeddings:
493 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/hunyuan_v1.py
+2 -1
@@ -58,7 +58,7 @@ from vllm.sequence import IntermediateTensors
58
59 from .interfaces import SupportsLoRA, SupportsPP
60 from .utils import (AutoWeightsLoader, PPMissingLayer, is_pp_missing_parameter,
61 - make_layers)
61 + make_layers, maybe_prefix)
62
63
64 def _is_moe(config: PretrainedConfig) -> bool:
@@ -871,6 +871,7 @@ class HunYuanV1Base(nn.Module, SupportsLoRA, SupportsPP):
871 org_num_embeddings=config.vocab_size,
872 padding_size=DEFAULT_VOCAB_PADDING_SIZE,
873 quant_config=quant_config,
874 + prefix=maybe_prefix(prefix, "lm_head"),
875 )
876 if config.tie_word_embeddings:
877 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/idefics3.py
+1
@@ -606,6 +606,7 @@ class Idefics3ForConditionalGeneration(nn.Module, SupportsMultiModal,
606 config.text_config.vocab_size,
607 config.text_config.hidden_size,
608 quant_config=quant_config,
609 + prefix=maybe_prefix(prefix, "lm_head"),
610 )
611 if self.config.text_config.tie_word_embeddings:
612 self.lm_head.weight = self.model.text_model.wte.weight
vllm/model_executor/models/jais.py
+3 -1
@@ -302,7 +302,9 @@ class JAISLMHeadModel(nn.Module, SupportsPP):
302 self.lm_head = self.transformer.wte
303 else:
304 self.lm_head = ParallelLMHead(self.config.vocab_size,
305 - self.config.hidden_size)
305 + self.config.hidden_size,
306 + prefix=maybe_prefix(
307 + prefix, "lm_head"))
308 if hasattr(config, "width_scale"):
309 self.output_logits_scale = config.width_scale
310 else:
vllm/model_executor/models/jamba.py
+1
@@ -502,6 +502,7 @@ class JambaForCausalLM(nn.Module, HasInnerState, SupportsLoRA, SupportsPP,
502 # We need bigger padding if using lora for kernel
503 # compatibility
504 if not lora_config else lora_config.lora_vocab_padding_size,
505 + prefix=maybe_prefix(prefix, "lm_head"),
506 )
507 # Used to track and store by the Mamba cache between steps.
508 self.mamba_cache: Optional[MambaCacheManager] = None
vllm/model_executor/models/kimi_vl.py
+1
@@ -328,6 +328,7 @@ class KimiVLForConditionalGeneration(nn.Module, SupportsMultiModal,
328 config.text_config.hidden_size,
329 org_num_embeddings=self.config.text_config.vocab_size,
330 padding_size=DEFAULT_VOCAB_PADDING_SIZE,
331 + prefix=maybe_prefix(prefix, "lm_head"),
332 )
333 else:
334 self.lm_head = PPMissingLayer()
vllm/model_executor/models/llama_eagle3.py
+1 -1
@@ -220,7 +220,7 @@ class Eagle3LlamaForCausalLM(LlamaForCausalLM):
220 self.config.hidden_size,
221 org_num_embeddings=self.config.draft_vocab_size,
222 padding_size=(DEFAULT_VOCAB_PADDING_SIZE),
223 - prefix="")
223 + prefix=maybe_prefix(prefix, "lm_head"))
224 self.logits_processor = LogitsProcessor(self.config.draft_vocab_size,
225 scale=logit_scale)
226 self.draft_id_to_target_id = nn.Parameter(
vllm/model_executor/models/mamba.py
+1
@@ -223,6 +223,7 @@ class MambaForCausalLM(nn.Module, HasInnerState, IsAttentionFree, SupportsPP):
223 # We need bigger padding if using lora for kernel
224 # compatibility
225 if not lora_config else lora_config.lora_vocab_padding_size,
226 + prefix=maybe_prefix(prefix, "lm_head"),
227 )
228
229 # Used to track and store by the Mamba cache between steps.
vllm/model_executor/models/mamba2.py
+1
@@ -278,6 +278,7 @@ class Mamba2ForCausalLM(nn.Module, HasInnerState, IsAttentionFree):
278 # We need bigger padding if using lora for kernel
279 # compatibility
280 if not lora_config else lora_config.lora_vocab_padding_size,
281 + prefix=maybe_prefix(prefix, "lm_head"),
282 )
283 if config.tie_word_embeddings:
284 self.lm_head = self.lm_head.tie_weights(self.backbone.embeddings)
vllm/model_executor/models/medusa.py
+3
@@ -15,6 +15,8 @@ from vllm.model_executor.layers.vocab_parallel_embedding import (
15 from vllm.model_executor.model_loader.weight_utils import default_weight_loader
16 from vllm.model_executor.sampling_metadata import SamplingMetadata
17
18 +from .utils import maybe_prefix
19 +
20
21 class ResidualBlock(nn.Module):
22
@@ -71,6 +73,7 @@ class Medusa(nn.Module):
73 config.hidden_size,
74 org_num_embeddings=self.truncated_vocab_size,
75 padding_size=DEFAULT_VOCAB_PADDING_SIZE,
76 + prefix=maybe_prefix(prefix, "lm_head"),
77 )
78 self.lm_heads = [
79 self.lm_head for _ in range(self.config.num_heads)
vllm/model_executor/models/mimo_mtp.py
+2 -1
@@ -158,7 +158,8 @@ class MiMoMTP(nn.Module):
158 prefix=maybe_prefix(
159 prefix, "model"))
160 self.lm_head = ParallelLMHead(self.config.vocab_size,
161 - self.config.hidden_size)
161 + self.config.hidden_size,
162 + prefix=maybe_prefix(prefix, "lm_head"))
163
164 def forward(
165 self,
vllm/model_executor/models/minicpm.py
+1
@@ -547,6 +547,7 @@ class MiniCPMForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
547 # compatibility
548 if not lora_config else lora_config.lora_vocab_padding_size,
549 quant_config=quant_config,
550 + prefix=maybe_prefix(prefix, "lm_head"),
551 )
552 if config.tie_word_embeddings:
553 self.lm_head = self.lm_head.tie_weights(self.model.embed_tokens)
vllm/model_executor/models/minicpm_eagle.py
+1
@@ -338,6 +338,7 @@ class EagleMiniCPMForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
338 # compatibility
339 if not lora_config else lora_config.lora_vocab_padding_size,
340 quant_config=quant_config,
341 + prefix=maybe_prefix(prefix, "lm_head"),
342 )
343 if config.tie_word_embeddings:
344 self.lm_head = self.lm_head.tie_weights(self.model.embed_tokens)
vllm/model_executor/models/minimax_text_01.py
+1
@@ -702,6 +702,7 @@ class MiniMaxText01ForCausalLM(nn.Module, HasInnerState, IsHybrid):
702 self.config.hidden_size,
703 org_num_embeddings=self.config.vocab_size,
704 padding_size=DEFAULT_VOCAB_PADDING_SIZE,
705 + prefix=maybe_prefix(prefix, "lm_head"),
706 )
707
708 self.logits_processor = LogitsProcessor(self.unpadded_vocab_size,
vllm/model_executor/models/mixtral.py
+1
@@ -507,6 +507,7 @@ class MixtralForCausalLM(nn.Module, SupportsLoRA, SupportsPP,
507 # compatibility
508 if not lora_config else lora_config.lora_vocab_padding_size,
509 quant_config=quant_config,
510 + prefix=maybe_prefix(prefix, "lm_head"),
511 )
512 if self.config.tie_word_embeddings:
513 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/molmo.py
+1
@@ -1403,6 +1403,7 @@ class MolmoForCausalLM(nn.Module, SupportsMultiModal, SupportsPP, SupportsLoRA,
1403 config.embedding_size or config.vocab_size,
1404 config.hidden_size,
1405 quant_config=quant_config,
1406 + prefix=maybe_prefix(prefix, "lm_head"),
1407 )
1408
1409 self.logits_processor = LogitsProcessor(config.embedding_size
vllm/model_executor/models/nemotron.py
+1
@@ -466,6 +466,7 @@ class NemotronForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
466 # compatibility
467 if not lora_config else lora_config.lora_vocab_padding_size,
468 quant_config=quant_config,
469 + prefix=maybe_prefix(prefix, "lm_head"),
470 )
471 if config.tie_word_embeddings:
472 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/nemotron_h.py
+1
@@ -565,6 +565,7 @@ class NemotronHForCausalLM(nn.Module, HasInnerState, SupportsLoRA, SupportsPP,
565 # We need bigger padding if using lora for kernel
566 # compatibility
567 if not lora_config else lora_config.lora_vocab_padding_size,
568 + prefix=maybe_prefix(prefix, "lm_head"),
569 )
570 # Used to track and store by the Mamba cache between steps.
571 self.mamba_cache: Optional[MambaCacheManager] = None
vllm/model_executor/models/olmo.py
+1
@@ -364,6 +364,7 @@ class OlmoForCausalLM(nn.Module, SupportsPP, SupportsLoRA):
364 config.hidden_size,
365 org_num_embeddings=config.vocab_size,
366 quant_config=quant_config,
367 + prefix=maybe_prefix(prefix, "lm_head"),
368 )
369 self.logits_processor = LogitsProcessor(config.vocab_size)
370 self.make_empty_intermediate_tensors = (
vllm/model_executor/models/olmoe.py
+2 -1
@@ -450,7 +450,8 @@ class OlmoeForCausalLM(nn.Module, SupportsPP):
450 prefix=maybe_prefix(prefix, "model"))
451 self.lm_head = ParallelLMHead(config.vocab_size,
452 config.hidden_size,
453 - quant_config=quant_config)
453 + quant_config=quant_config,
454 + prefix=maybe_prefix(prefix, "lm_head"))
455 self.logits_processor = LogitsProcessor(config.vocab_size)
456
457 self.make_empty_intermediate_tensors = (
vllm/model_executor/models/opt.py
+3 -1
@@ -375,7 +375,9 @@ class OPTForCausalLM(nn.Module, SupportsPP):
375 self.lm_head = self.model.decoder.embed_tokens
376 else:
377 self.lm_head = ParallelLMHead(config.vocab_size,
378 - config.word_embed_proj_dim)
378 + config.word_embed_proj_dim,
379 + prefix=maybe_prefix(
380 + prefix, "lm_head"))
381 self.logits_processor = LogitsProcessor(config.vocab_size)
382 self.make_empty_intermediate_tensors = (
383 self.model.make_empty_intermediate_tensors)
vllm/model_executor/models/orion.py
+2 -1
@@ -314,7 +314,8 @@ class OrionForCausalLM(nn.Module, SupportsPP):
314 prefix=maybe_prefix(prefix, "model"))
315 self.lm_head = ParallelLMHead(config.vocab_size,
316 config.hidden_size,
317 - quant_config=quant_config)
317 + quant_config=quant_config,
318 + prefix=maybe_prefix(prefix, "lm_head"))
319 if self.config.tie_word_embeddings:
320 self.lm_head.weight = self.model.embed_tokens.weight
321 self.logits_processor = LogitsProcessor(config.vocab_size)
vllm/model_executor/models/persimmon.py
+2 -1
@@ -307,7 +307,8 @@ class PersimmonForCausalLM(nn.Module, SupportsPP):
307 prefix=maybe_prefix(prefix, "model"))
308 self.lm_head = ParallelLMHead(config.vocab_size,
309 config.hidden_size,
310 - bias=False)
310 + bias=False,
311 + prefix=maybe_prefix(prefix, "lm_head"))
312 self.logits_processor = LogitsProcessor(config.vocab_size)
313 self.make_empty_intermediate_tensors = (
314 self.model.make_empty_intermediate_tensors)
vllm/model_executor/models/phi.py
+2 -1
@@ -322,7 +322,8 @@ class PhiForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
322 self.lm_head = ParallelLMHead(config.vocab_size,
323 config.hidden_size,
324 bias=True,
325 - quant_config=quant_config)
325 + quant_config=quant_config,
326 + prefix=maybe_prefix(prefix, "lm_head"))
327 self.logits_processor = LogitsProcessor(config.vocab_size)
328 self.make_empty_intermediate_tensors = (
329 self.model.make_empty_intermediate_tensors)
vllm/model_executor/models/phi4flash.py
+1
@@ -630,6 +630,7 @@ class Phi4FlashForCausalLM(nn.Module, HasInnerState, IsHybrid, SupportsV0Only):
630 # compatibility
631 if not lora_config else lora_config.lora_vocab_padding_size),
632 quant_config=quant_config,
633 + prefix=maybe_prefix(prefix, "lm_head"),
634 )
635 self.embedding_bias = None
636 # Used to track and store by the Mamba cache between steps.
vllm/model_executor/models/phi4mm.py
+1
@@ -989,6 +989,7 @@ class Phi4MMForCausalLM(nn.Module, SupportsLoRA, SupportsMultiModal):
989 org_num_embeddings=config.vocab_size,
990 padding_size=DEFAULT_VOCAB_PADDING_SIZE,
991 quant_config=quant_config,
992 + prefix=maybe_prefix(prefix, "lm_head"),
993 )
994 if config.tie_word_embeddings:
995 self.lm_head = self.lm_head.tie_weights(self.model.embed_tokens)
vllm/model_executor/models/phimoe.py
+1
@@ -645,6 +645,7 @@ class PhiMoEForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
645 if not lora_config else lora_config.lora_vocab_padding_size),
646 quant_config=None,
647 bias=True,
648 + prefix=maybe_prefix(prefix, "lm_head"),
649 )
650 self.logits_processor = LogitsProcessor(self.unpadded_vocab_size,
651 config.vocab_size)
vllm/model_executor/models/qwen.py
+2 -1
@@ -271,7 +271,8 @@ class QWenBaseModel(nn.Module):
271 prefix, "transformer"))
272 self.lm_head = ParallelLMHead(config.vocab_size,
273 config.hidden_size,
274 - quant_config=quant_config)
274 + quant_config=quant_config,
275 + prefix=maybe_prefix(prefix, "lm_head"))
276 if self.config.tie_word_embeddings:
277 self.lm_head.weight = self.transformer.wte.weight
278 self.logits_processor = LogitsProcessor(config.vocab_size)
vllm/model_executor/models/qwen2_moe.py
+2 -1
@@ -519,7 +519,8 @@ class Qwen2MoeForCausalLM(nn.Module, SupportsPP, SupportsLoRA):
519 prefix=maybe_prefix(prefix, "model"))
520 self.lm_head = ParallelLMHead(config.vocab_size,
521 config.hidden_size,
522 - quant_config=quant_config)
522 + quant_config=quant_config,
523 + prefix=maybe_prefix(prefix, "lm_head"))
524 if self.config.tie_word_embeddings:
525 self.lm_head.weight = self.model.embed_tokens.weight
526 self.logits_processor = LogitsProcessor(config.vocab_size)
vllm/model_executor/models/qwen3_moe.py
+2 -1
@@ -605,7 +605,8 @@ class Qwen3MoeForCausalLM(nn.Module, SupportsPP, SupportsLoRA,
605 prefix=maybe_prefix(prefix, "model"))
606 self.lm_head = ParallelLMHead(config.vocab_size,
607 config.hidden_size,
608 - quant_config=quant_config)
608 + quant_config=quant_config,
609 + prefix=maybe_prefix(prefix, "lm_head"))
610 if self.config.tie_word_embeddings:
611 self.lm_head.weight = self.model.embed_tokens.weight
612 self.logits_processor = LogitsProcessor(config.vocab_size)
vllm/model_executor/models/qwen3_next.py
+1 -1
@@ -1089,7 +1089,7 @@ class Qwen3NextForCausalLM(nn.Module, HasInnerState, SupportsLoRA, SupportsPP,
1089 # We need bigger padding if using lora for kernel
1090 # compatibility
1091 if not lora_config else lora_config.lora_vocab_padding_size,
1092 - )
1092 + prefix=maybe_prefix(prefix, "lm_head"))
1093 self.logits_processor = LogitsProcessor(self.unpadded_vocab_size,
1094 config.vocab_size)
1095 self.make_empty_intermediate_tensors = (
vllm/model_executor/models/qwen3_next_mtp.py
+2 -1
@@ -238,7 +238,8 @@ class Qwen3NextMTP(nn.Module, SupportsPP):
238 self.lm_head = ParallelLMHead(self.unpadded_vocab_size,
239 config.hidden_size,
240 org_num_embeddings=config.vocab_size,
241 - padding_size=DEFAULT_VOCAB_PADDING_SIZE)
241 + padding_size=DEFAULT_VOCAB_PADDING_SIZE,
242 + prefix=maybe_prefix(prefix, "lm_head"))
243 self.logits_processor = LogitsProcessor(self.unpadded_vocab_size,
244 config.vocab_size)
245 self.make_empty_intermediate_tensors = (
vllm/model_executor/models/solar.py
+1
@@ -469,6 +469,7 @@ class SolarForCausalLM(nn.Module, SupportsLoRA, SupportsPP):
469 # compatibility
470 if not lora_config else lora_config.lora_vocab_padding_size,
471 quant_config=quant_config,
472 + prefix=maybe_prefix(prefix, "lm_head"),
473 )
474 if config.tie_word_embeddings:
475 self.lm_head.weight = self.model.embed_tokens.weight
vllm/model_executor/models/step3_text.py
+3 -1
@@ -35,7 +35,8 @@ from vllm.sequence import IntermediateTensors
35
36 from .interfaces import SupportsPP
37 from .utils import (PPMissingLayer, is_pp_missing_parameter,
38 - make_empty_intermediate_tensors_factory, make_layers)
38 + make_empty_intermediate_tensors_factory, make_layers,
39 + maybe_prefix)
40
41 logger = init_logger(__name__)
42
@@ -386,6 +387,7 @@ class Step3TextForCausalLM(nn.Module, SupportsPP):
387 org_num_embeddings=config.vocab_size,
388 padding_size=DEFAULT_VOCAB_PADDING_SIZE
389 if not lora_config else lora_config.lora_vocab_padding_size,
390 + prefix=maybe_prefix(prefix, "lm_head"),
391 )
392 self.logits_processor = LogitsProcessor(self.unpadded_vocab_size,
393 config.vocab_size)
vllm/model_executor/models/zamba2.py
+1
@@ -941,6 +941,7 @@ class Zamba2ForCausalLM(nn.Module, HasInnerState, IsHybrid):
941 # We need bigger padding if using lora for kernel
942 # compatibility
943 if not lora_config else lora_config.lora_vocab_padding_size,
944 + prefix=maybe_prefix(prefix, "lm_head"),
945 )
946 # Tie weights with input embeddings if using same dimensions
947 self.lm_head = self.lm_head.tie_weights(self.model.embed_tokens)