6.1. 简介

X5算法工具链基于X5处理器研发算法解决方案,可以帮助浮点模型量化定点模型, 并在X5上快速部署自研算法模型。

目前在GPU上训练模型大部分浮点模型,即参数使用是float类型存储;X5处理器中BPU使用是INT8的计算精度(业内处理器通用精度),只能运行定点量化模型。从训练浮点模型转为定点模型过程,我们叫做量化,依据是否量化参数进行调整,我们可以量化方法分为QAT(Quantification Aware Training)量化感知训练和PTQ(Post-Training Quantization)训练量化。这两种方法操作区别如下所示(图左为PTQ,图右为QAT):

qat_ptq_contrast

训练量化PTQ方法使用一批校准数据训练浮点模型进行校准, 将训练的FP32网络直接转换定点计算网络,此过程无需原始浮点模型进行任何训练,只几个参数调整完成量化过程, 整个过程简单快速, 目前端侧云侧场景得到广泛应用。有关PTQ方案详细信息阅读 训练量化(PTQ) 章节内容。

量化感知训练QAT是训练模型量化进行训练。由于定点数值无法用于反向梯度计算,实际操作过程某些OP前插入量化节点(fake quantization nodes), 用于训练获取流经该OP的数据截断值,便于部署量化模型节点进行量化进行使用。我们需要训练通过不断优化精度获取最佳量化参数。由于需要对模型进行训练,因此操作人员技术要求高。 有关QAT方案详细信息阅读 量化感知训练(QAT)章节内容。

工具链由PTQ、QAT和嵌入式编译部分组成,工具链组成示意图如下:

toolchain_framework

6.1.1. 使用注意事项

章节适用使用X5处理器开发者,用于介绍X5算法工具链一些使用注意事项。

6.1.1.1. 浮点模型(FP32)注意事项

  • 支持caffe 1.0 版本的caffe浮点模型ir_version≤7opset10opset11 版本的onnx浮点模型量化成X5处理器支持定点模型;

  • 其他框架训练浮点模型需要先导第1点要求符合版本的onnx浮点模型后,才能进行量化;

  • 模型输入维度支持固定4维 输入NCHW或NHWC,例如:1x3x224x224或1x224x224x3, 不支持动态维度非4维输入;

  • 浮点模型不要包含后处理算子 ,例如:nms计算。

6.1.1.2. 模型算子列表说明

  • 目前提供了X5处理器支持所有Caffe和ONNX算子情况,其他列出算子X5处理器 bpu硬件限制支持 。具体算子支持列表,请参考 模型算子支持列表 章节内容。