Spaces:
Running
Running
File size: 2,019 Bytes
99aac1c | 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 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 | from __future__ import annotations
import hashlib
import json
import os
import platform
import subprocess
import time
from pathlib import Path
from typing import Any
ROOT = Path(__file__).resolve().parents[1]
ARTIFACTS = ROOT / ".openresearch" / "artifacts"
def canonical_json(value: Any) -> str:
return json.dumps(value, indent=2, sort_keys=True, allow_nan=False) + "\n"
def write_json(path: Path, value: Any) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(canonical_json(value), encoding="utf-8")
def write_text(path: Path, value: str) -> None:
path.parent.mkdir(parents=True, exist_ok=True)
path.write_text(value.rstrip() + "\n", encoding="utf-8")
def sha256_file(path: Path) -> str:
digest = hashlib.sha256()
with path.open("rb") as handle:
for chunk in iter(lambda: handle.read(1024 * 1024), b""):
digest.update(chunk)
return digest.hexdigest()
def git_sha() -> str:
return subprocess.check_output(
["git", "rev-parse", "HEAD"], cwd=ROOT, text=True
).strip()
def cpu_allocation() -> dict[str, Any]:
allocation: dict[str, Any] = {
"os_cpu_count": os.cpu_count(),
"affinity_count": None,
"cgroup_quota_cores": None,
}
if hasattr(os, "sched_getaffinity"):
allocation["affinity_count"] = len(os.sched_getaffinity(0))
cpu_max = Path("/sys/fs/cgroup/cpu.max")
if cpu_max.exists():
quota, period = cpu_max.read_text(encoding="utf-8").split()
if quota != "max":
allocation["cgroup_quota_cores"] = int(quota) / int(period)
return allocation
def provenance(started: float, seed: int) -> dict[str, Any]:
return {
"git_sha": git_sha(),
"seed": seed,
"python": platform.python_version(),
"platform": platform.platform(),
"cpu_allocation": cpu_allocation(),
"runtime_seconds": time.perf_counter() - started,
"cuda_visible": False,
"device_policy": "CPU only",
}
|