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 11, 16:15 UTC
[Deprecation] Remove fallbacks for `embed_input_ids` and `embed_multimodal` (#30458)
Signed-off-by: DarkLight1337 <tlleungac@connect.ust.hk>
Cyrus Leung committed
Dec 11, 2025 at 14:58 UTC
979f50efd04552654eca57c7e71e38160a7cbb5c
5 files changed
+9
-68
vllm/model_executor/models/interfaces.py
+2
-13
@@ -111,13 +111,7 @@ class SupportsMultiModal(Protocol):
111
the appearances of their corresponding multimodal data item in the
112
input prompt.
113
"""
114
- if hasattr(self, "get_multimodal_embeddings"):
115
- logger.warning_once(
116
- "`get_multimodal_embeddings` for vLLM models is deprecated and will be "
117
- "removed in v0.13.0 or v1.0.0, whichever is earlier. Please rename "
118
- "this method to `embed_multimodal`."
119
- )
120
- return self.get_multimodal_embeddings(**kwargs)
114
+ ...
115
116
def get_language_model(self) -> VllmModel:
117
"""
@@ -196,12 +190,7 @@ class SupportsMultiModal(Protocol):
190
if multimodal_embeddings is None or len(multimodal_embeddings) == 0:
191
return inputs_embeds
192
199
- if is_multimodal is None:
200
- raise ValueError(
201
- "`embed_input_ids` now requires `is_multimodal` arg, "
202
- "please update your model runner according to "
203
- "https://github.com/vllm-project/vllm/pull/16229."
204
- )
193
+ assert is_multimodal is not None
194
195
return _merge_multimodal_embeddings(
196
inputs_embeds=inputs_embeds,
vllm/model_executor/models/interfaces_base.py
-9
@@ -68,15 +68,6 @@ def _check_vllm_model_init(model: type[object] | object) -> bool:
68
def _check_vllm_model_embed_input_ids(model: type[object] | object) -> bool:
69
model_embed_input_ids = getattr(model, "embed_input_ids", None)
70
if not callable(model_embed_input_ids):
71
- model_get_input_embeddings = getattr(model, "get_input_embeddings", None)
72
- if callable(model_get_input_embeddings):
73
- logger.warning(
74
- "`get_input_embeddings` for vLLM models is deprecated and will be "
75
- "removed in v0.13.0 or v1.0.0, whichever is earlier. Please rename "
76
- "this method to `embed_input_ids`."
77
- )
78
- model.embed_input_ids = model_get_input_embeddings
79
- return True
71
logger.warning(
72
"The model (%s) is missing the `embed_input_ids` method.",
73
model,
vllm/model_executor/models/mistral_large_3_eagle.py
+5
-34
@@ -18,15 +18,10 @@ from vllm.model_executor.models.deepseek_v2 import (
18
DeepseekV2DecoderLayer,
19
DeepseekV2Model,
20
)
21
-from vllm.model_executor.models.interfaces import MultiModalEmbeddings
21
from vllm.model_executor.models.mistral_large_3 import MistralLarge3ForCausalLM
23
-from vllm.multimodal.inputs import NestedTensors
22
25
-from .utils import (
26
- _merge_multimodal_embeddings,
27
- make_empty_intermediate_tensors_factory,
28
- maybe_prefix,
29
-)
23
+from .interfaces import SupportsMultiModal
24
+from .utils import make_empty_intermediate_tensors_factory, maybe_prefix
25
26
logger = init_logger(__name__)
27
@@ -117,26 +112,10 @@ class EagleMistralLarge3ForCausalLM(MistralLarge3ForCausalLM):
112
)
113
super().__init__(vllm_config=vllm_config, prefix=prefix)
114
120
- def get_input_embeddings(
121
- self,
122
- input_ids: torch.Tensor,
123
- multimodal_embeddings: MultiModalEmbeddings | None = None,
124
- *,
125
- is_multimodal: torch.Tensor | None = None,
126
- handle_oov_mm_token: bool = False,
127
- ) -> torch.Tensor:
128
- inputs_embeds = super().embed_input_ids(input_ids)
129
-
130
- if multimodal_embeddings is None or len(multimodal_embeddings) == 0:
131
- return inputs_embeds
115
+ def get_language_model(self) -> torch.nn.Module:
116
+ return self.model
117
133
- assert is_multimodal is not None
134
-
135
- return _merge_multimodal_embeddings(
136
- inputs_embeds=inputs_embeds,
137
- multimodal_embeddings=multimodal_embeddings,
138
- is_multimodal=is_multimodal,
139
- )
118
+ embed_input_ids = SupportsMultiModal.embed_input_ids # type: ignore
119
120
def forward(
121
self,
@@ -155,11 +134,3 @@ class EagleMistralLarge3ForCausalLM(MistralLarge3ForCausalLM):
134
"model.embed_tokens.weight",
135
"lm_head.weight",
136
}
158
-
159
- def embed_input_ids(
160
- self,
161
- input_ids: torch.Tensor,
162
- multimodal_embeddings: NestedTensors | None = None,
163
- is_multimodal: torch.Tensor | None = None,
164
- ) -> torch.Tensor:
165
- return self.model.embed_input_ids(input_ids)
vllm/model_executor/models/phi3v.py
+1
-6
@@ -687,12 +687,7 @@ class Phi3VForCausalLM(nn.Module, SupportsMultiModal, SupportsPP, SupportsQuant)
687
if multimodal_embeddings is None or len(multimodal_embeddings) == 0:
688
return inputs_embeds
689
690
- if is_multimodal is None:
691
- raise ValueError(
692
- "`embed_input_ids` now requires `is_multimodal` arg, "
693
- "please update your model runner according to "
694
- "https://github.com/vllm-project/vllm/pull/16229."
695
- )
690
+ assert is_multimodal is not None
691
692
return _merge_multimodal_embeddings(
693
inputs_embeds=inputs_embeds,
vllm/model_executor/models/qwen3_vl.py
+1
-6
@@ -1572,12 +1572,7 @@ class Qwen3VLForConditionalGeneration(
1572
if multimodal_embeddings is None or len(multimodal_embeddings) == 0:
1573
return inputs_embeds
1574
1575
- if is_multimodal is None:
1576
- raise ValueError(
1577
- "`embed_input_ids` now requires `is_multimodal` arg, "
1578
- "please update your model runner according to "
1579
- "https://github.com/vllm-project/vllm/pull/16229."
1580
- )
1575
+ assert is_multimodal is not None
1576
1577
if self.use_deepstack:
1578
(