code: def main_train(dir_path, max_epochs: int = 20):
      seed_everything(42)
      stopping = EarlyStopping(
          monitor="val_acc", mode="max", min_delta=0.005
      )
      trainer = pl.Trainer(
          accelerator="auto",
          default_root_dir=dir_path,
          precision=(16 if torch.cuda.is_available() else 32),
          callbacks=[stopping],
          min_epochs=3,
          max_epochs=max_epochs,
          accumulate_grad_batches=2,
          deterministic=True,
      )
  
      dm = ClassifDataModule(
          num_features=24,
          length=6000,
          num_classes=3,
          batch_size=128,
          n_clusters_per_class=2,
          n_informative=int(24 / 3),
      )
      model = ClassificationModel(
          num_features=24, num_classes=3, lr=0.01
      )
      trainer.fit(model, datamodule=dm)
      res = trainer.test(model, datamodule=dm)
      assert res[0]["test_loss"] <= 0.85, str(res[0]["test_loss"])
      assert res[0]["test_acc"] >= 0.7, str(res[0]["test_acc"])
      assert trainer.current_epoch < (max_epochs - 1)
  
file_path: pytorch-lightning/tests/legacy/simple_classif_training.py
imports: import os
  import sys
  import lightning.pytorch
  import torch
  from lightning.pytorch import seed_everything
  from lightning.pytorch.callbacks import EarlyStopping
  from tests_pytorch.helpers.datamodules import ClassifDataModule
  from tests_pytorch.helpers.simple_models import ClassificationModel
label_desc: Use image node_id 1 for calling a global function with example usage: main_train(dir_path, max_epochs) without return types