From 4856f33c47ae490d6688eef50db50a3d69766406 Mon Sep 17 00:00:00 2001 From: YurenHao0426 Date: Tue, 21 Jul 2026 06:41:09 -0500 Subject: feat: version narrow depth-scaling experiments --- experiments/run.py | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) (limited to 'experiments/run.py') diff --git a/experiments/run.py b/experiments/run.py index 153ca41..3ad0bdd 100644 --- a/experiments/run.py +++ b/experiments/run.py @@ -13,6 +13,7 @@ Everything is JSON-logged for later plotting. import argparse import json import os +import subprocess import sys import time @@ -25,6 +26,21 @@ from sdil import probes from sdil.data import get_dataset, onehot, make_hierarchical, make_teacher_student +def code_provenance(): + """Best-effort source revision metadata for reproducible result files.""" + root = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + try: + commit = subprocess.run( + ["git", "rev-parse", "HEAD"], cwd=root, check=True, + capture_output=True, text=True).stdout.strip() + dirty = bool(subprocess.run( + ["git", "status", "--porcelain", "--untracked-files=no"], cwd=root, + check=True, capture_output=True, text=True).stdout.strip()) + return {"git_commit": commit, "git_dirty": dirty} + except (OSError, subprocess.CalledProcessError): + return {"git_commit": None, "git_dirty": None} + + def build(args, device): sizes = [args.n_in] + [args.width] * args.depth + [10] if args.mode == "bp": @@ -66,7 +82,7 @@ def train(args): px, py = px[:args.probe_bs].to(device), py[:args.probe_bs].to(device) poh = onehot(py, n_out, device=device) - log = {"args": vars(args), "steps": [], "final": {}} + log = {"args": vars(args), "provenance": code_provenance(), "steps": [], "final": {}} step = 0 prev_error = None t0 = time.time() -- cgit v1.2.3