code: def generate_data(self, data_dir, tmp_dir, task_id=-1):
      
      tf.logging.info("generate_data task_id=%s" % task_id)
      encoder = self.get_or_create_vocab(data_dir, tmp_dir)
      assert task_id >= 0 and task_id < self.num_generate_tasks
      if task_id < self.num_train_shards:
        out_file = self.training_filepaths(
            data_dir, self.num_train_shards, shuffled=False)[task_id]
      else:
        out_file = self.dev_filepaths(
            data_dir, self.num_dev_shards,
            shuffled=False)[task_id - self.num_train_shards]
      generator_utils.generate_files(
          self.example_generator(encoder, tmp_dir, task_id), [out_file])
      generator_utils.shuffle_dataset([out_file])
docs: Generates training/dev data.
  
      Args:
        data_dir: a string
        tmp_dir: a string
        task_id: an optional integer
      Returns:
        shard or shards for which data was generated.