@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 2c1c7dfb35
Fork 0

A high-throughput and memory-efficient inference and serving engine for LLMs

Mirrored from https://github.com/tduncan-lum/Nvidia-Optimization-Stack---VLLM.git

Synced Nov 14, 05:30 UTC

[Models][Qwen] Replace `pad` with `cat` for better performance (#26486)

Signed-off-by: Lukas Geiger <lukas.geiger94@gmail.com>

Lukas Geiger committed Oct 9, 2025 at 15:51 UTC 2c1c7dfb350eb7aadf7dba05f4dd883f84833a83
4 files changed +6 -5
vllm/model_executor/models/dots_ocr.py
+1 -1
@@ -680,7 +680,7 @@ class DotsVisionTransformer(nn.Module):
680 dim=0,
681 dtype=grid_thw.dtype if torch.jit.is_tracing() else torch.int32,
682 )
683 - cu_seqlens = F.pad(cu_seqlens, (1, 0), value=0)
683 + cu_seqlens = torch.cat([cu_seqlens.new_zeros(1), cu_seqlens])
684
685 max_seqlen, seqlens = self.compute_attn_mask_seqlen(cu_seqlens)
686 for blk in self.blocks:
vllm/model_executor/models/ernie45_vl.py
+3 -2
@@ -574,11 +574,12 @@ class Ernie4_5_VisionTransformer(nn.Module):
574 grid_thw[:, 1] * grid_thw[:, 2], grid_thw[:, 0]
575 ).cumsum(dim=0, dtype=torch.int32)
576
577 + zeros = cu_seqlens.new_zeros(1)
578 if num_pad > 0:
578 - cu_seqlens = F.pad(cu_seqlens, (1, 1), value=0)
579 + cu_seqlens = torch.cat([zeros, cu_seqlens, zeros])
580 cu_seqlens[-1] = cu_seqlens[-2] + num_pad
581 else:
581 - cu_seqlens = F.pad(cu_seqlens, (1, 0), value=0)
582 + cu_seqlens = torch.cat([zeros, cu_seqlens])
583
584 # add batch size
585 if hidden_states.ndim == 2:
vllm/model_executor/models/qwen3_vl.py
+1 -1
@@ -539,7 +539,7 @@ class Qwen3_VisionTransformer(nn.Module):
539 dim=0,
540 dtype=grid_thw_tensor.dtype if torch.jit.is_tracing() else torch.int32,
541 )
542 - cu_seqlens = F.pad(cu_seqlens, (1, 0), value=0)
542 + cu_seqlens = torch.cat([cu_seqlens.new_zeros(1), cu_seqlens])
543
544 hidden_states = hidden_states.unsqueeze(1)
545 rotary_pos_emb = rotary_pos_emb.to(hidden_states.device)
vllm/model_executor/models/siglip2navit.py
+1 -1
@@ -592,7 +592,7 @@ class Siglip2Encoder(nn.Module):
592 # for more information
593 dtype=grid_thws.dtype if torch.jit.is_tracing() else torch.int32,
594 )
595 - cu_seqlens = F.pad(cu_seqlens, (1, 0), value=0)
595 + cu_seqlens = torch.cat([cu_seqlens.new_zeros(1), cu_seqlens])
596
597 reverse_indices = torch.argsort(window_index)
598