Add trace and power fields to EvalResult and RunSummary (Task 5)

- Add trace_steps and trace_energy_joules to EvalResult
- Add avg_power_watts, total_input_tokens, total_output_tokens, and
  trace_step_type_stats to RunSummary
- Add 3 tests covering new field defaults and setters

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Jon Saad-Falcon
2026-02-28 07:20:21 +00:00
co-authored by Claude Opus 4.6
parent 392218735d
commit b9a89f1ac7
2 changed files with 35 additions and 0 deletions
+6
View File
@@ -44,6 +44,8 @@ class EvalResult:
energy_per_output_token_joules: float = 0.0
throughput_per_watt: float = 0.0
mean_itl_ms: float = 0.0
trace_steps: int = 0
trace_energy_joules: float = 0.0
@dataclass(slots=True)
@@ -122,6 +124,10 @@ class RunSummary:
warmup_samples_excluded: int = 0
steady_state_reached: bool = False
energy_method: str = ""
avg_power_watts: float = 0.0
total_input_tokens: int = 0
total_output_tokens: int = 0
trace_step_type_stats: Dict[str, Dict[str, float]] = field(default_factory=dict)
# ---------------------------------------------------------------------------
+29
View File
@@ -209,6 +209,35 @@ class TestRunSummary:
# ---------------------------------------------------------------------------
class TestEvalResultTraceFields:
def test_trace_fields_exist(self):
r = EvalResult(record_id="test", model_answer="hi")
assert r.trace_steps == 0
assert r.trace_energy_joules == 0.0
def test_trace_fields_set(self):
r = EvalResult(
record_id="test", model_answer="hi",
trace_steps=5, trace_energy_joules=100.0,
)
assert r.trace_steps == 5
assert r.trace_energy_joules == 100.0
class TestRunSummaryTraceFields:
def test_trace_aggregate_fields(self):
s = RunSummary(
benchmark="test", category="test", backend="test",
model="test", total_samples=1, scored_samples=1,
correct=1, accuracy=1.0, errors=0,
mean_latency_seconds=1.0, total_cost_usd=0.0,
)
assert s.avg_power_watts == 0.0
assert s.trace_step_type_stats == {}
assert s.total_input_tokens == 0
assert s.total_output_tokens == 0
class TestMetaConfig:
def test_defaults(self):
m = MetaConfig()