Spaces:
Running on Zero
Running on Zero
| import os | |
| import wandb | |
| from omegaconf import OmegaConf | |
| from .. import dist as dist_utils | |
| class TrainPlatform: | |
| def __init__(self, save_dir): | |
| pass | |
| def report_scalar(self, name, value, iteration, group_name=None): | |
| pass | |
| def report_args(self, args, name): | |
| pass | |
| def close(self): | |
| pass | |
| class TensorboardPlatform(TrainPlatform): | |
| def __init__(self, save_dir): | |
| from torch.utils.tensorboard import SummaryWriter | |
| self.writer = SummaryWriter(log_dir=save_dir) | |
| def report_scalar(self, name, value, iteration, group_name=None): | |
| self.writer.add_scalar(f"{group_name}/{name}" if group_name else name, value, iteration) | |
| def close(self): | |
| self.writer.close() | |
| class WandbPlatform(TrainPlatform): | |
| def __init__(self, save_dir): | |
| if not dist_utils.is_main_process(): | |
| return | |
| self.run = wandb.init( | |
| dir=save_dir, | |
| project='BihandMotionGeneration_FINAL' | |
| ) | |
| self.run.log_code(name='source_code') | |
| def report_scalar(self, name, value, iteration, group_name=None): | |
| if not dist_utils.is_main_process(): | |
| return | |
| log_key = f"{group_name}/{name}" if group_name else name | |
| wandb.log({log_key:value}, step=iteration) | |
| def report_args(self, args, name): | |
| if not dist_utils.is_main_process(): | |
| return | |
| try: | |
| args_dict = OmegaConf.to_container(args, resolve=True) | |
| wandb.config.update({name: args_dict}) | |
| except Exception as e: | |
| raise ValueError(f'WandbPlatform: Could not log args {name}. Error: {e}') | |
| def report_video(self, name, video_path, video_format, group_name=None): | |
| if not dist_utils.is_main_process(): | |
| return | |
| log_key = f"{group_name}/{name}" if group_name else name | |
| wandb.log({ | |
| log_key: wandb.Video(video_path, format=video_format) | |
| }) | |
| def close(self): | |
| if not dist_utils.is_main_process(): | |
| return | |
| if self.run: | |
| wandb.finish() | |
| self.run = None | |
| class NoPlatform(TrainPlatform): | |
| def __init__(self, save_dir): | |
| pass | |