__init__.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. from torch._C._monitor import * # noqa: F403
  2. from typing import TYPE_CHECKING
  3. if TYPE_CHECKING:
  4. from torch.utils.tensorboard import SummaryWriter
  5. STAT_EVENT = "torch.monitor.Stat"
  6. class TensorboardEventHandler:
  7. """
  8. TensorboardEventHandler is an event handler that will write known events to
  9. the provided SummaryWriter.
  10. This currently only supports ``torch.monitor.Stat`` events which are logged
  11. as scalars.
  12. Example:
  13. >>> # xdoctest: +REQUIRES(env:TORCH_DOCTEST_MONITOR)
  14. >>> # xdoctest: +REQUIRES(module:tensorboard)
  15. >>> from torch.utils.tensorboard import SummaryWriter
  16. >>> from torch.monitor import TensorboardEventHandler, register_event_handler
  17. >>> writer = SummaryWriter("log_dir")
  18. >>> register_event_handler(TensorboardEventHandler(writer))
  19. """
  20. def __init__(self, writer: "SummaryWriter") -> None:
  21. """
  22. Constructs the ``TensorboardEventHandler``.
  23. """
  24. self._writer = writer
  25. def __call__(self, event: Event) -> None:
  26. if event.name == STAT_EVENT:
  27. for k, v in event.data.items():
  28. self._writer.add_scalar(k, v, walltime=event.timestamp.timestamp())