# passes and weights update with torch.set_grad_enabled (True):
# forward pass preds = model (inputs) loss = criterion (preds, labels)
# backward pass loss. backward ()
# weights update optimizer.step () optimizer.zero_grad () 优化的梯度更新方式,计算的事 loss 的平均值,gradient_accumulation_steps 达到次数之后在进行参数更新: gradient_accumulation_steps =
# loop through batches for batch_idx,(inputs, in enumerate (data loader): labels)
# extract inputs and labels inputs = inputs. to (device) labels = labels. to (device)
# passes and weights update with torch.set_grad_enabled (True):
# forward pass preds = model (inputs) loss = criterion (preds,
labels)
loss /= gradient_accumulation_steps
# backward pass => compute gradient loss. backwardO
if ((batch_idx + 1)% gradient_accumulation_steps == 0)or ((batch_idx+1) == len (data_loader)): # weights update optimizer. step ( optimizer.zero gradO
二、介绍一下 gradient checkpointing 显存优化方式?
梯度检查点(Gradient Checkpointing)是一种优化深度学习模型训练中内存使用的技术。它通过在模型的计算 图中插入检查点,将一部分计算推迟到后续步骤进行,从而减少内存占用。这有助于训练更大、更深的模型,以