code: def preprocess_async(train_dataset, output_dir, eval_dataset=None, checkpoint=None, cloud=None):
    
    with warnings.catch_warnings():
      warnings.simplefilter("ignore")
      if cloud is None:
        return _local.Local.preprocess(train_dataset, output_dir, eval_dataset, checkpoint)
  
      if not isinstance(cloud, dict):
        cloud = {}
      return _cloud.Cloud.preprocess(train_dataset, output_dir, eval_dataset, checkpoint, cloud)
docs: Preprocess data. Produce output that can be used by training efficiently.
  
    Args:
      train_dataset: training data source to preprocess. Can be CsvDataset or BigQueryDataSet.
          If eval_dataset is None, the pipeline will randomly split train_dataset into
          train/eval set with 7:3 ratio.
      output_dir: The output directory to use. Preprocessing will create a sub directory under
          it for each run, and also update "latest" file which points to the latest preprocessed
          directory. Users are responsible for cleanup. Can be local or GCS path.
      eval_dataset: evaluation data source to preprocess. Can be CsvDataset or BigQueryDataSet.
          If specified, it will be used for evaluation during training, and train_dataset will be
          completely used for training.
      checkpoint: the Inception checkpoint to use. If None, a default checkpoint is used.
      cloud: a DataFlow pipeline option dictionary such as {'num_workers': 3}. If anything but
          not None, it will run in cloud. Otherwise, it runs locally.
  
    Returns:
      A google.datalab.utils.Job object that can be used to query state from or wait.