@tduncan / Nvidia-Optimization-Stack-VLLM Mirror · read-only / commits / 646a31e51e
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 15, 11:00 UTC

Fix and simplify `deprecated=True` CLI `kwarg` (#17781)

Signed-off-by: Harry Mellor <19981378+hmellor@users.noreply.github.com>

Harry Mellor committed May 7, 2025 at 16:51 UTC 646a31e51ecf0da02d136512a7e37283c4cee34e
4 files changed +27 -62
examples/offline_inference/basic/chat.py
+2 -3
@@ -7,9 +7,8 @@ from vllm.utils import FlexibleArgumentParser
7 def create_parser():
8 parser = FlexibleArgumentParser()
9 # Add engine args
10 - engine_group = parser.add_argument_group("Engine arguments")
11 - EngineArgs.add_cli_args(engine_group)
12 - engine_group.set_defaults(model="meta-llama/Llama-3.2-1B-Instruct")
10 + EngineArgs.add_cli_args(parser)
11 + parser.set_defaults(model="meta-llama/Llama-3.2-1B-Instruct")
12 # Add sampling params
13 sampling_group = parser.add_argument_group("Sampling parameters")
14 sampling_group.add_argument("--max-tokens", type=int)
examples/offline_inference/basic/generate.py
+2 -3
@@ -7,9 +7,8 @@ from vllm.utils import FlexibleArgumentParser
7 def create_parser():
8 parser = FlexibleArgumentParser()
9 # Add engine args
10 - engine_group = parser.add_argument_group("Engine arguments")
11 - EngineArgs.add_cli_args(engine_group)
12 - engine_group.set_defaults(model="meta-llama/Llama-3.2-1B-Instruct")
10 + EngineArgs.add_cli_args(parser)
11 + parser.set_defaults(model="meta-llama/Llama-3.2-1B-Instruct")
12 # Add sampling params
13 sampling_group = parser.add_argument_group("Sampling parameters")
14 sampling_group.add_argument("--max-tokens", type=int)
vllm/engine/arg_utils.py
+1
@@ -833,6 +833,7 @@ class EngineArgs:
833 parser.add_argument('--use-v2-block-manager',
834 action='store_true',
835 default=True,
836 + deprecated=True,
837 help='[DEPRECATED] block manager v1 has been '
838 'removed and SelfAttnBlockSpaceManager (i.e. '
839 'block manager v2) is now the default. '
vllm/utils.py
+22 -56
@@ -41,7 +41,6 @@ from collections.abc import (AsyncGenerator, Awaitable, Generator, Hashable,
41 from concurrent.futures.process import ProcessPoolExecutor
42 from dataclasses import dataclass, field
43 from functools import cache, lru_cache, partial, wraps
44 -from gettext import gettext as _gettext
44 from types import MappingProxyType
45 from typing import (TYPE_CHECKING, Any, Callable, Generic, Literal, NamedTuple,
46 Optional, Sequence, Tuple, Type, TypeVar, Union, cast,
@@ -1333,31 +1332,10 @@ class SortedHelpFormatter(ArgumentDefaultsHelpFormatter):
1332 super().add_arguments(actions)
1333
1334
1336 -class _FlexibleArgumentGroup(_ArgumentGroup):
1337 -
1338 - def __init__(self, parser: FlexibleArgumentParser, *args, **kwargs):
1339 - self._parser = parser
1340 - super().__init__(*args, **kwargs)
1341 -
1342 - def add_argument(self, *args: Any, **kwargs: Any):
1343 - if sys.version_info < (3, 13):
1344 - deprecated = kwargs.pop('deprecated', False)
1345 - action = super().add_argument(*args, **kwargs)
1346 - object.__setattr__(action, 'deprecated', deprecated)
1347 - if deprecated and action.dest not in \
1348 - self._parser.__class__._deprecated:
1349 - self._parser._deprecated.add(action)
1350 - return action
1351 -
1352 - # python>3.13
1353 - return super().add_argument(*args, **kwargs)
1354 -
1355 -
1335 class FlexibleArgumentParser(ArgumentParser):
1336 """ArgumentParser that allows both underscore and dash in names."""
1337
1338 _deprecated: set[Action] = set()
1360 - _seen: set[str] = set()
1339
1340 def __init__(self, *args, **kwargs):
1341 # Set the default 'formatter_class' to SortedHelpFormatter
@@ -1366,39 +1344,36 @@ class FlexibleArgumentParser(ArgumentParser):
1344 super().__init__(*args, **kwargs)
1345
1346 if sys.version_info < (3, 13):
1347 + # Enable the deprecated kwarg for Python 3.12 and below
1348
1370 - def parse_known_args( # type: ignore[override]
1371 - self,
1372 - args: Sequence[str] | None = None,
1373 - namespace: Namespace | None = None,
1374 - ) -> tuple[Namespace | None, list[str]]:
1349 + def parse_known_args(self, args=None, namespace=None):
1350 namespace, args = super().parse_known_args(args, namespace)
1351 for action in FlexibleArgumentParser._deprecated:
1377 - if action.dest not in FlexibleArgumentParser._seen and getattr(
1378 - namespace, action.dest,
1379 - None) != action.default: # noqa: E501
1380 - self._warning(
1381 - _gettext("argument '%(argument_name)s' is deprecated")
1382 - % {'argument_name': action.dest})
1383 - FlexibleArgumentParser._seen.add(action.dest)
1352 + if (hasattr(namespace, dest := action.dest)
1353 + and getattr(namespace, dest) != action.default):
1354 + logger.warning_once("argument '%s' is deprecated", dest)
1355 return namespace, args
1356
1386 - def add_argument(self, *args: Any, **kwargs: Any):
1387 - # add a deprecated=True compatibility
1388 - # for python < 3.13
1389 - deprecated = kwargs.pop('deprecated', False)
1357 + def add_argument(self, *args, **kwargs):
1358 + deprecated = kwargs.pop("deprecated", False)
1359 action = super().add_argument(*args, **kwargs)
1391 - object.__setattr__(action, 'deprecated', deprecated)
1392 - if deprecated and \
1393 - action not in FlexibleArgumentParser._deprecated:
1394 - self._deprecated.add(action)
1395 -
1360 + if deprecated:
1361 + FlexibleArgumentParser._deprecated.add(action)
1362 return action
1363
1398 - def _warning(self, message: str):
1399 - self._print_message(
1400 - _gettext('warning: %(message)s\n') % {'message': message},
1401 - sys.stderr)
1364 + class _FlexibleArgumentGroup(_ArgumentGroup):
1365 +
1366 + def add_argument(self, *args, **kwargs):
1367 + deprecated = kwargs.pop("deprecated", False)
1368 + action = super().add_argument(*args, **kwargs)
1369 + if deprecated:
1370 + FlexibleArgumentParser._deprecated.add(action)
1371 + return action
1372 +
1373 + def add_argument_group(self, *args, **kwargs):
1374 + group = self._FlexibleArgumentGroup(self, *args, **kwargs)
1375 + self._action_groups.append(group)
1376 + return group
1377
1378 def parse_args( # type: ignore[override]
1379 self,
@@ -1575,15 +1550,6 @@ class FlexibleArgumentParser(ArgumentParser):
1550
1551 return processed_args
1552
1578 - def add_argument_group(
1579 - self,
1580 - *args: Any,
1581 - **kwargs: Any,
1582 - ) -> _FlexibleArgumentGroup:
1583 - group = _FlexibleArgumentGroup(self, self, *args, **kwargs)
1584 - self._action_groups.append(group)
1585 - return group
1586 -
1553
1554 async def _run_task_with_lock(task: Callable, lock: asyncio.Lock, *args,
1555 **kwargs):