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 6, 00:45 UTC
Various Transformers v5 fixes (#38127)
Signed-off-by: Harry Mellor <19981378+hmellor@users.noreply.github.com>
Harry Mellor committed
Mar 26, 2026 at 00:10 UTC
3c3c084240261a012531ab990be1d13f1e651c26
7 files changed
+13
-88
tests/entrypoints/offline_mode/test_offline_mode.py
+1
@@ -112,6 +112,7 @@ def _re_import_modules():
112
aliased_module_patterns = [
113
r".+\.tokenization_utils$",
114
r".+\.tokenization_utils_fast$",
115
+ r".+\.image_processing_utils_fast$",
116
r".+\.models\..+\.image_processing_.+_fast$",
117
]
118
vllm/config/model.py
+8
@@ -586,6 +586,14 @@ class ModelConfig:
586
config_format=self.config_format,
587
)
588
589
+ # Some checkpoints set sliding_window to 0 to indicate that sliding window is
590
+ # disabled, but vLLM uses None for that. Convert 0 to None to avoid errors.
591
+ # Set before get_and_verify_max_len to ensure that max_model_len does not get
592
+ # capped to 0.
593
+ if self.get_sliding_window() == 0:
594
+ self.disable_sliding_window = True
595
+ self.hf_text_config.sliding_window = None
596
+
597
self.original_max_model_len = self.max_model_len
598
self.max_model_len = self.get_and_verify_max_len(self.max_model_len)
599
vllm/model_executor/models/olmo2.py
+1
-2
@@ -30,7 +30,7 @@ from itertools import islice
30
31
import torch
32
from torch import nn
33
-from transformers import Olmo2Config
33
+from transformers import Olmo2Config, Olmo3Config
34
35
from vllm.compilation.decorators import support_torch_compile
36
from vllm.config import VllmConfig
@@ -63,7 +63,6 @@ from vllm.model_executor.models.utils import (
63
maybe_prefix,
64
)
65
from vllm.sequence import IntermediateTensors
66
-from vllm.transformers_utils.configs.olmo3 import Olmo3Config
66
67
68
class Olmo2Attention(nn.Module):
vllm/transformers_utils/config.py
-1
@@ -105,7 +105,6 @@ _CONFIG_REGISTRY: dict[str, type[PretrainedConfig]] = LazyConfigDict(
105
eagle="EAGLEConfig",
106
speculators="SpeculatorsConfig",
107
nemotron="NemotronConfig",
108
- olmo3="Olmo3Config",
108
olmo_hybrid="OlmoHybridConfig",
109
ovis="OvisConfig",
110
ultravox="UltravoxConfig",
vllm/transformers_utils/configs/__init__.py
-2
@@ -50,7 +50,6 @@ _CLASS_TO_MODULE: dict[str, str] = {
50
"KimiK25Config": "vllm.transformers_utils.configs.kimi_k25",
51
"NemotronConfig": "vllm.transformers_utils.configs.nemotron",
52
"NemotronHConfig": "vllm.transformers_utils.configs.nemotron_h",
53
- "Olmo3Config": "vllm.transformers_utils.configs.olmo3",
53
"OlmoHybridConfig": "vllm.transformers_utils.configs.olmo_hybrid",
54
"OvisConfig": "vllm.transformers_utils.configs.ovis",
55
"PixelShuffleSiglip2VisionConfig": "vllm.transformers_utils.configs.isaac",
@@ -106,7 +105,6 @@ __all__ = [
105
"KimiK25Config",
106
"NemotronConfig",
107
"NemotronHConfig",
109
- "Olmo3Config",
108
"OlmoHybridConfig",
109
"OvisConfig",
110
"PixelShuffleSiglip2VisionConfig",
vllm/transformers_utils/configs/deepseek_vl2.py
+3
@@ -114,6 +114,9 @@ class DeepseekVLV2Config(PretrainedConfig):
114
self.projector_config = MlpProjectorConfig(**projector_config)
115
116
language_config = kwargs.get("language_config", {})
117
+ # remove kv_lora_rank if not specified, passing None is prohibited
118
+ if language_config.get("kv_lora_rank") is None:
119
+ language_config.pop("kv_lora_rank", None)
120
self.text_config = DeepseekV2Config(**language_config)
121
122
self.tile_tag = tile_tag
vllm/transformers_utils/configs/olmo3.py
deleted
-83
@@ -1,83 +0,0 @@
1
-# SPDX-License-Identifier: Apache-2.0
2
-# SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3
-
4
-from transformers.configuration_utils import PretrainedConfig
5
-
6
-
7
-class Olmo3Config(PretrainedConfig):
8
- model_type = "olmo3"
9
- keys_to_ignore_at_inference = ["past_key_values"]
10
-
11
- def __init__(
12
- self,
13
- vocab_size=50304,
14
- hidden_size=4096,
15
- intermediate_size=11008,
16
- num_hidden_layers=32,
17
- num_attention_heads=32,
18
- num_key_value_heads=None,
19
- hidden_act="silu",
20
- max_position_embeddings=2048,
21
- initializer_range=0.02,
22
- use_cache=True,
23
- pad_token_id=1,
24
- bos_token_id=None,
25
- eos_token_id=50279,
26
- tie_word_embeddings=False,
27
- rope_parameters=None,
28
- attention_bias=False,
29
- attention_dropout=0.0,
30
- rms_norm_eps=1e-5,
31
- sliding_window=4096,
32
- layer_types=None,
33
- **kwargs,
34
- ):
35
- # This model uses Olmo3ForCausalLM in transformers but Olmo2ForCausalLM
36
- # in vLLM.
37
- if "architectures" not in kwargs:
38
- kwargs["architectures"] = ["Olmo2ForCausalLM"]
39
- elif "Olmo3ForCausalLM" in kwargs["architectures"]:
40
- kwargs["architectures"].remove("Olmo3ForCausalLM")
41
- kwargs["architectures"].append("Olmo2ForCausalLM")
42
-
43
- super().__init__(
44
- pad_token_id=pad_token_id,
45
- bos_token_id=bos_token_id,
46
- eos_token_id=eos_token_id,
47
- tie_word_embeddings=tie_word_embeddings,
48
- **kwargs,
49
- )
50
- self.vocab_size = vocab_size
51
- self.max_position_embeddings = max_position_embeddings
52
- self.hidden_size = hidden_size
53
- self.intermediate_size = intermediate_size
54
- self.num_hidden_layers = num_hidden_layers
55
- self.num_attention_heads = num_attention_heads
56
-
57
- # for backward compatibility
58
- if num_key_value_heads is None:
59
- num_key_value_heads = num_attention_heads
60
-
61
- self.num_key_value_heads = num_key_value_heads
62
- self.hidden_act = hidden_act
63
- self.initializer_range = initializer_range
64
- self.use_cache = use_cache
65
- # Try to set `rope_scaling` if available, otherwise use `rope_parameters`
66
- rope_scaling = kwargs.pop("rope_scaling", None)
67
- rope_parameters = rope_scaling or rope_parameters or {"rope_type": "default"}
68
- rope_theta = kwargs.pop("rope_theta", 10000.0)
69
- if "rope_theta" not in rope_parameters:
70
- rope_parameters["rope_theta"] = rope_theta
71
- self.rope_parameters = rope_parameters
72
- self.attention_bias = attention_bias
73
- self.attention_dropout = attention_dropout
74
-
75
- self.rms_norm_eps = rms_norm_eps
76
-
77
- self.sliding_window = sliding_window
78
- self.layer_types = layer_types
79
- if self.layer_types is None:
80
- self.layer_types = [
81
- "sliding_attention" if (i + 1) % 4 != 0 else "full_attention"
82
- for i in range(self.num_hidden_layers)
83
- ]