From 453ea21dd32eb9cfe572b3fce8856169955a871b Mon Sep 17 00:00:00 2001 From: Liu Zhenlong <49094455+Dragonliu2018@users.noreply.github.com> Date: Fri, 7 Aug 2026 11:51:09 +0800 Subject: [PATCH] fix(qwen2_5vl): replace in-place += with out-of-place + on expand view in decode path (#22634) --- .../runtime/models/encoders/qwen2_5vl.py | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/python/sglang/multimodal_gen/runtime/models/encoders/qwen2_5vl.py b/python/sglang/multimodal_gen/runtime/models/encoders/qwen2_5vl.py index a7b5f8825..b7cd9e5f6 100644 --- a/python/sglang/multimodal_gen/runtime/models/encoders/qwen2_5vl.py +++ b/python/sglang/multimodal_gen/runtime/models/encoders/qwen2_5vl.py @@ -1069,18 +1069,17 @@ class Qwen2_5_VLModel(nn.Module): self.rope_deltas = rope_deltas else: batch_size, seq_length, _ = inputs_embeds.shape - position_ids = torch.arange(seq_length, device=inputs_embeds.device) - position_ids = position_ids.view(1, 1, -1).expand(3, batch_size, -1) if cache_position is not None: delta = (cache_position[0] + self.rope_deltas).to( inputs_embeds.device ) else: - delta = torch.zeros( - (batch_size, seq_length), device=inputs_embeds.device - ) - delta = delta.repeat_interleave(batch_size // delta.shape[0], dim=1) - position_ids += delta.to(position_ids.device) + delta = torch.zeros(batch_size, 1, device=inputs_embeds.device) + position_ids = ( + (torch.arange(seq_length, device=inputs_embeds.device) + delta) + .unsqueeze(0) + .expand(3, -1, -1) + ) outputs = self.language_model( input_ids=None,