dna-diskchat-2b-peer-v25 / scripts /v25_eval /chart_benchmarks.py
jaivial's picture
Upload folder using huggingface_hub
580cb69 verified
Raw
History Blame Contribute Delete
1.77 kB
#!/usr/bin/env python3
"""Chart measured EvalPlus pass@1 values; label missing suites explicitly."""
from __future__ import annotations
import argparse
from pathlib import Path
import matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
import numpy as np
from common import read_json
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--report", type=Path, required=True)
parser.add_argument("--out", type=Path, required=True)
args = parser.parse_args()
benchmarks = read_json(args.report).get("benchmarks") or {}
spec = [("HumanEval", benchmarks.get("humaneval")), ("MBPP", benchmarks.get("mbpp"))]
base = [100 * item["pass_at_1"]["base"] if item else np.nan for _, item in spec]
plus = [100 * item["pass_at_1"]["plus"] if item else np.nan for _, item in spec]
x = np.arange(len(spec))
fig, ax = plt.subplots(figsize=(8, 4.8))
width = 0.34
first = ax.bar(x - width / 2, base, width, label="base tests", color="#2563eb")
second = ax.bar(x + width / 2, plus, width, label="plus tests", color="#059669")
for index, (_, item) in enumerate(spec):
if item:
ax.text(first[index].get_x() + first[index].get_width() / 2, base[index] + 1, f"{base[index]:.1f}%", ha="center")
ax.text(second[index].get_x() + second[index].get_width() / 2, plus[index] + 1, f"{plus[index]:.1f}%", ha="center")
else:
ax.text(index, 4, "not measured", rotation=90, ha="center", va="bottom", color="#64748b")
ax.set(title="v25 EvalPlus pass@1", ylabel="pass@1 (%)", xticks=x, xticklabels=[name for name, _ in spec], ylim=(0, 105))
ax.grid(axis="y", alpha=0.25)
ax.legend()
fig.tight_layout()
args.out.parent.mkdir(parents=True, exist_ok=True)
fig.savefig(args.out, dpi=160, bbox_inches="tight")
plt.close(fig)
print(args.out)