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):