llm_engine_example.py 1.74 KB
Newer Older
1
2
import argparse

Woosuk Kwon's avatar
Woosuk Kwon committed
3
from vllm import EngineArgs, LLMEngine, SamplingParams
4
5
6


def main(args: argparse.Namespace):
Zhuohan Li's avatar
Zhuohan Li committed
7
8
9
    # Parse the CLI argument and initialize the engine.
    engine_args = EngineArgs.from_cli_args(args)
    engine = LLMEngine.from_engine_args(engine_args)
10
11
12

    # Test the following prompts.
    test_prompts = [
Zhuohan Li's avatar
Zhuohan Li committed
13
        ("A robot may not injure a human being",
14
         SamplingParams(temperature=0.0, logprobs=1, prompt_logprobs=1)),
15
16
17
        ("To be or not to be,",
         SamplingParams(temperature=0.8, top_k=5, presence_penalty=0.2)),
        ("What is the meaning of life?",
18
19
20
21
22
         SamplingParams(n=2,
                        best_of=5,
                        temperature=0.8,
                        top_p=0.95,
                        frequency_penalty=0.1)),
23
        ("It is only with the heart that one can see rightly",
24
25
         SamplingParams(n=3, best_of=3, use_beam_search=True,
                        temperature=0.0)),
26
27
    ]

Zhuohan Li's avatar
Zhuohan Li committed
28
    # Run the engine by calling `engine.step()` manually.
29
    request_id = 0
30
    while True:
Woosuk Kwon's avatar
Woosuk Kwon committed
31
        # To test continuous batching, we add one request at each step.
32
33
        if test_prompts:
            prompt, sampling_params = test_prompts.pop(0)
Zhuohan Li's avatar
Zhuohan Li committed
34
            engine.add_request(str(request_id), prompt, sampling_params)
Zhuohan Li's avatar
Zhuohan Li committed
35
            request_id += 1
36

Zhuohan Li's avatar
Zhuohan Li committed
37
        request_outputs = engine.step()
38
        for request_output in request_outputs:
39
            if request_output.finished:
40
41
                print(request_output)

Zhuohan Li's avatar
Zhuohan Li committed
42
        if not (engine.has_unfinished_requests() or test_prompts):
43
44
45
46
            break


if __name__ == '__main__':
47
    parser = argparse.ArgumentParser(
Zhuohan Li's avatar
Zhuohan Li committed
48
49
        description='Demo on using the LLMEngine class directly')
    parser = EngineArgs.add_cli_args(parser)
50
51
    args = parser.parse_args()
    main(args)