feat: support external custom models (#13429)

Co-authored-by: qiuxuan.lzw <qiuxuan.lzw@alibaba-inc.com>
Co-authored-by: Mick <mickjagger19@icloud.com>
This commit is contained in:
StonyPort
2025-11-20 11:16:58 +08:00
committed by GitHub
co-authored by qiuxuan.lzw Mick
parent 127d59cd2c
commit 48ca9f7518
8 changed files with 72 additions and 1 deletions
@@ -0,0 +1,21 @@
from sglang.srt.models.qwen2_vl import (
Qwen2VLForConditionalGeneration as OriginalQwen2VLForConditionalGeneration,
)
from sglang.srt.multimodal.processors.qwen_vl import QwenVLImageProcessor
class Qwen2VLForConditionalGeneration(OriginalQwen2VLForConditionalGeneration):
def __init__(self, config, quant_config, prefix: str = "") -> None:
super().__init__(config, quant_config, prefix)
print("init custom model:", self.__class__.__name__)
class CustomProcessor(QwenVLImageProcessor):
models = [Qwen2VLForConditionalGeneration]
def __init__(self, hf_config, server_args, _processor, *args, **kwargs):
super().__init__(hf_config, server_args, _processor, *args, **kwargs)
print("init custom processor:", self.__class__.__name__)
EntryClass = Qwen2VLForConditionalGeneration
+1
View File
@@ -65,6 +65,7 @@ suites = {
TestFile("test_eagle_infer_beta.py", 90),
TestFile("test_constrained_decoding.py", 150),
TestFile("test_eval_fp8_accuracy.py", 303),
TestFile("test_external_models.py", 155),
TestFile("test_fa3.py", 420),
TestFile("test_flashmla.py", 230),
TestFile("test_fp8_utils.py", 5),
+28
View File
@@ -0,0 +1,28 @@
import os
import unittest
import sglang as sgl
from sglang.test.test_utils import CustomTestCase
class TestExternalModels(CustomTestCase):
def test_external_model(self):
os.environ["SGLANG_EXTERNAL_MODEL_PACKAGE"] = "external_models"
os.environ["SGLANG_EXTERNAL_MM_PROCESSOR_PACKAGE"] = "external_models"
prompt = "Today is a sunny day and I like"
model_path = "Qwen/Qwen2-VL-2B-Instruct"
engine = sgl.Engine(
model_path=model_path,
cuda_graph_max_bs=1,
max_total_tokens=64,
enable_multimodal=True,
)
out = engine.generate(prompt)["text"]
engine.shutdown()
self.assertGreater(len(out), 0)
if __name__ == "__main__":
unittest.main()