class_docstr: Base class for NCF model benchmark.
code: def _run_and_report_benchmark(self, hr_at_10_min=0, hr_at_10_max=0):
      start_time_sec = time.time()
      stats = ncf_keras_main.run_ncf(FLAGS)
      wall_time_sec = time.time() - start_time_sec
  
      metrics = []
      metrics.append(
          {
              "name": "exp_per_second",
              "value": stats["avg_exp_per_second"],
          }
      )
  
      if hr_at_10_min > 0:
          metrics.append(
              {
                  "name": "hr_at_10",
                  "value": stats["eval_hit_rate"],
                  "min_value": hr_at_10_min,
                  "max_value": hr_at_10_max,
              }
          )
  
          metrics.append({"name": "train_loss", "value": stats["loss"]})
  
      self.report_benchmark(
          iters=-1, wall_time=wall_time_sec, metrics=metrics
      )
  
imports: from __future__ import absolute_import
  from __future__ import division
  from __future__ import print_function
  import os
  import time
  from absl import flags
  from absl.testing import flagsaver
  import tensorflow
  from utils import benchmark_wrappers
  from utils.recommendation import ncf_common
  from utils.recommendation import ncf_keras_main
  from utils.flags import core
label_desc: Use image node_id 3 for calling the NCFKerasBenchmarkBase obj's underlying member method code with example usage: obj._run_and_report_benchmark(hr_at_10_min, hr_at_10_max) without return types