mirror of
https://github.com/csunny/DB-GPT.git
synced 2025-09-07 20:10:08 +00:00
feat(model): Support Qwen2.5 VL models (#2743)
This commit is contained in:
@@ -157,6 +157,9 @@ hf_kimi = [
|
||||
hf_qwen3 = [
|
||||
"transformers>=4.51.0",
|
||||
]
|
||||
hf_qwen2vl = [
|
||||
"transformers>=4.34.0",
|
||||
]
|
||||
|
||||
[build-system]
|
||||
requires = ["hatchling"]
|
||||
|
@@ -553,6 +553,7 @@ class QwenAdapter(NewHFChatModelAdapter):
|
||||
and "1.5" in lower_model_name_or_path
|
||||
and "moe" not in lower_model_name_or_path
|
||||
and "qwen2" not in lower_model_name_or_path
|
||||
and "vl" not in lower_model_name_or_path
|
||||
)
|
||||
|
||||
|
||||
@@ -565,10 +566,12 @@ class Qwen2Adapter(QwenAdapter):
|
||||
(
|
||||
"qwen2" in lower_model_name_or_path
|
||||
and "instruct" in lower_model_name_or_path
|
||||
and "vl" not in lower_model_name_or_path
|
||||
)
|
||||
or (
|
||||
"qwen2.5" in lower_model_name_or_path
|
||||
and "instruct" in lower_model_name_or_path
|
||||
and "vl" not in lower_model_name_or_path
|
||||
)
|
||||
)
|
||||
|
||||
@@ -608,6 +611,7 @@ class Qwen3Adapter(QwenAdapter):
|
||||
return lower_model_name_or_path and (
|
||||
"qwen3" in lower_model_name_or_path
|
||||
and "base" not in lower_model_name_or_path
|
||||
and "vl" not in lower_model_name_or_path
|
||||
)
|
||||
|
||||
def check_transformer_version(self, current_version: str) -> None:
|
||||
@@ -664,6 +668,60 @@ class Qwen3Adapter(QwenAdapter):
|
||||
return str_prompt
|
||||
|
||||
|
||||
class Qwen2VLAdapter(NewHFChatModelAdapter):
|
||||
def check_transformer_version(self, current_version: str) -> None:
|
||||
if not current_version >= "4.37.0":
|
||||
raise ValueError(
|
||||
"Qwen2.5VL model require transformers.__version__>=4.37.0, please "
|
||||
"upgrade your transformers package."
|
||||
)
|
||||
|
||||
def do_match(self, lower_model_name_or_path: Optional[str] = None):
|
||||
return (
|
||||
lower_model_name_or_path
|
||||
and "qwen2" in lower_model_name_or_path
|
||||
and "vl" in lower_model_name_or_path
|
||||
and "instruct" in lower_model_name_or_path
|
||||
)
|
||||
|
||||
def load(self, model_path: str, from_pretrained_kwargs: dict):
|
||||
try:
|
||||
from transformers import (
|
||||
Qwen2_5_VLForConditionalGeneration,
|
||||
)
|
||||
except ImportError as exc:
|
||||
raise ValueError(
|
||||
"Could not import qwen2.5 vl model, please upgrade your "
|
||||
"transformers package to 4.37.0 or later."
|
||||
) from exc
|
||||
|
||||
logger.info(
|
||||
f"Load model from {model_path}, from_pretrained_kwargs: "
|
||||
f"{from_pretrained_kwargs}"
|
||||
)
|
||||
|
||||
revision = from_pretrained_kwargs.get("revision", "main")
|
||||
trust_remote_code = from_pretrained_kwargs.get(
|
||||
"trust_remote_code", self.trust_remote_code
|
||||
)
|
||||
low_cpu_mem_usage = from_pretrained_kwargs.get("low_cpu_mem_usage", False)
|
||||
if "trust_remote_code" not in from_pretrained_kwargs:
|
||||
from_pretrained_kwargs["trust_remote_code"] = trust_remote_code
|
||||
if "low_cpu_mem_usage" not in from_pretrained_kwargs:
|
||||
from_pretrained_kwargs["low_cpu_mem_usage"] = low_cpu_mem_usage
|
||||
|
||||
tokenizer = self.load_tokenizer(
|
||||
model_path,
|
||||
revision,
|
||||
use_fast=self.use_fast_tokenizer(),
|
||||
trust_remote_code=trust_remote_code,
|
||||
)
|
||||
model = Qwen2_5_VLForConditionalGeneration.from_pretrained(
|
||||
model_path, **from_pretrained_kwargs
|
||||
)
|
||||
return model, tokenizer
|
||||
|
||||
|
||||
class QwenOmniAdapter(NewHFChatModelAdapter):
|
||||
def do_match(self, lower_model_name_or_path: Optional[str] = None):
|
||||
return lower_model_name_or_path and (
|
||||
@@ -1075,6 +1133,7 @@ register_model_adapter(GLM4Adapter, supported_models=COMMON_HF_GLM_MODELS)
|
||||
register_model_adapter(GLM40414Adapter)
|
||||
register_model_adapter(Codegeex4Adapter)
|
||||
register_model_adapter(Qwen2Adapter, supported_models=COMMON_HF_QWEN25_MODELS)
|
||||
register_model_adapter(Qwen2VLAdapter)
|
||||
register_model_adapter(Internlm2Adapter)
|
||||
register_model_adapter(DeepseekV3R1Adapter, supported_models=COMMON_HF_DEEPSEEK__MODELS)
|
||||
register_model_adapter(KimiVLAdapter)
|
||||
|
Reference in New Issue
Block a user