code: def log(begin_time, running_num_tks, running_mlm_loss, running_nsp_loss, step_num,
          mlm_metric, nsp_metric, trainer, log_interval):
      
      end_time = time.time()
      duration = end_time - begin_time
      throughput = running_num_tks / duration / 1000.0
      running_mlm_loss = running_mlm_loss / log_interval
      running_nsp_loss = running_nsp_loss / log_interval
      lr = trainer.learning_rate if trainer else 0
      # pylint: disable=line-too-long
      logging.info('[step {}]\tmlm_loss={:.5f}\tmlm_acc={:.5f}\tnsp_loss={:.5f}\tnsp_acc={:.3f}\tthroughput={:.1f}K tks/s\tlr={:.7f} time={:.2f}, latency={:.1f} ms/batch'
                   .format(step_num, running_mlm_loss.asscalar(), mlm_metric.get()[1] * 100, running_nsp_loss.asscalar(),
                           nsp_metric.get()[1] * 100, throughput.asscalar(), lr, duration, duration*1000/log_interval))
docs: Log training progress.