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
[BugFix] Fix Qwen3-Next PP (#24709)
Signed-off-by: Nick Hill <nhill@redhat.com>
Nick Hill committed
Sep 11, 2025 at 23:35 UTC
f592b3174b39a7aeac52432d66d76e89ff0a80b4
1 file changed
+7
-3
vllm/model_executor/models/qwen3_next.py
+7
-3
@@ -2,6 +2,7 @@
2
# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
"""Inference-only Qwen3Next model."""
4
from collections.abc import Iterable
5
+from itertools import islice
6
from typing import Optional
7
8
import torch
@@ -917,8 +918,11 @@ class Qwen3NextModel(nn.Module):
918
make_empty_intermediate_tensors_factory(
919
["hidden_states", "residual"], config.hidden_size))
920
920
- self.norm = Qwen3NextRMSNorm(config.hidden_size,
921
- eps=config.rms_norm_eps)
921
+ if get_pp_group().is_last_rank:
922
+ self.norm = Qwen3NextRMSNorm(config.hidden_size,
923
+ eps=config.rms_norm_eps)
924
+ else:
925
+ self.norm = PPMissingLayer()
926
927
def get_input_embeddings(self, input_ids: torch.Tensor) -> torch.Tensor:
928
return self.embed_tokens(input_ids)
@@ -941,7 +945,7 @@ class Qwen3NextModel(nn.Module):
945
hidden_states = intermediate_tensors["hidden_states"]
946
residual = intermediate_tensors["residual"]
947
944
- for layer in self.layers:
948
+ for layer in islice(self.layers, self.start_layer, self.end_layer):
949
hidden_states, residual = layer(
950
positions=positions,
951
hidden_states=hidden_states,