diff --git a/paddlex/engine.py b/paddlex/engine.py index 135bf723ac..95af2da090 100644 --- a/paddlex/engine.py +++ b/paddlex/engine.py @@ -53,5 +53,8 @@ def run(self): res.print() if self._output: res.save_all(save_path=self._output) + elif self._mode == "compress": + disable_pir_bydefault() + return self._model.compress() else: raise_unsupported_api_error(f"{self._mode}", self.__class__) diff --git a/paddlex/inference/utils/pp_option.py b/paddlex/inference/utils/pp_option.py index e68bcea210..5f3ef33391 100644 --- a/paddlex/inference/utils/pp_option.py +++ b/paddlex/inference/utils/pp_option.py @@ -87,7 +87,7 @@ def _get_default_config(self): device_type, device_ids = parse_device(get_default_device()) default_config = { - "run_mode": "paddle", + "run_mode": "trt_fp32", "device_type": device_type, "device_id": None if device_ids is None else device_ids[0], "cpu_threads": 8, diff --git a/paddlex/model.py b/paddlex/model.py index 5fbc122269..81dc18ed59 100644 --- a/paddlex/model.py +++ b/paddlex/model.py @@ -21,6 +21,7 @@ build_trainer, build_evaluater, build_exportor, + build_compressor, ) @@ -115,3 +116,7 @@ def export(self): def predict(self): predict_kwargs, predictor = self._build_predictor() yield from predictor(**predict_kwargs) + + def compress(self): + compressor = build_compressor(self._config) + return compressor.compress() diff --git a/paddlex/modules/__init__.py b/paddlex/modules/__init__.py index 1f44d8ca0d..866f0906c3 100644 --- a/paddlex/modules/__init__.py +++ b/paddlex/modules/__init__.py @@ -18,6 +18,7 @@ build_trainer, build_evaluater, build_exportor, + build_compressor, ) from .image_classification import ( @@ -25,6 +26,7 @@ ClsTrainer, ClsEvaluator, ClsExportor, + ClsCompressor, ) from .multilabel_classification import ( diff --git a/paddlex/modules/base/__init__.py b/paddlex/modules/base/__init__.py index 48eec29826..d1c1dce9ff 100644 --- a/paddlex/modules/base/__init__.py +++ b/paddlex/modules/base/__init__.py @@ -16,3 +16,4 @@ from .trainer import build_trainer, BaseTrainer from .evaluator import build_evaluater, BaseEvaluator from .exportor import build_exportor, BaseExportor +from .compressor import build_compressor, BaseCompressor diff --git a/paddlex/modules/image_classification/__init__.py b/paddlex/modules/image_classification/__init__.py index c760ee98af..06272ebf30 100644 --- a/paddlex/modules/image_classification/__init__.py +++ b/paddlex/modules/image_classification/__init__.py @@ -16,3 +16,4 @@ from .dataset_checker import ClsDatasetChecker from .evaluator import ClsEvaluator from .exportor import ClsExportor +from .compressor import ClsCompressor diff --git a/paddlex/modules/object_detection/__init__.py b/paddlex/modules/object_detection/__init__.py index c45c9f3992..9c80649142 100644 --- a/paddlex/modules/object_detection/__init__.py +++ b/paddlex/modules/object_detection/__init__.py @@ -16,3 +16,4 @@ from .dataset_checker import COCODatasetChecker from .evaluator import DetEvaluator from .exportor import DetExportor +from .compressor import DetCompressor diff --git a/paddlex/repo_apis/PaddleClas_api/cls/model.py b/paddlex/repo_apis/PaddleClas_api/cls/model.py index 6401f7f156..61ca5e092d 100644 --- a/paddlex/repo_apis/PaddleClas_api/cls/model.py +++ b/paddlex/repo_apis/PaddleClas_api/cls/model.py @@ -325,6 +325,8 @@ def compression( config._update_use_vdl(use_vdl) config._update_slim_config(self.model_info["auto_compression_config_path"]) config.update_pretrained_weights(weight_path) + uniform_output_enabled = kwargs.pop("uniform_output_enabled", False) + config.update([f"Global.uniform_output_enabled={uniform_output_enabled}"]) if batch_size is not None: config.update_batch_size(batch_size) diff --git a/paddlex/repo_apis/PaddleClas_api/cls/register.py b/paddlex/repo_apis/PaddleClas_api/cls/register.py index c74e256bd2..d22cc86e77 100644 --- a/paddlex/repo_apis/PaddleClas_api/cls/register.py +++ b/paddlex/repo_apis/PaddleClas_api/cls/register.py @@ -147,7 +147,10 @@ "model_name": "PP-LCNet_x1_0", "suite": "Cls", "config_path": osp.join(PDX_CONFIG_DIR, "PP-LCNet_x1_0.yaml"), - "supported_apis": ["train", "evaluate", "predict", "export"], + "auto_compression_config_path": osp.join( + PDX_CONFIG_DIR, "slim/PP_LCNet_x1_0_quantization.yaml" + ), + "supported_apis": ["train", "evaluate", "predict", "export", "compression"], } ) diff --git a/paddlex/repo_apis/PaddleClas_api/cls/runner.py b/paddlex/repo_apis/PaddleClas_api/cls/runner.py index 42f47f713e..3fee39731f 100644 --- a/paddlex/repo_apis/PaddleClas_api/cls/runner.py +++ b/paddlex/repo_apis/PaddleClas_api/cls/runner.py @@ -174,7 +174,7 @@ def compression( ] cp_export = self.export(config_path, export_cli_args, device) - return cp_train, cp_export + return cp_export def _extract_eval_metrics(stdout: str) -> dict: diff --git a/paddlex/repo_apis/PaddleDetection_api/object_det/model.py b/paddlex/repo_apis/PaddleDetection_api/object_det/model.py index 75f7783cf5..a750e8af7d 100644 --- a/paddlex/repo_apis/PaddleDetection_api/object_det/model.py +++ b/paddlex/repo_apis/PaddleDetection_api/object_det/model.py @@ -407,6 +407,8 @@ def compression( else: save_dir = abspath(save_dir) cps_config.update_save_dir(save_dir) + uniform_output_enabled = kwargs.pop("uniform_output_enabled", False) + config.update({"uniform_output_enabled": uniform_output_enabled}) if use_vdl: train_cli_args.append(CLIArgument("--use_vdl", use_vdl)) train_cli_args.append(CLIArgument("--vdl_log_dir", save_dir)) @@ -425,6 +427,6 @@ def compression( self._assert_empty_kwargs(kwargs) - self.runner.compression( + return self.runner.compression( config_path, train_cli_args, export_cli_args, device, save_dir ) diff --git a/paddlex/repo_apis/PaddleDetection_api/object_det/register.py b/paddlex/repo_apis/PaddleDetection_api/object_det/register.py index 06197aded4..6493a42ae6 100644 --- a/paddlex/repo_apis/PaddleDetection_api/object_det/register.py +++ b/paddlex/repo_apis/PaddleDetection_api/object_det/register.py @@ -132,7 +132,10 @@ "model_name": "RT-DETR-L", "suite": "Det", "config_path": osp.join(PDX_CONFIG_DIR, "RT-DETR-L.yaml"), - "supported_apis": ["train", "evaluate", "predict", "export"], + "auto_compression_config_path": osp.join( + PDX_CONFIG_DIR, "slim", "rtdetr_qat.yml" + ), + "supported_apis": ["train", "evaluate", "predict", "export", "compression"], "supported_dataset_types": ["COCODetDataset"], "supported_train_opts": { "device": ["cpu", "gpu_nxcx", "xpu", "npu", "mlu"], @@ -1080,7 +1083,17 @@ "model_name": "PP-DocLayout-M", "suite": "Det", "config_path": osp.join(PDX_CONFIG_DIR, "PP-DocLayout-M.yaml"), - "supported_apis": ["train", "evaluate", "predict", "export", "infer"], + "supported_apis": [ + "train", + "evaluate", + "predict", + "export", + "infer", + "compression", + ], + "auto_compression_config_path": osp.join( + PDX_CONFIG_DIR, "slim", "PP-DocLayout-M_qat.yaml" + ), "supported_dataset_types": ["COCODetDataset"], "supported_train_opts": { "device": ["cpu", "gpu_nxcx", "xpu", "npu", "mlu"], diff --git a/paddlex/repo_apis/PaddleDetection_api/object_det/runner.py b/paddlex/repo_apis/PaddleDetection_api/object_det/runner.py index 65f7b07824..94d50b6a6d 100644 --- a/paddlex/repo_apis/PaddleDetection_api/object_det/runner.py +++ b/paddlex/repo_apis/PaddleDetection_api/object_det/runner.py @@ -192,7 +192,7 @@ def compression( ] cp_export = self.run_cmd(cmd, switch_wdir=True, echo=True, silent=False) - return cp_train, cp_export + return cp_export def _gather_opts_args(self, args): """_gather_opts_args"""