From b2bb28c8ba2c5e2357fb794778cc8cf9a8f15b07 Mon Sep 17 00:00:00 2001 From: "Guo, Heng" Date: Wed, 13 Sep 2023 09:06:18 +0800 Subject: [PATCH 1/2] fix progressive bug Signed-off-by: Guo, Heng --- .../compression/pruner/patterns/ninm.py | 4 ++-- .../compression/pruner/patterns/nxm.py | 2 +- .../compression/pruner/pruners/progressive.py | 17 +++++++++-------- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/neural_compressor/compression/pruner/patterns/ninm.py b/neural_compressor/compression/pruner/patterns/ninm.py index b14edc8bc9f..d02508cbbcd 100644 --- a/neural_compressor/compression/pruner/patterns/ninm.py +++ b/neural_compressor/compression/pruner/patterns/ninm.py @@ -368,8 +368,8 @@ def get_pattern_lock_masks(self, modules): mask = torch.ones(orig_shape, device=weight.device) pattern_lock_masks[key] = mask.bool() continue - mask = self.get_least_ninm_mask_from_data(weight) - mask = self._reshape_2dims_to_orig(mask, orig_shape) + reduced_mask = self.get_reduced_masks_from_data(weight, key) + mask = self.reshape_reduced_to_orig(reduced_mask, key, orig_shape) pattern_lock_masks[key] = mask return pattern_lock_masks diff --git a/neural_compressor/compression/pruner/patterns/nxm.py b/neural_compressor/compression/pruner/patterns/nxm.py index d9812c366df..8b5b4599dc9 100644 --- a/neural_compressor/compression/pruner/patterns/nxm.py +++ b/neural_compressor/compression/pruner/patterns/nxm.py @@ -306,7 +306,7 @@ def get_masks_global(self, scores, cur_target_sparsity_ratio, pre_masks, keep_ex k_blockwise = self.update_residual_cnt(masks, cur_target_sparsity_ratio) if k_blockwise <= 0: return masks - new_scores = scores # if self.block else self.reduce_scores(scores) + new_scores = scores # if self.block else self.reduce_scores(scores) not_exceed_layers = [] residual_k = k_blockwise if self.min_sparsity_ratio_per_op > 0: diff --git a/neural_compressor/compression/pruner/pruners/progressive.py b/neural_compressor/compression/pruner/pruners/progressive.py index d022600f985..1703c7359f6 100644 --- a/neural_compressor/compression/pruner/pruners/progressive.py +++ b/neural_compressor/compression/pruner/pruners/progressive.py @@ -23,11 +23,12 @@ from ..regs import get_reg from ..schedulers import get_scheduler from ..utils import logger, torch -from .base import PytorchBasePruner, register_pruner +from .base import register_pruner +from .basic import PytorchBasicPruner @register_pruner("pt_progressive") -class PytorchProgressivePruner(PytorchBasePruner): +class PytorchProgressivePruner(PytorchBasicPruner): """Pruning Pruner. A Pruner class derived from BasicPruner. In this pruner, mask interpolation will be applied. @@ -201,12 +202,12 @@ def update_masks_progressive(self, local_step): for n in self.masks.keys(): self.pre_masks[n] = self.masks[n].clone() # update new masks - if not self.use_progressive: - self.masks = self.pattern.get_masks( - self.criterion.scores, - current_target_sparsity_ratio, - self.masks, - ) + # if not self.use_progressive: + # self.masks = self.pattern.get_masks( + # self.criterion.scores, + # current_target_sparsity_ratio, + # self.masks, + # ) self.masks = self.pattern.get_masks( self.criterion.scores, current_target_sparsity_ratio, From 8a327d6a83cc29191dea1b34b3ea05c5ede9b28b Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 18 Sep 2023 07:28:23 +0000 Subject: [PATCH 2/2] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- neural_compressor/compression/pruner/patterns/nxm.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/neural_compressor/compression/pruner/patterns/nxm.py b/neural_compressor/compression/pruner/patterns/nxm.py index 8b5b4599dc9..d9812c366df 100644 --- a/neural_compressor/compression/pruner/patterns/nxm.py +++ b/neural_compressor/compression/pruner/patterns/nxm.py @@ -306,7 +306,7 @@ def get_masks_global(self, scores, cur_target_sparsity_ratio, pre_masks, keep_ex k_blockwise = self.update_residual_cnt(masks, cur_target_sparsity_ratio) if k_blockwise <= 0: return masks - new_scores = scores # if self.block else self.reduce_scores(scores) + new_scores = scores # if self.block else self.reduce_scores(scores) not_exceed_layers = [] residual_k = k_blockwise if self.min_sparsity_ratio_per_op > 0: