File size: 1,190 Bytes
4397e12
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
"""One-screen status of the pipeline and a training run.
Usage: source env.sh && $TA_PY scripts/status.py [run_dir]   (default: $TA_DATA/runs/main)"""
import glob
import json
import os
import sys

from tiny_agent.text import DATA

run = sys.argv[1] if len(sys.argv) > 1 else f"{DATA}/runs/main"
pl = f"{DATA}/logs/pipeline.log"
if os.path.exists(pl):
    print("pipeline:")
    for l in open(pl).read().splitlines()[-12:]:
        print("  " + l)
lj = f"{run}/log.jsonl"
if not os.path.exists(lj):
    sys.exit(f"no log yet at {lj}")
recs = [json.loads(l) for l in open(lj)]
last = recs[-1]
args = json.load(open(f"{run}/meta.json")) if os.path.exists(f"{run}/meta.json") else {}
print(f"\nrun {run}")
print(f"  step {last['step']}  tokens {last['tokens']/1e9:.3f}B  loss {last['loss']}  lr_mult {last['lr_mult']}  "
      f"tok/s {last['tok_s']}  elapsed {last['elapsed_min']/60:.1f}h")
vals = [r for r in recs if "val" in r]
for r in vals[-4:]:
    print(f"  val @ {r['tokens']/1e9:.2f}B: " + " ".join(f"{k}={v:.3f}" for k, v in sorted(r["val"].items())))
snaps = sorted(glob.glob(f"{run}/snap_*.pt"))
print(f"  snapshots: {', '.join(os.path.basename(s) for s in snaps[-6:]) or 'none'}")