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|
|----|----|----|
-|| OR ||
+|
| 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)