From 668ad4b704d3103a248a3b83ef3a1834d34679a0 Mon Sep 17 00:00:00 2001 From: J-shang Date: Tue, 11 May 2021 19:31:32 +0800 Subject: [PATCH 01/17] add auto compress --- .../auto_compress/auto_compress_engine.py | 146 ++++++++++++++++++ .../pytorch/auto_compress/constants.py | 25 +++ .../pytorch/auto_compress/experiment.py | 24 +++ .../pytorch/auto_compress/interface.py | 88 +++++++++++ .../pytorch/auto_compress/trial_entry.py | 12 ++ .../pytorch/auto_compress/utils.py | 75 +++++++++ 6 files changed, 370 insertions(+) create mode 100644 nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py create mode 100644 nni/algorithms/compression/pytorch/auto_compress/constants.py create mode 100644 nni/algorithms/compression/pytorch/auto_compress/experiment.py create mode 100644 nni/algorithms/compression/pytorch/auto_compress/interface.py create mode 100644 nni/algorithms/compression/pytorch/auto_compress/trial_entry.py create mode 100644 nni/algorithms/compression/pytorch/auto_compress/utils.py diff --git a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py new file mode 100644 index 0000000000..7c4a394e92 --- /dev/null +++ b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py @@ -0,0 +1,146 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +import json_tricks +from typing import Optional, Callable + +from torch.nn import Module +from torch.optim import Optimizer + +import nni +from nni.retiarii.utils import import_ +from .constants import PRUNER_DICT, QUANTIZER_DICT +from .interface import AbstractExecutionEngine, AbstractBasket + +class AutoCompressEngine(AbstractExecutionEngine): + @classmethod + def __convert_pruner_config_list(cls, converted_config_dict: dict) -> list: + config_dict = {} + for key, value in converted_config_dict.items(): + _, op_types, op_names, var_name = key.split('::') + config_dict.setdefault((op_types, op_names), {}) + config_dict[(op_types, op_names)][var_name] = value + + config_list = [] + for key, config in config_dict.items(): + op_types, op_names = key + op_types = op_types.split(':') + op_names = op_names.split(':') + if op_types: + config['op_types'] = op_types + if op_names: + config['op_names'] = op_names + if 'op_types' in config or 'op_names' in config: + config_list.append(config) + + return config_list + + @classmethod + def __convert_quantizer_config_list(cls, converted_config_dict: dict) -> list: + config_dict = {} + for key, value in converted_config_dict.items(): + _, quant_types, op_types, op_names, var_name = key.split('::') + config_dict.setdefault((quant_types, op_types, op_names), {}) + config_dict[(quant_types, op_types, op_names)][var_name] = value + + config_list = [] + for key, config in config_dict.items(): + quant_types, op_types, op_names = key + quant_types = quant_types.split(':') + op_types = op_types.split(':') + op_names = op_names.split(':') + if quant_types: + config['quant_types'] = quant_types + else: + continue + if op_types: + config['op_types'] = op_types + if op_names: + config['op_names'] = op_names + if 'op_types' in config or 'op_names' in config: + config_list.append(config) + + return config_list + + @classmethod + def _convert_config_list(cls, compressor_type: str, converted_config_dict: dict) -> list: + func_dict = { + 'pruner': cls.__convert_pruner_config_list, + 'quantizer': cls.__convert_quantizer_config_list + } + return func_dict[compressor_type](converted_config_dict) + + @classmethod + def __compress_pruning_pipeline(cls, algorithm_name: str, + model: Module, + config_list: list, + evaluator: Callable[Module], + optimizer: Optional[Optimizer], + trainer: Optional[Callable[Module]], + finetune_trainer: Optional[Callable[Module]], + **compressor_parameter_dict) -> Module: + # evaluator is for future use + pruner = PRUNER_DICT[algorithm_name](model, config_list, optimizer, **compressor_parameter_dict) + model = pruner.compress() + if trainer: + trainer(model) + if finetune_trainer: + finetune_trainer(model) + return model + + @classmethod + def __compress_quantization_pipeline(cls, algorithm_name: str, + model: Module, + config_list: list, + evaluator: Callable[Module], + optimizer: Optional[Optimizer], + trainer: Callable[Module], + finetune_trainer: Optional[Callable[Module]], + **compressor_parameter_dict) -> Module: + # evaluator is for future use + quantizer = QUANTIZER_DICT[algorithm_name](model, config_list, optimizer, **compressor_parameter_dict) + model = quantizer.compress() + if trainer: + trainer(model) + if finetune_trainer: + finetune_trainer(model) + return model + + @classmethod + def _compress_pipeline(cls, compressor_type: str, + algorithm_name: str, + model: Module, + config_list: list, + evaluator: Callable[Module], + optimizer: Optional[Optimizer], + trainer: Optional[Callable[Module]], + finetune_trainer: Optional[Callable[Module]], + **compressor_parameter_dict) -> Module: + func_dict = { + 'pruner': cls.__compress_pruning_pipeline, + 'quantizer': cls.__compress_quantization_pipeline + } + return func_dict[compressor_type](algorithm_name, model, config_list, evaluator, optimizer, trainer, + finetune_trainer, **compressor_parameter_dict) + + @classmethod + def trial_execute_compress(cls): + basket: AbstractBasket = import_('basket.Basket') + assert isinstance(basket, AbstractBasket) + + parameter = json_tricks.loads(nni.get_next_parameter())['compressor_type'] + compressor_type, algorithm_config = parameter['_name'], parameter['algorithm_name'] + algorithm_name = algorithm_config['_name'] + converted_config_dict = {k: v for k, v in algorithm_config.items() if k.startswith('config_list::')} + parameter_dict = {k.split('parameter::')[1]: v for k, v in algorithm_config.items() if k.startswith('parameter::')} + + config_list = cls._convert_config_list(compressor_type, converted_config_dict) + + model, evaluator, optimizer = basket.model, basket.evaluator, basket.optimizer + trainer = basket.trainer(compressor_type, algorithm_name) + finetune_trainer = basket.trainer(compressor_type, algorithm_name) + + compressed_model = cls._pipeline_compress(compressor_type, algorithm_name, model, config_list, evaluator, + optimizer, trainer, finetune_trainer, **parameter_dict) + + nni.report_final_result(evaluator(compressed_model)) diff --git a/nni/algorithms/compression/pytorch/auto_compress/constants.py b/nni/algorithms/compression/pytorch/auto_compress/constants.py new file mode 100644 index 0000000000..bd36871cd8 --- /dev/null +++ b/nni/algorithms/compression/pytorch/auto_compress/constants.py @@ -0,0 +1,25 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +from ..pruning import LevelPruner, SlimPruner, L1FilterPruner, L2FilterPruner, FPGMPruner, TaylorFOWeightFilterPruner, \ + ActivationAPoZRankFilterPruner, ActivationMeanRankFilterPruner +from ..quantization.quantizers import NaiveQuantizer, QAT_Quantizer, DoReFaQuantizer, BNNQuantizer + + +PRUNER_DICT = { + 'level': LevelPruner, + 'slim': SlimPruner, + 'l1': L1FilterPruner, + 'l2': L2FilterPruner, + 'fpgm': FPGMPruner, + 'taylorfo': TaylorFOWeightFilterPruner, + 'apoz': ActivationAPoZRankFilterPruner, + 'mean_activation': ActivationMeanRankFilterPruner +} + +QUANTIZER_DICT = { + 'naive': NaiveQuantizer, + 'qat': QAT_Quantizer, + 'dorefa': DoReFaQuantizer, + 'bnn': BNNQuantizer +} diff --git a/nni/algorithms/compression/pytorch/auto_compress/experiment.py b/nni/algorithms/compression/pytorch/auto_compress/experiment.py new file mode 100644 index 0000000000..5db71b2e4a --- /dev/null +++ b/nni/algorithms/compression/pytorch/auto_compress/experiment.py @@ -0,0 +1,24 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +import os + +from pathlib import Path + +from nni.experiment import Experiment, ExperimentConfig + + +class AutoCompressExperimentConfig(ExperimentConfig): + trial_command: str = 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry' + + def __setattr__(self, key, value): + fixed_attrs = {'trial_command': 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry'} + if key in fixed_attrs and fixed_attrs[key] != value: + raise AttributeError(f'{key} is not supposed to be set in AutoCompress mode by users!') + # 'trial_code_directory' is handled differently because the path will be converted to absolute path by us + if key == 'trial_code_directory' and not (value == Path('.') or os.path.isabs(value)): + raise AttributeError(f'{key} is not supposed to be set in Retiarii mode by users!') + self.__dict__[key] = value + +class AutoCompressExperiment(Experiment): + pass diff --git a/nni/algorithms/compression/pytorch/auto_compress/interface.py b/nni/algorithms/compression/pytorch/auto_compress/interface.py new file mode 100644 index 0000000000..782efe24cc --- /dev/null +++ b/nni/algorithms/compression/pytorch/auto_compress/interface.py @@ -0,0 +1,88 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +from abc import ABC, abstractmethod +from torch.nn import Module +from torch.optim import Optimizer +from typing import Optional, Callable + + +class AbstractExecutionEngine(ABC): + @classmethod + @abstractmethod + def trial_execute_compress(cls): + """ + Execute the compressing trial + """ + pass + + +class AbstractBasket(ABC): + @classmethod + @abstractmethod + def model(cls) -> Module: + """ + Returns + ------- + torch.nn.Module + Model to be compress + """ + pass + + @classmethod + @abstractmethod + def evaluator(cls) -> Callable[Module]: + """ + Returns + ------- + function + A function used to evaluate the compressed model, return a scalar + """ + pass + + @classmethod + @abstractmethod + def optimizer(cls) -> Optional[Optimizer]: + """ + Returns + ------- + torch.optim.Optimizer + Optimizer used to train the model + """ + pass + + @classmethod + @abstractmethod + def trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[Module, Optimizer]]: + """ + Parameters + ---------- + compressor_type: str + Support 'pruner' and 'quantizer' + algorithm_name: str + The name of pruner and quantizer, i.e. 'level', 'l1', 'qat' + + Returns + ------- + function + Used to train model in compress stage + """ + pass + + @classmethod + @abstractmethod + def finetune_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[Module, Optimizer]]: + """ + Parameters + ---------- + compressor_type: str + Support 'pruner' and 'quantizer' + algorithm_name: str + The name of pruner and quantizer, i.e. 'level', 'l1', 'qat' + + Returns + ------- + function + Used to train model in finetune stage + """ + pass diff --git a/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py b/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py new file mode 100644 index 0000000000..d88b73a93e --- /dev/null +++ b/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py @@ -0,0 +1,12 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +""" +Entrypoint for trials. +""" +import os + +from .auto_compress_engine import AutoCompressEngine + +if __name__ == '__main__': + AutoCompressEngine.trial_execute_compress() diff --git a/nni/algorithms/compression/pytorch/auto_compress/utils.py b/nni/algorithms/compression/pytorch/auto_compress/utils.py new file mode 100644 index 0000000000..e2950e3c73 --- /dev/null +++ b/nni/algorithms/compression/pytorch/auto_compress/utils.py @@ -0,0 +1,75 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +class AutoCompressSearchSpaceGenerator: + def __init__(self): + self.pruner_choice_list = [] + self.quantizer_choice_list = [] + + def add_pruner_config(self, pruner_name: str, config_list: dict, **algo_kwargs): + sub_search_space = {'_name': pruner_name} + for config in config_list: + op_types = config.pop('op_types', []) + op_names = config.pop('op_names', []) + key_prefix = 'config_list::{}::{}'.format(':'.join(op_types), ':'.join(op_names)) + for var_name, var_search_space in config.items(): + sub_search_space['{}::{}'.format(key_prefix, var_name)] = self._wrap_single_value(var_search_space) + for parameter_name, parameter_search_space in algo_kwargs.items(): + key_prefix = 'parameter' + sub_search_space['{}::{}'.format(key_prefix, parameter_name)] = self._wrap_single_value(parameter_search_space) + self.pruner_choice_list.append(sub_search_space) + + def add_quantizer_config(self, quantizer_name: str, config_list: dict, **algo_kwargs): + sub_search_space = {'_name': quantizer_name} + for config in config_list: + quant_types = config.pop('quant_types', []) + op_types = config.pop('op_types', []) + op_names = config.pop('op_names', []) + key_prefix = 'config_list::{}::{}::{}'.format(':'.join(quant_types), ':'.join(op_types), ':'.join(op_names)) + for var_name, var_search_space in config.items(): + sub_search_space['{}::{}'.format(key_prefix, var_name)] = self._wrap_single_value(var_search_space) + for parameter_name, parameter_search_space in algo_kwargs.items(): + key_prefix = 'parameter' + sub_search_space['{}::{}'.format(key_prefix, parameter_name)] = self._wrap_single_value(parameter_search_space) + self.quantizer_choice_list.append(sub_search_space) + + def dumps(self) -> str: + compressor_choice_value = [] + if self.pruner_choice_list: + compressor_choice_value.append({ + '_name': 'pruner', + 'algorithm_name': { + '_type': 'choice', + '_value': self.pruner_choice_list + } + }) + if self.quantizer_choice_list: + compressor_choice_value.append({ + '_name': 'quantizer', + 'algorithm_name': { + '_type': 'choice', + '_value': self.quantizer_choice_list + } + }) + search_space = { + 'compressor_type': { + '_type': 'choice', + '_value': compressor_choice_value + } + } + return search_space + + def loads(self, search_space: dict): + for v in search_space['compressor_type']['_value']: + if v['_name'] == 'pruner': + self.pruner_choice_list = v['algorithm_name']['_value'] + if v['_name'] == 'quantizer': + self.quantizer_choice_list = v['algorithm_name']['_value'] + + def _wrap_single_value(self, value) -> dict: + if not isinstance(value, dict) or '_type' not in value: + value = { + '_type': 'choice', + '_value': [value] + } + return value From 9ae11f76035d31fd91f4175ed52c6a03de569620 Mon Sep 17 00:00:00 2001 From: J-shang Date: Wed, 12 May 2021 00:32:53 +0800 Subject: [PATCH 02/17] add example --- .../torch/auto_compress_torch.py | 39 ++++++++++++++ .../auto_compress/torch/basket.py | 54 +++++++++++++++++++ .../pytorch/auto_compress/__init__.py | 6 +++ .../auto_compress/auto_compress_engine.py | 28 +++++----- .../pytorch/auto_compress/experiment.py | 32 ++++++++--- .../pytorch/auto_compress/interface.py | 9 ++-- .../pytorch/auto_compress/utils.py | 6 +-- 7 files changed, 146 insertions(+), 28 deletions(-) create mode 100644 examples/model_compress/auto_compress/torch/auto_compress_torch.py create mode 100644 examples/model_compress/auto_compress/torch/basket.py create mode 100644 nni/algorithms/compression/pytorch/auto_compress/__init__.py diff --git a/examples/model_compress/auto_compress/torch/auto_compress_torch.py b/examples/model_compress/auto_compress/torch/auto_compress_torch.py new file mode 100644 index 0000000000..785be52e2b --- /dev/null +++ b/examples/model_compress/auto_compress/torch/auto_compress_torch.py @@ -0,0 +1,39 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +from pathlib import Path + +from nni.algorithms.compression.pytorch.auto_compress import AutoCompressExperiment, AutoCompressSearchSpaceGenerator + +generator = AutoCompressSearchSpaceGenerator() +generator.add_pruner_config('level', [ + { + "sparsity": { + "_type": "uniform", + "_value": [0.01, 0.99] + }, + 'op_types': ['default'] + } +]) +generator.add_pruner_config('l1', [ + { + "sparsity": { + "_type": "uniform", + "_value": [0.01, 0.99] + }, + 'op_types': ['Conv2d'] + } +]) +search_space = generator.dumps() + +experiment = AutoCompressExperiment('local') +experiment.config.experiment_name = 'auto compress torch example' +experiment.config.trial_concurrency = 2 +experiment.config.max_trial_number = 10 +experiment.config.search_space = search_space +experiment.config.trial_code_directory = Path(__file__).parent +experiment.config.tuner.name = 'TPE' +experiment.config.tuner.class_args['optimize_mode'] = 'maximize' +experiment.config.training_service.use_active_gpu = True + +experiment.run(8080) diff --git a/examples/model_compress/auto_compress/torch/basket.py b/examples/model_compress/auto_compress/torch/basket.py new file mode 100644 index 0000000000..c243ae3af9 --- /dev/null +++ b/examples/model_compress/auto_compress/torch/basket.py @@ -0,0 +1,54 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +import random +from typing import Callable + +import torch +import torch.nn as nn +import torch.nn.functional as F + +from nni.algorithms.compression.pytorch.auto_compress import AbstractBasket + + +class LeNet(nn.Module): + def __init__(self): + super(LeNet, self).__init__() + self.conv1 = nn.Conv2d(1, 32, 3, 1) + self.conv2 = nn.Conv2d(32, 64, 3, 1) + self.dropout1 = nn.Dropout2d(0.25) + self.dropout2 = nn.Dropout2d(0.5) + self.fc1 = nn.Linear(9216, 128) + self.fc2 = nn.Linear(128, 10) + + def forward(self, x): + x = self.conv1(x) + x = F.relu(x) + x = self.conv2(x) + x = F.relu(x) + x = F.max_pool2d(x, 2) + x = self.dropout1(x) + x = torch.flatten(x, 1) + x = self.fc1(x) + x = F.relu(x) + x = self.dropout2(x) + x = self.fc2(x) + output = F.log_softmax(x, dim=1) + return output + +model = LeNet() + +class Basket(AbstractBasket): + @classmethod + def model(cls) -> nn.Module: + return model + + @classmethod + def optimizer(cls) -> torch.optim.Optimizer: + return torch.optim.SGD(model.parameters(), lr=0.01) + + @classmethod + def evaluator(cls) -> Callable[[nn.Module], float]: + def random_score(model): + return random.random() + return random_score diff --git a/nni/algorithms/compression/pytorch/auto_compress/__init__.py b/nni/algorithms/compression/pytorch/auto_compress/__init__.py new file mode 100644 index 0000000000..90fd7993dd --- /dev/null +++ b/nni/algorithms/compression/pytorch/auto_compress/__init__.py @@ -0,0 +1,6 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +from .experiment import AutoCompressExperimentConfig, AutoCompressExperiment +from .interface import AbstractBasket +from .utils import AutoCompressSearchSpaceGenerator diff --git a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py index 7c4a394e92..eb401d3ffc 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py +++ b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py @@ -1,7 +1,6 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. -import json_tricks from typing import Optional, Callable from torch.nn import Module @@ -74,10 +73,10 @@ def _convert_config_list(cls, compressor_type: str, converted_config_dict: dict) def __compress_pruning_pipeline(cls, algorithm_name: str, model: Module, config_list: list, - evaluator: Callable[Module], + evaluator: Callable[[Module], float], optimizer: Optional[Optimizer], - trainer: Optional[Callable[Module]], - finetune_trainer: Optional[Callable[Module]], + trainer: Optional[Callable[[Module, Optimizer], None]], + finetune_trainer: Optional[Callable[[Module, Optimizer], None]], **compressor_parameter_dict) -> Module: # evaluator is for future use pruner = PRUNER_DICT[algorithm_name](model, config_list, optimizer, **compressor_parameter_dict) @@ -92,10 +91,10 @@ def __compress_pruning_pipeline(cls, algorithm_name: str, def __compress_quantization_pipeline(cls, algorithm_name: str, model: Module, config_list: list, - evaluator: Callable[Module], + evaluator: Callable[[Module], float], optimizer: Optional[Optimizer], - trainer: Callable[Module], - finetune_trainer: Optional[Callable[Module]], + trainer: Callable[[Module, Optimizer], None], + finetune_trainer: Optional[Callable[[Module, Optimizer], None]], **compressor_parameter_dict) -> Module: # evaluator is for future use quantizer = QUANTIZER_DICT[algorithm_name](model, config_list, optimizer, **compressor_parameter_dict) @@ -111,10 +110,10 @@ def _compress_pipeline(cls, compressor_type: str, algorithm_name: str, model: Module, config_list: list, - evaluator: Callable[Module], + evaluator: Callable[[Module], float], optimizer: Optional[Optimizer], - trainer: Optional[Callable[Module]], - finetune_trainer: Optional[Callable[Module]], + trainer: Optional[Callable[[Module, Optimizer], None]], + finetune_trainer: Optional[Callable[[Module, Optimizer], None]], **compressor_parameter_dict) -> Module: func_dict = { 'pruner': cls.__compress_pruning_pipeline, @@ -125,10 +124,9 @@ def _compress_pipeline(cls, compressor_type: str, @classmethod def trial_execute_compress(cls): - basket: AbstractBasket = import_('basket.Basket') - assert isinstance(basket, AbstractBasket) + basket= import_('basket.Basket') - parameter = json_tricks.loads(nni.get_next_parameter())['compressor_type'] + parameter = nni.get_next_parameter()['compressor_type'] compressor_type, algorithm_config = parameter['_name'], parameter['algorithm_name'] algorithm_name = algorithm_config['_name'] converted_config_dict = {k: v for k, v in algorithm_config.items() if k.startswith('config_list::')} @@ -136,11 +134,11 @@ def trial_execute_compress(cls): config_list = cls._convert_config_list(compressor_type, converted_config_dict) - model, evaluator, optimizer = basket.model, basket.evaluator, basket.optimizer + model, evaluator, optimizer = basket.model(), basket.evaluator(), basket.optimizer() trainer = basket.trainer(compressor_type, algorithm_name) finetune_trainer = basket.trainer(compressor_type, algorithm_name) - compressed_model = cls._pipeline_compress(compressor_type, algorithm_name, model, config_list, evaluator, + compressed_model = cls._compress_pipeline(compressor_type, algorithm_name, model, config_list, evaluator, optimizer, trainer, finetune_trainer, **parameter_dict) nni.report_final_result(evaluator(compressed_model)) diff --git a/nni/algorithms/compression/pytorch/auto_compress/experiment.py b/nni/algorithms/compression/pytorch/auto_compress/experiment.py index 5db71b2e4a..3a6936fbef 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/experiment.py +++ b/nni/algorithms/compression/pytorch/auto_compress/experiment.py @@ -3,22 +3,42 @@ import os +import dataclasses from pathlib import Path +from subprocess import Popen +from typing import Optional -from nni.experiment import Experiment, ExperimentConfig +import nni +from nni.experiment import Experiment, ExperimentConfig, AlgorithmConfig class AutoCompressExperimentConfig(ExperimentConfig): - trial_command: str = 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry' - def __setattr__(self, key, value): fixed_attrs = {'trial_command': 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry'} - if key in fixed_attrs and fixed_attrs[key] != value: + if key in fixed_attrs and type(value) is not type(dataclasses.MISSING) and fixed_attrs[key] != value: raise AttributeError(f'{key} is not supposed to be set in AutoCompress mode by users!') # 'trial_code_directory' is handled differently because the path will be converted to absolute path by us if key == 'trial_code_directory' and not (value == Path('.') or os.path.isabs(value)): - raise AttributeError(f'{key} is not supposed to be set in Retiarii mode by users!') + raise AttributeError(f'{key} is not supposed to be set in AutoCompress mode by users!') self.__dict__[key] = value class AutoCompressExperiment(Experiment): - pass + def __init__(self, config=None, training_service=None): + nni.runtime.log.init_logger_experiment() + + self.config: Optional[ExperimentConfig] = None + self.id: Optional[str] = None + self.port: Optional[int] = None + self._proc: Optional[Popen] = None + self.mode = 'new' + + args = [config, training_service] # deal with overloading + if isinstance(args[0], (str, list)): + self.config = AutoCompressExperimentConfig(args[0]) + self.config.tuner = AlgorithmConfig(name='_none_', class_args={}) + self.config.assessor = AlgorithmConfig(name='_none_', class_args={}) + self.config.advisor = AlgorithmConfig(name='_none_', class_args={}) + else: + self.config = args[0] + + self.config.trial_command = 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry' diff --git a/nni/algorithms/compression/pytorch/auto_compress/interface.py b/nni/algorithms/compression/pytorch/auto_compress/interface.py index 782efe24cc..9033bbbacd 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/interface.py +++ b/nni/algorithms/compression/pytorch/auto_compress/interface.py @@ -2,9 +2,10 @@ # Licensed under the MIT license. from abc import ABC, abstractmethod +from typing import Optional, Callable + from torch.nn import Module from torch.optim import Optimizer -from typing import Optional, Callable class AbstractExecutionEngine(ABC): @@ -31,7 +32,7 @@ def model(cls) -> Module: @classmethod @abstractmethod - def evaluator(cls) -> Callable[Module]: + def evaluator(cls) -> Callable[[Module], float]: """ Returns ------- @@ -53,7 +54,7 @@ def optimizer(cls) -> Optional[Optimizer]: @classmethod @abstractmethod - def trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[Module, Optimizer]]: + def trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[Module, Optimizer], None]]: """ Parameters ---------- @@ -71,7 +72,7 @@ def trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable @classmethod @abstractmethod - def finetune_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[Module, Optimizer]]: + def finetune_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[Module, Optimizer], None]]: """ Parameters ---------- diff --git a/nni/algorithms/compression/pytorch/auto_compress/utils.py b/nni/algorithms/compression/pytorch/auto_compress/utils.py index e2950e3c73..49af43064a 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/utils.py +++ b/nni/algorithms/compression/pytorch/auto_compress/utils.py @@ -6,7 +6,7 @@ def __init__(self): self.pruner_choice_list = [] self.quantizer_choice_list = [] - def add_pruner_config(self, pruner_name: str, config_list: dict, **algo_kwargs): + def add_pruner_config(self, pruner_name: str, config_list: list, **algo_kwargs): sub_search_space = {'_name': pruner_name} for config in config_list: op_types = config.pop('op_types', []) @@ -19,7 +19,7 @@ def add_pruner_config(self, pruner_name: str, config_list: dict, **algo_kwargs): sub_search_space['{}::{}'.format(key_prefix, parameter_name)] = self._wrap_single_value(parameter_search_space) self.pruner_choice_list.append(sub_search_space) - def add_quantizer_config(self, quantizer_name: str, config_list: dict, **algo_kwargs): + def add_quantizer_config(self, quantizer_name: str, config_list: list, **algo_kwargs): sub_search_space = {'_name': quantizer_name} for config in config_list: quant_types = config.pop('quant_types', []) @@ -33,7 +33,7 @@ def add_quantizer_config(self, quantizer_name: str, config_list: dict, **algo_kw sub_search_space['{}::{}'.format(key_prefix, parameter_name)] = self._wrap_single_value(parameter_search_space) self.quantizer_choice_list.append(sub_search_space) - def dumps(self) -> str: + def dumps(self) -> dict: compressor_choice_value = [] if self.pruner_choice_list: compressor_choice_value.append({ From 070111bd791468c37e656be8187f5d63aaaba575 Mon Sep 17 00:00:00 2001 From: J-shang Date: Wed, 12 May 2021 10:18:08 +0800 Subject: [PATCH 03/17] update --- .../torch/auto_compress_torch.py | 2 +- .../auto_compress/torch/basket.py | 81 +++++++++++++++++-- .../auto_compress/auto_compress_engine.py | 2 +- 3 files changed, 75 insertions(+), 10 deletions(-) diff --git a/examples/model_compress/auto_compress/torch/auto_compress_torch.py b/examples/model_compress/auto_compress/torch/auto_compress_torch.py index 785be52e2b..f2b823767e 100644 --- a/examples/model_compress/auto_compress/torch/auto_compress_torch.py +++ b/examples/model_compress/auto_compress/torch/auto_compress_torch.py @@ -28,7 +28,7 @@ experiment = AutoCompressExperiment('local') experiment.config.experiment_name = 'auto compress torch example' -experiment.config.trial_concurrency = 2 +experiment.config.trial_concurrency = 1 experiment.config.max_trial_number = 10 experiment.config.search_space = search_space experiment.config.trial_code_directory = Path(__file__).parent diff --git a/examples/model_compress/auto_compress/torch/basket.py b/examples/model_compress/auto_compress/torch/basket.py index c243ae3af9..7ced5a6050 100644 --- a/examples/model_compress/auto_compress/torch/basket.py +++ b/examples/model_compress/auto_compress/torch/basket.py @@ -1,12 +1,14 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. -import random -from typing import Callable +from typing import Callable, Optional import torch import torch.nn as nn +import torch.optim as optim import torch.nn.functional as F +from torch.optim.lr_scheduler import StepLR +from torchvision import datasets, transforms from nni.algorithms.compression.pytorch.auto_compress import AbstractBasket @@ -36,19 +38,82 @@ def forward(self, x): output = F.log_softmax(x, dim=1) return output -model = LeNet() +_use_cuda = torch.cuda.is_available() + +_train_kwargs = {'batch_size': 64} +_test_kwargs = {'batch_size': 1000} +if _use_cuda: + _cuda_kwargs = {'num_workers': 1, + 'pin_memory': True, + 'shuffle': True} + _train_kwargs.update(_cuda_kwargs) + _test_kwargs.update(_cuda_kwargs) + +_transform = transforms.Compose([ + transforms.ToTensor(), + transforms.Normalize((0.1307,), (0.3081,)) +]) + +_dataset1 = datasets.MNIST('./data', train=True, download=True, transform=_transform) +_dataset2 = datasets.MNIST('./data', train=False, transform=_transform) +_train_loader = torch.utils.data.DataLoader(_dataset1, **_train_kwargs) +_test_loader = torch.utils.data.DataLoader(_dataset2, **_test_kwargs) + +_device = torch.device("cuda" if _use_cuda else "cpu") +_epoch = 2 + +def _train(model, optimizer): + model.train() + for data, target in _train_loader: + data, target = data.to(_device), target.to(_device) + optimizer.zero_grad() + output = model(data) + loss = F.nll_loss(output, target) + loss.backward() + optimizer.step() + +def _test(model): + model.eval() + test_loss = 0 + correct = 0 + with torch.no_grad(): + for data, target in _test_loader: + data, target = data.to(_device), target.to(_device) + output = model(data) + test_loss += F.nll_loss(output, target, reduction='sum').item() + pred = output.argmax(dim=1, keepdim=True) + correct += pred.eq(target.view_as(pred)).sum().item() + test_loss /= len(_test_loader.dataset) + acc = 100 * correct / len(_test_loader.dataset) + print('\nTest set: Average loss: {:.4f}, Accuracy: {}/{} ({:.0f}%)\n'.format( + test_loss, correct, len(_test_loader.dataset), acc)) + return acc + +_model = LeNet().to(_device) + +_pre_train_optimizer = optim.Adadelta(_model.parameters(), lr=1) +_scheduler = StepLR(_pre_train_optimizer, step_size=1, gamma=0.7) +for _ in range(_epoch): + _train(_model, _pre_train_optimizer) + _test(_model) + _scheduler.step() class Basket(AbstractBasket): @classmethod def model(cls) -> nn.Module: - return model + return _model @classmethod def optimizer(cls) -> torch.optim.Optimizer: - return torch.optim.SGD(model.parameters(), lr=0.01) + return torch.optim.SGD(_model.parameters(), lr=0.01) @classmethod def evaluator(cls) -> Callable[[nn.Module], float]: - def random_score(model): - return random.random() - return random_score + return _test + + @classmethod + def finetune_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[nn.Module, optim.Optimizer], None]]: + def _trainer(model, optimizer): + for _ in range(_epoch): + _train(model, optimizer) + return _trainer diff --git a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py index eb401d3ffc..41d4e2289d 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py +++ b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py @@ -9,7 +9,7 @@ import nni from nni.retiarii.utils import import_ from .constants import PRUNER_DICT, QUANTIZER_DICT -from .interface import AbstractExecutionEngine, AbstractBasket +from .interface import AbstractExecutionEngine class AutoCompressEngine(AbstractExecutionEngine): @classmethod From b882f0d534ad258b4e487f5e1cb36749365caaa1 Mon Sep 17 00:00:00 2001 From: J-shang Date: Wed, 12 May 2021 10:36:49 +0800 Subject: [PATCH 04/17] update --- .../model_compress/auto_compress/torch/basket.py | 1 + .../pytorch/auto_compress/auto_compress_engine.py | 12 +++++++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/examples/model_compress/auto_compress/torch/basket.py b/examples/model_compress/auto_compress/torch/basket.py index 7ced5a6050..0c2ceee167 100644 --- a/examples/model_compress/auto_compress/torch/basket.py +++ b/examples/model_compress/auto_compress/torch/basket.py @@ -12,6 +12,7 @@ from nni.algorithms.compression.pytorch.auto_compress import AbstractBasket +torch.manual_seed(1) class LeNet(nn.Module): def __init__(self): diff --git a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py index 41d4e2289d..20a5e4eda3 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py +++ b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py @@ -1,6 +1,8 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. +import logging +import json_tricks from typing import Optional, Callable from torch.nn import Module @@ -11,6 +13,9 @@ from .constants import PRUNER_DICT, QUANTIZER_DICT from .interface import AbstractExecutionEngine +_logger = logging.getLogger(__name__) +_logger.setLevel(logging.INFO) + class AutoCompressEngine(AbstractExecutionEngine): @classmethod def __convert_pruner_config_list(cls, converted_config_dict: dict) -> list: @@ -23,8 +28,8 @@ def __convert_pruner_config_list(cls, converted_config_dict: dict) -> list: config_list = [] for key, config in config_dict.items(): op_types, op_names = key - op_types = op_types.split(':') - op_names = op_names.split(':') + op_types = op_types.split(':') if op_types else [] + op_names = op_names.split(':') if op_names else [] if op_types: config['op_types'] = op_types if op_names: @@ -119,12 +124,13 @@ def _compress_pipeline(cls, compressor_type: str, 'pruner': cls.__compress_pruning_pipeline, 'quantizer': cls.__compress_quantization_pipeline } + _logger.info('%s compressor config_list:\n%s', algorithm_name, json_tricks.dumps(config_list, indent=4)) return func_dict[compressor_type](algorithm_name, model, config_list, evaluator, optimizer, trainer, finetune_trainer, **compressor_parameter_dict) @classmethod def trial_execute_compress(cls): - basket= import_('basket.Basket') + basket = import_('basket.Basket') parameter = nni.get_next_parameter()['compressor_type'] compressor_type, algorithm_config = parameter['_name'], parameter['algorithm_name'] From d15f49dc51f5a1aef67c09584fdfea0546124452 Mon Sep 17 00:00:00 2001 From: J-shang Date: Thu, 13 May 2021 10:19:54 +0800 Subject: [PATCH 05/17] rename --- .../torch/{basket.py => auto_compress_module.py} | 4 ++-- .../compression/pytorch/auto_compress/__init__.py | 2 +- .../pytorch/auto_compress/auto_compress_engine.py | 8 ++++---- .../compression/pytorch/auto_compress/interface.py | 2 +- 4 files changed, 8 insertions(+), 8 deletions(-) rename examples/model_compress/auto_compress/torch/{basket.py => auto_compress_module.py} (97%) diff --git a/examples/model_compress/auto_compress/torch/basket.py b/examples/model_compress/auto_compress/torch/auto_compress_module.py similarity index 97% rename from examples/model_compress/auto_compress/torch/basket.py rename to examples/model_compress/auto_compress/torch/auto_compress_module.py index 0c2ceee167..1a30fc1aff 100644 --- a/examples/model_compress/auto_compress/torch/basket.py +++ b/examples/model_compress/auto_compress/torch/auto_compress_module.py @@ -10,7 +10,7 @@ from torch.optim.lr_scheduler import StepLR from torchvision import datasets, transforms -from nni.algorithms.compression.pytorch.auto_compress import AbstractBasket +from nni.algorithms.compression.pytorch.auto_compress import AbstractAutoCompressModule torch.manual_seed(1) @@ -99,7 +99,7 @@ def _test(model): _test(_model) _scheduler.step() -class Basket(AbstractBasket): +class AutoCompressModule(AbstractAutoCompressModule): @classmethod def model(cls) -> nn.Module: return _model diff --git a/nni/algorithms/compression/pytorch/auto_compress/__init__.py b/nni/algorithms/compression/pytorch/auto_compress/__init__.py index 90fd7993dd..eab270b976 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/__init__.py +++ b/nni/algorithms/compression/pytorch/auto_compress/__init__.py @@ -2,5 +2,5 @@ # Licensed under the MIT license. from .experiment import AutoCompressExperimentConfig, AutoCompressExperiment -from .interface import AbstractBasket +from .interface import AbstractAutoCompressModule from .utils import AutoCompressSearchSpaceGenerator diff --git a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py index 20a5e4eda3..05e987f9ef 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py +++ b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py @@ -130,7 +130,7 @@ def _compress_pipeline(cls, compressor_type: str, @classmethod def trial_execute_compress(cls): - basket = import_('basket.Basket') + auto_compress_module = import_('auto_compress_module.AutoCompressModule') parameter = nni.get_next_parameter()['compressor_type'] compressor_type, algorithm_config = parameter['_name'], parameter['algorithm_name'] @@ -140,9 +140,9 @@ def trial_execute_compress(cls): config_list = cls._convert_config_list(compressor_type, converted_config_dict) - model, evaluator, optimizer = basket.model(), basket.evaluator(), basket.optimizer() - trainer = basket.trainer(compressor_type, algorithm_name) - finetune_trainer = basket.trainer(compressor_type, algorithm_name) + model, evaluator, optimizer = auto_compress_module.model(), auto_compress_module.evaluator(), auto_compress_module.optimizer() + trainer = auto_compress_module.trainer(compressor_type, algorithm_name) + finetune_trainer = auto_compress_module.trainer(compressor_type, algorithm_name) compressed_model = cls._compress_pipeline(compressor_type, algorithm_name, model, config_list, evaluator, optimizer, trainer, finetune_trainer, **parameter_dict) diff --git a/nni/algorithms/compression/pytorch/auto_compress/interface.py b/nni/algorithms/compression/pytorch/auto_compress/interface.py index 9033bbbacd..b800c2fcbf 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/interface.py +++ b/nni/algorithms/compression/pytorch/auto_compress/interface.py @@ -18,7 +18,7 @@ def trial_execute_compress(cls): pass -class AbstractBasket(ABC): +class AbstractAutoCompressModule(ABC): @classmethod @abstractmethod def model(cls) -> Module: From 03d21cf5acf7e7ee841ccbe1aa1a6f972ff71168 Mon Sep 17 00:00:00 2001 From: J-shang Date: Mon, 17 May 2021 11:00:29 +0800 Subject: [PATCH 06/17] fix nested convert --- .../auto_compress/torch/auto_compress_torch.py | 9 +++++++++ .../compression/pytorch/auto_compress/utils.py | 12 +++++++++--- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/examples/model_compress/auto_compress/torch/auto_compress_torch.py b/examples/model_compress/auto_compress/torch/auto_compress_torch.py index f2b823767e..5599289cce 100644 --- a/examples/model_compress/auto_compress/torch/auto_compress_torch.py +++ b/examples/model_compress/auto_compress/torch/auto_compress_torch.py @@ -24,6 +24,15 @@ 'op_types': ['Conv2d'] } ]) +generator.add_quantizer_config('qat', [ + { + 'quant_types': ['weight', 'output'], + 'quant_bits': { + 'weight': 8, + 'output': 8 + }, + 'op_types': ['Conv2d', 'Linear'] + }]) search_space = generator.dumps() experiment = AutoCompressExperiment('local') diff --git a/nni/algorithms/compression/pytorch/auto_compress/utils.py b/nni/algorithms/compression/pytorch/auto_compress/utils.py index 49af43064a..d2a7ce30bc 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/utils.py +++ b/nni/algorithms/compression/pytorch/auto_compress/utils.py @@ -67,9 +67,15 @@ def loads(self, search_space: dict): self.quantizer_choice_list = v['algorithm_name']['_value'] def _wrap_single_value(self, value) -> dict: - if not isinstance(value, dict) or '_type' not in value: - value = { + if not isinstance(value, dict): + converted_value = { '_type': 'choice', '_value': [value] } - return value + elif '_type' not in value: + converted_value = {} + for k, v in value.items(): + converted_value[k] = self._wrap_single_value(v) + else: + converted_value = value + return converted_value From dea696f568738a47a714dfb57b66f66f275a76b9 Mon Sep 17 00:00:00 2001 From: J-shang Date: Mon, 17 May 2021 16:47:00 +0800 Subject: [PATCH 07/17] handle import_ --- .../pytorch/auto_compress/auto_compress_engine.py | 2 +- .../compression/pytorch/auto_compress/utils.py | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py index 05e987f9ef..eccb55b1cd 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py +++ b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py @@ -9,9 +9,9 @@ from torch.optim import Optimizer import nni -from nni.retiarii.utils import import_ from .constants import PRUNER_DICT, QUANTIZER_DICT from .interface import AbstractExecutionEngine +from .utils import import_ _logger = logging.getLogger(__name__) _logger.setLevel(logging.INFO) diff --git a/nni/algorithms/compression/pytorch/auto_compress/utils.py b/nni/algorithms/compression/pytorch/auto_compress/utils.py index d2a7ce30bc..f3eb31b1d7 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/utils.py +++ b/nni/algorithms/compression/pytorch/auto_compress/utils.py @@ -1,6 +1,9 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. +from typing import Any + + class AutoCompressSearchSpaceGenerator: def __init__(self): self.pruner_choice_list = [] @@ -79,3 +82,11 @@ def _wrap_single_value(self, value) -> dict: else: converted_value = value return converted_value + + +def import_(target: str, allow_none: bool = False) -> Any: + if target is None: + return None + path, identifier = target.rsplit('.', 1) + module = __import__(path, globals(), locals(), [identifier]) + return getattr(module, identifier) From a85abc78b40a394365262ca27bace4dd3f65c1d5 Mon Sep 17 00:00:00 2001 From: J-shang Date: Mon, 17 May 2021 19:04:03 +0800 Subject: [PATCH 08/17] update config auto compress module file path --- .../auto_compress/torch/auto_compress_torch.py | 5 ++++- .../pytorch/auto_compress/auto_compress_engine.py | 6 +++--- .../pytorch/auto_compress/experiment.py | 15 ++++++++++++--- .../pytorch/auto_compress/trial_entry.py | 12 ++++++++++-- 4 files changed, 29 insertions(+), 9 deletions(-) diff --git a/examples/model_compress/auto_compress/torch/auto_compress_torch.py b/examples/model_compress/auto_compress/torch/auto_compress_torch.py index 5599289cce..4d13cd17b5 100644 --- a/examples/model_compress/auto_compress/torch/auto_compress_torch.py +++ b/examples/model_compress/auto_compress/torch/auto_compress_torch.py @@ -45,4 +45,7 @@ experiment.config.tuner.class_args['optimize_mode'] = 'maximize' experiment.config.training_service.use_active_gpu = True -experiment.run(8080) +# the relative file path under trial_code_directory, which contains the class AutoCompressModule +experiment.config.auto_compress_module_file_name = './auto_compress_module.py' + +experiment.run(8088) diff --git a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py index eccb55b1cd..f598d6a01d 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py +++ b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py @@ -2,9 +2,9 @@ # Licensed under the MIT license. import logging -import json_tricks from typing import Optional, Callable +import json_tricks from torch.nn import Module from torch.optim import Optimizer @@ -129,8 +129,8 @@ def _compress_pipeline(cls, compressor_type: str, finetune_trainer, **compressor_parameter_dict) @classmethod - def trial_execute_compress(cls): - auto_compress_module = import_('auto_compress_module.AutoCompressModule') + def trial_execute_compress(cls, module_name): + auto_compress_module = import_('{}.AutoCompressModule'.format(module_name)) parameter = nni.get_next_parameter()['compressor_type'] compressor_type, algorithm_config = parameter['_name'], parameter['algorithm_name'] diff --git a/nni/algorithms/compression/pytorch/auto_compress/experiment.py b/nni/algorithms/compression/pytorch/auto_compress/experiment.py index 3a6936fbef..4cdea10173 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/experiment.py +++ b/nni/algorithms/compression/pytorch/auto_compress/experiment.py @@ -13,20 +13,27 @@ class AutoCompressExperimentConfig(ExperimentConfig): + auto_compress_module_file_name: str = 'auto_compress_module.py' + def __setattr__(self, key, value): fixed_attrs = {'trial_command': 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry'} - if key in fixed_attrs and type(value) is not type(dataclasses.MISSING) and fixed_attrs[key] != value: + if key in fixed_attrs and type(value) is not type(dataclasses.MISSING) and not value.startswith(fixed_attrs[key]): raise AttributeError(f'{key} is not supposed to be set in AutoCompress mode by users!') # 'trial_code_directory' is handled differently because the path will be converted to absolute path by us if key == 'trial_code_directory' and not (value == Path('.') or os.path.isabs(value)): raise AttributeError(f'{key} is not supposed to be set in AutoCompress mode by users!') self.__dict__[key] = value + def validate(self, initialized_tuner: bool = False) -> None: + super().validate(initialized_tuner=initialized_tuner) + if not Path(self.trial_code_directory, self.auto_compress_module_file_name).exists(): + raise ValueError('{} not exsisted under {}'.format(self.auto_compress_module_file_name, self.trial_code_directory)) + class AutoCompressExperiment(Experiment): def __init__(self, config=None, training_service=None): nni.runtime.log.init_logger_experiment() - self.config: Optional[ExperimentConfig] = None + self.config: Optional[AutoCompressExperimentConfig] = None self.id: Optional[str] = None self.port: Optional[int] = None self._proc: Optional[Popen] = None @@ -41,4 +48,6 @@ def __init__(self, config=None, training_service=None): else: self.config = args[0] - self.config.trial_command = 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry' + def start(self, port: int, debug: bool) -> None: + self.config.trial_command = 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry --module_file_name {}'.format(self.config.auto_compress_module_file_name) + super().start(port=port, debug=debug) diff --git a/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py b/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py index d88b73a93e..2ccb4a9219 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py +++ b/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py @@ -4,9 +4,17 @@ """ Entrypoint for trials. """ -import os +import argparse +from pathlib import Path +import re from .auto_compress_engine import AutoCompressEngine if __name__ == '__main__': - AutoCompressEngine.trial_execute_compress() + parser = argparse.ArgumentParser(description='trial entry for auto compress.') + parser.add_argument('--module_file_name', required=True, dest='module_file_name', help='the path of auto compress module file') + args = parser.parse_args() + + module_name = Path(args.module_file_name).as_posix() + module_name = re.sub(re.escape('.py') + '$', '', module_name).replace('/', '.') + AutoCompressEngine.trial_execute_compress(module_name) From 85448475cbfa8279fc6dbe6a108fdbf4539c4867 Mon Sep 17 00:00:00 2001 From: J-shang Date: Tue, 18 May 2021 14:45:22 +0800 Subject: [PATCH 09/17] add doc --- docs/en_US/Compression/AutoCompression.rst | 101 ++++++++++++++++++ .../Compression/AutoPruningUsingTuners.rst | 2 +- docs/en_US/Compression/advanced.rst | 3 +- 3 files changed, 104 insertions(+), 2 deletions(-) create mode 100644 docs/en_US/Compression/AutoCompression.rst diff --git a/docs/en_US/Compression/AutoCompression.rst b/docs/en_US/Compression/AutoCompression.rst new file mode 100644 index 0000000000..b822ab998d --- /dev/null +++ b/docs/en_US/Compression/AutoCompression.rst @@ -0,0 +1,101 @@ +Auto Compression with NNI Experiment +==================================== + +This approach is mainly a combination of compression and nni experiments. +It allows users to define compressor search space, including types, parameters, etc. +Its using experience is similar to launch the NNI experiment from python. +The main differences are as follows: + +* Use a generator to help generate search space object. +* Need to implement the abstract class ``AbstractAutoCompressModule`` as ``AutoCompressModule``. +* No need to set ``trial_command``, additional need to set ``auto_compress_module_file_name``. + +Generate search space +--------------------- + +Due to the extensive use of nested search space, we recommend using generator to configure search space. +The following is an example. Using ``add_pruner_config()`` and ``add_quantizer_config()`` add subconfig, then ``dumps()`` search space dict. + +.. code-block:: python + + from nni.algorithms.compression.pytorch.auto_compress import AutoCompressSearchSpaceGenerator + + generator = AutoCompressSearchSpaceGenerator() + generator.add_pruner_config('level', [ + { + "sparsity": { + "_type": "uniform", + "_value": [0.01, 0.99] + }, + 'op_types': ['default'] + } + ]) + generator.add_quantizer_config('qat', [ + { + 'quant_types': ['weight', 'output'], + 'quant_bits': { + 'weight': 8, + 'output': 8 + }, + 'op_types': ['Conv2d', 'Linear'] + }]) + + search_space = generator.dumps() + +Now we support the following pruners and quantizers: + +.. code-block:: python + + PRUNER_DICT = { + 'level': LevelPruner, + 'slim': SlimPruner, + 'l1': L1FilterPruner, + 'l2': L2FilterPruner, + 'fpgm': FPGMPruner, + 'taylorfo': TaylorFOWeightFilterPruner, + 'apoz': ActivationAPoZRankFilterPruner, + 'mean_activation': ActivationMeanRankFilterPruner + } + + QUANTIZER_DICT = { + 'naive': NaiveQuantizer, + 'qat': QAT_Quantizer, + 'dorefa': DoReFaQuantizer, + 'bnn': BNNQuantizer + } + +Implement ``AbstractAutoCompressModule`` +---------------------------------------- + +This class will be called by ``AutoCompressEngine`` on training service. +Users need to implement at least ``model()`` and ``evaluator``, and naming the class as ``AutoCompressModule``. +The path of file that contains the ``AutoCompressModule`` needs to be specified in experiment config. +The full abstract interface refers to :githublink:`interface.py `. +An example of ``AutoCompressModule`` implementation refers to :githublink:`auto_compress_module.py `. + +Launch NNI experiment +--------------------- + +Similar to launch from python, the difference is no need to set ``trial_command``. +By default, ``auto_compress_module_file_name`` is set as ``./auto_compress_module.py``. +Remember that ``auto_compress_module_file_name`` is the relative file path under ``trial_code_directory``. + +.. code-block:: python + + from pathlib import Path + from nni.algorithms.compression.pytorch.auto_compress import AutoCompressExperiment + + experiment = AutoCompressExperiment('local') + experiment.config.experiment_name = 'auto compress torch example' + experiment.config.trial_concurrency = 1 + experiment.config.max_trial_number = 10 + experiment.config.search_space = search_space + experiment.config.trial_code_directory = Path(__file__).parent + experiment.config.tuner.name = 'TPE' + experiment.config.tuner.class_args['optimize_mode'] = 'maximize' + experiment.config.training_service.use_active_gpu = True + + # the relative file path under trial_code_directory, which contains the class AutoCompressModule + experiment.config.auto_compress_module_file_name = './auto_compress_module.py' + + experiment.run(8088) diff --git a/docs/en_US/Compression/AutoPruningUsingTuners.rst b/docs/en_US/Compression/AutoPruningUsingTuners.rst index 85d67ba4c5..8ac899780a 100644 --- a/docs/en_US/Compression/AutoPruningUsingTuners.rst +++ b/docs/en_US/Compression/AutoPruningUsingTuners.rst @@ -3,7 +3,7 @@ Automatic Model Pruning using NNI Tuners It's convenient to implement auto model pruning with NNI compression and NNI tuners -First, model compression with NNI +First, model pruning with NNI --------------------------------- You can easily compress a model with NNI compression. Take pruning for example, you can prune a pretrained model with L2FilterPruner like this diff --git a/docs/en_US/Compression/advanced.rst b/docs/en_US/Compression/advanced.rst index 67764d1cd2..86c2b1da1c 100644 --- a/docs/en_US/Compression/advanced.rst +++ b/docs/en_US/Compression/advanced.rst @@ -6,4 +6,5 @@ Advanced Usage Framework <./Framework> Customize a new algorithm <./CustomizeCompressor> - Automatic Model Compression <./AutoPruningUsingTuners> + Automatic Model Pruning <./AutoPruningUsingTuners> + Automatic Model Compression (Beta) <./AutoCompression> From 8ef3e0dc390a33c06fcc6d5486ac0caf4070d459 Mon Sep 17 00:00:00 2001 From: J-shang Date: Tue, 18 May 2021 14:46:36 +0800 Subject: [PATCH 10/17] update comments --- .../pytorch/auto_compress/experiment.py | 2 +- .../pytorch/auto_compress/interface.py | 3 ++ .../pytorch/auto_compress/utils.py | 40 +++++++++++++++++-- 3 files changed, 41 insertions(+), 4 deletions(-) diff --git a/nni/algorithms/compression/pytorch/auto_compress/experiment.py b/nni/algorithms/compression/pytorch/auto_compress/experiment.py index 4cdea10173..8a31b1f8d6 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/experiment.py +++ b/nni/algorithms/compression/pytorch/auto_compress/experiment.py @@ -13,7 +13,7 @@ class AutoCompressExperimentConfig(ExperimentConfig): - auto_compress_module_file_name: str = 'auto_compress_module.py' + auto_compress_module_file_name: str = './auto_compress_module.py' def __setattr__(self, key, value): fixed_attrs = {'trial_command': 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry'} diff --git a/nni/algorithms/compression/pytorch/auto_compress/interface.py b/nni/algorithms/compression/pytorch/auto_compress/interface.py index b800c2fcbf..3720b0925a 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/interface.py +++ b/nni/algorithms/compression/pytorch/auto_compress/interface.py @@ -19,6 +19,9 @@ def trial_execute_compress(cls): class AbstractAutoCompressModule(ABC): + """ + The abstract container that user need to implement. + """ @classmethod @abstractmethod def model(cls) -> Module: diff --git a/nni/algorithms/compression/pytorch/auto_compress/utils.py b/nni/algorithms/compression/pytorch/auto_compress/utils.py index f3eb31b1d7..ee3954f3cd 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/utils.py +++ b/nni/algorithms/compression/pytorch/auto_compress/utils.py @@ -5,11 +5,26 @@ class AutoCompressSearchSpaceGenerator: + """ + For convenient generation of search space that can be used by tuner. + """ + def __init__(self): self.pruner_choice_list = [] self.quantizer_choice_list = [] def add_pruner_config(self, pruner_name: str, config_list: list, **algo_kwargs): + """ + Parameters + ---------- + pruner_name + Supported pruner name: 'level', 'slim', 'l1', 'l2', 'fpgm', 'taylorfo', 'apoz', 'mean_activation'. + config_list + Except 'op_types' and 'op_names', other config value can be written as `{'_type': ..., '_value': ...}`. + **algo_kwargs + The additional pruner parameters except 'model', 'config_list', 'optimizer'. + i.e., you can set `statistics_batch_num={'_type': 'choice', '_value': [1, 2, 3]}` in TaylorFOWeightFilterPruner or just `statistics_batch_num=1`. + """ sub_search_space = {'_name': pruner_name} for config in config_list: op_types = config.pop('op_types', []) @@ -23,6 +38,16 @@ def add_pruner_config(self, pruner_name: str, config_list: list, **algo_kwargs): self.pruner_choice_list.append(sub_search_space) def add_quantizer_config(self, quantizer_name: str, config_list: list, **algo_kwargs): + """ + Parameters + ---------- + quantizer_name + Supported pruner name: 'naive', 'qat', 'dorefa', 'bnn'. + config_list + Except 'quant_types', 'op_types' and 'op_names', other config value can be written as `{'_type': ..., '_value': ...}`. + **algo_kwargs + The additional pruner parameters except 'model', 'config_list', 'optimizer'. + """ sub_search_space = {'_name': quantizer_name} for config in config_list: quant_types = config.pop('quant_types', []) @@ -37,6 +62,9 @@ def add_quantizer_config(self, quantizer_name: str, config_list: list, **algo_kw self.quantizer_choice_list.append(sub_search_space) def dumps(self) -> dict: + """ + Dump the search space as a dict. + """ compressor_choice_value = [] if self.pruner_choice_list: compressor_choice_value.append({ @@ -62,12 +90,18 @@ def dumps(self) -> dict: } return search_space - def loads(self, search_space: dict): + @classmethod + def loads(cls, search_space: dict): + """ + Return a AutoCompressSearchSpaceGenerator instance load from a search space dict. + """ + generator = AutoCompressSearchSpaceGenerator() for v in search_space['compressor_type']['_value']: if v['_name'] == 'pruner': - self.pruner_choice_list = v['algorithm_name']['_value'] + generator.pruner_choice_list = v['algorithm_name']['_value'] if v['_name'] == 'quantizer': - self.quantizer_choice_list = v['algorithm_name']['_value'] + generator.quantizer_choice_list = v['algorithm_name']['_value'] + return generator def _wrap_single_value(self, value) -> dict: if not isinstance(value, dict): From cc85d47c7ecb1dad217a223463416093b9d7af40 Mon Sep 17 00:00:00 2001 From: J-shang Date: Tue, 25 May 2021 19:31:28 +0800 Subject: [PATCH 11/17] update doc --- docs/en_US/Compression/AutoCompression.rst | 28 +++++-- .../Compression/AutoPruningUsingTuners.rst | 75 ------------------- docs/en_US/Compression/advanced.rst | 1 - .../pytorch/auto_compress/interface.py | 21 +++++- 4 files changed, 41 insertions(+), 84 deletions(-) delete mode 100644 docs/en_US/Compression/AutoPruningUsingTuners.rst diff --git a/docs/en_US/Compression/AutoCompression.rst b/docs/en_US/Compression/AutoCompression.rst index b822ab998d..d9d939077d 100644 --- a/docs/en_US/Compression/AutoCompression.rst +++ b/docs/en_US/Compression/AutoCompression.rst @@ -7,7 +7,7 @@ Its using experience is similar to launch the NNI experiment from python. The main differences are as follows: * Use a generator to help generate search space object. -* Need to implement the abstract class ``AbstractAutoCompressModule`` as ``AutoCompressModule``. +* Need to provide the model to be compressed, and the model should have already pre-trained. * No need to set ``trial_command``, additional need to set ``auto_compress_module_file_name``. Generate search space @@ -64,11 +64,29 @@ Now we support the following pruners and quantizers: 'bnn': BNNQuantizer } -Implement ``AbstractAutoCompressModule`` ----------------------------------------- +Provide user model for compression +---------------------------------- -This class will be called by ``AutoCompressEngine`` on training service. -Users need to implement at least ``model()`` and ``evaluator``, and naming the class as ``AutoCompressModule``. +Users need to inherit ``AbstractAutoCompressModule`` and override the abstract class function. + +.. code-block:: python + + from nni.algorithms.compression.pytorch.auto_compress import AbstractAutoCompressModule + + class AutoCompressModule(AbstractAutoCompressModule): + @classmethod + def model(cls) -> nn.Module: + ... + return _model + + @classmethod + def evaluator(cls) -> Callable[[nn.Module], float]: + ... + return _evaluator + +Users need to implement at least ``model()`` and ``evaluator()``. +If you use iterative pruner, you need to additional implement ``optimizer()``, ``criterion()`` and ``sparsifying_trainer()``. +If you want to finetune the model after compression, you need to implement ``post_compress_finetuning_trainer()``. The path of file that contains the ``AutoCompressModule`` needs to be specified in experiment config. The full abstract interface refers to :githublink:`interface.py `. An example of ``AutoCompressModule`` implementation refers to :githublink:`auto_compress_module.py `. diff --git a/docs/en_US/Compression/AutoPruningUsingTuners.rst b/docs/en_US/Compression/AutoPruningUsingTuners.rst deleted file mode 100644 index 8ac899780a..0000000000 --- a/docs/en_US/Compression/AutoPruningUsingTuners.rst +++ /dev/null @@ -1,75 +0,0 @@ -Automatic Model Pruning using NNI Tuners -======================================== - -It's convenient to implement auto model pruning with NNI compression and NNI tuners - -First, model pruning with NNI ---------------------------------- - -You can easily compress a model with NNI compression. Take pruning for example, you can prune a pretrained model with L2FilterPruner like this - -.. code-block:: python - - from nni.algorithms.compression.pytorch.pruning import L2FilterPruner - config_list = [{ 'sparsity': 0.5, 'op_types': ['Conv2d'] }] - pruner = L2FilterPruner(model, config_list) - pruner.compress() - -The 'Conv2d' op_type stands for the module types defined in :githublink:`default_layers.py ` for pytorch. - -Therefore ``{ 'sparsity': 0.5, 'op_types': ['Conv2d'] }``\ means that **all layers with specified op_types will be compressed with the same 0.5 sparsity**. When ``pruner.compress()`` called, the model is compressed with masks and after that you can normally fine tune this model and **pruned weights won't be updated** which have been masked. - -Then, make this automatic -------------------------- - -The previous example manually chose L2FilterPruner and pruned with a specified sparsity. Different sparsity and different pruners may have different effects on different models. This process can be done with NNI tuners. - -Firstly, modify our codes for few lines - -.. code-block:: python - - import nni - from nni.algorithms.compression.pytorch.pruning import * - - params = nni.get_parameters() - sparsity = params['sparsity'] - pruner_name = params['pruner'] - model_name = params['model'] - - model, pruner = get_model_pruner(model_name, pruner_name, sparsity) - pruner.compress() - - train(model) # your code for fine-tuning the model - acc = test(model) # test the fine-tuned model - nni.report_final_results(acc) - -Then, define a ``config`` file in YAML to automatically tuning model, pruning algorithm and sparsity. - -.. code-block:: yaml - - searchSpace: - sparsity: - _type: choice - _value: [0.25, 0.5, 0.75] - pruner: - _type: choice - _value: ['slim', 'l2filter', 'fpgm', 'apoz'] - model: - _type: choice - _value: ['vgg16', 'vgg19'] - trainingService: - platform: local - trialCodeDirectory: . - trialCommand: python3 basic_pruners_torch.py --nni - trialConcurrency: 1 - trialGpuNumber: 0 - tuner: - name: GridSearch - -The full example can be found :githublink:`here ` - -Finally, start the searching via - -.. code-block:: bash - - nnictl create -c config.yml diff --git a/docs/en_US/Compression/advanced.rst b/docs/en_US/Compression/advanced.rst index 86c2b1da1c..e0df64214f 100644 --- a/docs/en_US/Compression/advanced.rst +++ b/docs/en_US/Compression/advanced.rst @@ -6,5 +6,4 @@ Advanced Usage Framework <./Framework> Customize a new algorithm <./CustomizeCompressor> - Automatic Model Pruning <./AutoPruningUsingTuners> Automatic Model Compression (Beta) <./AutoCompression> diff --git a/nni/algorithms/compression/pytorch/auto_compress/interface.py b/nni/algorithms/compression/pytorch/auto_compress/interface.py index 3720b0925a..baf7c2657c 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/interface.py +++ b/nni/algorithms/compression/pytorch/auto_compress/interface.py @@ -51,14 +51,27 @@ def optimizer(cls) -> Optional[Optimizer]: Returns ------- torch.optim.Optimizer - Optimizer used to train the model + Optimizer used to train the model in compressing process. """ pass @classmethod @abstractmethod - def trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[Module, Optimizer], None]]: + def criterion(cls) -> Optional[Callable]: """ + Returns + ------- + Optional[Callable] + The criterion used to train the model in compressing process. + """ + pass + + @classmethod + @abstractmethod + def sparsifying_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[Module, Optimizer], None]]: + """ + The trainer is used in sparsifying process. + Parameters ---------- compressor_type: str @@ -75,8 +88,10 @@ def trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable @classmethod @abstractmethod - def finetune_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[Module, Optimizer], None]]: + def post_compress_finetuning_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[Module, Optimizer], None]]: """ + The trainer is used in post-compress finetuning process. + Parameters ---------- compressor_type: str From c6ee7a3921fbf7192367843209c2298e78c96a6d Mon Sep 17 00:00:00 2001 From: J-shang Date: Wed, 26 May 2021 03:15:40 +0800 Subject: [PATCH 12/17] merge compress type in search space & modify AutoCompressExperiment api --- .../torch/auto_compress_module.py | 46 +++--- .../torch/auto_compress_torch.py | 13 +- .../pytorch/auto_compress/__init__.py | 2 +- .../auto_compress/auto_compress_engine.py | 141 ++++++++++-------- .../pytorch/auto_compress/experiment.py | 95 +++++++----- .../pytorch/auto_compress/interface.py | 61 +++++--- .../pytorch/auto_compress/trial_entry.py | 3 +- .../pytorch/auto_compress/utils.py | 52 +++---- 8 files changed, 229 insertions(+), 184 deletions(-) diff --git a/examples/model_compress/auto_compress/torch/auto_compress_module.py b/examples/model_compress/auto_compress/torch/auto_compress_module.py index 1a30fc1aff..9d0b84d50d 100644 --- a/examples/model_compress/auto_compress/torch/auto_compress_module.py +++ b/examples/model_compress/auto_compress/torch/auto_compress_module.py @@ -1,7 +1,7 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. -from typing import Callable, Optional +from typing import Callable, Optional, Iterable import torch import torch.nn as nn @@ -63,13 +63,13 @@ def forward(self, x): _device = torch.device("cuda" if _use_cuda else "cpu") _epoch = 2 -def _train(model, optimizer): +def _train(model, optimizer, criterion, epoch): model.train() for data, target in _train_loader: data, target = data.to(_device), target.to(_device) optimizer.zero_grad() output = model(data) - loss = F.nll_loss(output, target) + loss = criterion(output, target) loss.backward() optimizer.step() @@ -92,29 +92,39 @@ def _test(model): _model = LeNet().to(_device) -_pre_train_optimizer = optim.Adadelta(_model.parameters(), lr=1) -_scheduler = StepLR(_pre_train_optimizer, step_size=1, gamma=0.7) -for _ in range(_epoch): - _train(_model, _pre_train_optimizer) - _test(_model) - _scheduler.step() +# _pre_train_optimizer = optim.Adadelta(_model.parameters(), lr=1) +# _scheduler = StepLR(_pre_train_optimizer, step_size=1, gamma=0.7) +# for i in range(_epoch): +# _train(_model, _pre_train_optimizer, F.nll_loss, i) +# _scheduler.step() class AutoCompressModule(AbstractAutoCompressModule): @classmethod def model(cls) -> nn.Module: return _model - @classmethod - def optimizer(cls) -> torch.optim.Optimizer: - return torch.optim.SGD(_model.parameters(), lr=0.01) - @classmethod def evaluator(cls) -> Callable[[nn.Module], float]: return _test @classmethod - def finetune_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[nn.Module, optim.Optimizer], None]]: - def _trainer(model, optimizer): - for _ in range(_epoch): - _train(model, optimizer) - return _trainer + def optimizer_factory(cls) -> Optional[Callable[[Iterable], optim.Optimizer]]: + def _optimizer_factory(params: Iterable): + return torch.optim.SGD(params, lr=0.01) + return _optimizer_factory + + @classmethod + def criterion(cls) -> Optional[Callable]: + return F.nll_loss + + @classmethod + def sparsifying_trainer(cls, compress_algorithm_name: str) -> Optional[Callable[[nn.Module, optim.Optimizer, Callable, int], None]]: + return _train + + @classmethod + def post_compress_finetuning_trainer(cls, compress_algorithm_name: str) -> Optional[Callable[[nn.Module, optim.Optimizer, Callable, int], None]]: + return _train + + @classmethod + def post_compress_finetuning_epochs(cls, compress_algorithm_name: str) -> int: + return 2 diff --git a/examples/model_compress/auto_compress/torch/auto_compress_torch.py b/examples/model_compress/auto_compress/torch/auto_compress_torch.py index 4d13cd17b5..255d582c18 100644 --- a/examples/model_compress/auto_compress/torch/auto_compress_torch.py +++ b/examples/model_compress/auto_compress/torch/auto_compress_torch.py @@ -5,8 +5,10 @@ from nni.algorithms.compression.pytorch.auto_compress import AutoCompressExperiment, AutoCompressSearchSpaceGenerator +from auto_compress_module import AutoCompressModule + generator = AutoCompressSearchSpaceGenerator() -generator.add_pruner_config('level', [ +generator.add_config('level', [ { "sparsity": { "_type": "uniform", @@ -15,7 +17,7 @@ 'op_types': ['default'] } ]) -generator.add_pruner_config('l1', [ +generator.add_config('l1', [ { "sparsity": { "_type": "uniform", @@ -24,7 +26,7 @@ 'op_types': ['Conv2d'] } ]) -generator.add_quantizer_config('qat', [ +generator.add_config('qat', [ { 'quant_types': ['weight', 'output'], 'quant_bits': { @@ -35,7 +37,7 @@ }]) search_space = generator.dumps() -experiment = AutoCompressExperiment('local') +experiment = AutoCompressExperiment(AutoCompressModule, 'local') experiment.config.experiment_name = 'auto compress torch example' experiment.config.trial_concurrency = 1 experiment.config.max_trial_number = 10 @@ -45,7 +47,4 @@ experiment.config.tuner.class_args['optimize_mode'] = 'maximize' experiment.config.training_service.use_active_gpu = True -# the relative file path under trial_code_directory, which contains the class AutoCompressModule -experiment.config.auto_compress_module_file_name = './auto_compress_module.py' - experiment.run(8088) diff --git a/nni/algorithms/compression/pytorch/auto_compress/__init__.py b/nni/algorithms/compression/pytorch/auto_compress/__init__.py index eab270b976..523f010fdd 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/__init__.py +++ b/nni/algorithms/compression/pytorch/auto_compress/__init__.py @@ -1,6 +1,6 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. -from .experiment import AutoCompressExperimentConfig, AutoCompressExperiment +from .experiment import AutoCompressExperiment from .interface import AbstractAutoCompressModule from .utils import AutoCompressSearchSpaceGenerator diff --git a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py index f598d6a01d..3f0b1e1c40 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py +++ b/nni/algorithms/compression/pytorch/auto_compress/auto_compress_engine.py @@ -10,17 +10,17 @@ import nni from .constants import PRUNER_DICT, QUANTIZER_DICT -from .interface import AbstractExecutionEngine +from .interface import BaseAutoCompressEngine, AbstractAutoCompressModule from .utils import import_ _logger = logging.getLogger(__name__) _logger.setLevel(logging.INFO) -class AutoCompressEngine(AbstractExecutionEngine): +class AutoCompressEngine(BaseAutoCompressEngine): @classmethod - def __convert_pruner_config_list(cls, converted_config_dict: dict) -> list: + def __convert_compact_pruner_params_to_config_list(cls, compact_config: dict) -> list: config_dict = {} - for key, value in converted_config_dict.items(): + for key, value in compact_config.items(): _, op_types, op_names, var_name = key.split('::') config_dict.setdefault((op_types, op_names), {}) config_dict[(op_types, op_names)][var_name] = value @@ -40,9 +40,9 @@ def __convert_pruner_config_list(cls, converted_config_dict: dict) -> list: return config_list @classmethod - def __convert_quantizer_config_list(cls, converted_config_dict: dict) -> list: + def __convert_compact_quantizer_params_to_config_list(cls, compact_config: dict) -> list: config_dict = {} - for key, value in converted_config_dict.items(): + for key, value in compact_config.items(): _, quant_types, op_types, op_names, var_name = key.split('::') config_dict.setdefault((quant_types, op_types, op_names), {}) config_dict[(quant_types, op_types, op_names)][var_name] = value @@ -67,84 +67,97 @@ def __convert_quantizer_config_list(cls, converted_config_dict: dict) -> list: return config_list @classmethod - def _convert_config_list(cls, compressor_type: str, converted_config_dict: dict) -> list: + def _convert_compact_params_to_config_list(cls, compressor_type: str, compact_config: dict) -> list: func_dict = { - 'pruner': cls.__convert_pruner_config_list, - 'quantizer': cls.__convert_quantizer_config_list + 'pruner': cls.__convert_compact_pruner_params_to_config_list, + 'quantizer': cls.__convert_compact_quantizer_params_to_config_list } - return func_dict[compressor_type](converted_config_dict) + return func_dict[compressor_type](compact_config) @classmethod - def __compress_pruning_pipeline(cls, algorithm_name: str, - model: Module, - config_list: list, - evaluator: Callable[[Module], float], - optimizer: Optional[Optimizer], - trainer: Optional[Callable[[Module, Optimizer], None]], - finetune_trainer: Optional[Callable[[Module, Optimizer], None]], - **compressor_parameter_dict) -> Module: - # evaluator is for future use - pruner = PRUNER_DICT[algorithm_name](model, config_list, optimizer, **compressor_parameter_dict) - model = pruner.compress() - if trainer: - trainer(model) - if finetune_trainer: - finetune_trainer(model) - return model + def __compress_pruning(cls, algorithm_name: str, + model: Module, + config_list: list, + optimizer_factory: Optional[Callable], + criterion: Optional[Callable], + sparsifying_trainer: Optional[Callable[[Module, Optimizer, Callable, int], None]], + finetuning_trainer: Optional[Callable[[Module, Optimizer, Callable, int], None]], + finetuning_epochs: int, + **compressor_parameter_dict) -> Module: + if algorithm_name in ['level', 'l1', 'l2', 'fpgm']: + pruner = PRUNER_DICT[algorithm_name](model, config_list, **compressor_parameter_dict) + elif algorithm_name in ['slim', 'taylorfo', 'apoz', 'mean_activation']: + optimizer = None if optimizer_factory is None else optimizer_factory(model.parameters()) + pruner = PRUNER_DICT[algorithm_name](model, config_list, optimizer, sparsifying_trainer, criterion, **compressor_parameter_dict) + else: + raise ValueError('Unsupported compression algorithm: {}.'.format(algorithm_name)) + compressed_model = pruner.compress() + if finetuning_trainer is not None: + # note that in pruning process, finetuning will use an un-patched optimizer + optimizer = optimizer_factory(compressed_model.parameters()) + for i in range(finetuning_epochs): + finetuning_trainer(compressed_model, optimizer, criterion, i) + return compressed_model @classmethod - def __compress_quantization_pipeline(cls, algorithm_name: str, - model: Module, - config_list: list, - evaluator: Callable[[Module], float], - optimizer: Optional[Optimizer], - trainer: Callable[[Module, Optimizer], None], - finetune_trainer: Optional[Callable[[Module, Optimizer], None]], - **compressor_parameter_dict) -> Module: - # evaluator is for future use + def __compress_quantization(cls, algorithm_name: str, + model: Module, + config_list: list, + optimizer_factory: Optional[Callable], + criterion: Optional[Callable], + sparsifying_trainer: Optional[Callable[[Module, Optimizer, Callable, int], None]], + finetuning_trainer: Optional[Callable[[Module, Optimizer, Callable, int], None]], + finetuning_epochs: int, + **compressor_parameter_dict) -> Module: + optimizer = None if optimizer_factory is None else optimizer_factory(model.parameters()) quantizer = QUANTIZER_DICT[algorithm_name](model, config_list, optimizer, **compressor_parameter_dict) - model = quantizer.compress() - if trainer: - trainer(model) - if finetune_trainer: - finetune_trainer(model) - return model + compressed_model = quantizer.compress() + if finetuning_trainer is not None: + # note that in quantization process, finetuning will use a patched optimizer + for i in range(finetuning_epochs): + finetuning_trainer(compressed_model, optimizer, criterion, i) + return compressed_model @classmethod - def _compress_pipeline(cls, compressor_type: str, - algorithm_name: str, - model: Module, - config_list: list, - evaluator: Callable[[Module], float], - optimizer: Optional[Optimizer], - trainer: Optional[Callable[[Module, Optimizer], None]], - finetune_trainer: Optional[Callable[[Module, Optimizer], None]], - **compressor_parameter_dict) -> Module: + def _compress(cls, compressor_type: str, + algorithm_name: str, + model: Module, + config_list: list, + optimizer_factory: Optional[Callable], + criterion: Optional[Callable], + sparsifying_trainer: Optional[Callable[[Module, Optimizer, Callable, int], None]], + finetuning_trainer: Optional[Callable[[Module, Optimizer, Callable, int], None]], + finetuning_epochs: int, + **compressor_parameter_dict) -> Module: func_dict = { - 'pruner': cls.__compress_pruning_pipeline, - 'quantizer': cls.__compress_quantization_pipeline + 'pruner': cls.__compress_pruning, + 'quantizer': cls.__compress_quantization } _logger.info('%s compressor config_list:\n%s', algorithm_name, json_tricks.dumps(config_list, indent=4)) - return func_dict[compressor_type](algorithm_name, model, config_list, evaluator, optimizer, trainer, - finetune_trainer, **compressor_parameter_dict) + compressed_model = func_dict[compressor_type](algorithm_name, model, config_list, optimizer_factory, criterion, sparsifying_trainer, + finetuning_trainer, finetuning_epochs, **compressor_parameter_dict) + return compressed_model @classmethod def trial_execute_compress(cls, module_name): - auto_compress_module = import_('{}.AutoCompressModule'.format(module_name)) + auto_compress_module: AbstractAutoCompressModule = import_(module_name) - parameter = nni.get_next_parameter()['compressor_type'] - compressor_type, algorithm_config = parameter['_name'], parameter['algorithm_name'] + algorithm_config = nni.get_next_parameter()['algorithm_name'] algorithm_name = algorithm_config['_name'] - converted_config_dict = {k: v for k, v in algorithm_config.items() if k.startswith('config_list::')} + compact_config = {k: v for k, v in algorithm_config.items() if k.startswith('config_list::')} parameter_dict = {k.split('parameter::')[1]: v for k, v in algorithm_config.items() if k.startswith('parameter::')} - config_list = cls._convert_config_list(compressor_type, converted_config_dict) + compressor_type = 'quantizer' if algorithm_name in QUANTIZER_DICT else 'pruner' + + config_list = cls._convert_compact_params_to_config_list(compressor_type, compact_config) - model, evaluator, optimizer = auto_compress_module.model(), auto_compress_module.evaluator(), auto_compress_module.optimizer() - trainer = auto_compress_module.trainer(compressor_type, algorithm_name) - finetune_trainer = auto_compress_module.trainer(compressor_type, algorithm_name) + model, evaluator = auto_compress_module.model(), auto_compress_module.evaluator() + optimizer_factory, criterion = auto_compress_module.optimizer_factory(), auto_compress_module.criterion() + sparsifying_trainer = auto_compress_module.sparsifying_trainer(algorithm_name) + finetuning_trainer = auto_compress_module.post_compress_finetuning_trainer(algorithm_name) + finetuning_epochs = auto_compress_module.post_compress_finetuning_epochs(algorithm_name) - compressed_model = cls._compress_pipeline(compressor_type, algorithm_name, model, config_list, evaluator, - optimizer, trainer, finetune_trainer, **parameter_dict) + compressed_model = cls._compress(compressor_type, algorithm_name, model, config_list, optimizer_factory, + criterion, sparsifying_trainer, finetuning_trainer, finetuning_epochs, **parameter_dict) nni.report_final_result(evaluator(compressed_model)) diff --git a/nni/algorithms/compression/pytorch/auto_compress/experiment.py b/nni/algorithms/compression/pytorch/auto_compress/experiment.py index 8a31b1f8d6..e362d2a6ff 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/experiment.py +++ b/nni/algorithms/compression/pytorch/auto_compress/experiment.py @@ -1,53 +1,70 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. -import os +import inspect +from pathlib import Path, PurePath +from typing import overload, Union, List -import dataclasses -from pathlib import Path -from subprocess import Popen -from typing import Optional +from numpy import tri -import nni from nni.experiment import Experiment, ExperimentConfig, AlgorithmConfig +from nni.algorithms.compression.pytorch.auto_compress.interface import AbstractAutoCompressModule -class AutoCompressExperimentConfig(ExperimentConfig): - auto_compress_module_file_name: str = './auto_compress_module.py' +class AutoCompressExperiment(Experiment): - def __setattr__(self, key, value): - fixed_attrs = {'trial_command': 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry'} - if key in fixed_attrs and type(value) is not type(dataclasses.MISSING) and not value.startswith(fixed_attrs[key]): - raise AttributeError(f'{key} is not supposed to be set in AutoCompress mode by users!') - # 'trial_code_directory' is handled differently because the path will be converted to absolute path by us - if key == 'trial_code_directory' and not (value == Path('.') or os.path.isabs(value)): - raise AttributeError(f'{key} is not supposed to be set in AutoCompress mode by users!') - self.__dict__[key] = value + @overload + def __init__(self, auto_compress_module: AbstractAutoCompressModule, config: ExperimentConfig) -> None: + """ + Prepare an experiment. - def validate(self, initialized_tuner: bool = False) -> None: - super().validate(initialized_tuner=initialized_tuner) - if not Path(self.trial_code_directory, self.auto_compress_module_file_name).exists(): - raise ValueError('{} not exsisted under {}'.format(self.auto_compress_module_file_name, self.trial_code_directory)) + Use `Experiment.run()` to launch it. -class AutoCompressExperiment(Experiment): - def __init__(self, config=None, training_service=None): - nni.runtime.log.init_logger_experiment() - - self.config: Optional[AutoCompressExperimentConfig] = None - self.id: Optional[str] = None - self.port: Optional[int] = None - self._proc: Optional[Popen] = None - self.mode = 'new' - - args = [config, training_service] # deal with overloading - if isinstance(args[0], (str, list)): - self.config = AutoCompressExperimentConfig(args[0]) - self.config.tuner = AlgorithmConfig(name='_none_', class_args={}) - self.config.assessor = AlgorithmConfig(name='_none_', class_args={}) - self.config.advisor = AlgorithmConfig(name='_none_', class_args={}) - else: - self.config = args[0] + Parameters + ---------- + auto_compress_module + The module provided by the user implements the `AbstractAutoCompressModule` interfaces. + Remember put the module file under `trial_code_directory`. + config + Experiment configuration. + """ + ... + + @overload + def __init__(self, auto_compress_module: AbstractAutoCompressModule, training_service: Union[str, List[str]]) -> None: + """ + Prepare an experiment, leaving configuration fields to be set later. + + Example usage:: + + experiment = Experiment(auto_compress_module, 'remote') + experiment.config.trial_command = 'python3 trial.py' + experiment.config.machines.append(RemoteMachineConfig(ip=..., user_name=...)) + ... + experiment.run(8080) + + Parameters + ---------- + auto_compress_module + The module provided by the user implements the `AbstractAutoCompressModule` interfaces. + Remember put the module file under `trial_code_directory`. + training_service + Name of training service. + Supported value: "local", "remote", "openpai", "aml", "kubeflow", "frameworkcontroller", "adl" and hybrid training service. + """ + ... + + def __init__(self, auto_compress_module: AbstractAutoCompressModule, config=None, training_service=None): + super().__init__(config, training_service) + + self.module_file_path = str(PurePath(inspect.getfile(auto_compress_module))) + self.module_name = auto_compress_module.__name__ def start(self, port: int, debug: bool) -> None: - self.config.trial_command = 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry --module_file_name {}'.format(self.config.auto_compress_module_file_name) + trial_code_directory = str(PurePath(Path(self.config.trial_code_directory).absolute())) + '/' + assert self.module_file_path.startswith(trial_code_directory), 'The file path of the user-provided module should under trial_code_directory.' + relative_module_path = self.module_file_path.split(trial_code_directory)[1] + # only support linux, need refactor? + command = 'python3 -m nni.algorithms.compression.pytorch.auto_compress.trial_entry --module_file_name {} --module_class_name {}' + self.config.trial_command = command.format(relative_module_path, self.module_name) super().start(port=port, debug=debug) diff --git a/nni/algorithms/compression/pytorch/auto_compress/interface.py b/nni/algorithms/compression/pytorch/auto_compress/interface.py index baf7c2657c..92f5392e97 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/interface.py +++ b/nni/algorithms/compression/pytorch/auto_compress/interface.py @@ -2,18 +2,18 @@ # Licensed under the MIT license. from abc import ABC, abstractmethod -from typing import Optional, Callable +from typing import Optional, Callable, Iterable from torch.nn import Module from torch.optim import Optimizer -class AbstractExecutionEngine(ABC): +class BaseAutoCompressEngine(ABC): @classmethod @abstractmethod def trial_execute_compress(cls): """ - Execute the compressing trial + Execute the compressing trial. """ pass @@ -29,7 +29,7 @@ def model(cls) -> Module: Returns ------- torch.nn.Module - Model to be compress + Model to be compress. """ pass @@ -40,18 +40,19 @@ def evaluator(cls) -> Callable[[Module], float]: Returns ------- function - A function used to evaluate the compressed model, return a scalar + The function used to evaluate the compressed model, return a scalar. """ pass @classmethod @abstractmethod - def optimizer(cls) -> Optional[Optimizer]: + def optimizer_factory(cls) -> Optional[Callable[[Iterable], Optimizer]]: """ Returns ------- - torch.optim.Optimizer - Optimizer used to train the model in compressing process. + Optional[Callable[[Iterable], Optimizer]] + Optimizer factory function. Input is a iterable value, i.e. `model.parameters()`. + Output is the `torch.optim.Optimizer` instance. """ pass @@ -62,46 +63,60 @@ def criterion(cls) -> Optional[Callable]: Returns ------- Optional[Callable] - The criterion used to train the model in compressing process. + The criterion function used to train the model. """ pass @classmethod @abstractmethod - def sparsifying_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[Module, Optimizer], None]]: + def sparsifying_trainer(cls, compress_algorithm_name: str) -> Optional[Callable[[Module, Optimizer, Callable, int], None]]: """ The trainer is used in sparsifying process. Parameters ---------- - compressor_type: str - Support 'pruner' and 'quantizer' - algorithm_name: str - The name of pruner and quantizer, i.e. 'level', 'l1', 'qat' + compress_algorithm_name: str + The name of pruner and quantizer, i.e. 'level', 'l1', 'qat'. Returns ------- - function - Used to train model in compress stage + Optional[Callable[[Module, Optimizer, Callable, int], None]] + Used to train model in compress stage, include `model, optimizer, criterion, epoch` as function arguments. """ pass @classmethod @abstractmethod - def post_compress_finetuning_trainer(cls, compressor_type: str, algorithm_name: str) -> Optional[Callable[[Module, Optimizer], None]]: + def post_compress_finetuning_trainer(cls, compress_algorithm_name: str) -> Optional[Callable[[Module, Optimizer, Callable, int], None]]: """ The trainer is used in post-compress finetuning process. Parameters ---------- - compressor_type: str - Support 'pruner' and 'quantizer' - algorithm_name: str - The name of pruner and quantizer, i.e. 'level', 'l1', 'qat' + compress_algorithm_name: str + The name of pruner and quantizer, i.e. 'level', 'l1', 'qat'. Returns ------- - function - Used to train model in finetune stage + Optional[Callable[[Module, Optimizer, Callable, int], None]] + Used to train model in finetune stage, include `model, optimizer, criterion, epoch` as function arguments. + """ + pass + + @classmethod + @abstractmethod + def post_compress_finetuning_epochs(cls, compress_algorithm_name: str) -> int: + """ + The epochs in post-compress finetuning process. + + Parameters + ---------- + compress_algorithm_name: str + The name of pruner and quantizer, i.e. 'level', 'l1', 'qat'. + + Returns + ------- + int + The finetuning epoch number. """ pass diff --git a/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py b/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py index 2ccb4a9219..f189cee3f5 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py +++ b/nni/algorithms/compression/pytorch/auto_compress/trial_entry.py @@ -13,8 +13,9 @@ if __name__ == '__main__': parser = argparse.ArgumentParser(description='trial entry for auto compress.') parser.add_argument('--module_file_name', required=True, dest='module_file_name', help='the path of auto compress module file') + parser.add_argument('--module_class_name', required=True, dest='module_class_name', help='the name of auto compress module') args = parser.parse_args() module_name = Path(args.module_file_name).as_posix() - module_name = re.sub(re.escape('.py') + '$', '', module_name).replace('/', '.') + module_name = re.sub(re.escape('.py') + '$', '', module_name).replace('/', '.') + '.' + args.module_class_name AutoCompressEngine.trial_execute_compress(module_name) diff --git a/nni/algorithms/compression/pytorch/auto_compress/utils.py b/nni/algorithms/compression/pytorch/auto_compress/utils.py index ee3954f3cd..cf5a0ce579 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/utils.py +++ b/nni/algorithms/compression/pytorch/auto_compress/utils.py @@ -3,6 +3,8 @@ from typing import Any +from .constants import PRUNER_DICT, QUANTIZER_DICT + class AutoCompressSearchSpaceGenerator: """ @@ -10,10 +12,19 @@ class AutoCompressSearchSpaceGenerator: """ def __init__(self): - self.pruner_choice_list = [] - self.quantizer_choice_list = [] + self.algorithm_choice_list = [] - def add_pruner_config(self, pruner_name: str, config_list: list, **algo_kwargs): + def add_config(self, algorithm_name: str, config_list: list, **algo_kwargs): + """ + This function used for distinguish algorithm type is pruning or quantization. + Then call `self._add_pruner_config()` or `self._add_quantizer_config()`. + """ + if algorithm_name in PRUNER_DICT: + self._add_pruner_config(algorithm_name, config_list, **algo_kwargs) + if algorithm_name in QUANTIZER_DICT: + self._add_quantizer_config(algorithm_name, config_list, **algo_kwargs) + + def _add_pruner_config(self, pruner_name: str, config_list: list, **algo_kwargs): """ Parameters ---------- @@ -22,7 +33,7 @@ def add_pruner_config(self, pruner_name: str, config_list: list, **algo_kwargs): config_list Except 'op_types' and 'op_names', other config value can be written as `{'_type': ..., '_value': ...}`. **algo_kwargs - The additional pruner parameters except 'model', 'config_list', 'optimizer'. + The additional pruner parameters except 'model', 'config_list', 'optimizer', 'trainer', 'criterion'. i.e., you can set `statistics_batch_num={'_type': 'choice', '_value': [1, 2, 3]}` in TaylorFOWeightFilterPruner or just `statistics_batch_num=1`. """ sub_search_space = {'_name': pruner_name} @@ -35,9 +46,9 @@ def add_pruner_config(self, pruner_name: str, config_list: list, **algo_kwargs): for parameter_name, parameter_search_space in algo_kwargs.items(): key_prefix = 'parameter' sub_search_space['{}::{}'.format(key_prefix, parameter_name)] = self._wrap_single_value(parameter_search_space) - self.pruner_choice_list.append(sub_search_space) + self.algorithm_choice_list.append(sub_search_space) - def add_quantizer_config(self, quantizer_name: str, config_list: list, **algo_kwargs): + def _add_quantizer_config(self, quantizer_name: str, config_list: list, **algo_kwargs): """ Parameters ---------- @@ -59,33 +70,16 @@ def add_quantizer_config(self, quantizer_name: str, config_list: list, **algo_kw for parameter_name, parameter_search_space in algo_kwargs.items(): key_prefix = 'parameter' sub_search_space['{}::{}'.format(key_prefix, parameter_name)] = self._wrap_single_value(parameter_search_space) - self.quantizer_choice_list.append(sub_search_space) + self.algorithm_choice_list.append(sub_search_space) def dumps(self) -> dict: """ Dump the search space as a dict. """ - compressor_choice_value = [] - if self.pruner_choice_list: - compressor_choice_value.append({ - '_name': 'pruner', - 'algorithm_name': { - '_type': 'choice', - '_value': self.pruner_choice_list - } - }) - if self.quantizer_choice_list: - compressor_choice_value.append({ - '_name': 'quantizer', - 'algorithm_name': { - '_type': 'choice', - '_value': self.quantizer_choice_list - } - }) search_space = { - 'compressor_type': { + 'algorithm_name': { '_type': 'choice', - '_value': compressor_choice_value + '_value': self.algorithm_choice_list } } return search_space @@ -96,11 +90,7 @@ def loads(cls, search_space: dict): Return a AutoCompressSearchSpaceGenerator instance load from a search space dict. """ generator = AutoCompressSearchSpaceGenerator() - for v in search_space['compressor_type']['_value']: - if v['_name'] == 'pruner': - generator.pruner_choice_list = v['algorithm_name']['_value'] - if v['_name'] == 'quantizer': - generator.quantizer_choice_list = v['algorithm_name']['_value'] + generator.algorithm_choice_list = search_space['algorithm_name']['_value'] return generator def _wrap_single_value(self, value) -> dict: From 627ec1ca080ea2f6fca91f5cca42ae04cc04d222 Mon Sep 17 00:00:00 2001 From: J-shang Date: Wed, 26 May 2021 10:26:07 +0800 Subject: [PATCH 13/17] update doc --- docs/en_US/Compression/AutoCompression.rst | 36 +++++++++---------- .../pytorch/auto_compress/interface.py | 4 +-- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/docs/en_US/Compression/AutoCompression.rst b/docs/en_US/Compression/AutoCompression.rst index d9d939077d..61d1aa5ae7 100644 --- a/docs/en_US/Compression/AutoCompression.rst +++ b/docs/en_US/Compression/AutoCompression.rst @@ -1,27 +1,29 @@ Auto Compression with NNI Experiment ==================================== -This approach is mainly a combination of compression and nni experiments. -It allows users to define compressor search space, including types, parameters, etc. -Its using experience is similar to launch the NNI experiment from python. +If you want to compress your model, but don't know what compression algorithm to choose, or don't know what sparsity is suitable for your model, or just want to try more possibilities, auto compression may help you. +Users can choose different compression algorithms and define the algorithms' search space, then auto compression will launch an NNI experiment and try different compression algorithms with varying sparsity automatically. +Of course, in addition to the sparsity rate, users can also introduce other related parameters into the search space. +If you don't know what is search space or how to write search space, `this <./Tutorial/SearchSpaceSpec.rst>`__ is for your reference. +Auto compression using experience is similar to the NNI experiment in python. The main differences are as follows: * Use a generator to help generate search space object. * Need to provide the model to be compressed, and the model should have already pre-trained. -* No need to set ``trial_command``, additional need to set ``auto_compress_module_file_name``. +* No need to set ``trial_command``, additional need to set ``auto_compress_module`` as ``AutoCompressExperiment`` input. Generate search space --------------------- -Due to the extensive use of nested search space, we recommend using generator to configure search space. -The following is an example. Using ``add_pruner_config()`` and ``add_quantizer_config()`` add subconfig, then ``dumps()`` search space dict. +Due to the extensive use of nested search space, we recommend a using generator to configure search space. +The following is an example. Using ``add_config()`` add subconfig, then ``dumps()`` search space dict. .. code-block:: python from nni.algorithms.compression.pytorch.auto_compress import AutoCompressSearchSpaceGenerator generator = AutoCompressSearchSpaceGenerator() - generator.add_pruner_config('level', [ + generator.add_config('level', [ { "sparsity": { "_type": "uniform", @@ -30,7 +32,7 @@ The following is an example. Using ``add_pruner_config()`` and ``add_quantizer_c 'op_types': ['default'] } ]) - generator.add_quantizer_config('qat', [ + generator.add_config('qat', [ { 'quant_types': ['weight', 'output'], 'quant_bits': { @@ -85,25 +87,26 @@ Users need to inherit ``AbstractAutoCompressModule`` and override the abstract c return _evaluator Users need to implement at least ``model()`` and ``evaluator()``. -If you use iterative pruner, you need to additional implement ``optimizer()``, ``criterion()`` and ``sparsifying_trainer()``. -If you want to finetune the model after compression, you need to implement ``post_compress_finetuning_trainer()``. -The path of file that contains the ``AutoCompressModule`` needs to be specified in experiment config. +If you use iterative pruner, you need to additional implement ``optimizer_factory()``, ``criterion()`` and ``sparsifying_trainer()``. +If you want to finetune the model after compression, you need to implement ``optimizer_factory()``, ``criterion()``, ``post_compress_finetuning_trainer()`` and ``post_compress_finetuning_epochs()``. +The ``optimizer_factory()`` should return a factory function, the input is an iterable variable, i.e. your ``model.parameters()``, and the output is an optimizer instance. +The two kinds of ``trainer()`` should return a trainer with input ``model, optimizer, criterion, current_epoch``. The full abstract interface refers to :githublink:`interface.py `. An example of ``AutoCompressModule`` implementation refers to :githublink:`auto_compress_module.py `. Launch NNI experiment --------------------- -Similar to launch from python, the difference is no need to set ``trial_command``. -By default, ``auto_compress_module_file_name`` is set as ``./auto_compress_module.py``. -Remember that ``auto_compress_module_file_name`` is the relative file path under ``trial_code_directory``. +Similar to launch from python, the difference is no need to set ``trial_command`` and put the user-provided ``AutoCompressModule`` as ``AutoCompressExperiment`` input. .. code-block:: python from pathlib import Path from nni.algorithms.compression.pytorch.auto_compress import AutoCompressExperiment - experiment = AutoCompressExperiment('local') + from auto_compress_module import AutoCompressModule + + experiment = AutoCompressExperiment(AutoCompressModule, 'local') experiment.config.experiment_name = 'auto compress torch example' experiment.config.trial_concurrency = 1 experiment.config.max_trial_number = 10 @@ -113,7 +116,4 @@ Remember that ``auto_compress_module_file_name`` is the relative file path under experiment.config.tuner.class_args['optimize_mode'] = 'maximize' experiment.config.training_service.use_active_gpu = True - # the relative file path under trial_code_directory, which contains the class AutoCompressModule - experiment.config.auto_compress_module_file_name = './auto_compress_module.py' - experiment.run(8088) diff --git a/nni/algorithms/compression/pytorch/auto_compress/interface.py b/nni/algorithms/compression/pytorch/auto_compress/interface.py index 92f5392e97..74c8e18b04 100644 --- a/nni/algorithms/compression/pytorch/auto_compress/interface.py +++ b/nni/algorithms/compression/pytorch/auto_compress/interface.py @@ -81,7 +81,7 @@ def sparsifying_trainer(cls, compress_algorithm_name: str) -> Optional[Callable[ Returns ------- Optional[Callable[[Module, Optimizer, Callable, int], None]] - Used to train model in compress stage, include `model, optimizer, criterion, epoch` as function arguments. + Used to train model in compress stage, include `model, optimizer, criterion, current_epoch` as function arguments. """ pass @@ -99,7 +99,7 @@ def post_compress_finetuning_trainer(cls, compress_algorithm_name: str) -> Optio Returns ------- Optional[Callable[[Module, Optimizer, Callable, int], None]] - Used to train model in finetune stage, include `model, optimizer, criterion, epoch` as function arguments. + Used to train model in finetune stage, include `model, optimizer, criterion, current_epoch` as function arguments. """ pass From ea692b15f47cf9d7fc8794319c3802dba09ea708 Mon Sep 17 00:00:00 2001 From: J-shang Date: Wed, 26 May 2021 10:43:37 +0800 Subject: [PATCH 14/17] fix lint --- docs/en_US/Compression/pruning.rst | 1 - 1 file changed, 1 deletion(-) diff --git a/docs/en_US/Compression/pruning.rst b/docs/en_US/Compression/pruning.rst index d2b4b065af..023b0feeb5 100644 --- a/docs/en_US/Compression/pruning.rst +++ b/docs/en_US/Compression/pruning.rst @@ -23,4 +23,3 @@ For details, please refer to the following tutorials: Pruners Dependency Aware Mode Model Speedup - Automatic Model Pruning with NNI Tuners From ddc3c06524f1b0b1f627633b44c1b0097ff940ec Mon Sep 17 00:00:00 2001 From: J-shang Date: Thu, 27 May 2021 13:21:42 +0800 Subject: [PATCH 15/17] update doc & example --- docs/en_US/Compression/AutoCompression.rst | 2 +- .../torch/auto_compress_module.py | 25 +++++++++--------- .../torch/mnist_pretrain_lenet.pth | Bin 0 -> 4802551 bytes .../auto_compress/auto_compress_engine.py | 1 + 4 files changed, 14 insertions(+), 14 deletions(-) create mode 100644 examples/model_compress/auto_compress/torch/mnist_pretrain_lenet.pth diff --git a/docs/en_US/Compression/AutoCompression.rst b/docs/en_US/Compression/AutoCompression.rst index 61d1aa5ae7..3e56614f73 100644 --- a/docs/en_US/Compression/AutoCompression.rst +++ b/docs/en_US/Compression/AutoCompression.rst @@ -9,7 +9,7 @@ Auto compression using experience is similar to the NNI experiment in python. The main differences are as follows: * Use a generator to help generate search space object. -* Need to provide the model to be compressed, and the model should have already pre-trained. +* Need to provide the model to be compressed, and the model should have already been pre-trained. * No need to set ``trial_command``, additional need to set ``auto_compress_module`` as ``AutoCompressExperiment`` input. Generate search space diff --git a/examples/model_compress/auto_compress/torch/auto_compress_module.py b/examples/model_compress/auto_compress/torch/auto_compress_module.py index 9d0b84d50d..6ad22ed731 100644 --- a/examples/model_compress/auto_compress/torch/auto_compress_module.py +++ b/examples/model_compress/auto_compress/torch/auto_compress_module.py @@ -7,7 +7,6 @@ import torch.nn as nn import torch.optim as optim import torch.nn.functional as F -from torch.optim.lr_scheduler import StepLR from torchvision import datasets, transforms from nni.algorithms.compression.pytorch.auto_compress import AbstractAutoCompressModule @@ -55,15 +54,16 @@ def forward(self, x): transforms.Normalize((0.1307,), (0.3081,)) ]) -_dataset1 = datasets.MNIST('./data', train=True, download=True, transform=_transform) -_dataset2 = datasets.MNIST('./data', train=False, transform=_transform) -_train_loader = torch.utils.data.DataLoader(_dataset1, **_train_kwargs) -_test_loader = torch.utils.data.DataLoader(_dataset2, **_test_kwargs) - _device = torch.device("cuda" if _use_cuda else "cpu") -_epoch = 2 + +_train_loader = None +_test_loader = None def _train(model, optimizer, criterion, epoch): + global _train_loader + if _train_loader is None: + dataset = datasets.MNIST('./data', train=True, download=True, transform=_transform) + _train_loader = torch.utils.data.DataLoader(dataset, **_train_kwargs) model.train() for data, target in _train_loader: data, target = data.to(_device), target.to(_device) @@ -74,6 +74,10 @@ def _train(model, optimizer, criterion, epoch): optimizer.step() def _test(model): + global _test_loader + if _test_loader is None: + dataset = datasets.MNIST('./data', train=False, transform=_transform) + _test_loader = torch.utils.data.DataLoader(dataset, **_test_kwargs) model.eval() test_loss = 0 correct = 0 @@ -91,12 +95,7 @@ def _test(model): return acc _model = LeNet().to(_device) - -# _pre_train_optimizer = optim.Adadelta(_model.parameters(), lr=1) -# _scheduler = StepLR(_pre_train_optimizer, step_size=1, gamma=0.7) -# for i in range(_epoch): -# _train(_model, _pre_train_optimizer, F.nll_loss, i) -# _scheduler.step() +_model.load_state_dict(torch.load('mnist_pretrain_lenet.pth')) class AutoCompressModule(AbstractAutoCompressModule): @classmethod diff --git a/examples/model_compress/auto_compress/torch/mnist_pretrain_lenet.pth b/examples/model_compress/auto_compress/torch/mnist_pretrain_lenet.pth new file mode 100644 index 0000000000000000000000000000000000000000..f5afbe63fcb843bd5bf7933f41a9f509a28e4504 GIT binary patch literal 4802551 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

isWd#RL$+K`ijSw9!|-$d%yjQp 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%0DI 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�=G`F5J#<$+Vp?BhB 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�ersJA@!%=x%25X|?|XFTHA74-Y$l`5?4l8A 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