From 9ffc0cc67ee54520d9d675af3f8e82cbae8ef0a7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=9C=8B=E6=B5=B7=E7=9A=84=E4=BA=BA?= <37328560+zhsurpass@users.noreply.github.com> Date: Tue, 28 Apr 2026 09:08:19 +0800 Subject: [PATCH] [NPU] Support GLM-4.5V (#22961) --- python/sglang/srt/models/glm4_moe.py | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/python/sglang/srt/models/glm4_moe.py b/python/sglang/srt/models/glm4_moe.py index a83a7b36d..155173731 100644 --- a/python/sglang/srt/models/glm4_moe.py +++ b/python/sglang/srt/models/glm4_moe.py @@ -314,6 +314,18 @@ class Glm4MoeAttention(nn.Module): else: if self.attn.layer_id == forward_batch.token_to_kv_pool.start_layer: self.rotary_emb.get_cos_sin_with_position(positions) + if self.use_qk_norm: + eps = self.q_norm.variance_epsilon + q_weight = self.q_norm.weight + k_weight = self.k_norm.weight + q_bias = getattr(self.q_norm, "bias", None) + k_bias = getattr(self.k_norm, "bias", None) + else: + eps = None + q_weight = None + k_weight = None + q_bias = None + k_bias = None q, k, v = split_qkv_rmsnorm_rope( qkv, self.rotary_emb.position_sin, @@ -321,11 +333,11 @@ class Glm4MoeAttention(nn.Module): self.q_size, self.kv_size, self.head_dim, - eps=self.q_norm.variance_epsilon, - q_weight=self.q_norm.weight, - k_weight=self.k_norm.weight, - q_bias=getattr(self.q_norm, "bias", None), - k_bias=getattr(self.k_norm, "bias", None), + eps=eps, + q_weight=q_weight, + k_weight=k_weight, + q_bias=q_bias, + k_bias=k_bias, ) inner_state = q, k, v, forward_batch