gradient accumulation
This commit is contained in:
@@ -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]
|
||||||
|
|
||||||
|
|||||||
@@ -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()
|
|
||||||
|
if (itr + 1) % accum_steps == 0:
|
||||||
optimizer.step()
|
optimizer.step()
|
||||||
|
optimizer.zero_grad()
|
||||||
|
|
||||||
loss_meter.update(loss.item(), n=labels.size(0))
|
loss_meter.update(loss.item(), n=labels.size(0))
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user