gradient_accumulation_steps --梯度累加理解

参考:
https://blog.csdn.net/Princeicon/article/details/108058822
https://blog.csdn.net/weixin_43643246/article/details/107785089

假设情景:
batch_size = 10 #每批次大小
total_num = 1000 #数据总量
按照 训练一个批次数据,更新一次梯度;
训练步数 train_steps = 1000 / 10 = 100
梯度更新步数 = 1000 / 10 = 100

当显存不足以支持每次 10 的训练量!
需要减小 batch_size

通过设置gradient_accumulation_steps = 2
batch_size = 10 / 2 =5
即训练2个批次数据,更新一次梯度,每个批次数据量为5(减小了显存压力,但未改变梯度更新数据量–10个数据一更新)

结果:训练步数 tran_steps = 1000 / 5 = 200 增加了一倍
梯度更新步数 1000 / 10 = 100 未改变

总结:梯度累加就是,每获取1个batch的数据,计算一次梯度,梯度不清空,不断累加,累加到gradient_accumulation_steps次数后,根据累加梯度更新参数,清空梯度,进行下一次循环。

你可能感兴趣的:(NLP,batch,深度学习,机器学习)