class_docstr: CPU backend can be used directly for non-gpu setups 
code: def __init__(self, **kwargs):
      super().__init__(**kwargs)
      self.backend = "cpu"
      self.has_gpu = False
      if self.__class__.__name__ == "IPyExperimentsCPU":
          logger.debug("Starting IPyExperimentsCPU")
          self.backend_init()
          self.start()
  
imports: import gc
  import logging
  import os
  import psutil
  import sys
  import threading
  import time
  import weakref
  from IPython import get_ipython
  from IPython.core.magics.namespace import NamespaceMagics
  from collections import namedtuple
  from .cell_logger import CellLogger, b2mb, int2width, get_nvml_gpu_id
label_desc: Use image node_id 1 to create a new IPyExperimentsCPU object from inherited base classes: IPyExperiments with example: obj = IPyExperimentsCPU()