main
py 89 lines 2.52 KB
Raw
1 # SPDX-License-Identifier: Apache-2.0
2 # SPDX-FileCopyrightText: Copyright contributors to the vLLM project
3 """Validates the loading of a model saved with the sharded_state format.
4 This script demonstrates how to load a model that was previously saved
5 using save_sharded_state_offline.py and validates it by running inference.
6 Example usage:
7 (First need to save a sharded_state mode)
8
9 python save_sharded_state_offline.py \
10 --model /path/to/load \
11 --tensor-parallel-size 8 \
12 --output /path/to/save/sharded/model
13
14 python load_sharded_state_offline.py \
15 --model /path/to/saved/sharded/model \
16 --load-format sharded_state \
17 --tensor-parallel-size 8 \
18 --prompt "Hello, my name is" \
19 --max-tokens 50
20 """
21
22 from vllm import LLM, EngineArgs, SamplingParams
23 from vllm.utils.argparse_utils import FlexibleArgumentParser
24
25
26 def parse_args():
27 parser = FlexibleArgumentParser()
28 # Add engine arguments
29 EngineArgs.add_cli_args(parser)
30
31 # Override default load_format for clarity
32 parser.set_defaults(load_format="sharded_state")
33
34 # Add validation arguments
35 parser.add_argument(
36 "--prompt", type=str, default="Hello, world!", help="Prompt for validation"
37 )
38 parser.add_argument(
39 "--max-tokens",
40 type=int,
41 default=100,
42 help="Maximum number of tokens to generate",
43 )
44 parser.add_argument(
45 "--temperature", type=float, default=0.7, help="Sampling temperature"
46 )
47 parser.add_argument(
48 "--top-p", type=float, default=1.0, help="Top-p sampling parameter"
49 )
50
51 return parser.parse_args()
52
53
54 def main():
55 args = parse_args()
56 engine_args = EngineArgs.from_cli_args(args)
57
58 print(
59 f"Loading model from {engine_args.model} using format {engine_args.load_format}"
60 )
61 print(f"Tensor parallel size: {engine_args.tensor_parallel_size}")
62
63 # Load the model using engine args
64 llm = LLM.from_engine_args(engine_args)
65
66 # Prepare sampling parameters
67 sampling_params = SamplingParams(
68 temperature=args.temperature,
69 top_p=args.top_p,
70 max_tokens=args.max_tokens,
71 )
72
73 print("\nRunning inference:")
74 print(f"Prompt: {args.prompt}")
75
76 # Generate completion
77 outputs = llm.generate(args.prompt, sampling_params)
78
79 # Display generated text
80 print("\nGenerated outputs:")
81 for output in outputs:
82 generated_text = output.outputs[0].text
83 print("-" * 50)
84 print(f"Full output: {args.prompt}{generated_text}")
85 print("-" * 50)
86
87
88 if __name__ == "__main__":
89 main()