From b05b346a13ce2dcee698517e2661450bd1c1acbe Mon Sep 17 00:00:00 2001 From: Yinghai Lu Date: Thu, 11 Dec 2025 11:49:46 -0800 Subject: [PATCH] [loader] enable private loader (#14620) --- python/sglang/srt/configs/load_config.py | 1 + python/sglang/srt/model_executor/model_runner.py | 2 +- python/sglang/srt/model_loader/loader.py | 9 +++++++++ python/sglang/srt/models/qwen2_5_vl.py | 2 +- python/sglang/srt/server_args.py | 1 + 5 files changed, 13 insertions(+), 2 deletions(-) diff --git a/python/sglang/srt/configs/load_config.py b/python/sglang/srt/configs/load_config.py index e87bb21e4..4619dc286 100644 --- a/python/sglang/srt/configs/load_config.py +++ b/python/sglang/srt/configs/load_config.py @@ -29,6 +29,7 @@ class LoadFormat(str, enum.Enum): REMOTE_INSTANCE = "remote_instance" RDMA = "rdma" LOCAL_CACHED = "local_cached" + PRIVATE = "private" @dataclass diff --git a/python/sglang/srt/model_executor/model_runner.py b/python/sglang/srt/model_executor/model_runner.py index 1bd2ae43b..26569c5fd 100644 --- a/python/sglang/srt/model_executor/model_runner.py +++ b/python/sglang/srt/model_executor/model_runner.py @@ -953,7 +953,7 @@ class ModelRunner: return iter def model_load_weights(model, iter): - DefaultModelLoader.load_weights_and_postprocess(model, iter, target_device) + loader.load_weights_and_postprocess(model, iter, target_device) return model with set_default_torch_dtype(self.model_config.dtype): diff --git a/python/sglang/srt/model_loader/loader.py b/python/sglang/srt/model_loader/loader.py index 119967978..4b8e5b084 100644 --- a/python/sglang/srt/model_loader/loader.py +++ b/python/sglang/srt/model_loader/loader.py @@ -2585,4 +2585,13 @@ def get_model_loader( if load_config.load_format == LoadFormat.REMOTE_INSTANCE: return RemoteInstanceModelLoader(load_config) + if load_config.load_format == LoadFormat.PRIVATE: + import importlib + + try: + module = importlib.import_module("sglang.private.private_model_loader") + return module.PrivateModelLoader(load_config) + except ImportError: + raise ValueError("Failed to import sglang.private.private_model_loader") + return DefaultModelLoader(load_config) diff --git a/python/sglang/srt/models/qwen2_5_vl.py b/python/sglang/srt/models/qwen2_5_vl.py index 284bdfcfd..b84b17b3e 100644 --- a/python/sglang/srt/models/qwen2_5_vl.py +++ b/python/sglang/srt/models/qwen2_5_vl.py @@ -696,7 +696,7 @@ class Qwen2_5_VLForConditionalGeneration(nn.Module): if name in params_dict.keys(): param = params_dict[name] else: - continue + raise ValueError(f"Weight {name} not found in params_dict") except KeyError: print(params_dict.keys()) raise diff --git a/python/sglang/srt/server_args.py b/python/sglang/srt/server_args.py index 6fa195332..a0a943f6d 100644 --- a/python/sglang/srt/server_args.py +++ b/python/sglang/srt/server_args.py @@ -82,6 +82,7 @@ LOAD_FORMAT_CHOICES = [ "flash_rl", "remote", "remote_instance", + "private", ] QUANTIZATION_CHOICES = [