@@ -270,14 +270,17 @@ class PluginManager:
270
270
plugins : OrderedDict [str , BasePlugin ] = collections .OrderedDict ()
271
271
272
272
_instance = None
273
+ _cfg = None
273
274
274
275
def __new__ (cls ):
275
276
"""
276
277
Creates a new instance of PluginManager if it doesn't exist yet.
277
278
"""
278
279
if cls ._instance is None :
279
280
cls ._instance = super (PluginManager , cls ).__new__ (cls )
280
- cls ._instance .plugins = collections .OrderedDict ()
281
+ cls ._instance .plugins : OrderedDict [str , BasePlugin ] = (
282
+ collections .OrderedDict ()
283
+ )
281
284
return cls ._instance
282
285
283
286
@staticmethod
@@ -290,6 +293,14 @@ def get_instance() -> "PluginManager":
290
293
PluginManager ()
291
294
return PluginManager ._instance # type: ignore
292
295
296
+ @property
297
+ def cfg (self ):
298
+ return self ._cfg
299
+
300
+ @cfg .setter
301
+ def cfg (self , cfg ):
302
+ self ._cfg = cfg
303
+
293
304
def register (self , plugin_name : str ):
294
305
"""
295
306
Registers a new plugin by its name.
@@ -409,37 +420,35 @@ def get_trainer_cls(self, cfg):
409
420
return trainer_cls
410
421
return None
411
422
412
- def create_optimizer (self , cfg , trainer ):
423
+ def create_optimizer (self , trainer ):
413
424
"""
414
425
Calls the create_optimizer method of all registered plugins and returns the first non-None optimizer.
415
426
416
427
Parameters:
417
- cfg (dict): The configuration for the plugins.
418
428
trainer (object): The trainer object for training.
419
429
420
430
Returns:
421
431
object: The created optimizer, or None if none was found.
422
432
"""
423
433
for plugin in self .plugins .values ():
424
- optimizer = plugin .create_optimizer (cfg , trainer )
434
+ optimizer = plugin .create_optimizer (self . cfg , trainer )
425
435
if optimizer is not None :
426
436
return optimizer
427
437
return None
428
438
429
- def create_lr_scheduler (self , cfg , trainer , optimizer ):
439
+ def create_lr_scheduler (self , trainer , optimizer ):
430
440
"""
431
441
Calls the create_lr_scheduler method of all registered plugins and returns the first non-None scheduler.
432
442
433
443
Parameters:
434
- cfg (dict): The configuration for the plugins.
435
444
trainer (object): The trainer object for training.
436
445
optimizer (object): The optimizer for training.
437
446
438
447
Returns:
439
448
object: The created learning rate scheduler, or None if none was found.
440
449
"""
441
450
for plugin in self .plugins .values ():
442
- scheduler = plugin .create_lr_scheduler (cfg , trainer , optimizer )
451
+ scheduler = plugin .create_lr_scheduler (self . cfg , trainer , optimizer )
443
452
if scheduler is not None :
444
453
return scheduler
445
454
return None
0 commit comments