mirror of
https://github.com/velocitatem/PHANTOM.git
synced 2026-05-31 08:33:36 +00:00
refactoring training spc setup and benchmarking
This commit is contained in:
57
engine/telemetry/metrics.py
Normal file
57
engine/telemetry/metrics.py
Normal file
@@ -0,0 +1,57 @@
|
||||
from __future__ import annotations
|
||||
|
||||
from typing import Any, Mapping
|
||||
|
||||
from ..spec import TrainSpec
|
||||
|
||||
|
||||
_ALIASES = {
|
||||
"train/reward": "train/reward_mean",
|
||||
"train/revenue": "train/revenue_mean",
|
||||
"train/dqn_loss": "train/loss",
|
||||
"eval/reward": "eval/reward_mean",
|
||||
"eval/revenue": "eval/revenue_mean",
|
||||
"train/steps_per_second": "runtime/steps_per_second",
|
||||
}
|
||||
|
||||
|
||||
def _as_float(value: Any, default: float | None = None) -> float | None:
|
||||
if value is None:
|
||||
return default
|
||||
try:
|
||||
return float(value)
|
||||
except (TypeError, ValueError):
|
||||
return default
|
||||
|
||||
|
||||
def canonicalize_metrics(raw: Mapping[str, Any], spec: TrainSpec) -> dict[str, Any]:
|
||||
metrics: dict[str, Any] = {}
|
||||
for key, value in raw.items():
|
||||
canonical = _ALIASES.get(str(key), str(key))
|
||||
if canonical in metrics and canonical != key:
|
||||
continue
|
||||
metrics[canonical] = value
|
||||
|
||||
metrics.setdefault("train/global_step", spec.runtime.total_timesteps)
|
||||
|
||||
eval_reward = _as_float(metrics.get("eval/reward_mean"), 0.0) or 0.0
|
||||
eval_revenue = _as_float(metrics.get("eval/revenue_mean"), 0.0) or 0.0
|
||||
metrics["objective/score"] = eval_reward + spec.study.revenue_weight * eval_revenue
|
||||
|
||||
margin_mean = _as_float(metrics.get("eval/margin_mean"), None)
|
||||
if margin_mean is not None:
|
||||
metrics["objective/constraint_margin"] = margin_mean - spec.env.margin_floor
|
||||
|
||||
coi_level = _as_float(metrics.get("eval/coi_level_mean"), None)
|
||||
metrics["objective/coi_preserved"] = 0.0 if coi_level is None else coi_level
|
||||
|
||||
metrics["study/alpha"] = spec.study.alpha
|
||||
metrics["study/lambda_coi"] = spec.study.lambda_coi
|
||||
metrics["study/robust_radius"] = spec.study.robust_radius
|
||||
metrics["study/info_value"] = spec.study.info_value
|
||||
|
||||
metrics["runtime/backend"] = spec.runtime.backend
|
||||
metrics["runtime/device"] = spec.runtime.device
|
||||
metrics["runtime/seed"] = spec.runtime.seed
|
||||
|
||||
return metrics
|
||||
Reference in New Issue
Block a user