basecls.utils.logger 源代码
#!/usr/bin/env python3
# Copyright (c) 2014-2021 Megvii Inc. All rights reserved.
import os
import megengine.distributed as dist
import megengine.module as M
from basecore.config import ConfigDict
from basecore.network import adjust_stats
from basecore.utils import get_env_info_table, setup_mge_logger, str_timestamp
from loguru import logger
from megengine.utils.module_stats import module_stats
import basecls
__all__ = ["default_logging", "setup_logger"]
[文档]def default_logging(cfg: ConfigDict, model: M.Module):
logger.info(f"\nSystem env:\n{get_env_info_table(basecls=basecls.__version__)}")
# logging config
logger.info(f"\nTraining full config:\n{cfg}")
# logging changed value in config
base_cfg = cfg.__class__.__base__()
logger.info(f"Diff value in config:\n{cfg.diff(base_cfg)}")
# logging model
logger.info(f"\nModel structure:\n{model}")
logger.info("Model status:")
with adjust_stats(model, training=False) as eval_model:
input_size = (
1,
1 if cfg.preprocess.img_color_space == "GRAY" else 3,
cfg.preprocess.img_size,
cfg.preprocess.img_size,
)
module_stats(eval_model, input_shapes=input_size)
[文档]def setup_logger(log_path: str, log_file: str, to_loguru: bool = False):
filename, suffix = os.path.splitext(log_file)
if dist.get_rank() == 0:
time_stamp = str_timestamp()
logger.add(os.path.join(log_path, f"{filename}_{time_stamp}{suffix}"))
else:
# logger to stdout/stderr only available on main process
logger.remove()
setup_mge_logger(path=log_path, log_level="INFO", to_loguru=to_loguru)