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