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 8, 22:45 UTC
[Model] Apply #32631 for recent models (#33785)
Signed-off-by: DarkLight1337 <tlleungac@connect.ust.hk>
Cyrus Leung committed
Feb 4, 2026 at 20:23 UTC
e57ef99b409ba651695a515f6022c9badf25b2a2
4 files changed
+46
-50
vllm/model_executor/models/eagle2_5_vl.py
+16
-17
@@ -222,22 +222,24 @@ class Eagle2_5_VLForConditionalGeneration(
222
223
self.select_layer = getattr(config, "select_layer", -1)
224
225
- # Vision encoder (SigLIP)
226
- self.vision_model = self._init_vision_model(
227
- config,
228
- quant_config=quant_config,
229
- prefix=maybe_prefix(prefix, "vision_model"),
230
- )
225
+ with self._mark_tower_model(vllm_config, "image"):
226
+ # Vision encoder (SigLIP)
227
+ self.vision_model = self._init_vision_model(
228
+ config,
229
+ quant_config=quant_config,
230
+ prefix=maybe_prefix(prefix, "vision_model"),
231
+ )
232
232
- # Language model (Qwen2)
233
- self.language_model = init_vllm_registered_model(
234
- vllm_config=vllm_config,
235
- hf_config=config.text_config,
236
- prefix=maybe_prefix(prefix, "language_model"),
237
- )
233
+ # MLP projection
234
+ self.mlp1 = self._init_mlp1(config)
235
239
- # MLP projection
240
- self.mlp1 = self._init_mlp1(config)
236
+ with self._mark_language_model(vllm_config):
237
+ # Language model (Qwen2)
238
+ self.language_model = init_vllm_registered_model(
239
+ vllm_config=vllm_config,
240
+ hf_config=config.text_config,
241
+ prefix=maybe_prefix(prefix, "language_model"),
242
+ )
243
244
self.img_context_token_id = None
245
@@ -399,9 +401,6 @@ class Eagle2_5_VLForConditionalGeneration(
401
]
402
return image_embeds.split(image_feature_sizes)
403
402
- def get_language_model(self) -> torch.nn.Module:
403
- return self.language_model
404
-
404
def embed_multimodal(self, **kwargs: object) -> MultiModalEmbeddings:
405
"""Embed multimodal inputs."""
406
image_input = self._parse_and_validate_image_input(**kwargs)
vllm/model_executor/models/funaudiochat.py
-3
@@ -820,9 +820,6 @@ class FunAudioChatForConditionalGeneration(nn.Module, SupportsMultiModal, Suppor
820
self.language_model.make_empty_intermediate_tensors
821
)
822
823
- def get_language_model(self) -> torch.nn.Module:
824
- return self.language_model
825
-
823
def _get_continuous_audio_features(
824
self,
825
input_features: torch.Tensor,
vllm/model_executor/models/openpangu_vl.py
+17
-16
@@ -843,20 +843,24 @@ class OpenPanguVLForConditionalGeneration(
843
self.config = config
844
self.vllm_config = vllm_config
845
quant_config = vllm_config.quant_config
846
- self.visual = OpenPanguVisionTransformer(
847
- vision_config=config.vision_config,
848
- out_hidden_size=config.vision_config.out_hidden_size,
849
- hidden_size=config.hidden_size,
850
- norm_eps=getattr(config.vision_config, "rms_norm_eps", 1e-6),
851
- quant_config=self._maybe_ignore_quant_config(quant_config),
852
- prefix=maybe_prefix(prefix, "visual"),
853
- )
846
855
- self.language_model = init_vllm_registered_model(
856
- vllm_config=vllm_config,
857
- prefix=maybe_prefix("openpangu", "language_model"),
858
- architectures=["PanguEmbeddedForCausalLM"],
859
- )
847
+ with self._mark_tower_model(vllm_config, {"image", "video"}):
848
+ self.visual = OpenPanguVisionTransformer(
849
+ vision_config=config.vision_config,
850
+ out_hidden_size=config.vision_config.out_hidden_size,
851
+ hidden_size=config.hidden_size,
852
+ norm_eps=getattr(config.vision_config, "rms_norm_eps", 1e-6),
853
+ quant_config=self._maybe_ignore_quant_config(quant_config),
854
+ prefix=maybe_prefix(prefix, "visual"),
855
+ )
856
+
857
+ with self._mark_language_model(vllm_config):
858
+ self.language_model = init_vllm_registered_model(
859
+ vllm_config=vllm_config,
860
+ prefix=maybe_prefix("openpangu", "language_model"),
861
+ architectures=["PanguEmbeddedForCausalLM"],
862
+ )
863
+
864
self.make_empty_intermediate_tensors = (
865
self.language_model.make_empty_intermediate_tensors
866
)
@@ -1008,9 +1012,6 @@ class OpenPanguVLForConditionalGeneration(
1012
)
1013
return mm_input_by_modality
1014
1011
- def get_language_model(self) -> torch.nn.Module:
1012
- return self.language_model
1013
-
1015
def embed_multimodal(self, **kwargs: object) -> MultiModalEmbeddings | None:
1016
mm_input_by_modality = self._parse_and_validate_multimodal_inputs(**kwargs)
1017
if not mm_input_by_modality:
vllm/model_executor/models/qwen3_asr.py
+13
-14
@@ -296,19 +296,21 @@ class Qwen3ASRForConditionalGeneration(
296
multimodal_config = vllm_config.model_config.multimodal_config
297
self.config = thinker_config
298
self.multimodal_config = multimodal_config
299
-
300
- self.audio_tower = Qwen3OmniMoeAudioEncoder(
301
- thinker_config.audio_config,
302
- prefix=maybe_prefix(prefix, "audio_tower"),
303
- )
299
self.quant_config = quant_config
300
306
- self.language_model = Qwen3ForCausalLM(
307
- vllm_config=vllm_config.with_hf_config(
308
- thinker_config.text_config, architectures=["Qwen3ForCausalLM"]
309
- ),
310
- prefix=maybe_prefix(prefix, "language_model"),
311
- )
301
+ with self._mark_tower_model(vllm_config, "audio"):
302
+ self.audio_tower = Qwen3OmniMoeAudioEncoder(
303
+ thinker_config.audio_config,
304
+ prefix=maybe_prefix(prefix, "audio_tower"),
305
+ )
306
+
307
+ with self._mark_language_model(vllm_config):
308
+ self.language_model = Qwen3ForCausalLM(
309
+ vllm_config=vllm_config.with_hf_config(
310
+ thinker_config.text_config, architectures=["Qwen3ForCausalLM"]
311
+ ),
312
+ prefix=maybe_prefix(prefix, "language_model"),
313
+ )
314
315
self.make_empty_intermediate_tensors = (
316
self.language_model.make_empty_intermediate_tensors
@@ -363,9 +365,6 @@ class Qwen3ASRForConditionalGeneration(
365
)
366
return audio_features.split(audio_output_lengths.tolist())
367
366
- def get_language_model(self) -> torch.nn.Module:
367
- return self.language_model
368
-
368
def embed_multimodal(self, **kwargs: object) -> MultiModalEmbeddings | None:
369
mm_input_by_modality = self._parse_and_validate_multimodal_inputs(**kwargs)
370
if not mm_input_by_modality: