code: def lr_scheduler_training(sched_fn=None, args=None):
      model = TinyBobNet()
      optim = Adam(model.parameters(), lr=0.01)
      if sched_fn is not None:
          sched = sched_fn(optim, **args)
      for _ in range(25):
          train(model, X_train, Y_train, optim, 100)
          if sched_fn is not None:
              if isinstance(sched, ReduceLROnPlateau):
                  sched.step(evaluate(model, X_test, Y_test))
              else:
                  sched.step()
      return evaluate(model, X_test, Y_test)
  
imports: import numpy
  import torch
  import unittest
  from tinygrad.tensor import Tensor
  from tinygrad.nn.state import get_parameters
  from tinygrad.nn.optim import Adam
  from extra.lr_scheduler import MultiStepLR, ReduceLROnPlateau, CosineAnnealingLR, OneCycleLR
  from extra.training import train, evaluate
  from extra.datasets import fetch_mnist
label_desc: Use image node_id 1 for calling a global function with example usage: lr_scheduler_training(sched_fn, args) and returns: evaluate