kaveh commited on
Commit
5004189
·
1 Parent(s): b7b2a38

eval: skip unfinished runs; PCI GPU order

Browse files
experiments/evaluate.py CHANGED
@@ -15,6 +15,7 @@ Outputs (experiments/results/eval/ by default; existing rows of other models are
15
  """
16
  import argparse
17
  import glob
 
18
  import os
19
  import time
20
 
@@ -63,8 +64,13 @@ def stage1_model(path, device):
63
  def run_models(device, pattern):
64
  out = {}
65
  for p in sorted(glob.glob(pattern)):
 
66
  ck = torch.load(p, map_location="cpu", weights_only=False)
67
  cfg = ck["config"]
 
 
 
 
68
  g = build_generator(**cfg); g.load_state_dict(ck["generator_state_dict"], strict=True)
69
  name = os.path.basename(os.path.dirname(p))
70
  out[name] = dict(model=g.to(device).eval(), kind="singlecell", in_channels=cfg["in_channels"], tanh=True,
 
15
  """
16
  import argparse
17
  import glob
18
+ import json
19
  import os
20
  import time
21
 
 
64
  def run_models(device, pattern):
65
  out = {}
66
  for p in sorted(glob.glob(pattern)):
67
+ h = os.path.join(os.path.dirname(p), "history.json")
68
  ck = torch.load(p, map_location="cpu", weights_only=False)
69
  cfg = ck["config"]
70
+ done = os.path.exists(h) and len(json.load(open(h))) >= cfg.get("epochs", 0)
71
+ if not done and not os.environ.get("S2F_EVAL_UNFINISHED"):
72
+ print(f" skipping unfinished run {os.path.basename(os.path.dirname(p))} (set S2F_EVAL_UNFINISHED=1 to include)")
73
+ continue
74
  g = build_generator(**cfg); g.load_state_dict(ck["generator_state_dict"], strict=True)
75
  name = os.path.basename(os.path.dirname(p))
76
  out[name] = dict(model=g.to(device).eval(), kind="singlecell", in_channels=cfg["in_channels"], tanh=True,
experiments/run_all.py CHANGED
@@ -52,7 +52,7 @@ def gpu_queue(queue, gpus, num_workers, extra=()):
52
  run_dir = os.path.join(RUNS_DIR, f"{v}_seed{seed}")
53
  os.makedirs(run_dir, exist_ok=True)
54
  log = open(os.path.join(run_dir, "train.log"), "a")
55
- env = dict(os.environ, CUDA_VISIBLE_DEVICES=gpu, PYTHONUNBUFFERED="1")
56
  cmd = [sys.executable, "-m", "experiments.train", "--variant", v, "--seed", seed, "--resume",
57
  "--num-workers", num_workers] + list(extra)
58
  running[gpu] = (subprocess.Popen(cmd, cwd=S2F_ROOT, env=env, stdout=log, stderr=subprocess.STDOUT), v, seed, log)
 
52
  run_dir = os.path.join(RUNS_DIR, f"{v}_seed{seed}")
53
  os.makedirs(run_dir, exist_ok=True)
54
  log = open(os.path.join(run_dir, "train.log"), "a")
55
+ env = dict(os.environ, CUDA_DEVICE_ORDER="PCI_BUS_ID", CUDA_VISIBLE_DEVICES=gpu, PYTHONUNBUFFERED="1") # same numbering as nvidia-smi
56
  cmd = [sys.executable, "-m", "experiments.train", "--variant", v, "--seed", seed, "--resume",
57
  "--num-workers", num_workers] + list(extra)
58
  running[gpu] = (subprocess.Popen(cmd, cwd=S2F_ROOT, env=env, stdout=log, stderr=subprocess.STDOUT), v, seed, log)