11import datetime
22import os
3+ from slime .utils .misc import SingletonMeta
34
45try :
56 from torch .utils .tensorboard import SummaryWriter
67except :
78 SummaryWriter = None
89
910
10- class _TensorboardAdapter :
11+ class _TensorboardAdapter ( metaclass = SingletonMeta ) :
1112 _instance = None
1213 _writer = None
1314
@@ -22,20 +23,16 @@ class _TensorboardAdapter:
2223 # tb.log({"Accuracy": 0.9}, step=1)
2324 """
2425
25- def __new__ ( cls , args ):
26+ def __init__ ( self , args ):
2627 assert args .use_tensorboard , f"{ args .use_tensorboard = } "
2728 tb_project_name = args .tb_project_name
2829 tb_experiment_name = args .tb_experiment_name
29- if cls ._instance is None :
30- cls ._instance = super (_TensorboardAdapter , cls ).__new__ (cls )
31- # Initialize if parameters are provided during first creation
32- if tb_project_name is not None or os .environ .get ("TENSORBOARD_DIR" , None ):
33- if tb_project_name is not None and tb_experiment_name is None :
34- tb_experiment_name = datetime .datetime .now ().strftime ("%Y%m%d_%H%M%S" )
35- cls ._instance ._initialize (tb_project_name , tb_experiment_name )
36- else :
37- raise ValueError ("tb_project_name and tb_experiment_name, or TENSORBOARD_DIR are required" )
38- return cls ._instance
30+ if tb_project_name is not None or os .environ .get ("TENSORBOARD_DIR" , None ):
31+ if tb_project_name is not None and tb_experiment_name is None :
32+ tb_experiment_name = datetime .datetime .now ().strftime ("%Y%m%d_%H%M%S" )
33+ self ._instance ._initialize (tb_project_name , tb_experiment_name )
34+ else :
35+ raise ValueError ("tb_project_name and tb_experiment_name, or TENSORBOARD_DIR are required" )
3936
4037 def _initialize (self , tb_project_name , tb_experiment_name ):
4138 """Actual initialization logic"""
0 commit comments