Main entry point
(args: argparse.Namespace)
| 684 | |
| 685 | |
| 686 | def main(args: argparse.Namespace): |
| 687 | """Main entry point""" |
| 688 | print(args) |
| 689 | random.seed(args.seed) |
| 690 | np.random.seed(args.seed) |
| 691 | |
| 692 | backend = args.backend |
| 693 | model_id = args.model |
| 694 | model_name = args.served_model_name |
| 695 | tokenizer_id = args.tokenizer if args.tokenizer is not None else args.model |
| 696 | |
| 697 | if args.base_url is not None: |
| 698 | api_url = f"{args.base_url}{args.endpoint}" |
| 699 | base_url = f"{args.base_url}" |
| 700 | else: |
| 701 | api_url = f"http://{args.host}:{args.port}{args.endpoint}" |
| 702 | base_url = f"http://{args.host}:{args.port}" |
| 703 | |
| 704 | if args.dataset_name is None: |
| 705 | raise ValueError("Please specify '--dataset-name' and the corresponding " "'--dataset-path' if required.") |
| 706 | |
| 707 | # For datasets that follow a similar structure, use a mapping. |
| 708 | dataset_mapping = { |
| 709 | "EB": lambda: EBDataset(random_seed=args.seed, dataset_path=args.dataset_path).sample( |
| 710 | num_requests=args.num_prompts, |
| 711 | output_len=args.sharegpt_output_len, |
| 712 | ), |
| 713 | "EBChat": lambda: EBChatDataset(random_seed=args.seed, dataset_path=args.dataset_path).sample( |
| 714 | num_requests=args.num_prompts, |
| 715 | output_len=args.sharegpt_output_len, |
| 716 | ), |
| 717 | } |
| 718 | |
| 719 | try: |
| 720 | input_requests = dataset_mapping[args.dataset_name]() |
| 721 | except KeyError as err: |
| 722 | raise ValueError(f"Unknown dataset: {args.dataset_name}") from err |
| 723 | |
| 724 | goodput_config_dict = check_goodput_args(args) |
| 725 | |
| 726 | # Collect the sampling parameters. |
| 727 | sampling_params = { |
| 728 | k: v |
| 729 | for k, v in { |
| 730 | "top_p": args.top_p, |
| 731 | "top_k": args.top_k, |
| 732 | "min_p": args.min_p, |
| 733 | "temperature": args.temperature, |
| 734 | }.items() |
| 735 | if v is not None |
| 736 | } |
| 737 | |
| 738 | # Sampling parameters are only supported by openai-compatible backend. |
| 739 | if sampling_params and args.backend not in OPENAI_COMPATIBLE_BACKENDS: |
| 740 | raise ValueError("Sampling parameters are only supported by openai-compatible " "backends.") |
| 741 | |
| 742 | if "temperature" not in sampling_params: |
| 743 | sampling_params["temperature"] = 0.0 # Default to greedy decoding. |
no test coverage detected