From 0025474397d914c4dabf8a9c5978bdef24d32b8b Mon Sep 17 00:00:00 2001 From: Amit Gupta Date: Fri, 5 Jul 2024 00:06:06 -0500 Subject: [PATCH] Added torch DNN trainer and tests --- kliff/trainer/base_trainer.py | 8 +- kliff/trainer/lightning_trainer.py | 3 + kliff/trainer/torch_trainer.py | 233 +++++++++++++----- .../trainer_data/example_config_ase_dnn.yaml | 58 +++++ tests/test_data/trainer_data/model_dnn.pt | Bin 0 -> 151272 bytes tests/trainer/test_descriptor_trainer.py | 123 +++++++++ tests/trainer/test_kim_trainer.py | 1 - tests/trainer/test_lightning_trainer.py | 1 - 8 files changed, 356 insertions(+), 71 deletions(-) create mode 100644 tests/test_data/trainer_data/example_config_ase_dnn.yaml create mode 100644 tests/test_data/trainer_data/model_dnn.pt create mode 100644 tests/trainer/test_descriptor_trainer.py diff --git a/kliff/trainer/base_trainer.py b/kliff/trainer/base_trainer.py index 587bdf56..669f188e 100644 --- a/kliff/trainer/base_trainer.py +++ b/kliff/trainer/base_trainer.py @@ -149,7 +149,6 @@ def __init__(self, training_manifest: dict, model=None): "learning_rate": None, "kwargs": None, "epochs": 10000, - "stop_condition": None, "num_workers": None, "batch_size": 1, } @@ -281,9 +280,6 @@ def parse_manifest(self, manifest: dict): self.optimizer_manifest |= self.training_manifest.get("optimizer") self.optimizer_manifest["epochs"] = self.training_manifest.get("epochs", 10000) - self.optimizer_manifest["stop_condition"] = self.training_manifest.get( - "stop_condition", None - ) self.optimizer_manifest["num_workers"] = self.training_manifest.get( "num_workers", None ) @@ -728,6 +724,7 @@ def write_training_env_edn(self, path: str): pip freeze. """ env_file = f"{path}/training_env.edn" + hash = self.get_trainer_hash() with open(env_file, "w") as f: try: from pip._internal.operations.freeze import freeze @@ -746,7 +743,8 @@ def write_training_env_edn(self, path: str): f.write("{\n") f.write(f'"kliff-version" "{__version__}"\n') - f.write(f'"manifest-hash" "{self.current["run_hash"]}"\n') + f.write(f'"trainer-used" "{type(self).__name__}"\n') + f.write(f'"manifest-hash" "{hash}"\n') f.write(f'"python-dependencies" [\n') for module in python_env: f.write(f' "{module}"\n') diff --git a/kliff/trainer/lightning_trainer.py b/kliff/trainer/lightning_trainer.py index 674387e1..0c06cbac 100644 --- a/kliff/trainer/lightning_trainer.py +++ b/kliff/trainer/lightning_trainer.py @@ -274,6 +274,7 @@ def __init__(self, manifest, model=None): self.callbacks = self._get_callbacks() # setup lightning trainer + self.setup_model() # call setup_model explicitly as it converty torch -> lightning self.pl_trainer = self._get_pl_trainer() def setup_model(self): @@ -293,6 +294,7 @@ def setup_model(self): ema = True if self.optimizer_manifest.get("ema", False) else False if ema: ema_decay = self.optimizer_manifest.get("ema_decay", 0.99) + logger.info(f"Using Exponential Moving Average with decay rate {ema_decay}") else: ema_decay = None @@ -312,6 +314,7 @@ def setup_model(self): lr_scheduler=scheduler.get("name", None), lr_scheduler_args=scheduler.get("args", None), ) + logger.info("Lightning Model setup complete.") def train(self): """ diff --git a/kliff/trainer/torch_trainer.py b/kliff/trainer/torch_trainer.py index 3f69a847..177241b3 100644 --- a/kliff/trainer/torch_trainer.py +++ b/kliff/trainer/torch_trainer.py @@ -1,7 +1,7 @@ import os import tarfile from copy import deepcopy -from typing import TYPE_CHECKING +from typing import TYPE_CHECKING, Union import libdescriptor as lds import numpy as np @@ -20,10 +20,10 @@ class DNNTrainer(Trainer): """ - This class extends the base KLIFF trainer class to implement and train MLIPs compatible - with the TorchML model driver. This is an example of simple, customizable training - for a TorchML model. For large scale, highly optimized training, consider using - Lightning Based GNN Trainer. + This module is used to train a descriptor based dense neural network (DNN), and deploy it + using TorchML framework. For using the DUNN model driver please use the legacy Loss optimizer + for now. In the future, the ~kliff.trainer.torch_trainer.DNNTrainer will also support both + loading and exporting the NN models for DUNN model driver. Args: configuration (dict): A dictionary containing the configuration for the trainer. @@ -47,21 +47,43 @@ def __init__(self, configuration: dict, model=None): self.loss_function = self._get_loss_function() self.setup_dataloaders() - self.early_stopping = self.get_early_stopping() - self.lr_scheduler = self.get_scheduler() + self.early_stopping = self._get_early_stopping() + self.lr_scheduler = self._get_scheduler() # Optim Loss and Checkpoint ####################################################### def setup_optimizer(self): - self.optimizer = self.get_optimizer() + """ + Set up the optimizer for the model. The optimizer is defined in the optimizer manifest. + This function uses ~:func:~`_get_optimizer` to get the optimizer object, so that it can be + customized if needed in the future. + + TODO: Add support for custom optimizers, starting with CoRE. + """ + self.optimizer = self._get_optimizer() + + def loss(self, x: torch.Tensor, y: torch.Tensor) -> torch.Tensor: + """ + Compute the loss between the predicted and target values. + + Args: + x (torch.Tensor): Predicted values. + y (torch.Tensor): Target values. + + Returns: + torch.Tensor: Loss value - def loss(self, x: torch.Tensor, y: torch.Tensor): + """ return self.loss_function(x, y) def checkpoint(self): """ Checkpoint the model and optimizer state to disk. Also append training and validation - loss to the log file. + loss to the log file. It also saves the best and last model to disk, along with the + scheduler and early stopping state if they are present. """ + if not os.path.exists(f"{self.current['run_dir']}/checkpoints"): + os.makedirs(f"{self.current['run_dir']}/checkpoints") + checkpoint = { "model_state_dict": self.model.state_dict(), "optimizer_state_dict": self.optimizer.state_dict(), @@ -80,20 +102,25 @@ def checkpoint(self): torch.save( checkpoint, - f"{self.current['run_dir']}/checkpoint_{self.current['step']}.pkl", + f"{self.current['run_dir']}/checkpoints/checkpoint_{self.current['step']}.pkl", ) # save best and last model - if self.current["loss"]["val"] < self.current["best_loss"]: - self.current["best_loss"] = self.current["loss"]["val"] - torch.save( - self.model.state_dict(), - f"{self.current['run_dir']}/best_model.pth", - ) + if self.current["loss"]["val"]: + if self.current["loss"]["val"] < self.current["best_loss"]: + self.current["best_loss"] = self.current["loss"]["val"] + torch.save( + self.model.state_dict(), + f"{self.current['run_dir']}/checkpoints/best_model.pth", + ) + else: + if not self.current["warned_once"]: + self.current["warned_once"] = True + logger.warning("Validation loss not available for checkpointing.") torch.save( self.model.state_dict(), - f"{self.current['run_dir']}/last_model.pth", + f"{self.current['run_dir']}/checkpoints/last_model.pth", ) if os.path.exists(f"{self.current['run_dir']}/loss.log"): @@ -113,6 +140,7 @@ def load_checkpoint(self, path: str): Load the model and optimizer state from a checkpoint file. Args: + path (str): Path to the checkpoint file. """ checkpoint = torch.load(path) self.model.load_state_dict(checkpoint["model_state_dict"]) @@ -127,9 +155,10 @@ def load_checkpoint(self, path: str): self.early_stopping.counter = checkpoint["early_stopping"]["counter"] self.early_stopping.best_loss = checkpoint["early_stopping"]["best_loss"] - def get_last_checkpoint(self): + def get_last_checkpoint(self) -> str: """ - Get the last checkpoint file in the run directory. + Get the last checkpoint file in the run directory. The checkpoint file is assumed to be + named as `checkpoint_{step}.pkl`. Returns: str: Path to the last checkpoint file. @@ -144,7 +173,13 @@ def get_last_checkpoint(self): ) return f"{self.current['run_dir']}/checkpoint_{max_step}.pkl" - def get_optimizer(self): + def _get_optimizer(self) -> torch.optim: + """ + Get the optimizer for the model. The optimizer is defined in the optimizer manifest. + + Returns: + torch.optim: The optimizer object. + """ optimizer = getattr(torch.optim, self.optimizer_manifest["name"]) if self.optimizer_manifest["kwargs"]: return optimizer( @@ -157,37 +192,45 @@ def get_optimizer(self): self.model.parameters(), lr=self.optimizer_manifest["learning_rate"] ) - def get_scheduler(self): + def _get_scheduler(self) -> torch.optim.lr_scheduler: """ Get the scheduler for the optimizer. The scheduler is defined in the optimizer manifest. Returns: torch.optim.lr_scheduler: The scheduler object. """ - if self.optimizer_manifest.get("lr_scheduler", None): - scheduler = getattr( - torch.optim.lr_scheduler, self.optimizer_manifest["scheduler"] - ) - return scheduler( - self.optimizer, **self.optimizer_manifest["scheduler_kwargs"] - ) + scheduler_manifest = self.optimizer_manifest.get("lr_scheduler", None) + if scheduler_manifest: + scheduler = getattr(torch.optim.lr_scheduler, scheduler_manifest["name"]) + logger.info(f"Using scheduler: {scheduler_manifest['name']}") + return scheduler(self.optimizer, **scheduler_manifest["args"]) return None - def get_early_stopping(self): + def _get_early_stopping(self) -> Union["_EarlyStopping", None]: """ Get the early stopping callback. The early stopping callback is defined in the optimizer manifest. Returns: - EarlyStopping: The early stopping callback object. + _EarlyStopping: The early stopping callback object. """ - if self.optimizer_manifest.get("early_stopping", None): + if self.training_manifest.get("early_stopping", None): + logger.info( + f"Using early stopping with patience: {self.training_manifest['early_stopping']['patience']} and min_delta: {self.training_manifest['early_stopping']['min_delta']}" + ) return _EarlyStopping( - self.optimizer_manifest["early_stopping"]["patience"], - self.optimizer_manifest["early_stopping"]["min_delta"], + self.training_manifest["early_stopping"]["patience"], + self.training_manifest["early_stopping"]["min_delta"], ) return None - def _get_loss_function(self): + def _get_loss_function(self) -> torch.nn.Module: + """ + Get the loss function for the model. The loss function is defined in the loss manifest. + + Returns: + torch.nn.Module: The loss function object. + + """ if self.loss_manifest["function"].lower() == "mse": return torch.nn.MSELoss() else: @@ -195,7 +238,9 @@ def _get_loss_function(self): try: import torchmetrics - return getattr(torchmetrics, self.loss_manifest["function"])() + loss = getattr(torchmetrics, self.loss_manifest["function"])() + logger.info(f"Using loss function: {self.loss_manifest['function']}") + return loss except ImportError: logger.info( "torchmetrics not found. If you want to use its loss functions, please install it." @@ -206,7 +251,18 @@ def _get_loss_function(self): # TODO: Custom loss functions # train steps ##################################################################### - def train_step(self, batch): + def train_step(self, batch) -> torch.Tensor: + """ + Train the model for one step. This function is called by the `train` function for each + batch in the training data loader + + Args: + batch: dictionary containing the batch data + + Returns: + torch.Tensor: The loss value for the batch + + """ if self.transform_manifest["configuration"]["name"].lower() == "descriptor": return self._descriptor_train_step(batch) else: @@ -214,29 +270,63 @@ def train_step(self, batch): f"Configuration transformation type {self.transform_manifest['configuration']['name']} not supported." ) - def _descriptor_train_step(self, batch): + def _descriptor_train_step(self, batch) -> torch.Tensor: + """ + Train the model for one step. This function is called by the `train` function for each + batch in the training data loader + + Args: + batch: dictionary containing the batch data + + Returns: + torch.Tensor: The loss value for the batch + """ self.optimizer.zero_grad() loss = self._descriptor_eval_batch(batch) loss.backward() self.optimizer.step() - if self.lr_scheduler: - self.lr_scheduler.step() return loss - def validation_step(self, batch): + def validation_step(self, batch) -> torch.Tensor: + """ + Validate the model for one step. This function is called by the `train` function for each + batch in the validation data loader + + Args: + batch: dictionary containing the batch data + + Returns: + torch.Tensor: The loss value for the batch + """ if self.transform_manifest["configuration"]["name"].lower() == "descriptor": - return self._descriptor_validation_step(batch) + loss = self._descriptor_eval_batch(batch) + try: + if self.lr_scheduler: + self.lr_scheduler.step() + except TypeError: + self.lr_scheduler.step(loss) # for ReduceLROnPlateau + return loss + else: raise TrainerError( f"Configuration transformation type {self.transform_manifest['configuration']} not supported." ) - def _descriptor_validation_step(self, batch): - return self._descriptor_eval_batch(batch) - # eval batches ##################################################################### @requires(lds, "libdescriptor is needed for descriptor training.") - def _descriptor_eval_batch(self, batch): + def _descriptor_eval_batch(self, batch) -> torch.Tensor: + """ + Evaluate the model for one batch of data. This function is called by the `train_step` and + `validation_step` functions. It uses the libdescriptor library to compute the forces and + stress from the descriptor. + + Args: + batch: dictionary containing the batch data + + Returns: + torch.Tensor: The loss value for the batch + + """ n_atoms = batch["n_atoms"] species = batch["species"] neigh_list = batch["neigh_list"] @@ -345,6 +435,7 @@ def _descriptor_eval_batch(self, batch): # to handle this. But need to confirm, else we need to explicitly compute # ∂^2E/∂ζ∂θ and then call lds.gradient again. # ask pytorch forum. Or use custom gradient optimization. + # TODO: Add stress loss # if self.loss_manifest["weights"]["stress"]: # # stress = \sum_i (f_i \otimes r_i) # stress = torch.zeros(len(ptr), 6) # voigt notation @@ -368,6 +459,15 @@ def _descriptor_eval_batch(self, batch): return loss def train(self): + """ + Train the model for the specified number of epochs. The training loop is + defined in this function. The model is trained for each epoch, and the + training and validation loss is computed and logged. The model is checkpointed + at the end of each epoch. If early stopping is enabled, the training is stopped + when the validation loss does not improve for the specified number of epochs. + Once the training is complete, a `.finished` file is created in the run directory. + """ + # TODO: granularity of train: train, train_step, train_epoch? # currently it is train -> train_step, so train is wrapper for train_epoch if self.current["appending_to_previous_run"]: @@ -394,6 +494,7 @@ def train(self): } else: self.current["loss"] = {"train": epoch_train_loss, "val": None} + epoch_val_loss = None logger.info(f"Epoch {epoch} completed. val loss: {epoch_val_loss}") self.checkpoint() if self.early_stopping and self.early_stopping(epoch_val_loss): @@ -430,6 +531,8 @@ def save_kim_model(self, path: str = "kim-model"): Save the KIM model to the given path. The KIM model is saved as a portable TorchML model. + TODO: Add support for DUNN model driver. + Args: path: Path to save the model """ @@ -439,7 +542,9 @@ def save_kim_model(self, path: str = "kim-model"): os.makedirs(path, exist_ok=True) - best_model = self.model.load_state_dict( + best_model = deepcopy(self.model) + + best_model.load_state_dict( torch.load(f"{self.current['run_dir']}/checkpoints/best_model.pth") ) @@ -479,22 +584,6 @@ def save_kim_model(self, path: str = "kim-model"): logger.info(f"Model tarball saved: {tarball_name}") logger.info(f"KIM model saved at {path}") - def get_torchscript_model_from_tar(self): - tarfile_path = self.model_manifest["path"] - with tarfile.open(tarfile_path, "r") as tar: - torchscript_file = None - for member in tar.getmembers(): - if member.name.endswith(".pt") or member.name.endswith(".pth"): - torchscript_file = member - break - if torchscript_file is None: - raise TrainerError(f"No torchscript file found in {tarfile_path}.") - else: - tar.extract(torchscript_file, path=self.current["run_dir"]) - self.torchscript_file = ( - f"{self.current['run_dir']}/{torchscript_file.name}" - ) - # Data loaders ##################################################################### def setup_dataloaders(self): if self.transform_manifest["configuration"]["name"].lower() == "descriptor": @@ -505,6 +594,14 @@ def setup_dataloaders(self): ) def _setup_descriptor_dataloaders(self): + """ + Set up the dataloaders for the descriptor based model. The dataloaders are created + using the `DescriptorDataset` class from the `kliff.trainer.torch_trainer_utils.dataloaders` + module. The dataloaders are created from the training and validation datasets, and the + configuration transformation is applied to the data before creating the dataloaders. + If dynamic loading is enabled, then the transformation is delayed until the data is + loaded in the dataloader. + """ if self.dataset_manifest["dynamic_loading"]: self.train_dataset = DescriptorDataset(self.train_dataset) @@ -546,13 +643,21 @@ def _setup_descriptor_dataloaders(self): else: logger.warning("No validation dataset loaded.") - # Auxilliary ##################################################################### + # Auxiliary ##################################################################### def setup_parameter_transforms(self): # no parameter transforms for torch models, yet. pass class _EarlyStopping: + """ + Early stopping callback for the training loop. + + Args: + patience (int): Number of epochs to wait before stopping the training. + delta (float): Minimum change in the loss to be considered as an improvement. + """ + def __init__(self, patience: int, delta: float): self.patience = patience self.delta = delta diff --git a/tests/test_data/trainer_data/example_config_ase_dnn.yaml b/tests/test_data/trainer_data/example_config_ase_dnn.yaml new file mode 100644 index 00000000..0c4ce20c --- /dev/null +++ b/tests/test_data/trainer_data/example_config_ase_dnn.yaml @@ -0,0 +1,58 @@ +workspace: + name: test_run # Name of the base workspace folder, where all the runs will be stored + seed: 1234 # Seed for random number generator, all + resume: False # Resume training from a previous run + # no longer needed walltime: 2:00:00 # Walltime for the run + +dataset: + type: ase # ase or path or colabfit + path: ../test_data/configs/Si_4.xyz # Path to the dataset, ignored for colabfit + keys: + energy: Energy # Key for energy, if ase dataset is used + forces: force # Key for forces, if ase dataset is used + # stress: virial # Key for stress, if ase dataset is used + +model: + path: ../test_data/trainer_data/model_dnn.pt + name: "TorchDNN" # torch pt model + +transforms: + configuration: + name: Descriptor + kwargs: + cutoff: 4.0 + species: ['Si'] + descriptor: SymmetryFunctions + hyperparameters: "set51" + +training: + loss: + function: MSE # optional: path to loss function file? + weights: # optional: path to weights file + config: 1.0 + energy: 1.0 + forces: 1.0 + # stress: 1.0 + normalize_per_atom: true + optimizer: + name: Adam + learning_rate: 1.e-3 + lr_scheduler: + name: ReduceLROnPlateau + args: + factor: 0.5 + patience: 5 + min_lr: 1.e-6 + + training_dataset: + train_size: 3 # Number of training samples + validation_dataset: + val_size: 1 # Number of validation samples + + early_stopping: + patience: 10 + min_delta: 1.e-4 + + batch_size: 2 + epochs: 2 + ckpt_interval: 1 diff --git a/tests/test_data/trainer_data/model_dnn.pt b/tests/test_data/trainer_data/model_dnn.pt new file mode 100644 index 0000000000000000000000000000000000000000..dc39dd1515214460e21ef3dbc6f24fad73248b02 GIT binary patch literal 151272 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
<@;*1d7=m3&$BG2 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�UDBZKR)*B-VF9oFy$)M;oX4hT>rpZ3n{?Oc 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 MNFr#zpZ@Lt0M{CHJ^%m! literal 0 HcmV?d00001 diff --git a/tests/trainer/test_descriptor_trainer.py b/tests/trainer/test_descriptor_trainer.py new file mode 100644 index 00000000..81e05c08 --- /dev/null +++ b/tests/trainer/test_descriptor_trainer.py @@ -0,0 +1,123 @@ +import os +from pathlib import Path + +import numpy as np +import pytest +import torch +import yaml + +from kliff.trainer import DNNTrainer + + +def test_descriptor_trainer(): + """ + Basic tests for proper initialization of the Trainer module + """ + manifest_file = filename = ( + Path(__file__) + .parents[1] + .joinpath("test_data/trainer_data/example_config_ase_dnn.yaml") + ) + model = torch.jit.load( + Path(__file__).parents[1].joinpath("test_data/trainer_data/model_dnn.pt") + ) + model = model.double() + + manifest = yaml.safe_load(open(manifest_file, "r")) + + trainer = DNNTrainer(manifest) + + loaded_model_dict = trainer.model.state_dict() + trainer_model_dict = model.state_dict() + + for key in loaded_model_dict.keys(): + assert torch.allclose(loaded_model_dict[key], trainer_model_dict[key]) + + assert trainer.current["loss"] == None + assert trainer.current["epoch"] == 0 + assert trainer.current["step"] == 0 + assert trainer.current["device"] == "cpu" + assert trainer.current["warned_once"] == False + assert trainer.current["dataset_hash"] == None + assert trainer.current["data_dir"] == "test_run/datasets" + assert trainer.current["appending_to_previous_run"] == False + assert trainer.current["verbose"] == False + + # check dataset manifest + expected_dataset_manifest = { + "type": "ase", + "path": "../test_data/configs/Si_4.xyz", + "save": False, + "keys": {"energy": "Energy", "forces": "force"}, + "dynamic_loading": False, + "colabfit_dataset": { + "dataset_name": None, + "database_name": None, + "database_url": None, + }, + } + assert trainer.dataset_manifest == expected_dataset_manifest + + # check descriptor settings + config_transform = { + "name": "Descriptor", + "kwargs": { + "cutoff": 4.0, + "species": ["Si"], + "descriptor": "SymmetryFunctions", + "hyperparameters": "set51", + }, + } + assert trainer.transform_manifest["configuration"] == config_transform + + expected_loss_manifest = { + "function": "MSE", + "weights": {"config": 1.0, "energy": 1.0, "forces": 1.0, "stress": None}, + "normalize_per_atom": True, + "loss_traj": False, + } + + assert trainer.loss_manifest == expected_loss_manifest + + # dataset samples + assert trainer.dataset_sample_manifest["train_size"] == 3 + assert trainer.dataset_sample_manifest["val_size"] == 1 + assert isinstance(trainer.dataset_sample_manifest["val_indices"], np.ndarray) + assert isinstance(trainer.dataset_sample_manifest["train_indices"], np.ndarray) + + # check optimizer settings + expected_optimizer_manifest = { + "name": "Adam", + "learning_rate": 1.0e-3, + "kwargs": None, + "epochs": 2, + "num_workers": None, + "batch_size": 2, + "lr_scheduler": { + "name": "ReduceLROnPlateau", + "args": {"factor": 0.5, "patience": 5, "min_lr": 1.0e-6}, + }, + } + assert trainer.optimizer_manifest == expected_optimizer_manifest + + # dummy training + trainer.train() + # check if the trainer exited without any errors, check if .finished file is created + assert os.path.exists(f'{trainer.current["run_dir"]}/.finished') + + # check if the kim model is saved, default folder is kim-model + trainer.save_kim_model() + assert os.path.exists("./kim-model/CMakeLists.txt") + + # check if checkpoints are properly saved + ckpt = f'{trainer.current["run_dir"]}/checkpoints/checkpoint_0.pkl' + assert os.path.exists(ckpt) + ckpt_dict = torch.load(ckpt) + assert ckpt_dict["model_state_dict"].keys() == model.state_dict().keys() + assert ( + ckpt_dict["optimizer_state_dict"].keys() + == trainer.optimizer.state_dict().keys() + ) + assert ckpt_dict["current_step"] == 0 + assert ckpt_dict["lr_scheduler"].keys() == trainer.lr_scheduler.state_dict().keys() + assert ckpt_dict["early_stopping"] == {"counter": 0, "best_loss": np.inf} diff --git a/tests/trainer/test_kim_trainer.py b/tests/trainer/test_kim_trainer.py index d3d80085..af72bc7a 100644 --- a/tests/trainer/test_kim_trainer.py +++ b/tests/trainer/test_kim_trainer.py @@ -100,7 +100,6 @@ def test_trainer(): "learning_rate": None, "kwargs": {"tol": 1e-06}, "epochs": 1000, - "stop_condition": None, "num_workers": 2, "batch_size": 1, } diff --git a/tests/trainer/test_lightning_trainer.py b/tests/trainer/test_lightning_trainer.py index 0f206d37..f131ed1b 100644 --- a/tests/trainer/test_lightning_trainer.py +++ b/tests/trainer/test_lightning_trainer.py @@ -85,7 +85,6 @@ def test_trainer(): "learning_rate": 0.001, "kwargs": None, "epochs": 2, - "stop_condition": None, "num_workers": None, "batch_size": 1, }