From 0a1d7a28aab661cdf9002b70c3cd2a6a67ed177d Mon Sep 17 00:00:00 2001 From: shuwenn <47200617+alphabetc1@users.noreply.github.com> Date: Sun, 22 Mar 2026 21:47:13 +0800 Subject: [PATCH] fix: use get_rope_config() to support models without rope_parameters --- python/sglang/srt/models/baichuan.py | 3 ++- python/sglang/srt/models/deepseek.py | 4 ++-- python/sglang/srt/models/ernie4.py | 4 ++-- python/sglang/srt/models/exaone.py | 4 ++-- python/sglang/srt/models/glm4.py | 8 +++++--- python/sglang/srt/models/glm4_moe.py | 10 +++++----- python/sglang/srt/models/grok.py | 3 ++- python/sglang/srt/models/hunyuan.py | 4 ++-- python/sglang/srt/models/iquest_loopcoder.py | 4 ++-- python/sglang/srt/models/llada2.py | 6 ++++-- python/sglang/srt/models/minicpm.py | 4 ++-- python/sglang/srt/models/minicpm3.py | 4 ++-- python/sglang/srt/models/orion.py | 4 ++-- python/sglang/srt/models/qwen.py | 4 ++-- python/sglang/srt/models/solar.py | 4 ++-- python/sglang/srt/models/step3_vl.py | 4 ++-- python/sglang/srt/models/xverse.py | 4 ++-- python/sglang/srt/models/xverse_moe.py | 4 ++-- 18 files changed, 44 insertions(+), 38 deletions(-) diff --git a/python/sglang/srt/models/baichuan.py b/python/sglang/srt/models/baichuan.py index ff4698a424fd..82d45e75947e 100644 --- a/python/sglang/srt/models/baichuan.py +++ b/python/sglang/srt/models/baichuan.py @@ -48,6 +48,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix, is_npu +from sglang.srt.utils.hf_transformers_utils import get_rope_config _is_npu = is_npu() @@ -229,7 +230,7 @@ def __init__( ): super().__init__() self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] + rope_theta, _ = get_rope_config(config) max_position_embeddings = getattr(config, "max_position_embeddings", 8192) self.self_attn = BaiChuanAttention( hidden_size=self.hidden_size, diff --git a/python/sglang/srt/models/deepseek.py b/python/sglang/srt/models/deepseek.py index 39ce8749cef5..6baa1fe0fb24 100644 --- a/python/sglang/srt/models/deepseek.py +++ b/python/sglang/srt/models/deepseek.py @@ -49,6 +49,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix, cpu_has_amx_support, is_cpu +from sglang.srt.utils.hf_transformers_utils import get_rope_config _is_cpu_amx_available = cpu_has_amx_support() _is_cpu = is_cpu() @@ -310,8 +311,7 @@ def __init__( ) -> None: super().__init__() self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) max_position_embeddings = getattr(config, "max_position_embeddings", 8192) self.self_attn = DeepseekAttention( hidden_size=self.hidden_size, diff --git a/python/sglang/srt/models/ernie4.py b/python/sglang/srt/models/ernie4.py index 73c1558d5ff5..2d33874daed8 100644 --- a/python/sglang/srt/models/ernie4.py +++ b/python/sglang/srt/models/ernie4.py @@ -43,6 +43,7 @@ from sglang.srt.models.deepseek_v2 import DeepseekV2MLP as Ernie4MLP from sglang.srt.models.llama import LlamaAttention as Ernie4Attention from sglang.srt.utils import add_prefix, make_layers +from sglang.srt.utils.hf_transformers_utils import get_rope_config class MoEGate(nn.Module): @@ -155,8 +156,7 @@ def __init__( is_mtp: bool = False, ): super().__init__() - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) rope_is_neox_style = getattr(config, "rope_is_neox_style", False) # Self attention. self.self_attn = Ernie4Attention( diff --git a/python/sglang/srt/models/exaone.py b/python/sglang/srt/models/exaone.py index 0ad8398e6f81..27ed2a024abc 100644 --- a/python/sglang/srt/models/exaone.py +++ b/python/sglang/srt/models/exaone.py @@ -40,6 +40,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix +from sglang.srt.utils.hf_transformers_utils import get_rope_config class ExaoneGatedMLP(nn.Module): @@ -182,8 +183,7 @@ def __init__( ) -> None: super().__init__() self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) if rope_scaling is not None and getattr( config, "original_max_position_embeddings", None ): diff --git a/python/sglang/srt/models/glm4.py b/python/sglang/srt/models/glm4.py index d6e81f619e2e..016941b4b6c6 100644 --- a/python/sglang/srt/models/glm4.py +++ b/python/sglang/srt/models/glm4.py @@ -52,6 +52,7 @@ kv_cache_scales_loader, ) from sglang.srt.utils import add_prefix, make_layers +from sglang.srt.utils.hf_transformers_utils import get_rope_config Glm4Config = None @@ -217,9 +218,10 @@ def __init__( ) -> None: super().__init__() self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters - partial_rotary_factor = config.rope_parameters.get("partial_rotary_factor", 0.5) + rope_theta, rope_scaling = get_rope_config(config) + partial_rotary_factor = (rope_scaling or {}).get("partial_rotary_factor") + if partial_rotary_factor is None: + partial_rotary_factor = getattr(config, "partial_rotary_factor", 0.5) bias = getattr(config, "attention_bias", True) max_position_embeddings = getattr(config, "max_position_embeddings", 32768) head_dim = getattr(config, "head_dim", None) diff --git a/python/sglang/srt/models/glm4_moe.py b/python/sglang/srt/models/glm4_moe.py index 0c1e1d00084a..121a31630ae3 100644 --- a/python/sglang/srt/models/glm4_moe.py +++ b/python/sglang/srt/models/glm4_moe.py @@ -94,6 +94,7 @@ log_info_on_rank0, make_layers, ) +from sglang.srt.utils.hf_transformers_utils import get_rope_config _is_hip = is_hip() _is_cuda = is_cuda() @@ -684,11 +685,10 @@ def __init__( nn.Module.__init__(self) self.hidden_size = config.hidden_size self.config = config - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters - partial_rotary_factor = getattr( - getattr(config, "rope_parameters", None), "partial_rotary_factor", None - ) or getattr(config, "partial_rotary_factor", 0.5) + rope_theta, rope_scaling = get_rope_config(config) + partial_rotary_factor = (rope_scaling or {}).get("partial_rotary_factor") + if partial_rotary_factor is None: + partial_rotary_factor = getattr(config, "partial_rotary_factor", 0.5) max_position_embeddings = getattr(config, "max_position_embeddings", 8192) head_dim = getattr( config, "head_dim", config.hidden_size // config.num_attention_heads diff --git a/python/sglang/srt/models/grok.py b/python/sglang/srt/models/grok.py index 9a096cc13079..3cc6a48e79f9 100644 --- a/python/sglang/srt/models/grok.py +++ b/python/sglang/srt/models/grok.py @@ -61,6 +61,7 @@ from sglang.srt.model_loader.loader import DefaultModelLoader from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix, is_npu +from sglang.srt.utils.hf_transformers_utils import get_rope_config _is_npu = is_npu() @@ -477,7 +478,7 @@ def __init__( self.layer_id = layer_id self.alt_stream = alt_stream or torch.cuda.Stream() - rope_theta = config.rope_parameters["rope_theta"] + rope_theta, _ = get_rope_config(config) self.self_attn = Grok1Attention( config=config, hidden_size=self.hidden_size, diff --git a/python/sglang/srt/models/hunyuan.py b/python/sglang/srt/models/hunyuan.py index 7473062b0b3f..9c01e53071e5 100644 --- a/python/sglang/srt/models/hunyuan.py +++ b/python/sglang/srt/models/hunyuan.py @@ -53,6 +53,7 @@ maybe_remap_kv_scale_name, ) from sglang.srt.utils import is_hip +from sglang.srt.utils.hf_transformers_utils import get_rope_config expert_distribution_recorder = ExpertDistributionRecorder() @@ -402,8 +403,7 @@ def __init__( if isinstance(config.intermediate_size, int) else config.intermediate_size[layer_id] ) - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) if rope_scaling is not None and getattr( config, "original_max_position_embeddings", None ): diff --git a/python/sglang/srt/models/iquest_loopcoder.py b/python/sglang/srt/models/iquest_loopcoder.py index b69a5332a80a..286d4fb19fa5 100644 --- a/python/sglang/srt/models/iquest_loopcoder.py +++ b/python/sglang/srt/models/iquest_loopcoder.py @@ -39,6 +39,7 @@ from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.models.llama import LlamaMLP as LoopCoderMLP from sglang.srt.utils import add_prefix, make_layers +from sglang.srt.utils.hf_transformers_utils import get_rope_config logger = logging.getLogger(__name__) @@ -166,8 +167,7 @@ def __init__( prefix=add_prefix("o_proj", prefix), ) - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) max_position_embeddings = getattr( config, "max_position_embeddings", max_position ) diff --git a/python/sglang/srt/models/llada2.py b/python/sglang/srt/models/llada2.py index 041f42db4716..85c9e6a328d7 100644 --- a/python/sglang/srt/models/llada2.py +++ b/python/sglang/srt/models/llada2.py @@ -84,6 +84,7 @@ is_npu, make_layers, ) +from sglang.srt.utils.hf_transformers_utils import get_rope_config LoraConfig = None logger = logging.getLogger(__name__) @@ -486,12 +487,13 @@ def __init__( self.rotary_dim = config.rotary_dim else: self.rotary_dim = self.head_dim + rope_theta, rope_scaling = get_rope_config(config) self.rotary_emb = get_rope( self.head_dim, rotary_dim=self.rotary_dim, max_position=config.max_position_embeddings, - base=config.rope_parameters["rope_theta"], - rope_scaling=config.rope_parameters, + base=rope_theta, + rope_scaling=rope_scaling, ) self.attn = RadixAttention( diff --git a/python/sglang/srt/models/minicpm.py b/python/sglang/srt/models/minicpm.py index 27c2ba2e8b83..06ee8445c7c3 100644 --- a/python/sglang/srt/models/minicpm.py +++ b/python/sglang/srt/models/minicpm.py @@ -38,6 +38,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix +from sglang.srt.utils.hf_transformers_utils import get_rope_config class MiniCPMMLP(nn.Module): @@ -176,8 +177,7 @@ def __init__( super().__init__() self.config = config self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) max_position_embeddings = getattr(config, "max_position_embeddings", 8192) self.self_attn = MiniCPMAttention( hidden_size=self.hidden_size, diff --git a/python/sglang/srt/models/minicpm3.py b/python/sglang/srt/models/minicpm3.py index f03165053f84..ea24d6e65f2b 100644 --- a/python/sglang/srt/models/minicpm3.py +++ b/python/sglang/srt/models/minicpm3.py @@ -40,6 +40,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix, is_cuda +from sglang.srt.utils.hf_transformers_utils import get_rope_config if is_cuda(): from sgl_kernel import bmm_fp8 as _raw_bmm_fp8 @@ -305,8 +306,7 @@ def __init__( super().__init__() self.config = config self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) max_position_embeddings = getattr(config, "max_position_embeddings", 8192) self.self_attn = MiniCPM3AttentionMLA( config=config, diff --git a/python/sglang/srt/models/orion.py b/python/sglang/srt/models/orion.py index 510f0ca2bddb..1061c50b2a1d 100644 --- a/python/sglang/srt/models/orion.py +++ b/python/sglang/srt/models/orion.py @@ -35,6 +35,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch, PPProxyTensors from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix, make_layers +from sglang.srt.utils.hf_transformers_utils import get_rope_config class OrionMLP(nn.Module): @@ -165,8 +166,7 @@ def __init__( ) -> None: super().__init__() self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) max_position_embeddings = getattr(config, "max_position_embeddings", 8192) self.self_attn = OrionAttention( hidden_size=self.hidden_size, diff --git a/python/sglang/srt/models/qwen.py b/python/sglang/srt/models/qwen.py index 43944b576e8f..01f77194b652 100644 --- a/python/sglang/srt/models/qwen.py +++ b/python/sglang/srt/models/qwen.py @@ -40,6 +40,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix +from sglang.srt.utils.hf_transformers_utils import get_rope_config class QWenMLP(nn.Module): @@ -162,8 +163,7 @@ def __init__( super().__init__() self.ln_1 = RMSNorm(config.hidden_size, eps=config.layer_norm_epsilon) - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) self.attn = QWenAttention( config.hidden_size, config.num_attention_heads, diff --git a/python/sglang/srt/models/solar.py b/python/sglang/srt/models/solar.py index 623dcb7d6a79..b2b92c388089 100644 --- a/python/sglang/srt/models/solar.py +++ b/python/sglang/srt/models/solar.py @@ -55,6 +55,7 @@ kv_cache_scales_loader, ) from sglang.srt.utils import add_prefix, make_layers +from sglang.srt.utils.hf_transformers_utils import get_rope_config class SolarMLP(nn.Module): @@ -194,8 +195,7 @@ def __init__( ) -> None: super().__init__() self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) if rope_scaling is not None and getattr( config, "original_max_position_embeddings", None diff --git a/python/sglang/srt/models/step3_vl.py b/python/sglang/srt/models/step3_vl.py index d839d8fa8e7b..f9ebe1f08bdb 100644 --- a/python/sglang/srt/models/step3_vl.py +++ b/python/sglang/srt/models/step3_vl.py @@ -61,6 +61,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix, log_info_on_rank0, make_layers +from sglang.srt.utils.hf_transformers_utils import get_rope_config logger = logging.getLogger(__name__) @@ -290,8 +291,7 @@ def __init__( ) -> None: super().__init__() self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) max_position_embeddings = getattr(config, "max_position_embeddings", 8192) head_dim = getattr( config, "head_dim", config.hidden_size // config.num_attention_heads diff --git a/python/sglang/srt/models/xverse.py b/python/sglang/srt/models/xverse.py index 817028a10948..f1046a354386 100644 --- a/python/sglang/srt/models/xverse.py +++ b/python/sglang/srt/models/xverse.py @@ -41,6 +41,7 @@ from sglang.srt.model_executor.model_runner import ForwardBatch from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix +from sglang.srt.utils.hf_transformers_utils import get_rope_config class XverseMLP(nn.Module): @@ -181,8 +182,7 @@ def __init__( ) -> None: super().__init__() self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) if rope_scaling is not None and getattr( config, "original_max_position_embeddings", None ): diff --git a/python/sglang/srt/models/xverse_moe.py b/python/sglang/srt/models/xverse_moe.py index e96721b91ea4..9b88060d5e0f 100644 --- a/python/sglang/srt/models/xverse_moe.py +++ b/python/sglang/srt/models/xverse_moe.py @@ -49,6 +49,7 @@ from sglang.srt.model_executor.forward_batch_info import ForwardBatch from sglang.srt.model_loader.weight_utils import default_weight_loader from sglang.srt.utils import add_prefix, is_npu +from sglang.srt.utils.hf_transformers_utils import get_rope_config class XverseMLP(nn.Module): @@ -291,8 +292,7 @@ def __init__( ) -> None: super().__init__() self.hidden_size = config.hidden_size - rope_theta = config.rope_parameters["rope_theta"] - rope_scaling = config.rope_parameters + rope_theta, rope_scaling = get_rope_config(config) max_position_embeddings = getattr(config, "max_position_embeddings", 8192) num_key_value_heads = getattr( config, "num_key_value_heads", config.num_attention_heads