AI / scripts /input.py
shsplas's picture
Upload 15 files
c5f49b9 verified
Raw
History Blame Contribute Delete
2.88 kB
import os
import sys
import time
import argparse
import subprocess
from datetime import datetime
def parse_args():
p = argparse.ArgumentParser(description="Jarvis training launcher")
p.add_argument("--steps", type=int, default=1000, help="How many steps to run from current checkpoint.")
p.add_argument("--background", action="store_true", help="Run training in background and return immediately.")
p.add_argument("--prepare-data", action="store_true", help="Rebuild data files before launch.")
p.add_argument("--ckpt", default="cpu_gpt_jarvis_scratch.pth")
p.add_argument("--best", default="cpu_gpt_jarvis_scratch_best.pth")
p.add_argument("--metrics", default="cpu_gpt_jarvis_scratch_metrics.csv")
p.add_argument("--eval-every", type=int, default=100)
p.add_argument("--save-every", type=int, default=200)
p.add_argument("--sample-every", type=int, default=200)
p.add_argument("--warmup-steps", type=int, default=120)
p.add_argument("--tail", action="store_true", help="Tail the latest log after launch.")
return p.parse_args()
def latest_log():
logs = [f for f in os.listdir(".") if f.startswith("train_") and f.endswith(".log")]
if not logs:
return None
logs.sort(key=lambda x: os.path.getmtime(x), reverse=True)
return logs[0]
def tail_file(path, lines=40, refresh=3):
print(f"Tailing {path} (Ctrl+C to stop)...")
with open(path, "r", encoding="utf-8", errors="ignore") as f:
while True:
data = f.readlines()
os.system("cls" if os.name == "nt" else "clear")
print("".join(data[-lines:]))
time.sleep(refresh)
def main():
args = parse_args()
run_id = datetime.now().strftime("%Y%m%d_%H%M%S")
out_log = f"train_{run_id}.log"
err_log = f"train_{run_id}.err"
cmd = [
sys.executable,
"-u",
"train.py",
"--run-steps",
str(args.steps),
"--ckpt-path",
args.ckpt,
"--best-path",
args.best,
"--metrics-csv",
args.metrics,
"--eval-every",
str(args.eval_every),
"--save-every",
str(args.save_every),
"--sample-every",
str(args.sample_every),
"--warmup-steps",
str(args.warmup_steps),
]
if args.prepare_data:
cmd.append("--prepare-data")
if args.background:
with open(out_log, "w", encoding="utf-8") as out, open(err_log, "w", encoding="utf-8") as err:
proc = subprocess.Popen(cmd, stdout=out, stderr=err)
print(f"Started background training PID={proc.pid}")
print(f"stdout: {out_log}")
print(f"stderr: {err_log}")
if args.tail:
tail_file(out_log)
else:
print("Running:", " ".join(cmd))
subprocess.run(cmd, check=False)
if __name__ == "__main__":
main()