From 8f0f36c64b09d439d7daf2676259419b46721c65 Mon Sep 17 00:00:00 2001 From: ishandhanani <82981111+ishandhanani@users.noreply.github.com> Date: Wed, 18 Mar 2026 15:38:32 -0500 Subject: [PATCH] [1/2] Add ModelExpress coordination for remote instance weight loading - matching TP (#19920) Co-authored-by: Claude Opus 4.6 Co-authored-by: Ishan Dhanani --- docs/advanced_features/rfork.md | 33 ++++- python/sglang/srt/configs/load_config.py | 2 + .../sglang/srt/model_executor/model_runner.py | 90 ++++++++++++ python/sglang/srt/model_loader/loader.py | 138 ++++++++++++++++++ .../remote_instance_weight_loader_utils.py | 1 + python/sglang/srt/server_args.py | 67 ++++++++- 6 files changed, 320 insertions(+), 11 deletions(-) diff --git a/docs/advanced_features/rfork.md b/docs/advanced_features/rfork.md index 5e01aa111..e4b513328 100644 --- a/docs/advanced_features/rfork.md +++ b/docs/advanced_features/rfork.md @@ -9,11 +9,12 @@ To learn more details about R-Fork, please check ** dict: + cache = getattr(self, "_mx_config_cache", None) + if cache is not None: + return cache + if self.modelexpress_config is None: + result = {} + elif isinstance(self.modelexpress_config, str): + result = json.loads(self.modelexpress_config) + else: + result = self.modelexpress_config + object.__setattr__(self, "_mx_config_cache", result) + return result + + @property + def modelexpress_url(self) -> Optional[str]: + return self._parsed_modelexpress_config.get("url") + + @property + def modelexpress_model_name(self) -> Optional[str]: + return self._parsed_modelexpress_config.get("model_name") + + @property + def modelexpress_source(self) -> bool: + return self._parsed_modelexpress_config.get("source", False) + def remote_instance_weight_loader_use_transfer_engine(self): # Use TransferEngine as seed backend. if self.remote_instance_weight_loader_start_seed_via_transfer_engine: return True + # ModelExpress source mode also needs TransferEngine init. + if self.modelexpress_source: + return True # Use TransferEngine as client backend. elif ( self.load_format == "remote_instance" - and self.remote_instance_weight_loader_backend == "transfer_engine" + and self.remote_instance_weight_loader_backend + in ("transfer_engine", "modelexpress") ): return True else: