# QAIRT Quantization Specification

| **Document Version** | **QAIRT SDK Release** | **AIMET SDK Release** |
| --- | --- | --- |
| v0.1 (Alpha) | v2.36 | v2.3 |

- [Introduction](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#introduction)
- [Converter quantization workflow](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#converter-quantization-workflow)

    - [Quantization inputs](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#quantization-inputs)
    - [Quantization processing](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#quantization-processing)
    - [Quantization outputs](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#quantization-outputs)
- [Target specific processing](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#target-specific-processing)

    - [Handle data movement ops](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#handle-data-movement-ops)
    - [Tag super groups](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#tag-super-groups)
    - [Select op precision](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#select-op-precision)
    - [Insert converts](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#insert-converts)
    - [Quantize static tensors](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#quantize-static-tensors)
- [Appendix A: Classification of quantization techniques](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-a-classification-of-quantization-techniques)
- [Appendix B: Quantized model formats](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-b-quantized-model-formats)

    - [ONNX](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#onnx)
    - [TFLite](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#tflite)
    - [TensorFlow](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#tensorflow)
- [Appendix C: JSON schema version 2.0.0](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-c-json-schema-version-2-0-0)

    - [Per tensor quantization encoding example](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#per-tensor-quantization-encoding-example)
    - [Per channel quantization encoding example](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#per-channel-quantization-encoding-example)
    - [Blockwise quantization encoding (BQ) example](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#blockwise-quantization-encoding-bq-example)
    - [Low power blockwise quantization (LPBQ) example](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#low-power-blockwise-quantization-lpbq-example)
- [Appendix D: Super groups](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-d-super-groups)

    - [HTP super groups](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#htp-super-groups)
- [Appendix E: Data movement ops](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-e-data-movement-ops)

    - [HTP data movement ops](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#htp-data-movement-ops)

## [Introduction](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id5)

Most neural network models use 32-bit floating point representation for
weights and activations. However, these high-precision representations
are often optimized for inference, especially when deploying models on
edge devices where available memory and compute resources are more
limited. Quantization is a model compression technique used to lower
memory footprint, power consumption, data transfers and improve
inference speed by reducing the precision of the model’s weights and
activations with minimal accuracy loss. For more information on
quantization techniques refer to the Appendix of this document.

The goals of this document are:

- To describe the QAIRT workflow for quantized networks and explain how
quantization data is processed by the QAIRT stack.
- To document the quantization encoding formats supported by the QAIRT
stack for benefit of customers using third-party quantization
tools. Note that Qualcomm’s AI Model Efficiency Toolkit (AIMET)
supports these output formats for seamless operation with QAIRT.

## [Converter quantization workflow](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id6)

![../_static/resources/AE_fig1.png](data:image/png;base64,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)

Quantization workflow

The above figure shows the high-level workflow for converting from framework
model format to a Deep Learning Contained (DLC). The *qairt-converter*
converts a model for source framework format into a DLC which can be used for inference.

### [Quantization inputs](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id7)

The *qairt-converter* accepts the following inputs:

- **Model input (mandatory)**

    - **Float model:** A 32-bit floating point model (no quantization
information)
    - **Quantized model:** A model containing quantized nodes. Ex:
TFLite models.
    - **Q-DQ model:** A model where quantization information is
signaled using Q-DQ nodes. E.g. an ONNX model with QuantizeLinear,
DequantizeLinear

Note

For more details see [Appendix B: Quantized Model
Formats](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-b-quantized-model-formats)

- **Quantization Encoding Overrides (optional)**

    - **Encoding Overrides:** a JSON file with quantization information
for each tensor may be passed using the *–quantization\_overrides*
option. Quantization information in the encodings override file
will take precedence over information in source model file.
See [Quantization
Overrides](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-50/quantization.html#quantization-overrides)
in the QAIRT SDK documentation for detailed information.
    - Note that AIMET can be
used to perform quantization and to produce a quantization
overrides JSON file. Quantization information from third-party
tools can be specified in the same format.
    - See [JSON Schema Version 2.0.0](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-c-json-schema-version-2-0-0) for a
detailed description of the encoding file format.
- **Target (optional)**

    - The target backend (*HTP, LPAI*, etc) can be specified using
*–target\_backend* option. Run *qairt-converter–help* for additional details on it. When the target device is
provided, additional target-specific processing during the
conversion processing is performed. Without target device
information, only target-agnostic quantization will be performed.

Examples commands:

- Converting a 32-bit floating-point model with quantization
overrides file

`qairt-converter -i model.onnx --quantization_overrides
model.encodings –-target_backend=HTP`
- Converting an ONNX Q-DQ model

`qairt-converter -i model_qdq.onnx –-target_backend=HTP`

### [Quantization processing](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id8)

Quantization processing by the *qairt-converter* consists of two steps:
quantization extraction and quantization adaptation.

The *qairt-converter* first extracts quantization encoding
information from the source model and encoding overrides file (if
present). Note that quantization information in the source model can
exist at different granularities such as per-tensor, per-channel,
per-block, etc… See [Classification of Quantization
Techniques](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-a-classification-of-quantization-techniques) for more information.

If a tensor has encoding information in both the model and
overrides file, the overrides file will take precedence. See [JSON
Schema](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-c-json-schema-version-2-0-0) and [Quantized Model
Formats](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-b-quantized-model-formats) for more details.

Next, target-specific processing is performed, and the resulting
quantization information is applied to tensors. When encodings
associated with an operation cannot be mapped directly to the target
device the encodings are adapted to the specified target. The
adaption process has a defined set of rules that are documented
in [Target Specific Processing](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#target-specific-processing).

### [Quantization outputs](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id9)

**DLC** - The output of the *qairt-converter* is a DLC ready for
inference or compilation with the QAIRT stack.

## [Target specific processing](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id10)

During target-specific processing, the quantization information
extracted from processing the source model and overrides files is
compared with the supported datatypes and operations on the specified
target. If the extracted quantization information cannot be directly
mapped, quantization information is adapted.

The following guidelines are used when adapting an encoding to a target.

- 32-bit floating point tensors are assigned float16 precision (default
precision for the targets supported by QAIRT).
- Tensors with no encoding information are treated as 16-bit floating
point.
- If the extracted quantized encoding if not supported by the target,
the qairt-converter will fall back to a higher precision (that is
supported on the target) in order to maintain accuracy. Precision
precedence order is: float32, float16, int32, int16, int8, int4, and
int2 (from highest to lowest).

The figure below shows the processing steps involved in adapting
quantization encodings for a target. Steps include handling for data
movement ops, supergroups, promotion and assignment of encodings,
inserting appropriate conversion ops, quantizing static tensors, etc…
and are detailed below.

![../_static/resources/AE_fig5.png](data:image/png;base64,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)

Adapt Encodings – Algorithm

### [Handle data movement ops](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id11)

Assign quantization encoding to the tensors associated with data
movement ops and ensure matching quantization encodings are assigned
along the chain of data movement operations. Operations that do not fall
in the category of data movement ops are unaffected. List of [Data
Movement Ops](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-e-data-movement-ops).

*Rules:*

- Quantization encoding of the input and output tensor of data movement
operations must be equivalent.
- A continuous sequence, or chain, of data movement ops is uniformly
assigned the same encoding value as the range is not expected to
change within the chain.
- When different bit widths are detected at input and output of the op
or chain of ops, the module assigns the minimum bit width for that op
or group. This may result in a ConvertOp or CastOp at the start or
end of the chain.

### [Tag super groups](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id12)

A super group is a subgraph which executes in the same precision from start
to end. Super groups are identified and tagged at this stage. Super
groups are used to:

- Avoid quantization noise by holding intermediate tensor data in
higher precision to improve accuracy.
- Enable targets to fuse the subgraph, when possible, to improve
performance.

    - For example, the *Conv-&gt;ReLU* pattern will be detected and marked in the DLC so
that fusion can be performed during target compilation.

Super groups are target specific. A complete list of the super groups
can be found in [Super groups](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-d-super-groups). Tools like AIMET
simulate super group patterns during quantization and calibration for
improved accuracy and performance.

*Rules:*

- The super group pattern must be supported by the target ([Super
groups](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#appendix-d-super-groups)).
- Quantization encoding must be only specified for tensors at the start
and end of the super groups, and no encoding must be specified for
intermediate tensors.
- For a sequence of ops to qualify as a super group the intermediate
tensors must not be consumed outside of the super group ops. (For example,
in the *Add-&gt;Relu* sequence the tensor between *Add* and *Relu*)
- The super group operator dimensions and other attributes must be
supported by the specified target.

### [Select op precision](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id13)

- Each target supports operations in different precisions (datatype,
bit width, symmetry, etc) as tabulated in the [Backend Supplemental
Op Definition for each
target](https://docs.qualcomm.com/bundle/publicresource/topics/80-63442-50/operations.html#backend-supplements).
Tensors with missing quantization encoding information are
assigned the default, float 16 datatype. For each op, the selection
process determines if the encoding is supported by the target. If the
encoding is supported, then it is used as-is. If the encoded
precision is not supported, the precision will fall back to the
nearest supported higher precision. Precision precedence order is:
float32, float16, int32, int16, int8, int4, and int2 (from highest to
lowest). If a higher precision is not available, it is reported as
an error.

*Rules:*

- Tensors with no encoding are first assigned float16 encoding
(default). At this point all tensors must have an assigned encoding.
- Quantization encoding is assigned to tensors and then ops connected
to that tensor are evaluated to ensure a matching kernel is available
on a backend for execution.
- When a matching kernel is not available, iteratively, look for
nearest higher precision kernel.
- Checks performed when finding a matching a kernel.

    1. When the user provided Symmetry is not supported it is an error.
    2. When user provided encodings do not meet the granularity
(per-tensor, per-channel or per-block) requirements then it is an
error.
    3. When the user provided *y\_scale* does not meet constraint
specified by the target then, it is an error unless it can be
rescaled to match the desired range for the selected bit width.
    4. When the user provided sign of the *output\_dtype* does not match
then, a kernel with opposite sign is looked for by changing the
offset value.
    5. When the user provided bit width is not supported by the kernel
even after changing the sign then, higher bit width is looked for
by repeating the steps from 1 to 5.

### [Insert converts](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id14)

For every tensor where the tensor’s producer and consumer operations
have different datatype requirements an appropriate Convert (rescale,
quantize, or de-quantize) or Cast Op is inserted between ops.

*Rules:*

- Insert a convert or cast op from tensor datatype present in the
model to a user specified datatype
- If the selected datatype is different from user specified datatype,
then another conversion is done from user specified to selected
datatype.

### [Quantize static tensors](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id15)

Quantize static tensor values and store to avoid inserting
a conversion op. This step helps reduce runtime cycles.

*Rules:*

- Static tensors are quantized using the precision selected in Select
Op Precision. When quantization bit width is less than the 8-bit
multiple elements may be packed in packed into 8-bit. For example:
two 4-bit elements can be packed in one 8-bit datatype.

## [Appendix A: Classification of quantization techniques](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id16)

Quantization can be categorized based on the aspects of the model it
affects and the methods it uses:

- **Based on Scope**

    - *Weight Quantization:* Reduces the precision of weights, which
represent learned parameters. Weight quantization is particularly
effective because weights are fixed after training.
    - *Activation Quantization:* Reduces the precision of activation,
which represents intermediate outputs of the model during
inference. Activation quantization is more challenging due to
dynamic data ranges.
    - *Bias Quantization:* Reduces precision of bias. Quantization of
bias depends on weight and activation quantization.
- **Based on Granularity**

    - *Per Tensor Quantization:* The entire tensor (weights or
activations) shares a single scaling factor. [Example
JSON](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#per-tensor-quantization-encoding-example)
    - *Per Channel Quantization (PCQ):* Each output channel of a layer
has its own scaling factor. [Example JSON](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#per-channel-quantization-encoding-example)
    - *Block Quantization (BQ):* Quantizes weights or activations in
blocks rather than individually or per entire tensor/channel. [Example JSON](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#blockwise-quantization-encoding-bq-example)
    - *Low Power Block Quantization (LPBQ):* Encodings at a lower bit
width are determined and then adjusted such that they lie on a
common higher bit width per channel grid.
[Example JSON](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#low-power-blockwise-quantization-lpbq-example)

## [Appendix B: Quantized model formats](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id17)

Quantization information can be provided in the model source graphs
using Q-DQ nodes or using quantized operations depending on the source
framework being used.

The following table lists the combinations of inputs supported by the
*qairt-converter* for each framework.

Input model formats, framework and quantization granularity support matrix

| Framework | Formats | Quantization Granularity |
| --- | --- | --- |
| ONNX | Float model, Q-DQ model | Per-tensor, Per-channel,<br><br><br>Per-block |
| TensorFlow | Float model, FakeQuant model | Per-tensor, Per-channel |
| TFL | Float model, Quantized model | Per-tensor, Per-channel |
| PyTorch | Float model | Per-tensor, Per-channel |

### [ONNX](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id18)

A sequence of *QuantizeLinear*
and *DequantizeLinear* (Q-DQ) nodes are used in the ONNX graph
to specify quantization information. During model conversion
in *qairt-converter*, quantization information from Q-DQ sequence is
extracted as metadata and the
corresponding *QuantizeLinear* and *DequantizeLinear* nodes are folded
to produce a quantized graph.

For example, a ReLU node between a dequantize and quantize node, *int8 →Dequantize → fp32 → ReLU → fp32 → Quantize → int8* is treated equivalent
to a quantized ReLU operator *int8-&gt; ReLU → int8*. First, quantization
encoding from Q-DQ nodes is extracted and stored as metadata (also
referred to as Encoding) attached to the corresponding tensor. Next, the
encoding is applied to the tensor resulting in a quantized graph.

The following figure shows how the Q-DQ nodes are
folded to extract quantization encoding and then produce a quantized
graph. Encoding collected from the source model may be overridden
using the *–quantization-overrides* option.

![../_static/resources/AE_fig3.png](data:image/png;base64,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)

Extract encodings from Q-DQ model and quantized tensors to build a quantized graph

For more information about ONNX Q-DQ, see [QuantizeLinear - ONNX
1.18.0
documentation](https://onnx.ai/onnx/operators/onnx__QuantizeLinear.html).

### [TFLite](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id19)

TFLite uses quantized nodes to convert floating-point models to lower
precision. The TFLite model, including its quantized nodes, is converted
into a DLC. This process involves deriving quantization encodings using
TFLite quantization parameters (scale, zero-point) before associating it
with the tensor in the DLC. Encodings collected from the source model
may be overridden using the *–quantization-overrides* option.

### [TensorFlow](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id20)

The *FakeQuant* node in TensorFlow is used for quantization-aware
training. It simulates the effects of quantization during training,
allowing the model to learn the quantization effects and potentially
achieve higher accuracy when quantized. Quantization information present
in the *FakeQuant* node stored as quantization encoding metadata (preceding figure
shows int8 encodings stored as metadata associated with float-16 tensors).
Encoding collected from the source model may be overridden
using the *–quantization-overrides* option. For more information on
FakeQuant see
[tf.quantization.fake_quant_with_min_max_args](https://www.tensorflow.org/api_docs/python/tf/quantization/fake_quant_with_min_max_args).

## [Appendix C: JSON schema version 2.0.0](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id21)

JSON schema uses keys which are closely aligned with attributes of the
ONNX *QuantizeLinear* operators detailed below.

- **name**: name of the tensor
- **output\_dtype:** tensor data type with bit-width appended. Valid
values for this field are listed. “int4”, “uint4”, “int8”, “uint8”,
“int16”, “uint16”, “int32”, “uint32”, “float32”, “float16”.
- **y\_scale**: tensor data is quantized with this scale value.
- **y\_zero\_point (optional, default = 0)**: tensor data is quantized
with the provided zero point. Internally this is stored as *offset =- y\_zero\_point*. Its value may be used to interpret symmetry of the
quantized data.
- **axis (optional)**: Set when per-channel quantization or block
quantization is used. For per-channel quantization, it indicates the
channel axis along which the scale values are specified. For block
quantization, (when *block\_size* is specified) it indicates the
tensor axis along which blocking is done.
- **block\_size (optional)**: Set only when block quantization is used.
Size of the block along the specified *axis*.
- **per\_channel\_float\_scale (optional):** TBD
- **per\_block\_int\_scale (optional)**: Applicable when Low Power Block Quantization is used,
for which block\_size must be provided. An integer scale is assigned per block.

### [Per tensor quantization encoding example](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id22)

{
    “name”: “activation”,
    “output_dtype”: “uint8”,
    “y_scale”: 1.0,
    “y_zero_point”: 128
    }
    Copy to clipboard

### [Per channel quantization encoding example](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id23)

Example encodings for channel *axis = 0* and *length = 3.*

{
    “name”: “conv.weight”,
    “output_dtype”: “int8”,
    “y_scale”: [
       0.0050100767984986305,
       0.0017133733490481973,
       0.0017133733490481973,
    ]
    “axis”: 0
    }
    Copy to clipboard

### [Blockwise quantization encoding (BQ) example](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id24)

shape: [3, 64]

channel\_axis: 0

block\_axis: 1

block\_size: 32

{
    “name”: “conv22.weight”,
    “output_dtype”: “int4”
    “y_scale”: [
       [0.01, 0.02],
       [0.03, 0.04],
       [0.05, 0.06]
    ],
    “y_zero_point”: [
       [0, 0],
       [0, 0],
       [0, 0]
    ],
    “axis”: 1,
    “block_size”: 32,
    }
    Copy to clipboard

### [Low power blockwise quantization (LPBQ) example](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id25)

{
    “name”: “conv2.weight”,
    “output_dtype”: “int4”
    “per_channel_float_scale”: [
       0.01, 0.02, 0.03
    ],
    “per_block_int_scale”: [
       [1, 2, 16],
       [2, 16, 7],
       [16, 3, 1]
    ],
    “offset”: 0,
    “block_size”: [1, 3],
    }
    Copy to clipboard

## [Appendix D: Super groups](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id26)

Super groups are listed per target in this section.

### [HTP super groups](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id27)

The following table lists the super groups for HTP backend. These super
groups are supported by Hexagon architecture version greater than v73.

| **Super group patterns** |
| --- |
| QNN\_OP\_ELEMENT\_WISE\_ADD + QNN\_OP\_RELU |
| QNN\_OP\_CONV\_2D + QNN\_OP\_HARD\_SWISH |
| QNN\_OP\_CONV\_2D + QNN\_OP\_PRELU |
| QNN\_OP\_CONV\_2D + QNN\_OP\_RELU\_MIN\_MAX |
| QNN\_OP\_CONV\_2D + QNN\_OP\_RELU |
| QNN\_OP\_TRANSPOSE\_CONV\_2D + QNN\_OP\_RELU |
| QNN\_OP\_FULLY\_CONNECTED + QNN\_OP\_RELU |

## [Appendix E: Data movement ops](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id28)

Data movement ops must have the same input and output quantization
encodings.

### [HTP data movement ops](https://docs.qualcomm.com/doc/80-63442-50/topic/applyencodings.html#id29)

The following is the complete list of data movement ops supported by HTP.

| **Data Movement Ops** |
| --- |
| QNN\_OP\_GATHER |
| QNN\_OP\_GATHER\_ELEMENTS |
| QNN\_OP\_GATHER\_ND |
| QNN\_OP\_TOP\_K |
| QNN\_OP\_BATCH\_TO\_SPACE |
| QNN\_OP\_CHANNEL\_SHUFFLE |
| QNN\_OP\_SPACE\_TO\_BATCH |
| QNN\_OP\_TILE |

Last Published: Oct 10, 2025

[Previous Topic
Additional details](https://docs.qualcomm.com/bundle/publicresource/80-63442-50/topics/quantization.md) [Next Topic
Tutorials](https://docs.qualcomm.com/bundle/publicresource/80-63442-50/topics/tutorials.md)