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 9, 20:45 UTC
[Deprecation] Remove deprecated environment variables (#32812)
Signed-off-by: yewentao256 <zhyanwentao@126.com>
Wentao Ye committed
Jan 21, 2026 at 21:25 UTC
6437ff1fb9dd64ca4637007a9659d866d93ddae4
6 files changed
+7
-118
.buildkite/test-amd.yaml
+2
-2
@@ -1473,7 +1473,7 @@ steps:
1473
- tests/v1/kv_connector/nixl_integration/
1474
commands:
1475
- uv pip install --system -r /vllm-workspace/requirements/kv_connectors_rocm.txt
1476
- - VLLM_ATTENTION_BACKEND=ROCM_ATTN bash v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh
1476
+ - bash v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh --attention-backend ROCM_ATTN
1477
1478
- label: DP EP NixlConnector PD accuracy tests (Distributed) # 15min
1479
mirror_hardwares: [amdexperimental, amdproduction]
@@ -1487,7 +1487,7 @@ steps:
1487
- tests/v1/kv_connector/nixl_integration/
1488
commands:
1489
- uv pip install --system -r /vllm-workspace/requirements/kv_connectors_rocm.txt
1490
- - VLLM_ATTENTION_BACKEND=ROCM_ATTN DP_EP=1 bash v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh
1490
+ - DP_EP=1 bash v1/kv_connector/nixl_integration/config_sweep_accuracy_test.sh --attention-backend ROCM_ATTN
1491
1492
##### multi gpus test #####
1493
##### A100 test #####
tests/v1/spec_decode/test_acceptance_length.py
+1
-1
@@ -207,7 +207,6 @@ def test_eagle3_acceptance_length(
207
208
with monkeypatch.context() as m:
209
m.setenv("VLLM_ALLOW_INSECURE_SERIALIZATION", "1")
210
- m.setenv("VLLM_ATTENTION_BACKEND", attention_backend)
210
211
with VllmRunner(
212
model_name=model_config.verifier,
@@ -216,6 +215,7 @@ def test_eagle3_acceptance_length(
215
"model": model_config.drafter,
216
"num_speculative_tokens": num_spec_tokens,
217
},
218
+ attention_config={"backend": attention_backend},
219
tensor_parallel_size=tp_size,
220
gpu_memory_utilization=0.7,
221
disable_log_stats=False,
vllm/config/attention.py
-46
@@ -7,11 +7,8 @@ from pydantic import field_validator
7
from pydantic.dataclasses import dataclass
8
9
from vllm.config.utils import config
10
-from vllm.logger import init_logger
10
from vllm.v1.attention.backends.registry import AttentionBackendEnum
11
13
-logger = init_logger(__name__)
14
-
12
13
@config
14
@dataclass
@@ -69,46 +66,3 @@ class AttentionConfig:
66
if isinstance(value, str):
67
return AttentionBackendEnum[value.upper()]
68
return value
72
-
73
- def _set_from_env_if_set(self, field_name: str, env_var_name: str) -> None:
74
- """Set field from env var if set, with deprecation warning."""
75
- from vllm import envs
76
-
77
- if envs.is_set(env_var_name):
78
- value = getattr(envs, env_var_name)
79
- if field_name == "backend":
80
- value = self.validate_backend_before(value)
81
- setattr(self, field_name, value)
82
- logger.warning_once(
83
- "Using %s environment variable is deprecated and will be removed in "
84
- "v0.14.0 or v1.0.0, whichever is soonest. Please use "
85
- "--attention-config.%s command line argument or "
86
- "AttentionConfig(%s=...) config field instead.",
87
- env_var_name,
88
- field_name,
89
- field_name,
90
- )
91
-
92
- def __post_init__(self) -> None:
93
- self._set_from_env_if_set("backend", "VLLM_ATTENTION_BACKEND")
94
- self._set_from_env_if_set("flash_attn_version", "VLLM_FLASH_ATTN_VERSION")
95
- self._set_from_env_if_set(
96
- "use_prefill_decode_attention", "VLLM_V1_USE_PREFILL_DECODE_ATTENTION"
97
- )
98
- self._set_from_env_if_set(
99
- "flash_attn_max_num_splits_for_cuda_graph",
100
- "VLLM_FLASH_ATTN_MAX_NUM_SPLITS_FOR_CUDA_GRAPH",
101
- )
102
- self._set_from_env_if_set("use_cudnn_prefill", "VLLM_USE_CUDNN_PREFILL")
103
- self._set_from_env_if_set(
104
- "use_trtllm_ragged_deepseek_prefill",
105
- "VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL",
106
- )
107
- self._set_from_env_if_set("use_trtllm_attention", "VLLM_USE_TRTLLM_ATTENTION")
108
- self._set_from_env_if_set(
109
- "disable_flashinfer_prefill", "VLLM_DISABLE_FLASHINFER_PREFILL"
110
- )
111
- self._set_from_env_if_set(
112
- "disable_flashinfer_q_quantization",
113
- "VLLM_FLASHINFER_DISABLE_Q_QUANTIZATION",
114
- )
vllm/envs.py
-67
@@ -20,8 +20,6 @@ if TYPE_CHECKING:
20
VLLM_NCCL_SO_PATH: str | None = None
21
LD_LIBRARY_PATH: str | None = None
22
VLLM_ROCM_SLEEP_MEM_CHUNK_SIZE: int = 256
23
- VLLM_V1_USE_PREFILL_DECODE_ATTENTION: bool = False
24
- VLLM_FLASH_ATTN_VERSION: int | None = None
23
LOCAL_RANK: int = 0
24
CUDA_VISIBLE_DEVICES: str | None = None
25
VLLM_ENGINE_ITERATION_TIMEOUT_S: int = 60
@@ -36,7 +34,6 @@ if TYPE_CHECKING:
34
VLLM_CONFIG_ROOT: str = os.path.expanduser("~/.config/vllm")
35
VLLM_USAGE_STATS_SERVER: str = "https://stats.vllm.ai"
36
VLLM_NO_USAGE_STATS: bool = False
39
- VLLM_DISABLE_FLASHINFER_PREFILL: bool = False
37
VLLM_DO_NOT_TRACK: bool = False
38
VLLM_USAGE_SOURCE: str = ""
39
VLLM_CONFIGURE_LOGGING: bool = True
@@ -48,7 +45,6 @@ if TYPE_CHECKING:
45
NO_COLOR: bool = False
46
VLLM_LOG_STATS_INTERVAL: float = 10.0
47
VLLM_TRACE_FUNCTION: int = 0
51
- VLLM_ATTENTION_BACKEND: str | None = None
48
VLLM_USE_FLASHINFER_SAMPLER: bool | None = None
49
VLLM_PP_LAYER_PARTITION: str | None = None
50
VLLM_CPU_KVCACHE_SPACE: int | None = 0
@@ -142,7 +138,6 @@ if TYPE_CHECKING:
138
VLLM_SERVER_DEV_MODE: bool = False
139
VLLM_V1_OUTPUT_PROC_CHUNK_SIZE: int = 128
140
VLLM_MLA_DISABLE: bool = False
145
- VLLM_FLASH_ATTN_MAX_NUM_SPLITS_FOR_CUDA_GRAPH: int = 32
141
VLLM_RAY_PER_WORKER_GPUS: float = 1.0
142
VLLM_RAY_BUNDLE_INDICES: str = ""
143
VLLM_CUDART_SO_PATH: str | None = None
@@ -214,15 +209,11 @@ if TYPE_CHECKING:
209
VLLM_MORIIO_POST_BATCH_SIZE: int = -1
210
VLLM_MORIIO_NUM_WORKERS: int = 1
211
VLLM_MOONCAKE_ABORT_REQUEST_TIMEOUT: int = 480
217
- VLLM_USE_CUDNN_PREFILL: bool = False
218
- VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL: bool = False
212
VLLM_ENABLE_CUDAGRAPH_GC: bool = False
213
VLLM_LOOPBACK_IP: str = ""
214
VLLM_ALLOW_CHUNKED_LOCAL_ATTN_WITH_HYBRID_KV_CACHE: bool = True
215
VLLM_ENABLE_RESPONSES_API_STORE: bool = False
223
- VLLM_USE_TRTLLM_ATTENTION: str | None = None
216
VLLM_NVFP4_GEMM_BACKEND: str | None = None
225
- VLLM_FLASHINFER_DISABLE_Q_QUANTIZATION: bool = False
217
VLLM_HAS_FLASHINFER_CUBIN: bool = False
218
VLLM_USE_FLASHINFER_MOE_MXFP4_MXFP8: bool = False
219
VLLM_USE_FLASHINFER_MOE_MXFP4_BF16: bool = False
@@ -592,17 +583,6 @@ environment_variables: dict[str, Callable[[], Any]] = {
583
"VLLM_ROCM_SLEEP_MEM_CHUNK_SIZE": lambda: int(
584
os.environ.get("VLLM_ROCM_SLEEP_MEM_CHUNK_SIZE", "256")
585
),
595
- # Use separate prefill and decode kernels for V1 attention instead of
596
- # the unified triton kernel.
597
- "VLLM_V1_USE_PREFILL_DECODE_ATTENTION": lambda: (
598
- os.getenv("VLLM_V1_USE_PREFILL_DECODE_ATTENTION", "False").lower()
599
- in ("true", "1")
600
- ),
601
- # Force vllm to use a specific flash-attention version (2 or 3), only valid
602
- # when using the flash-attention backend.
603
- "VLLM_FLASH_ATTN_VERSION": lambda: maybe_convert_int(
604
- os.environ.get("VLLM_FLASH_ATTN_VERSION", None)
605
- ),
586
# Feature flag to enable/disable Inductor standalone compile.
587
# In torch <= 2.7 we ignore this flag; in torch >= 2.9 this is
588
# enabled by default.
@@ -668,10 +648,6 @@ environment_variables: dict[str, Callable[[], Any]] = {
648
"VLLM_USAGE_STATS_SERVER", "https://stats.vllm.ai"
649
),
650
"VLLM_NO_USAGE_STATS": lambda: os.environ.get("VLLM_NO_USAGE_STATS", "0") == "1",
671
- "VLLM_DISABLE_FLASHINFER_PREFILL": lambda: os.environ.get(
672
- "VLLM_DISABLE_FLASHINFER_PREFILL", "0"
673
- )
674
- == "1",
651
"VLLM_DO_NOT_TRACK": lambda: (
652
os.environ.get("VLLM_DO_NOT_TRACK", None)
653
or os.environ.get("DO_NOT_TRACK", None)
@@ -707,25 +683,6 @@ environment_variables: dict[str, Callable[[], Any]] = {
683
# If set to 1, vllm will trace function calls
684
# Useful for debugging
685
"VLLM_TRACE_FUNCTION": lambda: int(os.getenv("VLLM_TRACE_FUNCTION", "0")),
710
- # Backend for attention computation
711
- # Example options:
712
- # - "TORCH_SDPA": use torch.nn.MultiheadAttention
713
- # - "FLASH_ATTN": use FlashAttention
714
- # - "FLASHINFER": use flashinfer
715
- # - "FLASHMLA": use FlashMLA
716
- # - "FLASH_ATTN_MLA": use FlashAttention for MLA
717
- # - "FLASHINFER_MLA": use FlashInfer for MLA
718
- # - "CUTLASS_MLA": use CUTLASS for MLA
719
- # All possible options loaded dynamically from AttentionBackendEnum
720
- "VLLM_ATTENTION_BACKEND": env_with_choices(
721
- "VLLM_ATTENTION_BACKEND",
722
- None,
723
- lambda: list(
724
- __import__(
725
- "vllm.v1.attention.backends.registry", fromlist=["AttentionBackendEnum"]
726
- ).AttentionBackendEnum.__members__.keys()
727
- ),
728
- ),
686
# If set, vllm will use flashinfer sampler
687
"VLLM_USE_FLASHINFER_SAMPLER": lambda: bool(
688
int(os.environ["VLLM_USE_FLASHINFER_SAMPLER"])
@@ -1127,10 +1084,6 @@ environment_variables: dict[str, Callable[[], Any]] = {
1084
# If set, vLLM will disable the MLA attention optimizations.
1085
"VLLM_MLA_DISABLE": lambda: bool(int(os.getenv("VLLM_MLA_DISABLE", "0"))),
1086
# If set, vLLM will pick up the provided Flash Attention MLA
1130
- # max number splits for cuda graph decode
1131
- "VLLM_FLASH_ATTN_MAX_NUM_SPLITS_FOR_CUDA_GRAPH": lambda: int(
1132
- os.getenv("VLLM_FLASH_ATTN_MAX_NUM_SPLITS_FOR_CUDA_GRAPH", "32")
1133
- ),
1087
# Number of GPUs per worker in Ray, if it is set to be a fraction,
1088
# it allows ray to schedule multiple actors on a single GPU,
1089
# so that users can colocate other actors on the same GPUs as vLLM.
@@ -1464,26 +1417,6 @@ environment_variables: dict[str, Callable[[], Any]] = {
1417
"VLLM_MOONCAKE_ABORT_REQUEST_TIMEOUT": lambda: int(
1418
os.getenv("VLLM_MOONCAKE_ABORT_REQUEST_TIMEOUT", "480")
1419
),
1467
- # Controls whether or not to use cudnn prefill
1468
- "VLLM_USE_CUDNN_PREFILL": lambda: bool(
1469
- int(os.getenv("VLLM_USE_CUDNN_PREFILL", "0"))
1470
- ),
1471
- # Controls whether to use TRT-LLM ragged DeepSeek prefill
1472
- "VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL": lambda: bool(
1473
- int(os.getenv("VLLM_USE_TRTLLM_RAGGED_DEEPSEEK_PREFILL", "0"))
1474
- ),
1475
- # If set to 1/True, use the TRTLLM attention backend in flashinfer.
1476
- # If set to 0/False, use the default attention backend in flashinfer.
1477
- # If not set, auto-detect the attention backend in flashinfer.
1478
- "VLLM_USE_TRTLLM_ATTENTION": lambda: (
1479
- None
1480
- if "VLLM_USE_TRTLLM_ATTENTION" not in os.environ
1481
- else os.environ["VLLM_USE_TRTLLM_ATTENTION"].lower() in ("1", "true")
1482
- ),
1483
- # If set to 1, when we use fp8 kv, we do not quantize Q to fp8
1484
- "VLLM_FLASHINFER_DISABLE_Q_QUANTIZATION": lambda: bool(
1485
- int(os.getenv("VLLM_FLASHINFER_DISABLE_Q_QUANTIZATION", "0"))
1486
- ),
1420
# If set, it means we pre-downloaded cubin files and flashinfer will
1421
# read the cubin files directly.
1422
"VLLM_HAS_FLASHINFER_CUBIN": lambda: bool(
vllm/platforms/rocm.py
+4
-1
@@ -287,7 +287,10 @@ class RocmPlatform(Platform):
287
return AttentionBackendEnum.ROCM_AITER_FA.get_path()
288
289
# Priority 3: Check for ROCM_ATTN (prefill-decode split)
290
- if envs.VLLM_V1_USE_PREFILL_DECODE_ATTENTION:
290
+ from vllm.config import get_current_vllm_config
291
+
292
+ vllm_config = get_current_vllm_config()
293
+ if vllm_config.attention_config.use_prefill_decode_attention:
294
logger.info("Using Rocm Attention backend.")
295
return AttentionBackendEnum.ROCM_ATTN.get_path()
296
vllm/usage/usage_lib.py
-1
@@ -37,7 +37,6 @@ _GLOBAL_RUNTIME_DATA = dict[str, str | int | bool]()
37
38
_USAGE_ENV_VARS_TO_COLLECT = [
39
"VLLM_USE_MODELSCOPE",
40
- "VLLM_ATTENTION_BACKEND",
40
"VLLM_USE_FLASHINFER_SAMPLER",
41
"VLLM_PP_LAYER_PARTITION",
42
"VLLM_USE_TRITON_AWQ",