code: def end_task_train(rec: Recorder, experiment_name: str) -> Recorder:
      """
      Finish task training with real model fitting and saving.
  
      Args:
          rec (Recorder): the recorder will be resumed
          experiment_name (str): the name of experiment
  
      Returns:
          Recorder: the model recorder
      """
      with R.start(
          experiment_name=experiment_name,
          recorder_id=rec.info["id"],
          resume=True,
      ):
          task_config = R.load_object("task")
          _exe_task(task_config)
      return rec
  
imports: import socket
  from typing import Callable, List, Optional
  from tqdm.auto import tqdm
  from qlib.config import C
  from qlib.data.dataset import Dataset
  from qlib.data.dataset.weight import Reweighter
  from qlib.log import get_module_logger
  from qlib.model.base import Model
  from qlib.utils import auto_filter_kwargs, fill_placeholder, flatten_dict, init_instance_by_config
  from qlib.utils.paral import call_in_subproc
  from qlib.workflow import R
  from qlib.workflow.recorder import Recorder
  from qlib.workflow.task.manage import TaskManager, run_task
label_desc: Use image node_id 4 for calling a global function with example usage: end_task_train(rec, experiment_name) and returns: rec