vllm-arabic-rag / benchmark /plot_results.py
ِAkramtaha98
Deploy Arabic RAG Optimizer
7a9b4e7
Raw
History Blame Contribute Delete
1.71 kB
"""
Plot throughput / KV-cache-usage comparison charts from Locust CSV output
(baseline vs. LSPM-pruned runs), for the paper's results section (4.1).
Usage:
python benchmark/plot_results.py \
--baseline results/baseline_stats_history.csv \
--pruned results/lspm_r05_stats_history.csv \
--out results/throughput_comparison.png
"""
import argparse
import matplotlib.pyplot as plt
import pandas as pd
def main():
ap = argparse.ArgumentParser()
ap.add_argument("--baseline", required=True)
ap.add_argument("--pruned", required=True)
ap.add_argument("--out", default="results/throughput_comparison.png")
args = ap.parse_args()
base = pd.read_csv(args.baseline)
pruned = pd.read_csv(args.pruned)
fig, axes = plt.subplots(1, 2, figsize=(12, 5))
axes[0].plot(base["User Count"], base["Requests/s"], label="Baseline (raw context)", marker="o")
axes[0].plot(pruned["User Count"], pruned["Requests/s"], label="LSPM (pruned context)", marker="o")
axes[0].set_xlabel("Concurrent Users")
axes[0].set_ylabel("Throughput (req/s)")
axes[0].set_title("Throughput vs. Concurrency")
axes[0].legend()
axes[0].grid(alpha=0.3)
axes[1].plot(base["User Count"], base["50%"], label="Baseline p50 latency (ms)", marker="o")
axes[1].plot(pruned["User Count"], pruned["50%"], label="LSPM p50 latency (ms)", marker="o")
axes[1].set_xlabel("Concurrent Users")
axes[1].set_ylabel("Latency (ms)")
axes[1].set_title("Latency vs. Concurrency")
axes[1].legend()
axes[1].grid(alpha=0.3)
plt.tight_layout()
plt.savefig(args.out, dpi=150)
print(f"Saved: {args.out}")
if __name__ == "__main__":
main()