@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / fa1ff88b31
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 3, 01:45 UTC

[Model] Fix MiniCPM-V 4.6 vit_merger qkv weight loading (#43213)

Signed-off-by: tc-mb <tianchi_cai@icloud.com>

tc-mb committed May 22, 2026 at 13:44 UTC fa1ff88b3145d1897558408a9001c030c39383b9
1 file changed +28
vllm/model_executor/models/minicpmv4_6.py
+28
@@ -23,6 +23,7 @@ from vllm.model_executor.layers.mamba.mamba_utils import (
23 MambaStateShapeCalculator,
24 )
25 from vllm.model_executor.layers.quantization import QuantizationConfig
26 +from vllm.model_executor.model_loader.weight_utils import default_weight_loader
27 from vllm.multimodal import MULTIMODAL_REGISTRY
28 from vllm.multimodal.inputs import (
29 MultiModalFeatureSpec,
@@ -590,6 +591,33 @@ class MiniCPMV4_6ViTWindowAttentionSelfAttn(nn.Module):
591 out, _ = self.out_proj(attn_out)
592 return out
593
594 + def load_weights(self, weights: Iterable[tuple[str, torch.Tensor]]) -> set[str]:
595 + stacked_params_mapping = [
596 + ("qkv_proj", "q_proj", "q"),
597 + ("qkv_proj", "k_proj", "k"),
598 + ("qkv_proj", "v_proj", "v"),
599 + ]
600 + params_dict = dict(self.named_parameters())
601 + loaded_params: set[str] = set()
602 + for name, loaded_weight in weights:
603 + for param_name, weight_name, shard_id in stacked_params_mapping:
604 + if weight_name not in name:
605 + continue
606 + mapped_name = name.replace(weight_name, param_name, 1)
607 + if mapped_name not in params_dict:
608 + continue
609 + param = params_dict[mapped_name]
610 + param.weight_loader(param, loaded_weight, shard_id)
611 + break
612 + else:
613 + if name not in params_dict:
614 + continue
615 + param = params_dict[name]
616 + weight_loader = getattr(param, "weight_loader", default_weight_loader)
617 + weight_loader(param, loaded_weight)
618 + loaded_params.add(name)
619 + return loaded_params
620 +
621
622 class MiniCPMV4_6ViTWindowAttentionMerger(nn.Module):
623 def __init__(