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
[Bugfix] Fix nightly transformers CI failure (#21427)
Signed-off-by: Isotr0py <2037008807@qq.com>
Isotr0py committed
Jul 23, 2025 at 15:01 UTC
4ecedd180649b78a45350f4d6e07aa5ea0ca3ad9
5 files changed
+67
-11
tests/models/registry.py
+6
-6
@@ -443,6 +443,12 @@ _MULTIMODAL_EXAMPLE_MODELS = {
443
hf_overrides={"architectures": ["TarsierForConditionalGeneration"]}), # noqa: E501
444
"Tarsier2ForConditionalGeneration": _HfExamplesInfo("omni-research/Tarsier2-Recap-7b", # noqa: E501
445
hf_overrides={"architectures": ["Tarsier2ForConditionalGeneration"]}), # noqa: E501
446
+ "VoxtralForConditionalGeneration": _HfExamplesInfo(
447
+ "mistralai/Voxtral-Mini-3B-2507",
448
+ min_transformers_version="4.54",
449
+ # disable this temporarily until we support HF format
450
+ is_available_online=False,
451
+ ),
452
# [Encoder-decoder]
453
# Florence-2 uses BartFastTokenizer which can't be loaded from AutoTokenizer
454
# Therefore, we borrow the BartTokenizer from the original Bart model
@@ -450,13 +456,7 @@ _MULTIMODAL_EXAMPLE_MODELS = {
456
tokenizer="Isotr0py/Florence-2-tokenizer", # noqa: E501
457
trust_remote_code=True), # noqa: E501
458
"MllamaForConditionalGeneration": _HfExamplesInfo("meta-llama/Llama-3.2-11B-Vision-Instruct"), # noqa: E501
453
- "VoxtralForConditionalGeneration": _HfExamplesInfo(
454
- "mistralai/Voxtral-Mini-3B-2507",
455
- tokenizer_mode="mistral",
456
- min_transformers_version="4.54"
457
- ),
459
"WhisperForConditionalGeneration": _HfExamplesInfo("openai/whisper-large-v3"), # noqa: E501
459
-
460
# [Cross-encoder]
461
"JinaVLForRanking": _HfExamplesInfo("jinaai/jina-reranker-m0"), # noqa: E501
462
}
vllm/model_executor/models/tarsier.py
+1
-5
@@ -13,8 +13,7 @@ from transformers import LlavaConfig as HfLlavaConfig
13
from transformers import PretrainedConfig, SiglipVisionConfig
14
from transformers.image_utils import ImageInput, get_image_size, to_numpy_array
15
from transformers.models.llava import LlavaProcessor
16
-from transformers.processing_utils import (ProcessingKwargs, Unpack,
17
- _validate_images_text_input_order)
16
+from transformers.processing_utils import ProcessingKwargs, Unpack
17
from transformers.tokenization_utils_base import PreTokenizedInput, TextInput
18
19
from vllm.config import VllmConfig
@@ -94,9 +93,6 @@ class TarsierProcessor(LlavaProcessor):
93
raise ValueError(
94
"You have to specify at least one of `images` or `text`.")
95
97
- # check if images and text inputs are reversed for BC
98
- images, text = _validate_images_text_input_order(images, text)
99
-
96
output_kwargs = self._merge_kwargs(
97
TarsierProcessorKwargs,
98
tokenizer_init_kwargs=self.tokenizer.init_kwargs,
vllm/transformers_utils/config.py
+2
@@ -37,6 +37,7 @@ from vllm.transformers_utils.configs import (ChatGLMConfig, Cohere2Config,
37
MiniMaxText01Config,
38
MiniMaxVL01Config, MllamaConfig,
39
MLPSpeculatorConfig, MPTConfig,
40
+ Nemotron_Nano_VL_Config,
41
NemotronConfig, NVLM_D_Config,
42
OvisConfig, RWConfig,
43
SkyworkR1VChatConfig, SolarConfig,
@@ -80,6 +81,7 @@ _CONFIG_REGISTRY: dict[str, type[PretrainedConfig]] = {
81
"dbrx": DbrxConfig,
82
"deepseek_vl_v2": DeepseekVLV2Config,
83
"kimi_vl": KimiVLConfig,
84
+ "Llama_Nemotron_Nano_VL": Nemotron_Nano_VL_Config,
85
"mpt": MPTConfig,
86
"RefinedWeb": RWConfig, # For tiiuae/falcon-40b(-instruct)
87
"RefinedWebModel": RWConfig, # For tiiuae/falcon-7b(-instruct)
vllm/transformers_utils/configs/__init__.py
+2
@@ -23,6 +23,7 @@ from vllm.transformers_utils.configs.moonvit import MoonViTConfig
23
from vllm.transformers_utils.configs.mpt import MPTConfig
24
from vllm.transformers_utils.configs.nemotron import NemotronConfig
25
from vllm.transformers_utils.configs.nemotron_h import NemotronHConfig
26
+from vllm.transformers_utils.configs.nemotron_vl import Nemotron_Nano_VL_Config
27
from vllm.transformers_utils.configs.nvlm_d import NVLM_D_Config
28
from vllm.transformers_utils.configs.ovis import OvisConfig
29
from vllm.transformers_utils.configs.skyworkr1v import SkyworkR1VChatConfig
@@ -50,6 +51,7 @@ __all__ = [
51
"KimiVLConfig",
52
"NemotronConfig",
53
"NemotronHConfig",
54
+ "Nemotron_Nano_VL_Config",
55
"NVLM_D_Config",
56
"OvisConfig",
57
"SkyworkR1VChatConfig",
vllm/transformers_utils/configs/nemotron_vl.py
new
+56
@@ -0,0 +1,56 @@
1
+# SPDX-License-Identifier: Apache-2.0
2
+# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
+
4
+# yapf: disable
5
+# ruff: noqa: E501
6
+# Adapted from
7
+# https://huggingface.co/nvidia/Llama-3.1-Nemotron-Nano-VL-8B-V1/blob/main/configuration.py
8
+# --------------------------------------------------------
9
+# Adapted from https://huggingface.co/OpenGVLab/InternVL2-Llama3-76B under MIT License
10
+# LICENSE is in incl_licenses directory.
11
+# --------------------------------------------------------
12
+
13
+from transformers import LlamaConfig
14
+from transformers.configuration_utils import PretrainedConfig
15
+from transformers.dynamic_module_utils import get_class_from_dynamic_module
16
+
17
+
18
+class Nemotron_Nano_VL_Config(PretrainedConfig):
19
+ model_type = 'Llama_Nemotron_Nano_VL'
20
+ is_composition = True
21
+
22
+ def __init__(
23
+ self,
24
+ vision_config=None,
25
+ llm_config=None,
26
+ force_image_size=None,
27
+ downsample_ratio=0.5,
28
+ template=None,
29
+ ps_version='v1',
30
+ image_tag_type="internvl",
31
+ projector_hidden_size=4096,
32
+ vit_hidden_size=1280,
33
+ **kwargs
34
+ ):
35
+ super().__init__(**kwargs)
36
+
37
+ if vision_config is not None:
38
+ assert "auto_map" in vision_config and "AutoConfig" in vision_config["auto_map"]
39
+ vision_auto_config = get_class_from_dynamic_module(*vision_config["auto_map"]["AutoConfig"].split("--")[::-1])
40
+ self.vision_config = vision_auto_config(**vision_config)
41
+ else:
42
+ self.vision_config = PretrainedConfig()
43
+
44
+ if llm_config is None:
45
+ self.text_config = LlamaConfig()
46
+ else:
47
+ self.text_config = LlamaConfig(**llm_config)
48
+
49
+ # Assign configuration values
50
+ self.force_image_size = force_image_size
51
+ self.downsample_ratio = downsample_ratio
52
+ self.template = template # TODO move out of here and into the tokenizer
53
+ self.ps_version = ps_version # Pixel shuffle version
54
+ self.image_tag_type = image_tag_type # TODO: into the tokenizer too?
55
+ self.projector_hidden_size = projector_hidden_size
56
+ self.vit_hidden_size = vit_hidden_size