summaryrefslogtreecommitdiff
path: root/experiments
diff options
context:
space:
mode:
authorYurenHao0426 <Blackhao0426@gmail.com>2026-07-27 14:36:08 -0500
committerYurenHao0426 <Blackhao0426@gmail.com>2026-07-27 14:36:08 -0500
commit08554657946e54d8d908a2866e82504e9b194617 (patch)
treefe4b854785a8b71d5a68b39bb804f19819faabae /experiments
parent113abad636b4e14f963ab0243b5839ca19386d9b (diff)
analysis: retain ResNet selector failures
Diffstat (limited to 'experiments')
-rw-r--r--experiments/analyze_resnet_crossover_p1.py47
1 files changed, 37 insertions, 10 deletions
diff --git a/experiments/analyze_resnet_crossover_p1.py b/experiments/analyze_resnet_crossover_p1.py
index 6fe34c9..72a46e6 100644
--- a/experiments/analyze_resnet_crossover_p1.py
+++ b/experiments/analyze_resnet_crossover_p1.py
@@ -91,7 +91,30 @@ def audit_job(job, expected_source):
hardware = manifest["hardware_lock"]
assert hardware["physical_gpu_index"] in (5, 7)
assert hardware["physical_gpu_uuid"]
- assert manifest["status"] == "completed"
+ common = {
+ "method": job["method"],
+ "rate": job["rate"],
+ "experiment_name": job["experiment_name"],
+ "manifest": os.path.relpath(manifest_path, ROOT),
+ "status": manifest["status"],
+ "output_sha256": manifest["output_sha256"],
+ "driver_wall_seconds": manifest["driver_wall_seconds"],
+ "physical_gpu_index": hardware["physical_gpu_index"],
+ "physical_gpu_uuid": hardware["physical_gpu_uuid"],
+ }
+ if manifest["status"] != "completed":
+ assert manifest["status"] in {
+ "timeout", "nonzero_exit", "missing_output"}
+ return {
+ **common,
+ "finite": False,
+ "best_validation_accuracy": None,
+ "final_validation_accuracy": None,
+ "final_validation_loss": None,
+ "best_epoch": None,
+ "epochs_completed": None,
+ "all_training_losses_finite": False,
+ }
assert manifest["output_exists"] is True
assert manifest["output_sha256"] == sha256(job["output"])
record = read_json(job["output"])
@@ -115,21 +138,25 @@ def audit_job(job, expected_source):
"sdil": "kp_traffic",
}[job["method"]]
assert record["args"]["mode"] == expected_mode
+ metrics = history_metrics(record, job["method"])
return {
- "method": job["method"],
- "rate": job["rate"],
- "experiment_name": job["experiment_name"],
- "manifest": os.path.relpath(manifest_path, ROOT),
- "output_sha256": manifest["output_sha256"],
- "driver_wall_seconds": manifest["driver_wall_seconds"],
- **history_metrics(record, job["method"]),
+ **common,
+ "finite": (
+ metrics["all_training_losses_finite"]
+ and math.isfinite(metrics["final_validation_loss"])),
+ **metrics,
}
def choose(candidates):
return max(candidates, key=lambda row: (
- row["best_validation_accuracy"],
- int(math.isfinite(row["final_validation_loss"])),
+ int(row["finite"]),
+ (
+ row["best_validation_accuracy"]
+ if row["best_validation_accuracy"] is not None else -math.inf),
+ int(
+ row["final_validation_loss"] is not None
+ and math.isfinite(row["final_validation_loss"])),
-row["rate"],
))