Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
xdb4_94051
vllm
Commits
ac8d36f3
Unverified
Commit
ac8d36f3
authored
Oct 30, 2023
by
iongpt
Committed by
GitHub
Oct 30, 2023
Browse files
Refactor LLMEngine demo script for clarity and modularity (#1413)
Co-authored-by:
Zhuohan Li
<
zhuohan123@gmail.com
>
parent
15f56323
Changes
1
Show whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
25 additions
and
14 deletions
+25
-14
examples/llm_engine_example.py
examples/llm_engine_example.py
+25
-14
No files found.
examples/llm_engine_example.py
View file @
ac8d36f3
import
argparse
from
typing
import
List
,
Tuple
from
vllm
import
EngineArgs
,
LLMEngine
,
SamplingParams
from
vllm
import
EngineArgs
,
LLMEngine
,
SamplingParams
,
RequestOutput
def
main
(
args
:
argparse
.
Namespace
):
# Parse the CLI argument and initialize the engine.
engine_args
=
EngineArgs
.
from_cli_args
(
args
)
engine
=
LLMEngine
.
from_engine_args
(
engine_args
)
# Test the following prompts.
test_prompts
=
[
def
create_test_prompts
()
->
List
[
Tuple
[
str
,
SamplingParams
]]:
"""Create a list of test prompts with their sampling parameters."""
return
[
(
"A robot may not injure a human being"
,
SamplingParams
(
temperature
=
0.0
,
logprobs
=
1
,
prompt_logprobs
=
1
)),
(
"To be or not to be,"
,
...
...
@@ -25,22 +22,36 @@ def main(args: argparse.Namespace):
temperature
=
0.0
)),
]
# Run the engine by calling `engine.step()` manually.
def
process_requests
(
engine
:
LLMEngine
,
test_prompts
:
List
[
Tuple
[
str
,
SamplingParams
]]):
"""Continuously process a list of prompts and handle the outputs."""
request_id
=
0
while
True
:
# To test continuous batching, we add one request at each step.
while
test_prompts
or
engine
.
has_unfinished_requests
():
if
test_prompts
:
prompt
,
sampling_params
=
test_prompts
.
pop
(
0
)
engine
.
add_request
(
str
(
request_id
),
prompt
,
sampling_params
)
request_id
+=
1
request_outputs
=
engine
.
step
()
request_outputs
:
List
[
RequestOutput
]
=
engine
.
step
()
for
request_output
in
request_outputs
:
if
request_output
.
finished
:
print
(
request_output
)
if
not
(
engine
.
has_unfinished_requests
()
or
test_prompts
):
break
def
initialize_engine
(
args
:
argparse
.
Namespace
)
->
LLMEngine
:
"""Initialize the LLMEngine from the command line arguments."""
engine_args
=
EngineArgs
.
from_cli_args
(
args
)
return
LLMEngine
.
from_engine_args
(
engine_args
)
def
main
(
args
:
argparse
.
Namespace
):
"""Main function that sets up and runs the prompt processing."""
engine
=
initialize_engine
(
args
)
test_prompts
=
create_test_prompts
()
process_requests
(
engine
,
test_prompts
)
if
__name__
==
'__main__'
:
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment