77import sys
88from typing import List , Optional
99
10- import uvloop
1110from openai import OpenAI
1211from openai .types .chat import ChatCompletionMessageParam
1312
13+ import vllm .cmd .serve
1414import vllm .version
15- from vllm .engine .arg_utils import EngineArgs
16- from vllm .entrypoints .openai .api_server import run_server
17- from vllm .entrypoints .openai .cli_args import (make_arg_parser ,
18- validate_parsed_serve_args )
1915from vllm .logger import init_logger
2016from vllm .utils import FlexibleArgumentParser
2117
@@ -31,19 +27,6 @@ def signal_handler(sig, frame):
3127 signal .signal (signal .SIGTSTP , signal_handler )
3228
3329
34- def serve (args : argparse .Namespace ) -> None :
35- # The default value of `--model`
36- if args .model != EngineArgs .model :
37- raise ValueError (
38- "With `vllm serve`, you should provide the model as a "
39- "positional argument instead of via the `--model` option." )
40-
41- # EngineArgs expects the model name to be passed as --model.
42- args .model = args .model_tag
43-
44- uvloop .run (run_server (args ))
45-
46-
4730def interactive_cli (args : argparse .Namespace ) -> None :
4831 register_signal_handlers ()
4932
@@ -150,28 +133,16 @@ def main():
150133 '--version' ,
151134 action = 'version' ,
152135 version = vllm .version .__version__ )
153-
154136 subparsers = parser .add_subparsers (required = True , dest = "subparser" )
155137
156- serve_parser = subparsers .add_parser (
157- "serve" ,
158- help = "Start the vLLM OpenAI Compatible API server" ,
159- usage = "vllm serve <model_tag> [options]" )
160- serve_parser .add_argument ("model_tag" ,
161- type = str ,
162- help = "The model tag to serve" )
163- serve_parser .add_argument (
164- "--config" ,
165- type = str ,
166- default = '' ,
167- required = False ,
168- help = "Read CLI options from a config file."
169- "Must be a YAML with the following options:"
170- "https://docs.vllm.ai/en/latest/serving/openai_compatible_server.html#cli-reference"
171- )
172-
173- serve_parser = make_arg_parser (serve_parser )
174- serve_parser .set_defaults (dispatch_function = serve )
138+ cmd_modules = [
139+ vllm .cmd .serve ,
140+ ]
141+ cmds = {}
142+ for cmd_module in cmd_modules :
143+ cmd = cmd_module .cmd_init ()
144+ cmd .subparser_init (subparsers ).set_defaults (dispatch_function = cmd .cmd )
145+ cmds [cmd .name ] = cmd
175146
176147 complete_parser = subparsers .add_parser (
177148 "complete" ,
@@ -196,8 +167,8 @@ def main():
196167 chat_parser .set_defaults (dispatch_function = interactive_cli , command = "chat" )
197168
198169 args = parser .parse_args ()
199- if args .subparser == "serve" :
200- validate_parsed_serve_args (args )
170+ if args .subparser in cmds :
171+ cmds [ args . subparser ]. validate (args )
201172
202173 # One of the sub commands should be executed.
203174 if hasattr (args , "dispatch_function" ):
0 commit comments