mmrazor/tools/test.py
XiaotongLu 0b24276158
[Feature] Add DMCP and fix the deploy pipeline of NAS algorithms (#406)
* Copybook

* Newly created copy PR

* Newly created copy PR

* update op_counters

* update subnet/commit/FLOPsCounter

* update docs/UT

* update docs/UT

* add setter for current_mask

* replace current_mask with activated_tensor_channel

* update subnet training

* fix ci

* fix ci

* fix ci

* fix readme.md

* fix readme.md

* update

* fix expression

* fix CI

* fix UT

* fix ci

* fix arch YAMLs

* fix yapf

* revise  mmcv version<=2.0.0rc3

* fix build.yaml

* Rollback mmdet to v3.0.0rc5

* Rollback mmdet to v3.0.0rc5

* Rollback mmseg to v1.0.0rc4

* remove search_groups in mutator

* revert env change

* update usage of sub_model

* fix UT

* fix bignas config

* fix UT for dcff & registry

* update Ut&channel_mutator

* fix test_channel_mutator

* fix Ut

* fix bug for load dcffnet

* update nas config

* update nas config

* fix api in evolution_search_loop

* update evolu_search_loop

* fix metric_predictor

* update url

* fix a0 fine_grained

* fix subnet export misskey

* fix ofa yaml

* fix lint

* fix comments

* add autoformer cfg

* update readme

* update supernet link

* fix sub_model configs

* update subnet inference readme

* fix lint

* fix lint

* Update autoformer_subnet_8xb256_in1k.py

* update test.py to support args.checkpoint as none

* update DARTS readme

* update readme

---------

Co-authored-by: gaoyang07 <1546308416@qq.com>
Co-authored-by: aptsunny <aptsunny@tongji.edu.cn>
Co-authored-by: sunyue1 <sunyue1@sensetime.com>
Co-authored-by: aptsunny <36404164+aptsunny@users.noreply.github.com>
Co-authored-by: wang shiguang <xiaohu_wyyx@163.com>
2023-03-02 18:22:20 +08:00

79 lines
2.6 KiB
Python

# Copyright (c) OpenMMLab. All rights reserved.
import argparse
import os
import os.path as osp
from mmengine.config import Config, DictAction
from mmengine.runner import Runner
from mmrazor.utils import register_all_modules
# TODO: support fuse_conv_bn, visualization, and format_only
def parse_args():
parser = argparse.ArgumentParser(
description='MMRazor test (and eval) a model')
parser.add_argument('config', help='test config file path')
parser.add_argument('checkpoint', help='checkpoint file')
parser.add_argument(
'--work-dir',
help='the directory to save the file containing evaluation metrics')
parser.add_argument(
'--cfg-options',
nargs='+',
action=DictAction,
help='override some settings in the used config, the key-value pair '
'in xxx=yyy format will be merged into config file. If the value to '
'be overwritten is a list, it should be like key="[a,b]" or key=a,b '
'It also allows nested list/tuple values, e.g. key="[(a,b),(c,d)]" '
'Note that the quotation marks are necessary and that no white space '
'is allowed.')
parser.add_argument(
'--launcher',
choices=['none', 'pytorch', 'slurm', 'mpi'],
default='none',
help='job launcher')
parser.add_argument('--local_rank', type=int, default=0)
args = parser.parse_args()
if 'LOCAL_RANK' not in os.environ:
os.environ['LOCAL_RANK'] = str(args.local_rank)
return args
def main():
register_all_modules(False)
args = parse_args()
# load config
cfg = Config.fromfile(args.config)
cfg.launcher = args.launcher
if args.cfg_options is not None:
cfg.merge_from_dict(args.cfg_options)
# work_dir is determined in this priority: CLI > segment in file > filename
if args.work_dir is not None:
# update configs according to CLI args if args.work_dir is not None
cfg.work_dir = args.work_dir
elif cfg.get('work_dir', None) is None:
# use config filename as default work_dir if cfg.work_dir is None
cfg.work_dir = osp.join('./work_dirs',
osp.splitext(osp.basename(args.config))[0])
if args.checkpoint == 'none':
# NOTE: In this case, `args.checkpoint` isn't specified. If you haven't
# specified a checkpoint in the `init_cfg` of the model yet, it may
# cause the invalid results.
cfg.load_from = None
else:
cfg.load_from = args.checkpoint
# build the runner from config
runner = Runner.from_cfg(cfg)
# start testing
runner.test()
if __name__ == '__main__':
main()