###################### Automatic Quantization ###################### ``enot.quantization`` package contains functional for automatic quantization of user models. Best suitable for preparing user models for `enot-lite`_ int8 engines. With ``enot.quantization`` package, you can automatically convert your ``PyTorch`` model to our intermediate representation which allows you to perform multiple kinds of quantization including vector quantization for `TensorRT`_ and `OpenVINO`_. This package features automatic distillation for weight fine-tuning, automatic quantization threshold search described in `Fast Adjustable Threshold`_ paper, different methods for layer selection for distillation and a number of fake-quantization algorithms. .. _enot-lite: https://enot-lite.rtd.enot.ai/en/stable/ .. _OpenVINO: https://docs.openvino.ai/latest/index.html .. _TensorRT: https://docs.nvidia.com/deeplearning/tensorrt/developer-guide/index.html .. _Fast Adjustable Threshold: https://arxiv.org/abs/1812.07872 ********************** enot-lite quantization ********************** .. autoclass:: enot.quantization.TrtFakeQuantizedModel :members: __init__, quantization_parameters, regular_parameters, enable_calibration_mode, enable_quantization_mode :show-inheritance: .. autoclass:: enot.quantization.OpenvinoFakeQuantizedModel :members: __init__, quantization_parameters, regular_parameters, enable_calibration_mode, enable_quantization_mode :show-inheritance: .. autoclass:: enot.quantization.FakeQuantizedModel :members: __init__, quantization_parameters, regular_parameters, enable_calibration_mode, enable_quantization_mode :show-inheritance: .. autoclass:: enot.quantization.utils.QuantizationGranularity :members: :undoc-members: .. autoclass:: enot.quantization.utils.QuantizationStrategy :members: :undoc-members: .. autoclass:: enot.quantization.utils.CalibrationMethod :members: :undoc-members: .. autoclass:: enot.quantization.utils.RoundingFunction :members: :undoc-members: .. autoclass:: enot.quantization.utils.QuantizationType :members: .. autofunction:: enot.quantization.float_model_from_quantized_model .. autofunction:: enot.quantization.utils.optimal_quantization_scheme *********** calibration *********** Functions and classes from ``calibration`` module provides easy functional to calibrate quantization thresholds in fake-quantized model. .. autofunction:: enot.quantization.calibrate_quantized_model .. autoclass:: enot.quantization.calibration_context :members: __init__ :show-inheritance: ************ distillation ************ Functions and classes from ``distillation`` module provides utilities and procedures for quantized model fine-tuning using `knowledge distillation`_. .. _knowledge distillation: https://arxiv.org/abs/1503.02531 Helper functions for distillation: .. autoclass:: enot.distillation.DistillationLayer :show-inheritance: .. autoclass:: enot.quantization.QuantDistillationModule :show-inheritance: .. autoclass:: enot.quantization.DistillationLayerSelectionStrategy :show-inheritance: .. autofunction:: enot.quantization.add_distillation_nodes_to_onnx_converted_model .. autoclass:: enot.quantization.distillation_context :show-inheritance: We are also open-sourcing our distillation procedures to allow user to customize distillation procedure. All classes below are public, and you can view their source code by clicking on ``[source]`` links. .. autoclass:: enot.quantization.RMSELoss :show-inheritance: .. autoclass:: enot.quantization.DistillerInterface .. autoclass:: enot.quantization.QuantizationDistiller :show-inheritance: :members: .. autoclass:: enot.quantization.SequentialDistiller :show-inheritance: :members: .. autoclass:: enot.quantization.DefaultQuantizationDistiller :show-inheritance: .. autoclass:: enot.quantization.ThresholdsAndScaleFactorsQuantizationDistiller :show-inheritance: :members: .. autoclass:: enot.quantization.ThresholdsQuantizationDistiller :show-inheritance: :members: