diff --git a/.azure-pipelines/scripts/codeScan/pyspelling/lpot_dict.txt b/.azure-pipelines/scripts/codeScan/pyspelling/lpot_dict.txt index ec5c0321b29..1a6ac05ed08 100644 --- a/.azure-pipelines/scripts/codeScan/pyspelling/lpot_dict.txt +++ b/.azure-pipelines/scripts/codeScan/pyspelling/lpot_dict.txt @@ -2378,3 +2378,4 @@ constfold grappler amsgrad qoperator +apis diff --git a/README.md b/README.md index ebe3e37ed57..2a9a8cfd787 100644 --- a/README.md +++ b/README.md @@ -167,7 +167,7 @@ Intel® Neural Compressor validated 420+ [examples](./examples) for quantization Architecture Examples GUI - APIs + APIs Intel oneAPI AI Analytics Toolkit @@ -194,7 +194,7 @@ Intel® Neural Compressor validated 420+ [examples](./examples) for quantization - Quantization + Quantization Pruning(Sparsity) Knowledge Distillation Mixed Precision diff --git a/docs/Makefile b/docs/Makefile index 45894af519e..cf810c3c2a1 100644 --- a/docs/Makefile +++ b/docs/Makefile @@ -19,17 +19,11 @@ help: html: # cp README.md to docs, modify response-link - cp -f "../README.md" "./source/README.md" + cp -f "../README.md" "./source/getting_started.md" cp -f "../SECURITY.md" "./source/SECURITY.md" - cp -f "./source/README.md" "./source/README.md.tmp" - sed 's/.md/.html/g; s/.\/docs\/source\//.\//g; s/.\/neural_coder\/extensions\/screenshots/imgs/g; s/.\/docs\/source\/_static/..\/\/_static/g; s/.\/examples/https:\/\/github.com\/intel\/neural-compressor\/tree\/master\/examples/g; s/.md/.html/g; ' "./source/README.md.tmp" > "./source/README.md" - rm -f "./source/README.md.tmp" - - # modify docList - cp -f "./source/doclist.rst" "./source/doclist.rst.tmp" - sed 's/.md/.html/g;' "./source/doclist.rst.tmp" > "./source/doclist.rst" - rm -f "./source/doclist.rst.tmp" - + cp -f "./source/getting_started.md" "./source/getting_started.md.tmp" + sed 's/.md/.html/g; s/.\/docs\/source\//.\//g; s/.\/neural_coder\/extensions\/screenshots/imgs/g; s/.\/docs\/source\/_static/..\/\/_static/g; s/.\/examples/https:\/\/github.com\/intel\/neural-compressor\/tree\/master\/examples/g; s/.md/.html/g; ' "./source/getting_started.md.tmp" > "./source/getting_started.md" + rm -f "./source/getting_started.md.tmp" # make sure other png can display normal $(SPHINXBUILD) -b html "$(SOURCEDIR)" "$(BUILDDIR)/html" $(SPHINXOPTS) $(O) diff --git a/docs/source/README.md b/docs/source/README.md index c912168f5a7..4b03ada961c 100644 --- a/docs/source/README.md +++ b/docs/source/README.md @@ -167,7 +167,7 @@ Intel® Neural Compressor validated 420+ [examples](./examples) for quantization Architecture Examples GUI - APIs + APIs Intel oneAPI AI Analytics Toolkit diff --git a/docs/source/_static/index.html b/docs/source/_static/index.html index 5f62e3d9bef..22a56287809 100644 --- a/docs/source/_static/index.html +++ b/docs/source/_static/index.html @@ -1 +1 @@ - \ No newline at end of file + \ No newline at end of file diff --git a/docs/source/api-documentation/api-introduction.md b/docs/source/api-documentation/api-introduction.md deleted file mode 100644 index e5fc85f5d21..00000000000 --- a/docs/source/api-documentation/api-introduction.md +++ /dev/null @@ -1,210 +0,0 @@ -API Documentation -================= - -## Introduction - -Intel® Neural Compressor is an open-source Python library designed to help users quickly deploy low-precision inference solutions on popular deep learning (DL) frameworks such as TensorFlow*, PyTorch*, MXNet, and ONNX Runtime. It automatically optimizes low-precision recipes for deep learning models in order to achieve optimal product objectives, such as inference performance and memory usage, with expected accuracy criteria. - - -## User-facing APIs - -These APIs are intended to unify low-precision quantization interfaces cross multiple DL frameworks for the best out-of-the-box experiences. - -> **Note** -> -> Neural Compressor is continuously improving user-facing APIs to create a better user experience. - -> Two sets of user-facing APIs exist. One is the default one supported from Neural Compressor v1.0 for backwards compatibility. The other set consists of new APIs in -the `neural_compressor.experimental` package. - -> We recommend that you use the APIs located in neural_compressor.experimental. All examples have been updated to use the experimental APIs. - -The major differences between the default user-facing APIs and the experimental APIs are: - -1. The experimental APIs abstract the `neural_compressor.experimental.common.Model` concept to cover those cases whose weight and graph files are stored separately. -2. The experimental APIs unify the calling style of the `Quantization`, `Pruning`, and `Benchmark` classes by setting model, calibration dataloader, evaluation dataloader, and metric through class attributes rather than passing them as function inputs. -3. The experimental APIs refine Neural Compressor built-in transforms/datasets/metrics by unifying the APIs cross different framework backends. - -## Experimental user-facing APIs - -Experimental user-facing APIs consist of the following components: - -### Quantization-related APIs - -```python -# neural_compressor.experimental.Quantization -class Quantization(object): - def __init__(self, conf_fname_or_obj): - ... - - def __call__(self): - ... - - @property - def calib_dataloader(self): - ... - - @property - def eval_dataloader(self): - ... - - @property - def model(self): - ... - - @property - def metric(self): - ... - - @property - def postprocess(self, user_postprocess): - ... - - @property - def q_func(self): - ... - - @property - def eval_func(self): - ... - -``` -The `conf_fname_or_obj` parameter used in the class initialization is the path to the user yaml configuration file or Quantization_Conf class. This yaml file is used to control the entire tuning behavior on the model. - -**Neural Compressor User YAML Syntax** - -> Intel® Neural Compressor provides template yaml files for [Post-Training Quantization](../neural_compressor/template/ptq.yaml), [Quantization-Aware Training](../neural_compressor/template/qat.yaml), and [Pruning](../neural_compressor/template/pruning.yaml) scenarios. Refer to these template files to understand the meaning of each field. - -> Note that most fields in the yaml templates are optional. View the [HelloWorld Yaml](../examples/helloworld/tf_example2/conf.yaml) example for reference. - -```python -# Typical Launcher code -from neural_compressor.experimental import Quantization, common - -# optional if Neural Compressor built-in dataset could be used as model input in yaml -class dataset(object): - def __init__(self, *args): - ... - - def __getitem__(self, idx): - # return single sample and label tuple without collate. label should be 0 for label-free case - ... - - def len(self): - ... - -# optional if Neural Compressor built-in metric could be used to do accuracy evaluation on model output in yaml -class custom_metric(object): - def __init__(self): - ... - - def update(self, predict, label): - # metric update per mini-batch - ... - - def result(self): - # final metric calculation invoked only once after all mini-batch are evaluated - # return a scalar to neural_compressor for accuracy-driven tuning. - # by default the scalar is higher-is-better. if not, set tuning.accuracy_criterion.higher_is_better to false in yaml. - ... - -quantizer = Quantization(conf.yaml) -quantizer.model = '/path/to/model' -# below two lines are optional if Neural Compressor built-in dataset is used as model calibration input in yaml -cal_dl = dataset('/path/to/calibration/dataset') -quantizer.calib_dataloader = common.DataLoader(cal_dl, batch_size=32) -# below two lines are optional if Neural Compressor built-in dataset is used as model evaluation input in yaml -dl = dataset('/path/to/evaluation/dataset') -quantizer.eval_dataloader = common.DataLoader(dl, batch_size=32) -# optional if Neural Compressor built-in metric could be used to do accuracy evaluation in yaml -quantizer.metric = common.Metric(custom_metric) -q_model = quantizer.fit() -q_model.save('/path/to/output/dir') -``` - -`model` attribute in `Quantization` class is an abstraction of model formats across different frameworks. Neural Compressor supports passing the path of `keras model`, `frozen pb`, `checkpoint`, `saved model`, `torch.nn.model`, `mxnet.symbol.Symbol`, `gluon.HybirdBlock`, and `onnx model` to instantiate a `neural_compressor.experimental.` class and set to `quantizer.model`. - -`calib_dataloader` and `eval_dataloader` attribute in `Quantization` class is used to set up a calibration dataloader by code. It is optional to set if the user sets corresponding fields in yaml. - -`metric` attribute in `Quantization` class is used to set up a custom metric by code. It is optional to set if user finds Neural Compressor built-in metric could be used with their model and sets corresponding fields in yaml. - -`postprocess` attribute in `Quantization` class is not necessary in most of the use cases. It is only needed when the user wants to use the built-in metric but the model output can not directly be handled by Neural Compressor built-in metrics. In this case, the user can register a transform to convert the model output to the expected one required by the built-in metric. - -`q_func` attribute in `Quantization` class is only for `Quantization Aware Training` case, in which the user needs to register a function that takes `model` as the input parameter and executes the entire training process with self-contained training hyper-parameters. - -`eval_func` attribute in `Quantization` class is reserved for special cases. If the user had an evaluation function when train a model, the user must implement a `calib_dataloader` and leave `eval_dataloader` as None. Then, modify this evaluation function to take `model` as the input parameter and return a higher-is-better scaler. In some scenarios, it may reduce development effort. - - -### Pruning-related APIs (POC) - -```python -class Pruning(object): - def __init__(self, conf_fname_or_obj): - ... - - def on_epoch_begin(self, epoch): - ... - - def on_step_begin(self, batch_id): - ... - - def on_step_end(self): - ... - - def on_epoch_end(self): - ... - - def __call__(self): - ... - - @property - def model(self): - ... - - @property - def q_func(self): - ... - -``` - -This API is used to do sparsity pruning. Currently, it is a Proof of Concept; Neural Compressor only supports `magnitude pruning` on PyTorch. - -To learn how to use this API, refer to the [pruning document](../pruning.md). - -### Benchmarking-related APIs -```python -class Benchmark(object): - def __init__(self, conf_fname_or_obj): - ... - - def __call__(self): - ... - - @property - def model(self): - ... - - @property - def metric(self): - ... - - @property - def b_dataloader(self): - ... - - @property - def postprocess(self, user_postprocess): - ... -``` - -This API is used to measure model performance and accuracy. - -To learn how to use this API, refer to the [benchmarking document](../docs/benchmark.md). - -## Default user-facing APIs - -The default user-facing APIs exist for backwards compatibility from the v1.0 release. Refer to [v1.1 API](https://github.com/intel/neural-compressor/blob/v1.1/docs/introduction.md) to understand how the default user-facing APIs work. - -View the [HelloWorld example](/examples/helloworld/tf_example6) that uses default user-facing APIs for user reference. - -Full examples using default user-facing APIs can be found [here](https://github.com/intel/neural-compressor/tree/v1.1/examples). diff --git a/docs/source/doclist.rst b/docs/source/doclist.rst deleted file mode 100644 index d5be5857470..00000000000 --- a/docs/source/doclist.rst +++ /dev/null @@ -1,68 +0,0 @@ -Developer Documentation -####################### - -Read the following material as you learn how to use Neural Compressor. - -Get Started -=========== - -* `Transform `__ introduces how to utilize Neural Compressor's built-in data processing and how to develop a custom data processing method. -* `Dataset `__ introduces how to utilize Neural Compressor's built-in dataset and how to develop a custom dataset. -* `Metrics `__ introduces how to utilize Neural Compressor's built-in metrics and how to develop a custom metric. -* `UX `__ is a web-based system used to simplify Neural Compressor usage. -* `Intel oneAPI AI Analytics Toolkit Get Started Guide `__ explains the AI Kit components, installation and configuration guides, and instructions for building and running sample apps. -* `AI and Analytics Samples `__ includes code samples for Intel oneAPI libraries. - -.. toctree:: - :maxdepth: 1 - :hidden: - - transform.md - dataset.md - metric.md - ux.md - Intel oneAPI AI Analytics Toolkit Get Started Guide - AI and Analytics Samples - - -Deep Dive -========= - -* `Quantization `__ are processes that enable inference and training by performing computations at low-precision data types, such as fixed-point integers. Neural Compressor supports Post-Training Quantization (`PTQ `__) and Quantization-Aware Training (`QAT `__). Note that `Dynamic Quantization `__ currently has limited support. -* `Pruning `__ provides a common method for introducing sparsity in weights and activations. -* `Benchmarking `__ introduces how to utilize the benchmark interface of Neural Compressor. -* `Mixed precision `__ introduces how to enable mixed precision, including BFP16 and int8 and FP32, on Intel platforms during tuning. -* `Graph Optimization `__ introduces how to enable graph optimization for FP32 and auto-mixed precision. -* `Model Conversion ` introduces how to convert TensorFlow QAT model to quantized model running on Intel platforms. -* `TensorBoard `__ provides tensor histograms and execution graphs for tuning debugging purposes. - - -.. toctree:: - :maxdepth: 1 - :hidden: - - Quantization.md - PTQ.md - QAT.md - dynamic_quantization.md - pruning.md - benchmark.md - mixed_precision.md - graph_optimization.md - model_conversion.md - tensorboard.md - - -Advanced Topics -=============== - -* `Adaptor `__ is the interface between Neural Compressor and framework. The method to develop adaptor extension is introduced with ONNX Runtime as example. -* `Tuning strategies `__ can automatically optimized low-precision recipes for deep learning models to achieve optimal product objectives like inference performance and memory usage with expected accuracy criteria. The method to develop a new strategy is introduced. - - -.. toctree:: - :maxdepth: 1 - :hidden: - - adaptor.md - tuning_strategies.md diff --git a/docs/source/getting_started.md b/docs/source/getting_started.md deleted file mode 100644 index e320126de94..00000000000 --- a/docs/source/getting_started.md +++ /dev/null @@ -1,451 +0,0 @@ -Getting Started -=============== - -## Installation - -The Intel® Neural Compressor library is released as part of the -[Intel® oneAPI AI Analytics Toolkit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/ai-analytics-toolkit.html) (AI Kit). -The AI Kit provides a consolidated package of Intel's latest deep learning and -machine optimizations all in one place for ease of development. Along with -Neural Compressor, the AI Kit includes Intel-optimized versions of deep learning frameworks -(such as TensorFlow and PyTorch) and high-performing Python libraries to -streamline end-to-end data science and AI workflows on Intel architectures. - - -### Linux Installation - -You can install just the library from binary or source, or you can get -the Intel-optimized framework together with the library by installing the -Intel® oneAPI AI Analytics Toolkit. - -#### Install from binary - - ```Shell - # install from pip - pip install neural-compressor - - # install from conda - conda install neural-compressor -c conda-forge -c intel - ``` - -#### Install from source - - ```Shell - git clone https://github.com/intel/neural-compressor.git - cd neural-compressor - pip install -r requirements.txt - python setup.py install - ``` - -#### Install from AI Kit - -The AI Kit, which includes the -library, is distributed through many common channels, -including from Intel's website, YUM, APT, Anaconda, and more. -Select and [download](https://software.intel.com/content/www/us/en/develop/tools/oneapi/ai-analytics-toolkit/download.html) -the AI Kit distribution package that's best suited for you and follow the -[Get Started Guide](https://software.intel.com/content/www/us/en/develop/documentation/get-started-with-ai-linux/top.html) -for post-installation instructions. - -|[Download AI Kit](https://software.intel.com/content/www/us/en/develop/tools/oneapi/ai-analytics-toolkit/) |[AI Kit Get Started Guide](https://software.intel.com/content/www/us/en/develop/documentation/get-started-with-ai-linux/top.html) | -|---|---| - -### Windows Installation - -**Prerequisites** - -The following prerequisites and requirements must be satisfied for a successful installation: - -- Python version: 3.6 or 3.7 or 3.8 or 3.9 - -- Download and install [anaconda](https://anaconda.org/). - -- Create a virtual environment named nc in anaconda: - - ```shell - # Here we install python 3.7 for instance. You can also choose python 3.6, 3.8, or 3.9. - conda create -n nc python=3.7 - conda activate nc - ``` - -#### Install from binary - - ```Shell - # install from pip - pip install neural-compressor - - # install from conda - conda install neural-compressor -c conda-forge -c intel - ``` - -#### Install from source - -```shell -git clone https://github.com/intel/neural-compressor.git -cd neural-compressor -pip install -r requirements.txt -python setup.py install -``` - -## Examples - -[Examples](examples_readme.md) are provided to demonstrate the usage of Intel® Neural Compressor in different frameworks: TensorFlow, PyTorch, MXNet, and ONNX Runtime. Hello World examples are also available. - -## Developer Documentation - -View Neural Compressor [Documentation](doclist.rst) for getting started, deep dive, and advanced resources to help you use and develop Neural Compressor. - -## System Requirements - -Intel® Neural Compressor supports systems based on [Intel 64 architecture or compatible processors](https://en.wikipedia.org/wiki/X86-64), specially optimized for the following CPUs: - -* Intel Xeon Scalable processor (formerly Skylake, Cascade Lake, Cooper Lake, and Icelake) -* future Intel Xeon Scalable processor (code name Sapphire Rapids) - -Intel® Neural Compressor requires installing the Intel-optimized framework version for the supported DL framework you use: TensorFlow, PyTorch, MXNet, or ONNX runtime. - -Note: Intel Neural Compressor supports Intel-optimized and official frameworks for some TensorFlow versions. Refer to [Supported Frameworks](../README.md#Supported-Frameworks) for specifics. - -### Validated Hardware/Software Environment - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
PlatformOSPythonFrameworkVersion
Cascade Lake

