|
|
""" |
|
|
Lightweight Metrics container. |
|
|
|
|
|
Benefits: |
|
|
- Facilitates addition/removal of fields without breaking callers. |
|
|
- Better isolation of responsibilities around code exporting metrics for experiment tracking. |
|
|
""" |
|
|
|
|
|
from dataclasses import dataclass, asdict |
|
|
from typing import Any, Dict |
|
|
|
|
|
|
|
|
@dataclass(frozen=True) |
|
|
class Metrics: |
|
|
|
|
|
exact_score: float |
|
|
f1_score: float |
|
|
total_num_instances: int |
|
|
|
|
|
def export_for_exp_tracking(self) -> Dict[str, Any]: |
|
|
""" |
|
|
Export a dict for experiment artifacts. Skips keys that are None. |
|
|
""" |
|
|
raw = asdict(self) |
|
|
return {k: v for k, v in raw.items() if v is not None} |
|
|
|