code: def main():
      logging.basicConfig(level=logging.DEBUG)
  
      args = RankingTrainEvalRunner.parse_cli_args()
  
      os.makedirs(args.output_path, exist_ok=True)
  
      logger = None
      if args.log_to_wandb:
          logger = WandbLogger(
              wandb_project=args.wandb_project,
              wandb_entity=args.wandb_entity,
              config=args,
              logging_path=args.output_path,
          )
          logger.init()
  
      train_ds, eval_ds, predict_ds = get_datasets(args)
  
      runner = RankingTrainEvalRunner(
          args, train_ds, eval_ds, predict_ds, logger
      )
      runner.run()
  
imports: import json
  import logging
  import os
  from datetime import datetime
  import merlin.models.tf
  import numpy
  import tensorflow
  from merlin.io.dataset import Dataset
  from merlin.models.tf.logging.callbacks import ExamplesPerSecondCallback, WandbLogger
  from merlin.models.tf.transforms.negative_sampling import InBatchNegatives
  from merlin.schema.tags import Tags
  from .args_parsing import Task, parse_arguments
  from .mtl import get_mtl_loss_weights, get_mtl_prediction_tasks
  from .ranking_models import get_model
label_desc: Use image node_id 2 for calling a global function with example usage: main() without return types