smolvlm.py 1.34 KB
Newer Older
1
# SPDX-License-Identifier: Apache-2.0
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
4
5
6
7
8
9
10


from transformers import SmolVLMProcessor

from vllm.config import VllmConfig
from vllm.multimodal import MULTIMODAL_REGISTRY

from .idefics3 import Idefics3DummyInputsBuilder as SmolVLMDummyInputsBuilder
11
from .idefics3 import Idefics3ForConditionalGeneration, Idefics3ProcessingInfo
12
13
14
15
from .idefics3 import Idefics3MultiModalProcessor as SmolVLMMultiModalProcessor


class SmolVLMProcessingInfo(Idefics3ProcessingInfo):
16
    def get_hf_processor(self, **kwargs: object) -> SmolVLMProcessor:
17
18
        return self.ctx.get_hf_processor(SmolVLMProcessor, **kwargs)

19
    def _get_image_token(self, processor: SmolVLMProcessor) -> tuple[str, str, str]:
20
21
22
23
24
25
        image_token = processor.image_token
        fake_image_token = processor.fake_image_token
        global_image_token = processor.global_image_token
        return image_token, fake_image_token, global_image_token


26
27
28
29
30
@MULTIMODAL_REGISTRY.register_processor(
    SmolVLMMultiModalProcessor,
    info=SmolVLMProcessingInfo,
    dummy_inputs=SmolVLMDummyInputsBuilder,
)
31
32
33
34
35
36
class SmolVLMForConditionalGeneration(Idefics3ForConditionalGeneration):
    def __init__(self, *, vllm_config: VllmConfig, prefix: str = ""):
        super().__init__(
            vllm_config=vllm_config,
            prefix=prefix,
        )