You can generate a progress plot (progress.png) to track how the validation Bits Per Byte (val_bpb) evolves. The visualization highlights:
- Discarded experiments: Faint background dots.
- Kept experiments: Prominent green dots representing successful improvements.
- Running best: A step line showing the 'frontier' (the best
val_bpb achieved so far).
The plot focuses on the 'interesting region'—points at or below the baseline val_bpb plus a small margin.
To generate this plot, filter out CRASH statuses, identify the baseline from the first experiment, and use matplotlib to plot the KEEP and DISCARD points along with a cumulative minimum line for the kept experiments.
import matplotlib.pyplot as plt
# Filter out crashes for plotting
valid = df[df["status"] != "CRASH"].copy()
valid = valid.reset_index(drop=True)
baseline_bpb = valid.loc[0, "val_bpb"]
# Only plot points at or below baseline (the interesting region)
below = valid[valid["val_bpb"] <= baseline_bpb + 0.0005]
# Plot discarded as faint background dots
disc = below[below["status"] == "DISCARD"]
plt.scatter(disc.index, disc["val_bpb"], c="#cccccc", s=12, alpha=0.5, label="Discarded")
# Plot kept experiments as prominent green dots
kept_v = below[below["status"] == "KEEP"]
plt.scatter(kept_v.index, kept_v["val_bpb"], c="#2ecc71", s=50, label="Kept", edgecolors="black")
# Running minimum step line
kept_mask = valid["status"] == "KEEP"
kept_idx = valid.index[kept_mask]
kept_bpb = valid.loc[kept_mask, "val_bpb"]
running_min = kept_bpb.cummin()
plt.step(kept_idx, running_min, where="post", color="#27ae60", linewidth=2, label="Running best")
plt.savefig("progress.png", dpi=150, bbox_inches="tight")