MCPcopy Create free account
hub / github.com/bitsandbytes-foundation/bitsandbytes / GlobalOptimManager

Class GlobalOptimManager

bitsandbytes/optim/optimizer.py:26–114  ·  view source on GitHub ↗

A global optimizer manager for enabling custom optimizer configs.

Source from the content-addressed store, hash-verified

24
25
26class GlobalOptimManager:
27 """
28 A global optimizer manager for enabling custom optimizer configs.
29 """
30
31 _instance = None
32
33 def __init__(self):
34 raise RuntimeError("Call get_instance() instead")
35
36 def initialize(self):
37 self.pid2config = {}
38 self.index2config = {}
39 self.optimizer = None
40 self.uses_config_override = False
41 self.module_weight_config_triple = []
42
43 @classmethod
44 def get_instance(cls):
45 if cls._instance is None:
46 cls._instance = cls.__new__(cls)
47 cls._instance.initialize()
48 return cls._instance
49
50 def register_parameters(self, params):
51 param_groups = list(params)
52 if not isinstance(param_groups[0], dict):
53 param_groups = [{"params": param_groups}]
54
55 for group_index, group in enumerate(param_groups):
56 for p_index, p in enumerate(group["params"]):
57 if id(p) in self.pid2config:
58 self.index2config[(group_index, p_index)] = self.pid2config[id(p)]
59
60 def override_config(self, parameters, key=None, value=None, key_value_dict=None):
61 """
62 Override initial optimizer config with specific hyperparameters.
63
64 The key-values of the optimizer config for the input parameters are overridden
65 This can be both, optimizer parameters like `betas` or `lr`, or it can be
66 8-bit specific parameters like `optim_bits`.
67
68 Arguments:
69 parameters (`torch.Tensor` or `list(torch.Tensors)`):
70 The input parameters.
71 key (`str`):
72 The hyperparameter to override.
73 value:
74 The hyperparameter value.
75 key_value_dict (`dict`):
76 A dictionary with multiple key-values to override.
77
78 Example:
79
80 ```py
81 import torch
82 import bitsandbytes as bnb
83

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected