ParallelExecutor 和 scheduled_lr
Created by: randomtutu
我想用现在模型的参数,在自己的数据集上进行一下pretrain的过程,并且只想用mask_lm_loss进行反向传播。所以我将train.py中的
scheduled_lr = optimization(
loss=total_loss,
warmup_steps=args.warmup_steps,
num_train_steps=args.num_train_steps,
learning_rate=args.learning_rate,
train_program=train_program,
startup_prog=startup_prog,
weight_decay=args.weight_decay,
scheduler=args.lr_scheduler,
use_fp16=args.use_fp16,
loss_scaling=args.loss_scaling)
中的loss 改为了 mask_lm_loss,同时将
train_exe = fluid.ParallelExecutor(
use_cuda=args.use_cuda,
loss_name=total_loss.name,
build_strategy=build_strategy,
exec_strategy=exec_strategy,
main_program=train_program,
num_trainers=nccl2_num_trainers,
trainer_id=nccl2_trainer_id)
中的loss_name 改为mask_lm_loss
请问这样做对吗?如果只改scheduled_lr中的loss,而train_exe中的loss没改,在多GPU训练的时候收集起来的loss和进行反向传播的loss不一致,会有什么问题吗。
非常感谢你们的工作!