Cooper Lake

Skylake

Ice Lake
CentOS 8.3

Ubuntu 18.04
3.6

3.7

3.8

3.9
TensorFlow2.5.0
2.4.0
2.3.0
2.2.0
2.1.0
1.15.0 UP1
1.15.0 UP2
1.15.0 UP3
1.15.2
PyTorch1.5.0+cpu
1.6.0+cpu
1.8.0+cpu
IPEX
MXNet1.7.0
1.6.0
ONNX Runtime1.6.0
1.7.0
1.8.0
- -## Validated Models - -Intel® Neural Compressor provides numerous examples to show promising accuracy loss with the best performance gain. A full quantized model list on various frameworks is available in the [Model List](validated_model_list.md). - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FrameworkversionModeldatasetAccuracyPerformance speed up
INT8 Tuning AccuracyFP32 Accuracy BaselineAcc Ratio[(INT8-FP32)/FP32]Realtime Latency Ratio[FP32/INT8]
tensorflow2.4.0resnet50v1.5ImageNet76.70%76.50%0.26%3.23x
tensorflow2.4.0Resnet101ImageNet77.20%76.40%1.05%2.42x
tensorflow2.4.0inception_v1ImageNet70.10%69.70%0.57%1.88x
tensorflow2.4.0inception_v2ImageNet74.10%74.00%0.14%1.96x
tensorflow2.4.0inception_v3ImageNet77.20%76.70%0.65%2.36x
tensorflow2.4.0inception_v4ImageNet80.00%80.30%-0.37%2.59x
tensorflow2.4.0inception_resnet_v2ImageNet80.10%80.40%-0.37%1.97x
tensorflow2.4.0Mobilenetv1ImageNet71.10%71.00%0.14%2.88x
tensorflow2.4.0ssd_resnet50_v1Coco37.90%38.00%-0.26%2.97x
tensorflow2.4.0mask_rcnn_inception_v2Coco28.90%29.10%-0.69%2.66x
tensorflow2.4.0vgg16ImageNet72.50%70.90%2.26%3.75x
tensorflow2.4.0vgg19ImageNet72.40%71.00%1.97%3.79x
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FrameworkversionmodeldatasetAccuracyPerformance speed up
INT8 Tuning AccuracyFP32 Accuracy BaselineAcc Ratio[(INT8-FP32)/FP32]Realtime Latency Ratio[FP32/INT8]
pytorch1.5.0+cpuresnet50ImageNet75.96%76.13%-0.23%2.63x
pytorch1.5.0+cpuresnext101_32x8dImageNet79.12%79.31%-0.24%2.61x
pytorch1.6.0a0+24aac32bert_base_mrpcMRPC88.90%88.73%0.19%1.98x
pytorch1.6.0a0+24aac32bert_base_colaCOLA59.06%58.84%0.37%2.19x
pytorch1.6.0a0+24aac32bert_base_sts-bSTS-B88.40%89.27%-0.97%2.28x
pytorch1.6.0a0+24aac32bert_base_sst-2SST-291.51%91.86%-0.37%2.30x
pytorch1.6.0a0+24aac32bert_base_rteRTE69.31%69.68%-0.52%2.15x
pytorch1.6.0a0+24aac32bert_large_mrpcMRPC87.45%88.33%-0.99%2.73x
pytorch1.6.0a0+24aac32bert_large_squadSQUAD92.85%93.05%-0.21%2.01x
pytorch1.6.0a0+24aac32bert_large_qnliQNLI91.20%91.82%-0.68%2.69x
diff --git a/docs/source/index.rst b/docs/source/index.rst index 2ab2e1d8bbb..afcf722f21d 100644 --- a/docs/source/index.rst +++ b/docs/source/index.rst @@ -11,10 +11,8 @@ Sections :maxdepth: 1 README.md - tutorial.md examples_readme.md api-documentation/apis.rst - doclist.rst releases_info.md contributions.md legal_information.md diff --git a/docs/source/legal_information.md b/docs/source/legal_information.md index 5c595853b8a..c9ede70d378 100644 --- a/docs/source/legal_information.md +++ b/docs/source/legal_information.md @@ -16,7 +16,7 @@ See the accompanying [license](https://github.com/intel/neural-compressor/tree/m ## Citation -If you use Intel® Neural Compressor in your research or you wish to refer to the tuning results published in the [Validated Models](getting_started.md#validated-models), use the following BibTeX entry. +If you use Intel® Neural Compressor in your research or you wish to refer to the tuning results published in the [Validated Models](getting_started.md), use the following BibTeX entry. ``` @misc{Intel® Neural Compressor, diff --git a/docs/source/quantization.md b/docs/source/quantization.md index 951c6e4e5d1..cae3e0845f8 100644 --- a/docs/source/quantization.md +++ b/docs/source/quantization.md @@ -80,7 +80,7 @@ Currently `accuracy aware tuning` supports `post training quantization`, `quanti User could refer to below chart to understand the whole tuning flow. -accuracy aware tuning working flow +accuracy aware tuning working flow ## Supported Feature Matrix diff --git a/docs/source/releases_info.md b/docs/source/releases_info.md index 81d078a8229..7367fa284b7 100644 --- a/docs/source/releases_info.md +++ b/docs/source/releases_info.md @@ -15,6 +15,6 @@ The MSE tuning strategy does not work with the PyTorch adaptor layer. This strat [Neural Compressor v1.2](https://github.com/intel/neural-compressor/tree/v1.2) introduces incompatible changes in user facing APIs. Please refer to [incompatible changes](incompatible_changes.md) to know which incompatible changes are made in v1.2. -[Neural Compressor v1.2.1](https://github.com/intel/neural-compressor/tree/v1.2.1) solves this backward compatible issues introduced in v1.2 by moving new user facing APIs to neural_compressor.experimental package and keep old one as is. Please refer to [API documentation](/api-documentation/api-introduction.md) to know the details of user-facing APIs. +[Neural Compressor v1.2.1](https://github.com/intel/neural-compressor/tree/v1.2.1) solves this backward compatible issues introduced in v1.2 by moving new user facing APIs to neural_compressor.experimental package and keep old one as is. Please refer to [API documentation](./api-documentation/apis.rst) to know the details of user-facing APIs. [Neural Compressor v1.7](https://github.com/intel/neural-compressor/tree/v1.7) renames the pip/conda package name from lpot to neural_compressor. To run old examples on latest software, please replace package name for compatibility with `sed -i "s|lpot|neural_compressor|g" your_script.py`