gollem-v5-ckpts / make_progress_chart.py
Maggio33's picture
Upload make_progress_chart.py with huggingface_hub
18cfe4b verified
Raw History Blame
3.55 kB
#!/usr/bin/env python3
"""GoLLeM-v5 progress chart: crown@expanded (#18->#14 via ARC) + 16M token-scan (BLiMP plateau / ARC climb)."""
import json, matplotlib
matplotlib.use("Agg")
import matplotlib.pyplot as plt
D = json.load(open(r"C:/Projekty/Slayer/gollem-v5-en-staging/board_eff_vs_params.json", encoding="utf-8"))
board = D["board"]
# our points (Glint-real). crown@expanded eff 75.83 (#14, Latarnik decomposition)
ours = {
"16M@10B": dict(p=17.4, blimp=70.36, arc=39.52, eff=74.99, rank="#18"),
"crown@expand": dict(p=17.4, blimp=70.53, arc=40.91, eff=75.83, rank="#14"),
"32M@10B": dict(p=31.4, blimp=70.08, arc=42.59, eff=74.53, rank="#20"),
}
fig, ax = plt.subplots(1, 2, figsize=(13, 5), dpi=130)
# Panel A: efficiency vs params (board + our progression)
bx = [r["params_M"] for r in board]; be = [r["eff"] for r in board]
ax[0].scatter(bx, be, s=40, c="#9aa0a6", alpha=.6, edgecolor="none", label="Glint board (74)")
colors = {"16M@10B": "#e08a2a", "crown@expand": "#d11a1a", "32M@10B": "#2a8ad1"}
for name, r in ours.items():
big = name == "crown@expand"
ax[0].scatter([r["p"]], [r["eff"]], s=430 if big else 230, marker="*", c=colors[name],
edgecolor="k", zorder=6, linewidth=1.2)
off = {"16M@10B": (8, -20), "crown@expand": (10, 12), "32M@10B": (12, -6)}
for name, r in ours.items():
ax[0].annotate(f'{name} eff {r["eff"]:.1f} {r["rank"]}', (r["p"], r["eff"]),
textcoords="offset points", xytext=off[name],
fontsize=8, fontweight="bold" if name == "crown@expand" else "normal", color=colors[name])
best = max(board, key=lambda r: r["eff"])
ax[0].annotate(f'#1 {best["name"][:14]} eff {best["eff"]:.1f}', (best["params_M"], best["eff"]),
textcoords="offset points", xytext=(-4, -26), fontsize=7, color="#1864ab")
ax[0].annotate("expanded corpus: #18 -> #14\n(ARC +1.39; BLiMP capped ~70.5)", (0.03, 0.05),
xycoords="axes fraction", fontsize=8.5, color="#555")
ax[0].set_xscale("log"); ax[0].set_xlabel("parameters (M, log)"); ax[0].set_ylabel("efficiency")
ax[0].set_title("Where we are: efficiency vs params (board rank metric)", fontsize=10)
ax[0].grid(alpha=.3, which="both"); ax[0].legend(fontsize=8, loc="lower right")
# Panel B: 16M token scan (BLiMP plateau, ARC climb)
tok = [3.2, 6, 10, 16]
blimp = [67.40, 68.92, 70.36, 70.53]
arc = [38.22, 39.10, 39.52, 40.91]
ax[1].plot(tok, blimp, "o-", color="#2c6fbb", lw=2, label="BLiMP")
ax[1].plot(tok, arc, "s-", color="#d1662a", lw=2, label="ARC-Easy")
for x, y in zip(tok, blimp): ax[1].annotate(f"{y:.1f}", (x, y), textcoords="offset points", xytext=(0, 7), ha="center", fontsize=8)
for x, y in zip(tok, arc): ax[1].annotate(f"{y:.1f}", (x, y), textcoords="offset points", xytext=(0, -14), ha="center", fontsize=8)
ax[1].axvspan(10, 16, color="#2c6fbb", alpha=.06)
ax[1].annotate("BLiMP plateau\n(data-lever exhausted)", (13, 71.3), fontsize=8, ha="center", color="#2c6fbb")
ax[1].annotate("ARC still climbing\n-> ARC-MIX lever", (13, 37.6), fontsize=8, ha="center", color="#d1662a")
ax[1].set_xlabel("training tokens (B)"); ax[1].set_ylabel("Glint score (%)")
ax[1].set_title("16M token scan: BLiMP saturates, ARC is the lever", fontsize=10)
ax[1].grid(alpha=.3); ax[1].legend(fontsize=8, loc="center right")
fig.suptitle("GoLLeM-v5 progress: 16M @ expanded corpus -> board #14 (ARC-driven)", fontsize=12, y=1.02)
fig.tight_layout()
out = "C:/Projekty/datasets/gollem-v5-models/progress_v5.png"
fig.savefig(out, bbox_inches="tight")
print("saved", out)