log_utils.py 1.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import logging
  2. import os
  3. import sys
  4. import dllogger
  5. import horovod.mxnet as hvd
  6. def format_step(step):
  7. if isinstance(step, str):
  8. return step
  9. s = ""
  10. if len(step) > 0:
  11. s += "Epoch: {} ".format(step[0])
  12. if len(step) > 1:
  13. s += "Iteration: {} ".format(step[1])
  14. if len(step) > 2:
  15. s += "Validation Iteration: {} ".format(step[2])
  16. if len(step) == 0:
  17. s = "Summary:"
  18. return s
  19. def setup_logging(args):
  20. logging.basicConfig(level=logging.DEBUG, format='{asctime}:{levelname}: {message}', style='{')
  21. if hvd.rank() == 0:
  22. logging_dir = args.logdir if args.logdir is not None else args.workspace
  23. dllogger.init(backends=[
  24. dllogger.StdOutBackend(dllogger.Verbosity.DEFAULT, step_format=format_step),
  25. dllogger.JSONStreamBackend(
  26. dllogger.Verbosity.VERBOSE, os.path.join(logging_dir, args.dllogger_log)),
  27. ])
  28. else:
  29. dllogger.init([])
  30. dllogger.metadata("val.accuracy", {"unit": None})
  31. dllogger.metadata("val.top_k_accuracy_5", {"unit": None})
  32. dllogger.metadata("train.ips", {"unit": "images/s"})
  33. dllogger.metadata("val.ips", {"unit": "images/s"})
  34. dllogger.metadata("val.latency_50", {"unit": "s"})
  35. dllogger.metadata("val.latency_90", {"unit": "s"})
  36. dllogger.metadata("val.latency_avg", {"unit": "s"})