docs: def train(input_dir, batch_size, max_steps, output_dir, checkpoint, cloud_train_config):
      """Train model in the cloud with CloudML trainer service."""
  
      import google.datalab.ml as ml
      if checkpoint is None:
        checkpoint = _util._DEFAULT_CHECKPOINT_GSURL
      staging_package_url = _util.repackage_to_staging(output_dir)
      job_args = {
        'input_dir': input_dir,
        'max_steps': max_steps,
        'batch_size': batch_size,
        'checkpoint': checkpoint
      }
      job_request = {
        'package_uris': [staging_package_url, _TF_GS_URL, _PROTOBUF_GS_URL],
        'python_module': 'mltoolbox.image.classification.task',
        'job_dir': output_dir,
        'args': job_args
      }
      job_request.update(dict(cloud_train_config._asdict()))
      job_id = 'image_classification_train_' + datetime.datetime.now().strftime('%y%m%d_%H%M%S')
      job = ml.Job.submit_training(job_request, job_id)
      if (_util.is_in_IPython()):
        import IPython
        log_url_query_strings = {
          'project': _util.default_project(),
          'resource': 'ml.googleapis.com/job_id/' + job.info['jobId']
        }
        log_url = 'https://console.developers.google.com/logs/viewer?' + \
            urllib.urlencode(log_url_query_strings)
        html = 'Job "%s" submitted.' % job.info['jobId']
        html += '<p>Click <a href="%s" target="_blank">here</a> to view cloud log. <br/>' % log_url
        IPython.display.display_html(html, raw=True)
      return job