Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions vllm/model_executor/models/deepseek_vl2.py
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,6 @@
MlpProjectorConfig,
VisionEncoderConfig,
)
from vllm.transformers_utils.processors.deepseek_vl2 import DeepseekVLV2Processor
from vllm.utils.tensor_schema import TensorSchema, TensorShape
from vllm.utils.torch_utils import set_default_torch_dtype

Expand Down Expand Up @@ -160,7 +159,7 @@ def get_hf_config(self):
return self.ctx.get_hf_config(DeepseekVLV2Config)

def get_hf_processor(self, **kwargs: object):
return self.ctx.get_hf_processor(DeepseekVLV2Processor, **kwargs)
return self.ctx.get_hf_processor(**kwargs)

def get_supported_mm_limits(self) -> Mapping[str, int | None]:
return {"image": None}
Expand Down
23 changes: 22 additions & 1 deletion vllm/transformers_utils/processor.py
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@
from typing_extensions import TypeVar

from vllm.logger import init_logger
from vllm.transformers_utils import processors
from vllm.transformers_utils.gguf_utils import is_gguf
from vllm.transformers_utils.repo_utils import get_hf_file_to_dict
from vllm.transformers_utils.utils import convert_model_repo_to_path
from vllm.utils.func_utils import get_allowed_kwarg_only_overrides

Expand Down Expand Up @@ -139,6 +141,15 @@ def _merge_mm_kwargs(
return allowed_kwargs


def get_processor_cls_name_from_config(processor_name: str) -> str | None:
config_file = ["preprocessor_config.json", "processor_config.json"]
for file in config_file:
config = get_hf_file_to_dict(file, processor_name)
if config and "processor_class" in config:
return config["processor_class"]
return None


def get_processor(
processor_name: str,
*args: Any,
Expand All @@ -152,8 +163,18 @@ def get_processor(
revision = "main"
try:
processor_name = convert_model_repo_to_path(processor_name)
registered_cls_name = get_processor_cls_name_from_config(processor_name)
registered_processor_cls = (
getattr(processors, registered_cls_name, None)
if registered_cls_name
else None
)
registered_processor_cls = cast(type[_P] | None, registered_processor_cls)
# Use registered processor class when it's available
# and explicit processor_cls is not set.
if isinstance(processor_cls, tuple) or processor_cls == ProcessorMixin:
processor = AutoProcessor.from_pretrained(
processor_cls = registered_processor_cls or AutoProcessor
processor = processor_cls.from_pretrained(
processor_name,
*args,
revision=revision,
Expand Down
36 changes: 26 additions & 10 deletions vllm/transformers_utils/processors/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -8,16 +8,19 @@
- There is a need to override the existing processor to support vLLM.
"""

from vllm.transformers_utils.processors.bagel import BagelProcessor
from vllm.transformers_utils.processors.deepseek_vl2 import DeepseekVLV2Processor
from vllm.transformers_utils.processors.fireredasr2_processor import (
FireRedASR2Processor,
)
from vllm.transformers_utils.processors.funasr_processor import FunASRProcessor
from vllm.transformers_utils.processors.hunyuan_vl import HunYuanVLProcessor
from vllm.transformers_utils.processors.hunyuan_vl_image import HunYuanVLImageProcessor
from vllm.transformers_utils.processors.ovis import OvisProcessor
from vllm.transformers_utils.processors.ovis2_5 import Ovis2_5Processor
import importlib

_CLASS_TO_MODULE: dict[str, str] = {
"BagelProcessor": "vllm.transformers_utils.processors.bagel",
"DeepseekVLV2Processor": "vllm.transformers_utils.processors.deepseek_vl2",
"FireRedASR2Processor": "vllm.transformers_utils.processors.fireredasr2_processor",
"FunASRProcessor": "vllm.transformers_utils.processors.funasr_processor",
"HunYuanVLProcessor": "vllm.transformers_utils.processors.hunyuan_vl",
"HunYuanVLImageProcessor": "vllm.transformers_utils.processors.hunyuan_vl_image",
"OvisProcessor": "vllm.transformers_utils.processors.ovis",
"Ovis2_5Processor": "vllm.transformers_utils.processors.ovis2_5",
}


__all__ = [
"BagelProcessor",
Expand All @@ -29,3 +32,16 @@
"OvisProcessor",
"Ovis2_5Processor",
]


def __getattr__(name: str):
if name in _CLASS_TO_MODULE:
module_name = _CLASS_TO_MODULE[name]
module = importlib.import_module(module_name)
return getattr(module, name)

raise AttributeError(f"module 'processors' has no attribute '{name}'")


def __dir__():
return sorted(list(__all__))