docs: def attach(cls, training_job_name, sagemaker_session=None, model_channel_name='model'):
          """Attach to an existing training job.
  
          Create an Estimator bound to an existing training job, each subclass is responsible to implement
          ``_prepare_init_params_from_job_description()`` as this method delegates the actual conversion of a training
          job description to the arguments that the class constructor expects. After attaching, if the training job has a
          Complete status, it can be ``deploy()`` ed to create a SageMaker Endpoint and return a ``Predictor``.
  
          If the training job is in progress, attach will block and display log messages
          from the training job, until the training job completes.
  
          Args:
              training_job_name (str): The name of the training job to attach to.
              sagemaker_session (sagemaker.session.Session): Session object which manages interactions with
                  Amazon SageMaker APIs and any other AWS services needed. If not specified, the estimator creates one
                  using the default AWS configuration chain.
              model_channel_name (str): Name of the channel where pre-trained model data will be downloaded (default:
                  'model'). If no channel with the same name exists in the training job, this option will be ignored.
  
          Examples:
              >>> my_estimator.fit(wait=False)
              >>> training_job_name = my_estimator.latest_training_job.name
              Later on:
              >>> attached_estimator = Estimator.attach(training_job_name)
              >>> attached_estimator.deploy()
  
          Returns:
              Instance of the calling ``Estimator`` Class with the attached training job.
          """
          sagemaker_session = sagemaker_session or Session()
  
          job_details = sagemaker_session.sagemaker_client.describe_training_job(TrainingJobName=training_job_name)
          init_params = cls._prepare_init_params_from_job_description(job_details, model_channel_name)
  
          estimator = cls(sagemaker_session=sagemaker_session, **init_params)
          estimator.latest_training_job = _TrainingJob(sagemaker_session=sagemaker_session,
                                                       job_name=init_params['base_job_name'])
          estimator.latest_training_job.wait()
          return estimator