@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 3c3c084240
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 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 - ]