mirror of
https://git.datalinker.icu/vllm-project/vllm.git
synced 2026-07-09 14:57:16 +08:00
[V1] Update interface for mistral-format Pixtral (#10703)
Signed-off-by: Roger Wang <ywang@roblox.com>
This commit is contained in:
parent
418cb3b93f
commit
9e0a147d50
@ -31,7 +31,7 @@ from vllm.model_executor.model_loader.weight_utils import default_weight_loader
|
|||||||
from vllm.model_executor.models.utils import merge_multimodal_embeddings
|
from vllm.model_executor.models.utils import merge_multimodal_embeddings
|
||||||
from vllm.model_executor.sampling_metadata import SamplingMetadata
|
from vllm.model_executor.sampling_metadata import SamplingMetadata
|
||||||
from vllm.multimodal import MULTIMODAL_REGISTRY, MultiModalKwargs
|
from vllm.multimodal import MULTIMODAL_REGISTRY, MultiModalKwargs
|
||||||
from vllm.multimodal.inputs import PlaceholderRange
|
from vllm.multimodal.inputs import NestedTensors, PlaceholderRange
|
||||||
from vllm.multimodal.utils import (cached_get_tokenizer,
|
from vllm.multimodal.utils import (cached_get_tokenizer,
|
||||||
consecutive_placeholder_ranges,
|
consecutive_placeholder_ranges,
|
||||||
resolve_visual_encoder_outputs)
|
resolve_visual_encoder_outputs)
|
||||||
@ -190,6 +190,25 @@ class PixtralForConditionalGeneration(nn.Module, SupportsMultiModal,
|
|||||||
|
|
||||||
return get_sampler()
|
return get_sampler()
|
||||||
|
|
||||||
|
def get_multimodal_embeddings(self, **kwargs) -> Optional[NestedTensors]:
|
||||||
|
image_input = self._parse_and_validate_image_input(**kwargs)
|
||||||
|
if image_input is None:
|
||||||
|
return None
|
||||||
|
vision_embeddings = self._process_image_input(image_input)
|
||||||
|
return vision_embeddings
|
||||||
|
|
||||||
|
def get_input_embeddings(
|
||||||
|
self,
|
||||||
|
input_ids: torch.Tensor,
|
||||||
|
multimodal_embeddings: Optional[NestedTensors] = None,
|
||||||
|
) -> torch.Tensor:
|
||||||
|
inputs_embeds = self.language_model.get_input_embeddings(input_ids)
|
||||||
|
if multimodal_embeddings is not None:
|
||||||
|
inputs_embeds = merge_multimodal_embeddings(
|
||||||
|
input_ids, inputs_embeds, multimodal_embeddings,
|
||||||
|
self.vision_args.image_token_id)
|
||||||
|
return inputs_embeds
|
||||||
|
|
||||||
def forward(
|
def forward(
|
||||||
self,
|
self,
|
||||||
input_ids: torch.Tensor,
|
input_ids: torch.Tensor,
|
||||||
@ -197,31 +216,21 @@ class PixtralForConditionalGeneration(nn.Module, SupportsMultiModal,
|
|||||||
kv_caches: List[torch.Tensor],
|
kv_caches: List[torch.Tensor],
|
||||||
attn_metadata: AttentionMetadata,
|
attn_metadata: AttentionMetadata,
|
||||||
intermediate_tensors: Optional[IntermediateTensors] = None,
|
intermediate_tensors: Optional[IntermediateTensors] = None,
|
||||||
|
inputs_embeds: Optional[torch.Tensor] = None,
|
||||||
**kwargs: object,
|
**kwargs: object,
|
||||||
) -> Union[torch.Tensor, IntermediateTensors]:
|
) -> Union[torch.Tensor, IntermediateTensors]:
|
||||||
"""Run forward pass for pixtral.
|
"""Run forward pass for pixtral.
|
||||||
|
|
||||||
TODO
|
|
||||||
|
|
||||||
"""
|
"""
|
||||||
if intermediate_tensors is not None:
|
if intermediate_tensors is not None:
|
||||||
input_ids = None
|
|
||||||
inputs_embeds = None
|
inputs_embeds = None
|
||||||
else:
|
|
||||||
image_input = self._parse_and_validate_image_input(**kwargs)
|
|
||||||
|
|
||||||
if image_input is not None:
|
# NOTE: In v1, inputs_embeds is always generated at model runner, this
|
||||||
vision_embeddings = self._process_image_input(image_input)
|
# condition is for v0 compatibility.
|
||||||
inputs_embeds = self.language_model.model.get_input_embeddings(
|
elif inputs_embeds is None:
|
||||||
input_ids)
|
vision_embeddings = self.get_multimodal_embeddings(**kwargs)
|
||||||
|
inputs_embeds = self.get_input_embeddings(input_ids,
|
||||||
inputs_embeds = merge_multimodal_embeddings(
|
vision_embeddings)
|
||||||
input_ids, inputs_embeds, vision_embeddings,
|
input_ids = None
|
||||||
self.vision_args.image_token_id)
|
|
||||||
|
|
||||||
input_ids = None
|
|
||||||
else:
|
|
||||||
inputs_embeds = None
|
|
||||||
|
|
||||||
hidden_states = self.language_model.model(input_ids,
|
hidden_states = self.language_model.model(input_ids,
|
||||||
positions,
|
positions,
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user