from torch.utils.tensorboard import SummaryWriter from accelerate.tracking import GeneralTracker, on_main_process import os from typing import Union class TbTracker(GeneralTracker): name = "tensorboard" requires_logging_directory = True @on_main_process def __init__(self, run_name: str, logging_dir: Union[str, os.PathLike], **kwargs): super().__init__() self.run_name = run_name self.logging_dir = os.path.join(logging_dir, run_name) self.writer = SummaryWriter(self.logging_dir, **kwargs) @property def tracker(self): return self.writer @on_main_process def add_scalar(self, tag, scalar_value, **kwargs): self.writer.add_scalar(tag=tag, scalar_value=scalar_value, **kwargs) @on_main_process def add_text(self, tag, text_string, **kwargs): self.writer.add_text(tag=tag, text_string=text_string, **kwargs) @on_main_process def add_figure(self, tag, figure, **kwargs): self.writer.add_figure(tag=tag, figure=figure, **kwargs)