From b5f4d218aa065dde34aaab578f3b55861a1b10e7 Mon Sep 17 00:00:00 2001 From: Scarlett Li <39592018+scarlett2018@users.noreply.github.com> Date: Thu, 28 May 2020 16:50:49 +0800 Subject: [PATCH 1/2] Update README.md (#2502) --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index fd7987e178..9e8fd5a4b1 100644 --- a/README.md +++ b/README.md @@ -341,7 +341,7 @@ With authors' permission, we listed a set of NNI usage examples and relevant art Join IM discussion groups: |Gitter||WeChat| |----|----|----| -|![image](https://user-images.githubusercontent.com/39592018/80665738-e0574a80-8acc-11ea-91bc-0836dc4cbf89.png)| OR |![image](https://github.com/JSong-Jia/NNI-user-group/blob/master/user%20group%20code_0512.png)| +|| OR || ## Related Projects From 5a911b3061751a3441f18ff69a9279b16da9bda3 Mon Sep 17 00:00:00 2001 From: chicm-ms <38930155+chicm-ms@users.noreply.github.com> Date: Thu, 28 May 2020 17:11:42 +0800 Subject: [PATCH 2/2] Refactor model compression directory structure (#2501) --- docs/en_US/Compressor/ModelSpeedup.md | 2 +- examples/model_compress/model_speedup.py | 3 +-- src/sdk/pynni/nni/compression/torch/__init__.py | 9 +++------ src/sdk/pynni/nni/compression/torch/pruning/__init__.py | 8 ++++++++ .../{ => pruning}/activation_rank_filter_pruners.py | 4 ++-- .../compression/torch/{ => pruning}/apply_compression.py | 0 .../torch/{ => pruning}/gradient_rank_filter_pruners.py | 2 +- .../pynni/nni/compression/torch/{ => pruning}/pruners.py | 4 ++-- .../torch/{ => pruning}/weight_rank_filter_pruners.py | 4 ++-- .../pynni/nni/compression/torch/quantization/__init__.py | 4 ++++ .../compression/torch/{ => quantization}/quantizers.py | 4 ++-- .../{speedup/torch => torch/speedup}/__init__.py | 0 .../{speedup/torch => torch/speedup}/compress_modules.py | 0 .../{speedup/torch => torch/speedup}/compressor.py | 0 .../{speedup/torch => torch/speedup}/infer_shape.py | 0 .../nni/compression/{speedup => torch/utils}/__init__.py | 0 .../torch/{utils.py => utils/config_validation.py} | 0 src/sdk/pynni/tests/test_model_speedup.py | 3 +-- 18 files changed, 27 insertions(+), 20 deletions(-) create mode 100644 src/sdk/pynni/nni/compression/torch/pruning/__init__.py rename src/sdk/pynni/nni/compression/torch/{ => pruning}/activation_rank_filter_pruners.py (99%) rename src/sdk/pynni/nni/compression/torch/{ => pruning}/apply_compression.py (100%) rename src/sdk/pynni/nni/compression/torch/{ => pruning}/gradient_rank_filter_pruners.py (99%) rename src/sdk/pynni/nni/compression/torch/{ => pruning}/pruners.py (99%) rename src/sdk/pynni/nni/compression/torch/{ => pruning}/weight_rank_filter_pruners.py (99%) create mode 100644 src/sdk/pynni/nni/compression/torch/quantization/__init__.py rename src/sdk/pynni/nni/compression/torch/{ => quantization}/quantizers.py (99%) rename src/sdk/pynni/nni/compression/{speedup/torch => torch/speedup}/__init__.py (100%) rename src/sdk/pynni/nni/compression/{speedup/torch => torch/speedup}/compress_modules.py (100%) rename src/sdk/pynni/nni/compression/{speedup/torch => torch/speedup}/compressor.py (100%) rename src/sdk/pynni/nni/compression/{speedup/torch => torch/speedup}/infer_shape.py (100%) rename src/sdk/pynni/nni/compression/{speedup => torch/utils}/__init__.py (100%) rename src/sdk/pynni/nni/compression/torch/{utils.py => utils/config_validation.py} (100%) diff --git a/docs/en_US/Compressor/ModelSpeedup.md b/docs/en_US/Compressor/ModelSpeedup.md index c5cf79cafa..c3b9c76614 100644 --- a/docs/en_US/Compressor/ModelSpeedup.md +++ b/docs/en_US/Compressor/ModelSpeedup.md @@ -21,7 +21,7 @@ For each module, we should prepare four functions, three for shape inference and ## Usage ```python -from nni.compression.speedup.torch import ModelSpeedup +from nni.compression.torch import ModelSpeedup # model: the model you want to speed up # dummy_input: dummy input of the model, given to `jit.trace` # masks_file: the mask file created by pruning algorithms diff --git a/examples/model_compress/model_speedup.py b/examples/model_compress/model_speedup.py index 2214fc137b..74d1379d2e 100644 --- a/examples/model_compress/model_speedup.py +++ b/examples/model_compress/model_speedup.py @@ -6,8 +6,7 @@ import torch.nn.functional as F from torchvision import datasets, transforms from models.cifar10.vgg import VGG -from nni.compression.speedup.torch import ModelSpeedup -from nni.compression.torch import apply_compression_results +from nni.compression.torch import apply_compression_results, ModelSpeedup torch.manual_seed(0) use_mask = True diff --git a/src/sdk/pynni/nni/compression/torch/__init__.py b/src/sdk/pynni/nni/compression/torch/__init__.py index bcf662bbb5..bb09bc7e56 100644 --- a/src/sdk/pynni/nni/compression/torch/__init__.py +++ b/src/sdk/pynni/nni/compression/torch/__init__.py @@ -1,10 +1,7 @@ # Copyright (c) Microsoft Corporation. # Licensed under the MIT license. +from .pruning import * +from .quantization import * from .compressor import Compressor, Pruner, Quantizer -from .pruners import * -from .weight_rank_filter_pruners import * -from .activation_rank_filter_pruners import * -from .quantizers import * -from .apply_compression import apply_compression_results -from .gradient_rank_filter_pruners import * +from .speedup import ModelSpeedup diff --git a/src/sdk/pynni/nni/compression/torch/pruning/__init__.py b/src/sdk/pynni/nni/compression/torch/pruning/__init__.py new file mode 100644 index 0000000000..b9db03838e --- /dev/null +++ b/src/sdk/pynni/nni/compression/torch/pruning/__init__.py @@ -0,0 +1,8 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +from .pruners import * +from .weight_rank_filter_pruners import * +from .activation_rank_filter_pruners import * +from .apply_compression import apply_compression_results +from .gradient_rank_filter_pruners import * diff --git a/src/sdk/pynni/nni/compression/torch/activation_rank_filter_pruners.py b/src/sdk/pynni/nni/compression/torch/pruning/activation_rank_filter_pruners.py similarity index 99% rename from src/sdk/pynni/nni/compression/torch/activation_rank_filter_pruners.py rename to src/sdk/pynni/nni/compression/torch/pruning/activation_rank_filter_pruners.py index e20f5def2e..fac2efc254 100644 --- a/src/sdk/pynni/nni/compression/torch/activation_rank_filter_pruners.py +++ b/src/sdk/pynni/nni/compression/torch/pruning/activation_rank_filter_pruners.py @@ -4,8 +4,8 @@ import logging import torch from schema import And, Optional -from .utils import CompressorSchema -from .compressor import Pruner +from ..utils.config_validation import CompressorSchema +from ..compressor import Pruner __all__ = ['ActivationAPoZRankFilterPruner', 'ActivationMeanRankFilterPruner'] diff --git a/src/sdk/pynni/nni/compression/torch/apply_compression.py b/src/sdk/pynni/nni/compression/torch/pruning/apply_compression.py similarity index 100% rename from src/sdk/pynni/nni/compression/torch/apply_compression.py rename to src/sdk/pynni/nni/compression/torch/pruning/apply_compression.py diff --git a/src/sdk/pynni/nni/compression/torch/gradient_rank_filter_pruners.py b/src/sdk/pynni/nni/compression/torch/pruning/gradient_rank_filter_pruners.py similarity index 99% rename from src/sdk/pynni/nni/compression/torch/gradient_rank_filter_pruners.py rename to src/sdk/pynni/nni/compression/torch/pruning/gradient_rank_filter_pruners.py index f8007b19da..ca18c2d72d 100644 --- a/src/sdk/pynni/nni/compression/torch/gradient_rank_filter_pruners.py +++ b/src/sdk/pynni/nni/compression/torch/pruning/gradient_rank_filter_pruners.py @@ -3,7 +3,7 @@ import logging import torch -from .compressor import Pruner +from ..compressor import Pruner __all__ = ['TaylorFOWeightFilterPruner'] diff --git a/src/sdk/pynni/nni/compression/torch/pruners.py b/src/sdk/pynni/nni/compression/torch/pruning/pruners.py similarity index 99% rename from src/sdk/pynni/nni/compression/torch/pruners.py rename to src/sdk/pynni/nni/compression/torch/pruning/pruners.py index 7ade4f92c0..ae8674796e 100644 --- a/src/sdk/pynni/nni/compression/torch/pruners.py +++ b/src/sdk/pynni/nni/compression/torch/pruning/pruners.py @@ -5,8 +5,8 @@ import logging import torch from schema import And, Optional -from .compressor import Pruner -from .utils import CompressorSchema +from ..utils.config_validation import CompressorSchema +from ..compressor import Pruner __all__ = ['LevelPruner', 'AGP_Pruner', 'SlimPruner', 'LotteryTicketPruner'] diff --git a/src/sdk/pynni/nni/compression/torch/weight_rank_filter_pruners.py b/src/sdk/pynni/nni/compression/torch/pruning/weight_rank_filter_pruners.py similarity index 99% rename from src/sdk/pynni/nni/compression/torch/weight_rank_filter_pruners.py rename to src/sdk/pynni/nni/compression/torch/pruning/weight_rank_filter_pruners.py index 66f796fad8..c8f79a1502 100644 --- a/src/sdk/pynni/nni/compression/torch/weight_rank_filter_pruners.py +++ b/src/sdk/pynni/nni/compression/torch/pruning/weight_rank_filter_pruners.py @@ -4,8 +4,8 @@ import logging import torch from schema import And, Optional -from .utils import CompressorSchema -from .compressor import Pruner +from ..utils.config_validation import CompressorSchema +from ..compressor import Pruner __all__ = ['L1FilterPruner', 'L2FilterPruner', 'FPGMPruner'] diff --git a/src/sdk/pynni/nni/compression/torch/quantization/__init__.py b/src/sdk/pynni/nni/compression/torch/quantization/__init__.py new file mode 100644 index 0000000000..0e728dcd3f --- /dev/null +++ b/src/sdk/pynni/nni/compression/torch/quantization/__init__.py @@ -0,0 +1,4 @@ +# Copyright (c) Microsoft Corporation. +# Licensed under the MIT license. + +from .quantizers import * diff --git a/src/sdk/pynni/nni/compression/torch/quantizers.py b/src/sdk/pynni/nni/compression/torch/quantization/quantizers.py similarity index 99% rename from src/sdk/pynni/nni/compression/torch/quantizers.py rename to src/sdk/pynni/nni/compression/torch/quantization/quantizers.py index 4f968939a0..bd5ebb076b 100644 --- a/src/sdk/pynni/nni/compression/torch/quantizers.py +++ b/src/sdk/pynni/nni/compression/torch/quantization/quantizers.py @@ -4,8 +4,8 @@ import logging import torch from schema import Schema, And, Or, Optional -from .utils import CompressorSchema -from .compressor import Quantizer, QuantGrad, QuantType +from ..utils.config_validation import CompressorSchema +from ..compressor import Quantizer, QuantGrad, QuantType __all__ = ['NaiveQuantizer', 'QAT_Quantizer', 'DoReFaQuantizer', 'BNNQuantizer'] diff --git a/src/sdk/pynni/nni/compression/speedup/torch/__init__.py b/src/sdk/pynni/nni/compression/torch/speedup/__init__.py similarity index 100% rename from src/sdk/pynni/nni/compression/speedup/torch/__init__.py rename to src/sdk/pynni/nni/compression/torch/speedup/__init__.py diff --git a/src/sdk/pynni/nni/compression/speedup/torch/compress_modules.py b/src/sdk/pynni/nni/compression/torch/speedup/compress_modules.py similarity index 100% rename from src/sdk/pynni/nni/compression/speedup/torch/compress_modules.py rename to src/sdk/pynni/nni/compression/torch/speedup/compress_modules.py diff --git a/src/sdk/pynni/nni/compression/speedup/torch/compressor.py b/src/sdk/pynni/nni/compression/torch/speedup/compressor.py similarity index 100% rename from src/sdk/pynni/nni/compression/speedup/torch/compressor.py rename to src/sdk/pynni/nni/compression/torch/speedup/compressor.py diff --git a/src/sdk/pynni/nni/compression/speedup/torch/infer_shape.py b/src/sdk/pynni/nni/compression/torch/speedup/infer_shape.py similarity index 100% rename from src/sdk/pynni/nni/compression/speedup/torch/infer_shape.py rename to src/sdk/pynni/nni/compression/torch/speedup/infer_shape.py diff --git a/src/sdk/pynni/nni/compression/speedup/__init__.py b/src/sdk/pynni/nni/compression/torch/utils/__init__.py similarity index 100% rename from src/sdk/pynni/nni/compression/speedup/__init__.py rename to src/sdk/pynni/nni/compression/torch/utils/__init__.py diff --git a/src/sdk/pynni/nni/compression/torch/utils.py b/src/sdk/pynni/nni/compression/torch/utils/config_validation.py similarity index 100% rename from src/sdk/pynni/nni/compression/torch/utils.py rename to src/sdk/pynni/nni/compression/torch/utils/config_validation.py diff --git a/src/sdk/pynni/tests/test_model_speedup.py b/src/sdk/pynni/tests/test_model_speedup.py index 31cb5712ce..e33bd70b10 100644 --- a/src/sdk/pynni/tests/test_model_speedup.py +++ b/src/sdk/pynni/tests/test_model_speedup.py @@ -10,8 +10,7 @@ from torchvision.models.resnet import resnet18 from unittest import TestCase, main -from nni.compression.torch import L1FilterPruner, apply_compression_results -from nni.compression.speedup.torch import ModelSpeedup +from nni.compression.torch import L1FilterPruner, apply_compression_results, ModelSpeedup torch.manual_seed(0)