def METHOD_NAME(
    train_client_spec: client_spec.ClientSpec,
    eval_client_spec: Optional[client_spec.ClientSpec],
    train_data: client_data.ClientData,
    test_data: tf.data.Dataset,
    debug_seed: Optional[int] = None,
) -> baseline_task.BaselineTask:
  """Creates a baseline task of image classification on GLDv2.
  The goal of the task is to minimize the sparse categorical cross entropy
  between the output labels of the model and the true label of the image. A
  MobilenetV2 model is created that expects input image data with a shape of
  [_IMAGE_SIZE, _IMAGE_SIZE, 3] and group normalization layers with a group
  number of _NUM_GROUPS.
  Args:
    train_client_spec: A `tff.simulation.baselines.ClientSpec` specifying how to
      preprocess train client data.
    eval_client_spec: An optional `tff.simulation.baselines.ClientSpec`
      specifying how to preprocess evaluation client data. If set to `None`, the
      evaluation datasets will use a `batch_size` of 64.
    train_data: A `tff.simulation.datasets.ClientData` used for training.
    test_data: A `tf.data.Dataset` used for testing.
    debug_seed: An optional integer seed to force deterministic model
      initialization and dataset shuffle buffers. This is intended for
      unittesting.
  Returns:
    A `tff.simulation.baselines.BaselineTask`.
  """
  if eval_client_spec is None:
    eval_client_spec = client_spec.ClientSpec(
        num_epochs=1, batch_size=64, shuffle_buffer_size=1
    )
  train_preprocess_fn = landmark_preprocessing.create_preprocess_fn(
      train_client_spec,
      is_training=True,
      debug_seed=debug_seed,
  )
  eval_preprocess_fn = landmark_preprocessing.create_preprocess_fn(
      eval_client_spec,
      is_training=False,
      debug_seed=debug_seed,
  )
  task_datasets = task_data.BaselineTaskDatasets(
      train_data=train_data,
      test_data=test_data,
      validation_data=None,
      train_preprocess_fn=train_preprocess_fn,
      eval_preprocess_fn=eval_preprocess_fn,
  )
  def model_fn() -> variable.VariableModel:
    return keras_utils.from_keras_model(
        keras_model=mobilenet_v2.create_mobilenet_v2(
            input_shape=(_IMAGE_SIZE, _IMAGE_SIZE, 3),
            num_groups=_NUM_GROUPS,
            num_classes=_NUM_CLASSES,
        ),
        input_spec=task_datasets.element_type_structure,
        loss=tf.keras.losses.SparseCategoricalCrossentropy(from_logits=False),
        metrics=[tf.keras.metrics.SparseCategoricalAccuracy()],
    )
  return baseline_task.BaselineTask(task_datasets, model_fn)