gradient accumulation

This commit is contained in:
Yann Ahlgrim
2026-06-18 16:25:52 +02:00
parent 24327d7ee0
commit 772acd8f0d
2 changed files with 9 additions and 4 deletions
+2 -1
View File
@@ -9,7 +9,8 @@ grid:
optimization.weight_decay: [5.0e-4, 0] optimization.weight_decay: [5.0e-4, 0]
optimization.momentum: [0.9] optimization.momentum: [0.9]
optimization.lr_schedule: [cosine] optimization.lr_schedule: [cosine]
data.batch_size: [512, 1024] optimization.gradient_accumulation_steps: [8, 16]
data.batch_size: [64]
meta.representation_type: [last_avgpool, last4_avgpool_concat] meta.representation_type: [last_avgpool, last4_avgpool_concat]
meta.head_type: [linear, bn_linear] meta.head_type: [linear, bn_linear]
+7 -3
View File
@@ -213,6 +213,7 @@ def main(args, resume_preempt=False):
l_args = args["logging"] l_args = args["logging"]
v_args = args["validation"] v_args = args["validation"]
es_args = o_args["early_stopping"] es_args = o_args["early_stopping"]
accum_steps = o_args.get("gradient_accumulation_steps", 1)
folder = resolve_log_dir(args, stage="train") folder = resolve_log_dir(args, stage="train")
tag = l_args["write_tag"] tag = l_args["write_tag"]
@@ -431,6 +432,7 @@ def main(args, resume_preempt=False):
loss_meter = AverageMeter() loss_meter = AverageMeter()
optimizer.zero_grad()
for itr, (imgs, labels) in enumerate(train_loader): for itr, (imgs, labels) in enumerate(train_loader):
imgs = imgs.to(device, non_blocking=True) imgs = imgs.to(device, non_blocking=True)
labels = labels.to(device, non_blocking=True) labels = labels.to(device, non_blocking=True)
@@ -441,9 +443,11 @@ def main(args, resume_preempt=False):
outputs = model(imgs) outputs = model(imgs)
loss = criterion(outputs, labels) loss = criterion(outputs, labels)
optimizer.zero_grad() (loss / accum_steps).backward()
loss.backward()
optimizer.step() if (itr + 1) % accum_steps == 0:
optimizer.step()
optimizer.zero_grad()
loss_meter.update(loss.item(), n=labels.size(0)) loss_meter.update(loss.item(), n=labels.size(0))