from abc import ABC, abstractmethod import torch.nn as nn from torch.utils.data import DataLoader class Trainer(ABC): """Abstract class for trainers.""" @abstractmethod def execute( self, model: nn.Module | type[nn.Module] | None, context_length: int, train_loader: DataLoader, validation_loader: DataLoader, n_epochs: int | None, device: str ) -> nn.Module: pass