View source on GitHub

Loss scale manager uses an exponential update strategy.

Inherits From: LossScaleManager

In general, the strategy increases loss scale by a greater-than-one factor after encountering a consecutive series of steps with finite gradients; Similarly, it decreases the loss scale by a factor when the accumulated number of steps with non-finite (nan or inf) gradients are met. An update is not applied if its result is less than 1 or overflows the float32 dynamic range.

The number of finite and non-finite steps are cleared every time the loss scale is changed. The condition to decrease the loss scale is looser than to increase it since the former does not require the steps to be consecutive.

init_loss_scale A Python float. The loss scale to use at the beginning.
incr_every_n_steps Increases loss scale every n consecutive steps with finite gradients.
decr_every_n_nan_or_inf Decreases loss scale every n accumulated steps with nan or inf gradients.
incr_ratio The multiplier to use when increasing the loss scale.
decr_ratio The less-than-one-multiplier to use when decreasing the loss scale.



View source

Returns the loss scale.


View source

Updates loss scale based on if gradients are finite in current step.