CANN/tensorflow NPUOptimizer构造函数
NPUOptimizer构造函数【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow功能说明NPUOptimizer类的构造函数该优化器将NPUDistributedOptimizer和NPULossScaleOptimizer优化器合并。主要提供如下功能Loss Scaling支持在混合精度训练中使能Loss Scaling从而解决由于float16表示范围较小导致的下溢出问题。分布式训练包装用户提供的单机训练优化器构造NPU分布式训练优化器支持单机单卡、单机多卡、多机多卡等组网形式下各个Device之间计算梯度后执行梯度聚合操作。通信拖尾优化通过计算依赖关系的改变将不依赖于最后一个AR梯度聚合分片的计算操作调度到和最后一个AR并行进行以达到优化通信拖尾时间的目的。函数原型class NPUOptimizer(tf.train.Optimizer): def __init__(self, opt, loss_scale_managerNone, is_distributedFalse, is_loss_scaleFalse, is_tailing_optimizationFalse, nameNone)参数说明参数名输入/输出描述opt输入用于梯度计算和更新权重的单机版训练优化器。loss_scale_manager输入仅当is_loss_scale为True开启Loss Scaling功能时需要配置该参数用于决定Loss Scale的更新方式包括静态更新和动态更新。- 用户在创建NPUOptimizer之前可以实例化一个FixedLossScaleManager类进行静态Loss Scale的配置Loss Scale值固定用户需指定Loss Scale值。FixedLossScaleManager类的构造函数请参见FixedLossScaleManager构造函数。- 用户在创建NPUOptimizer之前可以实例化一个ExponentialUpdateLossScaleManager类进行动态Loss Scale的配置。ExponentialUpdateLossScaleManager类的构造函数请参见ExponentialUpdateLossScaleManager构造函数。is_distributed输入是否开启分布式训练取值- True开启。- False默认值不开启。is_loss_scale输入是否开启Loss Scaling取值- True开启Loss Scaling。使用自动混合精度功能后推荐开启此时loss_scale_manager的值不能为None。- False默认值不开启Loss Scaling。is_tailing_optimization输入是否开启通信拖尾优化用于提升训练性能该功能仅在is_distributed为True的情况下配置生效。- True开启通信拖尾。- False默认值不开启通信拖尾。必须和NPURunConfig构造函数中的配置值保持一致。name输入优化器名称。返回值返回NPUOptimizer类对象。调用示例import tensorflow as tf from npu_bridge.npu_init import * #定义单机优化器 optimizer LAMBOptimizer( learning_ratelearning_rate, weight_decay_rate0.01, beta_10.9, beta_20.999, epsilon1e-6, exclude_from_weight_decay[LayerNorm, layer_norm, bias]) #使能Loss Scaling if tf.flags.FLAGS.npu_bert_loss_scale not in [None, -1]: if tf.flags.FLAGS.npu_bert_loss_scale 0: loss_scale_manager ExponentialUpdateLossScaleManager(init_loss_scaletf.flags.FLAGS.init_loss_scale_value, incr_every_n_steps1000, decr_every_n_nan_or_inf2, decr_ratio0.5) elif tf.flags.FLAGS.npu_bert_loss_scale 1: loss_scale_manager FixedLossScaleManager(loss_scaletf.flags.FLAGS.npu_bert_loss_scale) else: raise ValueError(Invalid loss scale: %d % tf.flags.FLAGS.npu_bert_loss_scale) optimizer NPUOptimizer(optimizer, loss_scale_manager, is_distributedtf.flags.FLAGS.distributed, is_loss_scaleTrue, is_tailing_optimizationTrue) #不使能loss_scale else: optimizer NPUOptimizer(optimizer, is_distributedtf.flags.FLAGS.distributed)【免费下载链接】tensorflowAscend TensorFlow Adapter项目地址: https://gitcode.com/cann/tensorflow创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考