code: def estimating_customization_job_time(
      df, recommended_hyperparameters
  ):
      recommended_batch_size = recommended_hyperparameters["batch_size"]
  
      size = df.memory_usage(index=True, deep=True).sum()
      time_in_seconds_per_epoch = size / recommended_batch_size * 0.0025
  
      if time_in_seconds_per_epoch < 60:
          time_per_epoch = (
              f"{round(time_in_seconds_per_epoch, 2)} seconds"
          )
      elif time_in_seconds_per_epoch < 3600:
          time_per_epoch = (
              f"{round(time_in_seconds_per_epoch/60, 2)} minutes"
          )
      else:
          time_per_epoch = (
              f"{round(time_in_seconds_per_epoch/3600, 2)} hours"
          )
  
      message = f"TODO: Training will take around {time_per_epoch} for each epoch for gpt20b model and around half of that for gpt5b. Please set no. of epochs accordingly to ensure that the limit of 8h total is not exceeded."
      return message
  
imports: import argparse
  import math
  import os
  import pathlib
  from collections import Counter
  import numpy
  import pandas
label_desc: Use image node_id 4 for calling a global function with example usage: estimating_customization_job_time(df, recommended_hyperparameters) and returns: message