File size: 1,568 Bytes
bca45b0 | 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 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | #!/usr/bin/env python3
"""Upload an already-complete local evaluation result to SwanLab."""
from __future__ import annotations
import argparse
import json
from pathlib import Path
import swanlab
def main() -> None:
parser = argparse.ArgumentParser()
parser.add_argument("--result-dir", type=Path, required=True)
parser.add_argument("--run-name", required=True)
parser.add_argument("--project", default="unified-model")
args = parser.parse_args()
result_dir = args.result_dir.resolve()
payload = json.loads((result_dir / "metrics.json").read_text(encoding="utf-8"))
metadata = payload["metadata"]
metrics = payload["metrics"]
benchmark = str(metadata["benchmark"])
run = swanlab.init(
project=args.project,
name=args.run_name,
log_dir=str(result_dir / "swanlab_retry"),
config=metadata,
tags=[benchmark, "evaluation", "checkpoint-7000", "8GPU"],
description=f"Judge-free exact-match evaluation on {benchmark}; uploaded from validated local artifacts.",
)
swanlab.log(metrics, step=int(metadata["checkpoint_step"]))
status = {
"enabled": True,
"retry_upload": True,
"run_id": getattr(run, "id", None),
"run_url": str(getattr(run, "url", "") or "") or None,
}
swanlab.finish()
(result_dir / "swanlab.json").write_text(
json.dumps(status, ensure_ascii=False, indent=2, sort_keys=True) + "\n",
encoding="utf-8",
)
print(json.dumps(status, sort_keys=True))
if __name__ == "__main__":
main()
|