MCPcopy Index your code
hub / github.com/microsoft/Cream / __call__

Method __call__

TinyViT/utils.py:306–321  ·  view source on GitHub ↗
(self, loss, optimizer, clip_grad=None, parameters=None, create_graph=False, update_grad=True)

Source from the content-addressed store, hash-verified

304 self._scaler = torch.cuda.amp.GradScaler(enabled=grad_scaler_enabled)
305
306 def __call__(self, loss, optimizer, clip_grad=None, parameters=None, create_graph=False, update_grad=True):
307 self._scaler.scale(loss).backward(create_graph=create_graph)
308 if update_grad:
309 if clip_grad is not None and clip_grad > 0.0:
310 assert parameters is not None
311 # unscale the gradients of optimizer's assigned params in-place
312 self._scaler.unscale_(optimizer)
313 norm = torch.nn.utils.clip_grad_norm_(parameters, clip_grad)
314 else:
315 self._scaler.unscale_(optimizer)
316 norm = ampscaler_get_grad_norm(parameters)
317 self._scaler.step(optimizer)
318 self._scaler.update()
319 else:
320 norm = None
321 return norm
322
323 def state_dict(self):
324 return self._scaler.state_dict()

Callers

nothing calls this directly

Calls 4

ampscaler_get_grad_normFunction · 0.70
backwardMethod · 0.45
stepMethod · 0.45
updateMethod · 0.45

Tested by

no test coverage detected