code: def pre_run_cell(self, info):
      # seed reset
      if self.set_seed != 0:
          set_seed(self.set_seed)
  
      self.cpu_mem_used_at_cell_start = cpu_ram_used()
      if self.backend == "pytorch":
          self.gpu_mem_used_at_cell_start = self.gpu_ram_used()
  
      # XXX: perhaps can be replaced with using torch.cuda.reset_max_cached_memory() once pytorch 1.0.1 is released, will need to check that pytorch ver >= 1.0.1
      #
      # this thread samples RAM usage as long as the current cell is running
      self.peak_monitoring = True
      peak_monitor_thread = threading.Thread(
          target=self.peak_monitor_func
      )
      peak_monitor_thread.daemon = True
      peak_monitor_thread.start()
  
      # time before we execute the current cell
      self.time_start = time.time()
  
imports: from IPython import get_ipython
  from collections import namedtuple
  import datetime
  import gc
  import logging
  import os
  import psutil
  import random
  import sys
  import threading
  import time
label_desc: Use image node_id 9 for calling the CellLogger obj's underlying member method code with example usage: obj.pre_run_cell(info) without return types