GradScaler

    GradScaler用于动态图模式下的”自动混合精度”的训练。它控制loss的缩放比例,有助于避免浮点数溢出的问题。这个类具有 scale()minimize() 两个方法。

    scale() 用于让loss乘上一个缩放的比例。 与 optimizer.minimize() 类似,执行参数的更新。

    通常,GradScaler和 paddle.amp.auto_cast 一起使用,来实现动态图模式下的”自动混合精度”。

    参数:

    • enable (bool, 可选) - 是否使用loss scaling。默认值为True。

    • init_loss_scaling (float, 可选) - 初始loss scaling因子。默认值为32768.0。

    • incr_ratio (float, 可选) - 增大loss scaling时使用的乘数。默认值为2.0。

    • decr_every_n_nan_or_inf (int, 可选) - 累计出现n个steps的梯度为nan或者inf时,减小loss scaling。默认值为2。

    • use_dynamic_loss_scaling (bool, 可选) - 是否使用动态的loss scaling。如果不使用,则使用固定的loss scaling;如果使用,则会动态更新loss scaling。默认值为True。

    返回:

    一个GradScaler对象。

    代码示例

    scale ( var )

    将Tensor乘上缩放因子,返回缩放后的输出。 如果这个 的实例不使用loss scaling,则返回的输出将保持不变。

    参数:

    代码示例:

    minimize ( optimizer, \args, **kwargs* )

    这个函数与 optimizer.minimize() 类似,用于执行参数更新。 如果参数缩放后的梯度包含NAN或者INF,则跳过参数更新。否则,首先让缩放过梯度的参数取消缩放,然后更新参数。 最终,更新loss scaling的比例。

    参数:

    • optimizer (Optimizer) - 用于更新参数的优化器。

    • args - 参数,将会被传递给 optimizer.minimize()

    • kwargs - 关键词参数,将会被传递给 。

    代码示例: