7.1. 术语约定

7.1.1. Float 模型 / 浮点模型

符合量化感知训练要求的浮点模型。

7.1.2. Calibration

使用校准数据得到量化参数。

7.1.3. Calibration 模型

Calibration 之后得到的伪量化模型。

7.1.4. QAT / 量化感知训练

量化感知的训练。

7.1.5. QAT 模型

量化感知训练之后得到的伪量化模型。

7.1.6. 伪量化

以 int8 量化为例,代表以下过程:

fake_quant_x = clamp(floor(x / scale + 0.5), -128, 127) * scale python 示例如下:

import torch
fake_quant_x = torch.clamp(torch.floor(x / scale + 0.5), -128, 127) * scale

C++ 示例如下:

#include <cmath>
#include <algorithm>
auto fake_quant_x = std::clamp(std::floor(x / scale + 0.5), -128, 127) * scale

在网络模型中通常以伪量化节点的形式出现。

7.1.7. 伪量化模型

带有伪量化节点的模型,一般通过 Calibration 或者 QAT 得到。

7.1.8. Quantized 模型 / 定点模型 / 量化模型

通过参数转换把伪量化模型中的浮点参数转换成定点参数,并且把浮点算子转换成定点算子,该转换后的模型称为 Quantized 模型 / 定点模型 / 量化模型。

7.1.9. Traced 模型

由于 PyTorch 是动态图,而编译和部署只支持静态图,因此,需要对训练好的模型进行 trace 得到静态图,该静态图对应的模型称为 traced 模型。

7.1.10. TorchScript 模型

PyTorch 提供的模型序列化格式。参考官方文档

7.1.11. pt 模型

pt 模型一般指 torchscript 模型,见官方文档,PyTorch 官方对于 torchscript 模型和普通的模型参数均推荐了 pt 作为文件后缀,容易产生混淆,见官方文档(文档 1文档 2)。为防止混淆,我们建议使用 torchscript 模型(ts 模型)。

如无特别说明,本文档中的 pt 模型指 torchscript 模型。

7.1.12. Bernoulli2,Bayes,Bayes-e

BPU 架构的名称。

7.1.13. X3,J3,X5,J5

处理器的名称。

7.1.14. 处理器,BPU 架构,代码中 enum 的对应关系

from horizon_plugin_pytorch import March

处理器

X3

J3

X5

J5

BPU

Bernoulli2

Bernoulli2

Bayes-e

Bayes

enum

March.BERNOULLI2

March.BERNOULLI2

March.BAYES_E

March.BAYES