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 10, 22:45 UTC
[Model] Introduce verify_and_update_model_config for VerifyAndUpdateConfig. (#31131)
Signed-off-by: wang.yuqi <yuqi.wang@daocloud.io> Signed-off-by: wang.yuqi <noooop@126.com>
wang.yuqi committed
Dec 24, 2025 at 17:54 UTC
bd89ce16d216f33d93cb72d0a88b2a98d726784a
3 files changed
+47
-30
vllm/config/model.py
+18
-1
@@ -595,7 +595,7 @@ class ModelConfig:
595
596
# Avoid running try_verify_and_update_config multiple times
597
self.config_updated = False
598
-
598
+ self._try_verify_and_update_model_config()
599
self._verify_quantization()
600
self._verify_cuda_graph()
601
self._verify_bnb_config()
@@ -1008,6 +1008,23 @@ class ModelConfig:
1008
"when expert parallelism is enabled."
1009
)
1010
1011
+ def _try_verify_and_update_model_config(self):
1012
+ # Avoid running try_verify_and_update_config multiple times
1013
+ if getattr(self, "config_updated", False):
1014
+ return
1015
+
1016
+ architecture = self.architecture
1017
+ if architecture is None:
1018
+ return
1019
+
1020
+ from vllm.model_executor.models.config import (
1021
+ MODELS_CONFIG_MAP,
1022
+ )
1023
+
1024
+ cls = MODELS_CONFIG_MAP.get(architecture, None)
1025
+ if cls is not None:
1026
+ cls.verify_and_update_model_config(self)
1027
+
1028
def verify_dual_chunk_attention_config(
1029
self,
1030
load_config: LoadConfig,
vllm/model_executor/models/config.py
+29
-26
@@ -13,7 +13,7 @@ from vllm.utils.torch_utils import STR_DTYPE_TO_TORCH_DTYPE
13
from vllm.v1.kv_cache_interface import FullAttentionSpec, MambaSpec, MLAAttentionSpec
14
15
if TYPE_CHECKING:
16
- from vllm.config import VllmConfig
16
+ from vllm.config import ModelConfig, VllmConfig
17
18
logger = init_logger(__name__)
19
@@ -21,20 +21,24 @@ logger = init_logger(__name__)
21
class VerifyAndUpdateConfig:
22
@staticmethod
23
def verify_and_update_config(vllm_config: "VllmConfig") -> None:
24
- raise NotImplementedError
24
+ return
25
+
26
+ @staticmethod
27
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
28
+ return
29
30
27
-class Gemma3TextModelConfig:
31
+class Gemma3TextModelConfig(VerifyAndUpdateConfig):
32
@staticmethod
29
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
30
- hf_config = vllm_config.model_config.hf_config
33
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
34
+ hf_config = model_config.hf_config
35
hf_config.is_causal = not hf_config.use_bidirectional_attention
36
37
38
class GteNewModelConfig(VerifyAndUpdateConfig):
39
@staticmethod
36
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
37
- config = vllm_config.model_config.hf_config
40
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
41
+ config = model_config.hf_config
42
43
assert config.__class__.__name__ == "NewConfig"
44
assert config.hidden_act == "gelu"
@@ -53,16 +57,15 @@ class GteNewModelConfig(VerifyAndUpdateConfig):
57
58
class JambaForSequenceClassificationConfig(VerifyAndUpdateConfig):
59
@staticmethod
56
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
57
- pooler_config = vllm_config.model_config.pooler_config
60
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
61
+ pooler_config = model_config.pooler_config
62
if pooler_config.use_activation is None:
63
pooler_config.use_activation = False
64
65
66
class JinaRobertaModelConfig(VerifyAndUpdateConfig):
67
@staticmethod
64
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
65
- model_config = vllm_config.model_config
68
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
69
config = model_config.hf_config
70
71
if config.position_embedding_type == "rotary":
@@ -90,10 +93,10 @@ class JinaRobertaModelConfig(VerifyAndUpdateConfig):
93
94
class LlamaBidirectionalConfig(VerifyAndUpdateConfig):
95
@staticmethod
93
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
96
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
97
from vllm.config.pooler import PoolingTypeStr
98
96
- hf_config = vllm_config.model_config.hf_config
99
+ hf_config = model_config.hf_config
100
hf_config.is_causal = False
101
102
pooling_type_map: dict[str, PoolingTypeStr] = {
@@ -105,7 +108,7 @@ class LlamaBidirectionalConfig(VerifyAndUpdateConfig):
108
pooling_type = pooling_type_map.get(hf_config.pooling, None)
109
if pooling_type is None:
110
raise ValueError(f"pool_type {hf_config.pooling} not supported")
108
- vllm_config.model_config.pooler_config.pooling_type = pooling_type
111
+ model_config.pooler_config.pooling_type = pooling_type
112
113
114
class NomicBertModelConfig(VerifyAndUpdateConfig):
@@ -204,8 +207,8 @@ class NomicBertModelConfig(VerifyAndUpdateConfig):
207
208
class Qwen2ForProcessRewardModelConfig(VerifyAndUpdateConfig):
209
@staticmethod
207
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
208
- pooler_config = vllm_config.model_config.pooler_config
210
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
211
+ pooler_config = model_config.pooler_config
212
213
if pooler_config.step_tag_id is None:
214
pooler_config.step_tag_id = 151651
@@ -213,8 +216,8 @@ class Qwen2ForProcessRewardModelConfig(VerifyAndUpdateConfig):
216
217
class Qwen2ForRewardModelConfig(VerifyAndUpdateConfig):
218
@staticmethod
216
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
217
- pooler_config = vllm_config.model_config.pooler_config
219
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
220
+ pooler_config = model_config.pooler_config
221
222
if pooler_config.softmax is None:
223
pooler_config.softmax = False
@@ -222,8 +225,8 @@ class Qwen2ForRewardModelConfig(VerifyAndUpdateConfig):
225
226
class Qwen3ForSequenceClassificationConfig(VerifyAndUpdateConfig):
227
@staticmethod
225
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
226
- config = vllm_config.model_config.hf_config
228
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
229
+ config = model_config.hf_config
230
231
is_original_qwen3_reranker = getattr(
232
config, "is_original_qwen3_reranker", False
@@ -237,23 +240,23 @@ class Qwen3ForSequenceClassificationConfig(VerifyAndUpdateConfig):
240
"Try loading the original Qwen3 Reranker?, see: "
241
"https://github.com/vllm-project/vllm/tree/main/examples/offline_inference/offline_reranker.py"
242
)
240
- vllm_config.model_config.hf_config.method = "from_2_way_softmax"
243
+ model_config.hf_config.method = "from_2_way_softmax"
244
245
246
class JinaVLForSequenceClassificationConfig(VerifyAndUpdateConfig):
247
@staticmethod
245
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
246
- config = vllm_config.model_config.hf_config
248
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
249
+ config = model_config.hf_config
250
config.num_labels = 1
248
- pooler_config = vllm_config.model_config.pooler_config
251
+ pooler_config = model_config.pooler_config
252
if pooler_config.logit_bias is None:
253
pooler_config.logit_bias = 2.65
254
255
256
class SnowflakeGteNewModelConfig(VerifyAndUpdateConfig):
257
@staticmethod
255
- def verify_and_update_config(vllm_config: "VllmConfig") -> None:
256
- config = vllm_config.model_config.hf_config
258
+ def verify_and_update_model_config(model_config: "ModelConfig") -> None:
259
+ config = model_config.hf_config
260
261
assert config.__class__.__name__ == "GteConfig"
262
assert config.hidden_act == "gelu"
vllm/model_executor/models/llama.py
-3
@@ -64,7 +64,6 @@ from .interfaces import (
64
SupportsLoRA,
65
SupportsPP,
66
)
67
-from .interfaces_base import attn_type
67
from .utils import (
68
AutoWeightsLoader,
69
PPMissingLayer,
@@ -707,14 +706,12 @@ class LlamaForCausalLM(
706
return name, loaded_weight
707
708
710
-@attn_type("encoder_only")
709
class LlamaBidirectionalForSequenceClassification(as_seq_cls_model(LlamaForCausalLM)):
710
# This class sets the correct attention type and pooling type
711
# through LlamaBidirectionalConfig.
712
pass
713
714
717
-@attn_type("encoder_only")
715
class LlamaBidirectionalModel(as_embedding_model(LlamaForCausalLM)):
716
# This class sets the correct attention type and pooling type
717
# through LlamaBidirectionalConfig.