energy_monitor
energy_monitor
¶
EnergyMonitor ABC — multi-vendor energy measurement with hardware counters.
Classes¶
EnergyVendor
¶
Bases: str, Enum
Supported energy measurement vendors.
EnergySample
dataclass
¶
EnergySample(
energy_joules: float = 0.0,
mean_power_watts: float = 0.0,
peak_power_watts: float = 0.0,
duration_seconds: float = 0.0,
num_snapshots: int = 0,
mean_utilization_pct: float = 0.0,
peak_utilization_pct: float = 0.0,
mean_memory_used_gb: float = 0.0,
peak_memory_used_gb: float = 0.0,
mean_temperature_c: float = 0.0,
peak_temperature_c: float = 0.0,
vendor: str = "",
device_name: str = "",
device_count: int = 0,
energy_method: str = "",
cpu_energy_joules: float = 0.0,
gpu_energy_joules: float = 0.0,
dram_energy_joules: float = 0.0,
ane_energy_joules: float = 0.0,
)
Aggregated energy metrics over an inference bracket.
Superset of GpuSample — adds vendor, device info, energy method,
and per-component breakdown (CPU, GPU, DRAM, ANE).
EnergyMonitor
¶
Bases: ABC
Abstract base class for energy measurement backends.
Each vendor implementation probes for hardware support at init,
exposes an available() class method, and provides a sample()
context manager that measures energy over a code block.
Methods:¶
available
abstractmethod
staticmethod
¶
vendor
abstractmethod
¶
vendor() -> EnergyVendor
energy_method
abstractmethod
¶
sample
abstractmethod
¶
sample() -> Generator[EnergySample, None, None]
Context manager that measures energy during the enclosed block.
Yields an EnergySample that is populated when the block exits.
Source code in src/diapason/telemetry/energy_monitor.py
snapshot
¶
snapshot() -> EnergySample
Return an instantaneous energy reading without start/stop bracket.
Subclasses should override to provide actual readings. Default returns an empty sample.
Functions:¶
create_energy_monitor
¶
create_energy_monitor(
poll_interval_ms: int = 50,
prefer_vendor: Optional[str] = None,
) -> Optional[EnergyMonitor]
Factory — auto-detect and return the best available EnergyMonitor.
Detection order: NVIDIA > AMD > Apple > CPU RAPL. If prefer_vendor is set, try that vendor first.
Returns None if no energy monitoring is available.