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, 23:45 UTC
[Model] Prioritize Transformers fallback over suffix matching (#21719)
Signed-off-by: DarkLight1337 <tlleungac@connect.ust.hk>
Cyrus Leung committed
Jul 28, 2025 at 17:15 UTC
a4ed7315460ee2610bb0afc49686f72ad59ef57b
2 files changed
+38
-23
tests/models/multimodal/generation/test_common.py
+2
-1
@@ -222,6 +222,7 @@ VLM_TEST_SETTINGS = {
222
},
223
marks=[large_gpu_mark(min_gb=32)],
224
),
225
+ # Check "auto" with fallback to transformers
226
"internvl-transformers": VLMTestInfo(
227
models=["OpenGVLab/InternVL3-1B-hf"],
228
test_type=(VLMTestType.IMAGE, VLMTestType.MULTI_IMAGE),
@@ -231,7 +232,7 @@ VLM_TEST_SETTINGS = {
232
use_tokenizer_eos=True,
233
image_size_factors=[(0.25, 0.5, 1.0)],
234
vllm_runner_kwargs={
234
- "model_impl": "transformers",
235
+ "model_impl": "auto",
236
},
237
auto_cls=AutoModelForImageTextToText,
238
marks=[pytest.mark.core_model],
vllm/model_executor/models/registry.py
+36
-22
@@ -586,18 +586,6 @@ class _ModelRegistry:
586
587
return architecture
588
589
- def _normalize_archs(
590
- self,
591
- architectures: list[str],
592
- model_config: ModelConfig,
593
- ) -> list[str]:
594
- if not architectures:
595
- logger.warning("No model architectures are specified")
596
-
597
- return [
598
- self._normalize_arch(arch, model_config) for arch in architectures
599
- ]
600
-
589
def inspect_model_cls(
590
self,
591
architectures: Union[str, list[str]],
@@ -605,8 +593,8 @@ class _ModelRegistry:
593
) -> tuple[_ModelInfo, str]:
594
if isinstance(architectures, str):
595
architectures = [architectures]
608
-
609
- normalized_archs = self._normalize_archs(architectures, model_config)
596
+ if not architectures:
597
+ raise ValueError("No model architectures are specified")
598
599
# Require transformers impl
600
if model_config.model_impl == ModelImpl.TRANSFORMERS:
@@ -617,13 +605,26 @@ class _ModelRegistry:
605
if model_info is not None:
606
return (model_info, arch)
607
620
- for arch, normalized_arch in zip(architectures, normalized_archs):
608
+ # Fallback to transformers impl (after resolving convert_type)
609
+ if (all(arch not in self.models for arch in architectures)
610
+ and model_config.model_impl == ModelImpl.AUTO
611
+ and getattr(model_config, "convert_type", "none") == "none"):
612
+ arch = self._try_resolve_transformers(architectures[0],
613
+ model_config)
614
+ if arch is not None:
615
+ model_info = self._try_inspect_model_cls(arch)
616
+ if model_info is not None:
617
+ return (model_info, arch)
618
+
619
+ for arch in architectures:
620
+ normalized_arch = self._normalize_arch(arch, model_config)
621
model_info = self._try_inspect_model_cls(normalized_arch)
622
if model_info is not None:
623
return (model_info, arch)
624
625
- # Fallback to transformers impl
626
- if model_config.model_impl in (ModelImpl.AUTO, ModelImpl.TRANSFORMERS):
625
+ # Fallback to transformers impl (before resolving runner_type)
626
+ if (all(arch not in self.models for arch in architectures)
627
+ and model_config.model_impl == ModelImpl.AUTO):
628
arch = self._try_resolve_transformers(architectures[0],
629
model_config)
630
if arch is not None:
@@ -640,8 +641,8 @@ class _ModelRegistry:
641
) -> tuple[type[nn.Module], str]:
642
if isinstance(architectures, str):
643
architectures = [architectures]
643
-
644
- normalized_archs = self._normalize_archs(architectures, model_config)
644
+ if not architectures:
645
+ raise ValueError("No model architectures are specified")
646
647
# Require transformers impl
648
if model_config.model_impl == ModelImpl.TRANSFORMERS:
@@ -652,13 +653,26 @@ class _ModelRegistry:
653
if model_cls is not None:
654
return (model_cls, arch)
655
655
- for arch, normalized_arch in zip(architectures, normalized_archs):
656
+ # Fallback to transformers impl (after resolving convert_type)
657
+ if (all(arch not in self.models for arch in architectures)
658
+ and model_config.model_impl == ModelImpl.AUTO
659
+ and getattr(model_config, "convert_type", "none") == "none"):
660
+ arch = self._try_resolve_transformers(architectures[0],
661
+ model_config)
662
+ if arch is not None:
663
+ model_cls = self._try_load_model_cls(arch)
664
+ if model_cls is not None:
665
+ return (model_cls, arch)
666
+
667
+ for arch in architectures:
668
+ normalized_arch = self._normalize_arch(arch, model_config)
669
model_cls = self._try_load_model_cls(normalized_arch)
670
if model_cls is not None:
671
return (model_cls, arch)
672
660
- # Fallback to transformers impl
661
- if model_config.model_impl in (ModelImpl.AUTO, ModelImpl.TRANSFORMERS):
673
+ # Fallback to transformers impl (before resolving runner_type)
674
+ if (all(arch not in self.models for arch in architectures)
675
+ and model_config.model_impl == ModelImpl.AUTO):
676
arch = self._try_resolve_transformers(architectures[0],
677
model_config)
678
if arch is not None: