docs: def preprocess(train_dataset, output_dir, eval_dataset, checkpoint):
      """Preprocess data locally."""
  
      import apache_beam as beam
      from google.datalab.utils import LambdaJob
      from . import _preprocess
  
      if checkpoint is None:
        checkpoint = _util._DEFAULT_CHECKPOINT_GSURL
      job_id = ('preprocess-image-classification-' +
                datetime.datetime.now().strftime('%y%m%d-%H%M%S'))
      # Project is needed for bigquery data source, even in local run.
      options = {
          'project': _util.default_project(),
      }
      opts = beam.pipeline.PipelineOptions(flags=[], **options)
      p = beam.Pipeline('DirectRunner', options=opts)
      _preprocess.configure_pipeline(p, train_dataset, eval_dataset, checkpoint, output_dir, job_id)
      job = LambdaJob(lambda: p.run().wait_until_finish(), job_id)
      return job