class_docstr: Inference with data-parallel support on multiple GPUs.
  It will build one predict tower on each GPU, and run prediction
  with a large total batch in parallel on all GPUs.
  It will run the remainder (when the total size of input is not a multiple of #GPU)
  sequentially.
code: def _trigger(self):
      for inf in self.infs:
          inf.before_epoch()
  
      total = self._size
      nr_tower = len(self._devices)
      self._input_source.reset_state()
      with _inference_context():
          with tqdm.tqdm(total=total, **get_tqdm_kwargs()) as pbar:
              while total >= nr_tower:
                  self._parallel_hooked_sess.run(fetches=[])
                  pbar.update(nr_tower)
                  total -= nr_tower
              # take care of the rest
              for _ in range(total):
                  self._hooked_sess.run(fetches=[])
                  pbar.update(1)
      for inf in self.infs:
          inf.trigger_epoch()
  
imports: import itertools
  import sys
  from contextlib import contextmanager
  import tqdm
  from tensorflow.python.training.monitored_session import _HookedSession
  from ..compat import tfv1
  from ..dataflow.base import DataFlow
  from ..input_source import FeedInput, InputSource, QueueInput, StagingInput
  from ..tfutils.tower import PredictTowerContext
  from ..utils import logger
  from ..utils.utils import get_tqdm_kwargs
  from .base import Callback
  from .group import Callbacks
  from .inference import Inferencer
label_desc: Use image node_id 7 for calling the DataParallelInferenceRunner obj's underlying member method code with example usage: obj._trigger() without return types