Spaces:
Sleeping
Sleeping
import numpy as np | |
from collections import deque | |
from ditk import logging | |
from time import time | |
from ding.framework import task | |
from typing import TYPE_CHECKING | |
if TYPE_CHECKING: | |
from ding.framework.context import Context | |
def epoch_timer(print_per: int = 1, smooth_window: int = 10): | |
""" | |
Overview: | |
Print time cost of each epoch. | |
Arguments: | |
- print_per (:obj:`int`): Print each N epoch. | |
- smooth_window (:obj:`int`): The window size to smooth the mean. | |
""" | |
records = deque(maxlen=print_per * smooth_window) | |
def _epoch_timer(ctx: "Context"): | |
start = time() | |
yield | |
time_cost = time() - start | |
records.append(time_cost) | |
if ctx.total_step % print_per == 0: | |
logging.info( | |
"[Epoch Timer][Node:{:>2}]: Cost: {:.2f}ms, Mean: {:.2f}ms".format( | |
task.router.node_id or 0, time_cost * 1000, | |
np.mean(records) * 1000 | |
) | |
) | |
return _epoch_timer | |