in diffq/base.py [0:0]
def _find_params(self):
min_params = self.min_size * 2**20 // 4
previous = {}
for module_name, module in self.model.named_modules():
if isinstance(module, torch.nn.RNNBase):
self._rnns.append(module)
for name, param in list(module.named_parameters(recurse=False)):
full_name = f"{module_name}.{name}"
matched = False
for pattern in self.exclude:
if fnmatch(full_name, pattern) or fnmatch(name, pattern):
matched = True
break
if param.numel() <= min_params or matched:
if id(param) in previous:
continue
if self.detect_bound:
previous[id(param)] = None
if self.float16:
self._float16.append(param)
else:
self._others.append(param)
else:
qparam = self._register_param(name, param, module, previous.get(id(param)))
if self.detect_bound:
previous[id(param)] = qparam
self._qparams.append(qparam)