@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / a4ed731546
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, 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: