Fix Laguna patch mutating flat RoPE parameters (#57189)
Signed-off-by: Laura López Real <laulopezreal@users.noreply.github.com> Co-authored-by: Laura López Real <laulopezreal@users.noreply.github.com> Co-authored-by: mergify[bot] <37929162+mergify[bot]@users.noreply.github.com>
Laura Lopez-Real committed
Sep 17, 2026 at 14:22 UTC
a85dd55177d59b99903432c71c7376309d7e7757
2 files changed
+38
-1
tests/test_config.py
+37
@@ -46,6 +46,7 @@ from vllm.config.utils import get_field
46
from vllm.config.vllm import OPTIMIZATION_LEVEL_TO_CONFIG, OptimizationLevel
47
from vllm.platforms import current_platform
48
from vllm.transformers_utils.config import (
49
+ _patch_hf_transformers_nested_rope_validation,
50
get_pooling_config,
51
try_get_dense_modules,
52
)
@@ -54,6 +55,42 @@ from vllm.v1.attention.backend import AttentionCGSupport
55
DEVICE_TYPE = current_platform.device_type
56
57
58
+def test_nested_rope_validation_patch_preserves_flat_rope_parameters(monkeypatch):
59
+ calls = []
60
+
61
+ def original_validate_rope(config, *args, **kwargs):
62
+ calls.append(config)
63
+
64
+ from transformers import PretrainedConfig
65
+
66
+ monkeypatch.setattr(PretrainedConfig, "validate_rope", original_validate_rope)
67
+ _patch_hf_transformers_nested_rope_validation()
68
+
69
+ nested_rope_parameters = {
70
+ "full_attention": {"rope_type": "default"},
71
+ "original_max_position_embeddings": 32768,
72
+ }
73
+ PretrainedConfig.validate_rope(
74
+ SimpleNamespace(rope_parameters=nested_rope_parameters)
75
+ )
76
+ assert nested_rope_parameters == {"full_attention": {"rope_type": "default"}}
77
+
78
+ flat_rope_parameters = {
79
+ "rope_type": "linear",
80
+ "factor": 8.0,
81
+ "rope_theta": 500000.0,
82
+ }
83
+ PretrainedConfig.validate_rope(
84
+ SimpleNamespace(rope_parameters=flat_rope_parameters)
85
+ )
86
+ assert flat_rope_parameters == {
87
+ "rope_type": "linear",
88
+ "factor": 8.0,
89
+ "rope_theta": 500000.0,
90
+ }
91
+ assert len(calls) == 2
92
+
93
+
94
def _write_json(path: Path, value: object) -> None:
95
path.parent.mkdir(parents=True, exist_ok=True)
96
path.write_text(json.dumps(value), encoding="utf-8")
vllm/transformers_utils/config.py
+1
-1
@@ -273,7 +273,7 @@ def _patch_hf_transformers_nested_rope_validation() -> None:
273
layer_types = set(rope_parameters) & set(
274
hf_configuration_utils.ALLOWED_LAYER_TYPES
275
)
276
- if shared_keys := set(rope_parameters) - layer_types:
276
+ if layer_types and (shared_keys := set(rope_parameters) - layer_types):
277
for key in shared_keys:
278
del rope_parameters[key]
279
logger.warning(