def __init__(self, context: pytorch.PyTorchTrialContext) -> None: self.context = context model = torch.nn.Linear(1, 1, False) # Manually initialize the one weight to 0. model.weight.data.fill_(0) self.model = context.wrap_model(model) self.lr = 0.001 opt = torch.optim.SGD(self.model.parameters(), self.lr) self.opt = context.wrap_optimizer(opt) self.loss_fn = torch.nn.MSELoss() self.cls_reducer = context.wrap_reducer(TriangleLabelSum(), name="cls_reducer") self.fn_reducer = context.wrap_reducer(triangle_label_sum, name="fn_reducer") self.hparams = self.context.get_hparams() if self.hparams.get("disable_dataset_reproducibility_checks"): self.context.experimental.disable_dataset_reproducibility_checks()
def __init__(self, context: pytorch.PyTorchTrialContext): self.context = context model = nn.Linear(1, 1, False) model.weight.data.fill_(0) self.model = context.wrap_model(model) opt = torch.optim.SGD(self.model.parameters(), 0.1) self.opt = context.wrap_optimizer(opt)
def __init__(self, context: pytorch.PyTorchTrialContext) -> None: self.context = context model = torch.nn.Linear(1, 1, False) model.weight.data.fill_(0) self.model = context.wrap_model(model) self.lr = 0.001 optimizer = torch.optim.SGD(self.model.parameters(), self.lr) self.opt = context.wrap_optimizer(optimizer) self.loss_fn = torch.nn.MSELoss(reduction="mean")
def __init__(self, context: pytorch.PyTorchTrialContext) -> None: self.context = context model = torch.nn.Linear(1, 1, False) # Manually initialize the one weight to 0. model.weight.data.fill_(0) self.model = context.wrap_model(model) self.lr = 0.001 opt = torch.optim.SGD(self.model.parameters(), self.lr) self.opt = context.wrap_optimizer(opt) self.loss_fn = torch.nn.MSELoss()
def setup_optimizers_schedulers( self, context: PyTorchTrialContext, lightning_module: pl.LightningModule, ) -> Tuple[List[Optimizer], List[_LRScheduler]]: """ Wrap optimizers and lr_schedulers returned by `configure_optimizers` to work with Determined. Return: Wrapped `optimizers`, and `lr_schedulers` in a tuple """ optimizers, lr_scheduler_dicts, opt_frequencies = TrainerOptimizersMixin().init_optimizers( lightning_module, ) # TODO(DET-5021) support custom frequencies with the manual step. for freq in opt_frequencies: check.eq(freq, 1, "custom optimizer frequencies are not supported") optimizers = cast(List[Optimizer], optimizers) lr_scheduler_dicts = cast(List[dict], lr_scheduler_dicts) def lightning_scheduler_dict_to_det(lrs: dict) -> _LRScheduler: """ input_dict = { 'scheduler': None, 'name': None, # no custom name 'interval': 'epoch', # after epoch is over 'frequency': 1, # every epoch/batch 'reduce_on_plateau': False, # most often not ReduceLROnPlateau scheduler 'monitor': monitor, # value to monitor for ReduceLROnPlateau 'strict': True, # enforce that the monitor exists for ReduceLROnPlateau } """ if lrs["reduce_on_plateau"]: raise InvalidModelException("LRScheduler reduce_on_plateaue is not supported") if lrs["monitor"] is not None: raise InvalidModelException("LRScheduler monitor is not supported") step_mode = ( LRScheduler.StepMode.STEP_EVERY_EPOCH if lrs["interval"] == "epoch" else LRScheduler.StepMode.STEP_EVERY_BATCH ) return context.wrap_lr_scheduler(lrs["scheduler"], step_mode) optimizers = [context.wrap_optimizer(opt) for opt in optimizers] lr_schedulers = [lightning_scheduler_dict_to_det(lrs) for lrs in lr_scheduler_dicts] return optimizers, lr_schedulers
def __init__(self, context: pytorch.PyTorchTrialContext) -> None: self.context = context model = torch.nn.Linear(1, 1, False) # Manually initialize the one weight to 0. model.weight.data.fill_(0) self.model = context.wrap_model(model) self.lr = 0.001 opt = torch.optim.SGD(self.model.parameters(), self.lr) self.opt = context.wrap_optimizer(opt) self.loss_fn = torch.nn.MSELoss() self.cls_reducer = context.wrap_reducer(TriangleLabelSum(), name="cls_reducer") self.fn_reducer = context.wrap_reducer(triangle_label_sum, name="fn_reducer")