in dpr_scale/task/dpr_task.py [0:0]
def configure_optimizers(self):
self.optimizer = hydra.utils.instantiate(self.optim_conf, self.parameters())
if self.trainer.max_steps:
training_steps = self.trainer.max_steps
else:
steps_per_epoch = len(self.train_dataloader())
training_steps = steps_per_epoch * self.trainer.max_epochs
print(
f"Configured LR scheduler for total {training_steps} training steps, "
f"with {self.warmup_steps} warmup steps."
)
def lr_lambda(current_step):
if current_step < self.warmup_steps:
return float(current_step) / float(max(1, self.warmup_steps))
return max(
0.0,
float(training_steps - current_step)
/ float(max(1, training_steps - self.warmup_steps)),
)
scheduler = LambdaLR(self.optimizer, lr_lambda)
scheduler = {
"scheduler": LambdaLR(self.optimizer, lr_lambda),
"name": "learning_rate",
"interval": "step",
"frequency": 1,
}
return [self.optimizer], [scheduler]