code: def exponential_scheduler(
      optimizer, warmup_steps, lr, min_lr=5e-5, gamma=0.9999
  ):
      def lr_lambda(x):
          if x > warmup_steps or warmup_steps <= 0:
              if lr * gamma ** (x - warmup_steps) > min_lr:
                  return gamma ** (x - warmup_steps)
              else:
                  return min_lr / lr
          else:
              return x / warmup_steps
  
      return LambdaLR(optimizer, lr_lambda=lr_lambda)
  
imports: import math
  import random
  from pathlib import Path
  import numpy
  import lightning.pytorch
  import torch
  from lightning.pytorch.utilities import rank_zero_only
  from torch.nn.utils.rnn import pad_sequence
  from torch.optim.lr_scheduler import LambdaLR
  from torch.utils.data import DataLoader
  from nougat import NougatConfig, NougatModel
  from nougat.metrics import get_metrics
label_desc: Use image node_id 7 for calling the NougatModelPLModule obj's underlying member method code with example usage: obj.exponential_scheduler(optimizer, warmup_steps, lr, min_lr, gamma) and returns: LambdaLR, unknown, unknown, unknown