sglang.0.4.8.post1/sglang/test/srt/parse_results.py

49 lines
1.2 KiB
Python

import argparse
import json
import os
import pandas as pd
from tabulate import tabulate
# Parse command-line arguments
parser = argparse.ArgumentParser(description="Parse JSONL benchmark and summarize.")
parser.add_argument("input_file", type=str, help="Path to input JSONL file")
args = parser.parse_args()
input_file = args.input_file
base_name = os.path.splitext(os.path.basename(input_file))[0]
output_file = f"{base_name}_summary.csv"
fields = [
"max_concurrency",
"input_throughput",
"output_throughput",
"mean_ttft_ms",
"median_ttft_ms",
"p99_ttft_ms",
"mean_tpot_ms",
"median_tpot_ms",
"p99_tpot_ms",
]
# Read JSONL and parse
results = []
with open(input_file, "r") as f:
for line in f:
data = json.loads(line)
row = {field: data.get(field, None) for field in fields}
max_conc = data.get("max_concurrency")
out_tp = data.get("output_throughput")
row["per_user_throughput"] = out_tp / max_conc if max_conc else None
results.append(row)
# Convert to DataFrame
df = pd.DataFrame(results)
# Save to CSV
df.to_csv(output_file, index=False)
print(f"\nSaved summary to: {output_file}\n")
# Print ASCII table
print(tabulate(df, headers="keys", tablefmt="grid", floatfmt=".3f"))