refactor autoslim config
parent
5bf1eca4e4
commit
c6a2d482fd
|
@ -0,0 +1,9 @@
|
|||
_base_ = 'imagenet_bs2048_autoslim.py'
|
||||
|
||||
_RandomResizedCrop_cfg = _base_.train_dataloader.dataset.pipeline[1]
|
||||
assert _RandomResizedCrop_cfg.type == 'mmcls.RandomResizedCrop'
|
||||
_RandomResizedCrop_cfg.backend = 'pillow'
|
||||
|
||||
_ResizeEdge_cfg = _base_.test_dataloader.dataset.pipeline[1]
|
||||
assert _ResizeEdge_cfg.type == 'mmcls.ResizeEdge'
|
||||
_ResizeEdge_cfg.backend = 'pillow'
|
|
@ -1,5 +1,5 @@
|
|||
_base_ = [
|
||||
'mmrazor::_base_/settings/imagenet_bs2048_autoslim.py',
|
||||
'mmrazor::_base_/settings/imagenet_bs2048_autoslim_pil.py',
|
||||
'mmcls::_base_/models/mobilenet_v2_1x.py',
|
||||
'mmcls::_base_/default_runtime.py',
|
||||
]
|
||||
|
@ -22,8 +22,9 @@ data_preprocessor = dict(
|
|||
# !autoslim algorithm config
|
||||
# ==========================================================================
|
||||
channel_cfg_paths = [
|
||||
'tests/data/MBV2_220M.yaml', 'tests/data/MBV2_320M.yaml',
|
||||
'tests/data/MBV2_530M.yaml'
|
||||
'https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-220M_acc-71.4_20220715-9c288f3b_subnet_cfg.yaml', # noqa: E501
|
||||
'https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-320M_acc-72.73_20220715-9aa8f8ae_subnet_cfg.yaml', # noqa: E501
|
||||
'https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-530M_acc-74.23_20220715-aa8754fe_subnet_cfg.yaml' # noqa: E501
|
||||
]
|
||||
|
||||
model = dict(
|
||||
|
@ -45,6 +46,6 @@ model_wrapper_cfg = dict(
|
|||
broadcast_buffers=False,
|
||||
find_unused_parameters=True)
|
||||
|
||||
optim_wrapper = dict(accumulative_counts=3)
|
||||
optim_wrapper = dict(accumulative_counts=len(channel_cfg_paths))
|
||||
|
||||
val_cfg = dict(type='mmrazor.SlimmableValLoop')
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
_base_ = 'autoslim_mbv2_1.5x_supernet_8xb256_in1k.py'
|
||||
|
||||
model = dict(channel_cfg_paths='tests/data/MBV2_530M.yaml')
|
|
@ -0,0 +1,4 @@
|
|||
_base_ = 'autoslim_mbv2_1.5x_slimmable_subnet_8xb256_in1k.py'
|
||||
|
||||
_channel_cfg_paths = 'https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-220M_acc-71.4_20220715-9c288f3b_subnet_cfg.yaml' # noqa: E501
|
||||
model = dict(channel_cfg_paths=_channel_cfg_paths)
|
|
@ -0,0 +1,4 @@
|
|||
_base_ = 'autoslim_mbv2_1.5x_slimmable_subnet_8xb256_in1k.py'
|
||||
|
||||
_channel_cfg_paths = 'https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-320M_acc-72.73_20220715-9aa8f8ae_subnet_cfg.yaml' # noqa: E501
|
||||
model = dict(channel_cfg_paths=_channel_cfg_paths)
|
|
@ -0,0 +1,4 @@
|
|||
_base_ = 'autoslim_mbv2_1.5x_slimmable_subnet_8xb256_in1k.py'
|
||||
|
||||
_channel_cfg_paths = 'https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-530M_acc-74.23_20220715-aa8754fe_subnet_cfg.yaml' # noqa: E501
|
||||
model = dict(channel_cfg_paths=_channel_cfg_paths)
|
|
@ -1,5 +1,5 @@
|
|||
_base_ = [
|
||||
'mmrazor::_base_/settings/imagenet_bs2048_autoslim.py',
|
||||
'mmrazor::_base_/settings/imagenet_bs2048_autoslim_pil.py',
|
||||
'mmcls::_base_/models/mobilenet_v2_1x.py',
|
||||
'mmcls::_base_/default_runtime.py',
|
||||
]
|
||||
|
|
|
@ -13,48 +13,48 @@ Collections:
|
|||
Converted From:
|
||||
Code: https://github.com/JiahuiYu/slimmable_networks
|
||||
Models:
|
||||
- Name: autoslim_mbv2_subnet_8xb256_in1k
|
||||
- Name: autoslim_mbv2_1.5x_subnet_8xb256_in1k_flops-530M
|
||||
In Collection: AutoSlim
|
||||
Metadata:
|
||||
Flops(G): 0.53
|
||||
Params(M): 6.5
|
||||
Supernet: MobileNet v2(x1.5)
|
||||
Channel: https://download.openmmlab.com/mmrazor/v0.1/pruning/autoslim/autoslim_mbv2_subnet_8xb256_in1k/autoslim_mbv2_subnet_8xb256_in1k_flops-0.53M_acc-74.23_20211222-e5208bbd_channel_cfg.yaml
|
||||
Channel: https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-530M_acc-74.23_20220715-aa8754fe_subnet_cfg.yaml
|
||||
Results:
|
||||
- Task: Image Classification
|
||||
Dataset: ImageNet-1k
|
||||
Metrics:
|
||||
Top 1 Accuracy: 74.23
|
||||
Top 5 Accuracy: 91.74
|
||||
Config: configs/pruning/autoslim/autoslim_mbv2_subnet_8xb256_in1k.py
|
||||
Weights: https://download.openmmlab.com/mmrazor/v0.1/pruning/autoslim/autoslim_mbv2_subnet_8xb256_in1k/autoslim_mbv2_subnet_8xb256_in1k_flops-0.53M_acc-74.23_20211222-e5208bbd.pth
|
||||
- Name: autoslim_mbv2_subnet_8xb256_in1k
|
||||
Top 5 Accuracy: 91.73
|
||||
Config: configs/pruning/mmcls/autoslim/autoslim_mbv2_1.5x_subnet_8xb256_in1k_flops-530M.py
|
||||
Weights: https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-530M_acc-74.23_20220715-aa8754fe.pth
|
||||
- Name: autoslim_mbv2_1.5x_subnet_8xb256_in1k_flops-320M
|
||||
In Collection: AutoSlim
|
||||
Metadata:
|
||||
Flops(G): 0.32
|
||||
Params(M): 5.77
|
||||
Supernet: MobileNet v2(x1.5)
|
||||
Channel: https://download.openmmlab.com/mmrazor/v0.1/pruning/autoslim/autoslim_mbv2_subnet_8xb256_in1k/autoslim_mbv2_subnet_8xb256_in1k_flops-0.32M_acc-72.73_20211222-b5b0b33c_channel_cfg.yaml
|
||||
Channel: https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-320M_acc-72.73_20220715-9aa8f8ae_subnet_cfg.yaml
|
||||
Results:
|
||||
- Task: Image Classification
|
||||
Dataset: ImageNet-1k
|
||||
Metrics:
|
||||
Top 1 Accuracy: 72.73
|
||||
Top 5 Accuracy: 90.83
|
||||
Config: configs/pruning/autoslim/autoslim_mbv2_subnet_8xb256_in1k.py
|
||||
Weights: https://download.openmmlab.com/mmrazor/v0.1/pruning/autoslim/autoslim_mbv2_subnet_8xb256_in1k/autoslim_mbv2_subnet_8xb256_in1k_flops-0.32M_acc-72.73_20211222-b5b0b33c.pth
|
||||
- Name: autoslim_mbv2_subnet_8xb256_in1k
|
||||
Top 5 Accuracy: 90.84
|
||||
Config: configs/pruning/mmcls/autoslim/autoslim_mbv2_1.5x_subnet_8xb256_in1k_flops-320M.py
|
||||
Weights: https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-320M_acc-72.73_20220715-9aa8f8ae.pth
|
||||
- Name: autoslim_mbv2_1.5x_subnet_8xb256_in1k_flops-220M
|
||||
In Collection: AutoSlim
|
||||
Metadata:
|
||||
Flops(G): 0.22
|
||||
Params(M): 4.13
|
||||
Supernet: MobileNet v2(x1.5)
|
||||
Channel: https://download.openmmlab.com/mmrazor/v0.1/pruning/autoslim/autoslim_mbv2_subnet_8xb256_in1k/autoslim_mbv2_subnet_8xb256_in1k_flops-0.22M_acc-71.39_20211222-43117c7b_channel_cfg.yaml.?
|
||||
Channel: https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-220M_acc-71.4_20220715-9c288f3b_subnet_cfg.yaml
|
||||
Results:
|
||||
- Task: Image Classification
|
||||
Dataset: ImageNet-1k
|
||||
Metrics:
|
||||
Top 1 Accuracy: 74.23
|
||||
Top 5 Accuracy: 91.74
|
||||
Config: configs/pruning/autoslim/autoslim_mbv2_subnet_8xb256_in1k.py
|
||||
Weights: https://download.openmmlab.com/mmrazor/v0.1/pruning/autoslim/autoslim_mbv2_subnet_8xb256_in1k/autoslim_mbv2_subnet_8xb256_in1k_flops-0.22M_acc-71.39_20211222-43117c7b.pth
|
||||
Top 1 Accuracy: 71.4
|
||||
Top 5 Accuracy: 90.08
|
||||
Config: configs/pruning/mmcls/autoslim/autoslim_mbv2_1.5x_subnet_8xb256_in1k_flops-220M.py
|
||||
Weights: https://download.openmmlab.com/mmrazor/v1/autoslim/autoslim_mbv2_subnet_8xb256_in1k_flops-220M_acc-71.4_20220715-9c288f3b.pth
|
||||
|
|
|
@ -2,6 +2,7 @@
|
|||
import argparse
|
||||
import datetime
|
||||
from pathlib import Path
|
||||
from typing import Optional
|
||||
|
||||
import mmcv
|
||||
import torch
|
||||
|
@ -11,10 +12,14 @@ from mmcv import digit_version
|
|||
def parse_args():
|
||||
parser = argparse.ArgumentParser(
|
||||
description='Process a checkpoint to be published')
|
||||
parser.add_argument('in_file', help='input checkpoint filename')
|
||||
parser.add_argument('out_file', help='output checkpoint filename')
|
||||
parser.add_argument('--mutable-cfg', help='input mutable cfg filename')
|
||||
parser.add_argument('--channel-cfg', help='output channel cfg filename')
|
||||
parser.add_argument('in_file', help='input checkpoint filename', type=str)
|
||||
parser.add_argument(
|
||||
'out_file', help='output checkpoint filename', default=None, type=str)
|
||||
parser.add_argument(
|
||||
'subnet_cfg_file',
|
||||
help='input subnet config filename',
|
||||
default=None,
|
||||
type=str)
|
||||
args = parser.parse_args()
|
||||
return args
|
||||
|
||||
|
@ -34,14 +39,16 @@ def cal_file_sha256(file_path: str) -> str:
|
|||
return sha256_hash.hexdigest()
|
||||
|
||||
|
||||
def process_checkpoint(in_file,
|
||||
out_file,
|
||||
mutable_cfg_file=None,
|
||||
channel_cfg_file=None):
|
||||
def process_checkpoint(in_file: str,
|
||||
out_file: Optional[str] = None,
|
||||
subnet_cfg_file: Optional[str] = None) -> None:
|
||||
checkpoint = torch.load(in_file, map_location='cpu')
|
||||
# remove optimizer for smaller file size
|
||||
if 'optimizer' in checkpoint:
|
||||
del checkpoint['optimizer']
|
||||
|
||||
if out_file is None:
|
||||
out_file = in_file
|
||||
# if it is necessary to remove some sensitive data in checkpoint['meta'],
|
||||
# add the code here.
|
||||
if digit_version(torch.__version__) >= digit_version('1.6'):
|
||||
|
@ -62,19 +69,12 @@ def process_checkpoint(in_file,
|
|||
|
||||
print(f'Successfully generated the publish-ckpt as {final_ckpt_file}.')
|
||||
|
||||
if mutable_cfg_file:
|
||||
mutable_cfg = mmcv.fileio.load(mutable_cfg_file)
|
||||
final_mutable_cfg_file = f'{final_file_prefix}_mutable_cfg.yaml'
|
||||
mmcv.fileio.dump(mutable_cfg, final_mutable_cfg_file)
|
||||
print(f'Successfully generated the publish-mutable-cfg as \
|
||||
{final_mutable_cfg_file}.')
|
||||
|
||||
if channel_cfg_file:
|
||||
channel_cfg = mmcv.fileio.load(channel_cfg_file)
|
||||
final_channel_cfg_file = f'{final_file_prefix}_channel_cfg.yaml'
|
||||
mmcv.fileio.dump(channel_cfg, final_channel_cfg_file)
|
||||
print(f'Successfully generated the publish-channel-cfg as \
|
||||
{final_channel_cfg_file}.')
|
||||
if subnet_cfg_file is not None:
|
||||
subnet_cfg = mmcv.fileio.load(subnet_cfg_file)
|
||||
final_subnet_cfg_file = f'{final_file_prefix}_subnet_cfg.yaml'
|
||||
mmcv.fileio.dump(subnet_cfg, final_subnet_cfg_file)
|
||||
print(f'Successfully generated the publish-subnet-cfg as \
|
||||
{final_subnet_cfg_file}.')
|
||||
|
||||
|
||||
def main():
|
||||
|
@ -83,8 +83,7 @@ def main():
|
|||
if not out_dir.exists():
|
||||
raise ValueError(f'Directory {out_dir} does not exist, '
|
||||
'please generate it manually.')
|
||||
process_checkpoint(args.in_file, args.out_file, args.mutable_cfg,
|
||||
args.channel_cfg)
|
||||
process_checkpoint(args.in_file, args.out_file, args.subnet_cfg_file)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
|
Loading…
Reference in New Issue