(self)
| 67 | ) |
| 68 | |
| 69 | def configure_optimizers(self): |
| 70 | if self.cfg.optimizer.exclude_ln_and_biases_from_weight_decay: |
| 71 | parameters_names_wd = get_parameter_names(self.model, [nn.LayerNorm]) |
| 72 | parameters_names_wd = [ |
| 73 | name for name in parameters_names_wd if "bias" not in name |
| 74 | ] |
| 75 | optimizer_grouped_parameters = [ |
| 76 | { |
| 77 | "params": [ |
| 78 | p |
| 79 | for n, p in self.model.named_parameters() |
| 80 | if n in parameters_names_wd |
| 81 | ], |
| 82 | "weight_decay": self.cfg.optimizer.optim.weight_decay, |
| 83 | }, |
| 84 | { |
| 85 | "params": [ |
| 86 | p |
| 87 | for n, p in self.model.named_parameters() |
| 88 | if n not in parameters_names_wd |
| 89 | ], |
| 90 | "weight_decay": 0.0, |
| 91 | }, |
| 92 | ] |
| 93 | optimizer = instantiate( |
| 94 | self.cfg.optimizer.optim, optimizer_grouped_parameters |
| 95 | ) |
| 96 | else: |
| 97 | optimizer = instantiate(self.cfg.optimizer.optim, self.model.parameters()) |
| 98 | scheduler = instantiate(self.cfg.lr_scheduler)(optimizer) |
| 99 | return [optimizer], [{"scheduler": scheduler, "interval": "step"}] |
| 100 | |
| 101 | def lr_scheduler_step(self, scheduler, metric): |
| 102 | scheduler.step(self.global_step) |
nothing calls this directly
no test coverage detected