CANN/TensorFlow NPULossScaleOptimizer构造函数

张开发
2026/5/9 12:21:34 15 分钟阅读

分享文章

CANN/TensorFlow NPULossScaleOptimizer构造函数
NPULossScaleOptimizer构造函数【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow功能说明NPULossScaleOptimizer类的构造函数浮点计算的溢出模式为“饱和模式”的场景下用于在混合精度训练中使能Loss Scaling。Loss Scaling解决了由于float16表示范围较小导致的下溢出问题。NPULossScaleOptimizer类继承了LossScaleOptimizer类可以调用基类的原生接口。Atlas 训练系列产品浮点计算的溢出模式默认为“饱和模式”且仅支持“饱和模式”。饱和模式是指当计算出现溢出时饱和为浮点数极值-MAX。其他系列产品浮点计算支持两种溢出模式饱和模式与INF/NaN模式请保持默认值INF/NaN模式。饱和模式仅用于兼容旧版本后续不再演进且此模式下计算精度可能存在误差。函数原型class NPULossScaleOptimizer(lso.LossScaleOptimizer): def __init__(self, opt, loss_scale_manager, is_distributedFalse)参数说明参数名输入/输出描述opt输入用于梯度计算和更新权重的单机版训练优化器。loss_scale_manager输入用于决定LossScale的更新方式包括静态更新和动态更新。- 用户在创建NPULossScaleOptimizer之前可以实例化一个FixedLossScaleManager类进行静态LossScale的配置LossScale值固定用户需指定LossScale值。FixedLossScaleManager类的构造函数请参见FixedLossScaleManager构造函数。- 用户在创建NPULossScaleOptimizer之前可以实例化一个ExponentialUpdateLossScaleManager类进行动态LossScale的配置。ExponentialUpdateLossScaleManager类的构造函数请参见ExponentialUpdateLossScaleManager构造函数。is_distributed输入用于支持分布式训练场景的Loss Scaling功能。取值- True分布式训练时需要配置为True。- False。返回值返回NPULossScaleOptimizer类对象。调用示例from npu_bridge.npu_init import * if FLAGS.use_fp16 and (FLAGS.npu_bert_loss_scale not in [None, -1]): opt_tmp opt if FLAGS.npu_bert_loss_scale 0: loss_scale_manager ExponentialUpdateLossScaleManager(init_loss_scale2**32, incr_every_n_steps1000, decr_every_n_nan_or_inf2, decr_ratio0.5) elif FLAGS.npu_bert_loss_scale 1: loss_scale_manager FixedLossScaleManager(loss_scaleFLAGS.npu_bert_loss_scale) else: raise ValueError(Invalid loss scale: %d % FLAGS.npu_bert_loss_scale) if ops_adapter.size() 1: opt NPULossScaleOptimizer(opt_tmp, loss_scale_manager, is_distributedTrue) else: opt NPULossScaleOptimizer(opt_tmp, loss_scale_manager)【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

更多文章