code: def train_arbiter(
      ctx,
      epochs,
      early_stop,
      tol,
      batch_size,
      optimizer_param,
      learning_rate_scheduler,
      output_model,
      input_model,
  ):
      if input_model is not None:
          logger.info(f"warm start model provided")
          model = input_model.read()
          module = CoordinatedLRModuleArbiter.from_model(model)
          module.set_epochs(epochs)
          module.set_batch_size(batch_size)
      else:
          module = CoordinatedLRModuleArbiter(
              epochs=epochs,
              early_stop=early_stop,
              tol=tol,
              batch_size=batch_size,
              optimizer_param=optimizer_param,
              learning_rate_param=learning_rate_scheduler,
          )
      logger.info(f"coordinated lr arbiter start train")
      sub_ctx = ctx.sub_ctx("train")
      module.fit(sub_ctx)
      model = module.get_model()
      output_model.write(model, metadata={})
  
file_path: FATE/python/fate/components/components/coordinated_lr.py
imports: import logging
  from fate.arch import Context
  from fate.arch.dataframe import DataFrame
  from fate.components.components.utils import consts, tools
  from fate.components.core import ARBITER, GUEST, HOST, Role, cpn, params
  from fate.ml.glm import CoordinatedLRModuleGuest, CoordinatedLRModuleHost, CoordinatedLRModuleArbiter
label_desc: Use image node_id 7 for calling a global function with example usage: train_arbiter(ctx, epochs, early_stop, tol, batch_size, optimizer_param, learning_rate_scheduler, output_model, input_model) without return types