code: def on_train_epoch_start(self, trainer, pl_module):
      super().on_train_epoch_start(trainer, pl_module)
      epoch = trainer.current_epoch
      if self.unfreeze_backbone_at_epoch <= epoch:
          optimizer = trainer.optimizers[0]
          current_lr = optimizer.param_groups[0]["lr"]
          backbone_lr = self.previous_backbone_lr
          if epoch < 6:
              assert backbone_lr <= current_lr
          else:
              assert backbone_lr == current_lr
  
imports: from collections import OrderedDict
  import pytest
  import torch
  from lightning.fabric.utilities.imports import _TORCH_GREATER_EQUAL_1_13
  from lightning.pytorch import LightningModule, Trainer, seed_everything
  from lightning.pytorch.callbacks import BackboneFinetuning, BaseFinetuning, ModelCheckpoint
  from lightning.pytorch.demos.boring_classes import BoringModel, RandomDataset
  from torch import nn
  from torch.optim import SGD, Optimizer
  from torch.utils.data import DataLoader
  from tests_pytorch.helpers.runif import RunIf
label_desc: Use image node_id 1 for calling the TestBackboneFinetuningCallback obj's underlying member method code with example usage: obj.on_train_epoch_start(trainer, pl_module) without return types