2.2. 工具链概览

地平线J5算法工具链(以下简称工具链)是一套完整的边缘计算平台算法落地解决方案,可以帮助您把浮点模型量化为定点模型, 并在地平线计算平台上快速部署自研算法模型。

目前在GPU上训练的模型大部分都是浮点模型,即参数使用的是float类型存储。地平线BPU架构的计算平台使用的是int8的计算精度(业内计算平台的通用精度),能运行定点量化模型。

从训练出的浮点精度转为定点模型的过程,我们称之为量化。同时模型量化后能够有效减少模型大小,加速深度学习推理的速度,因此也在学术界和工业界被广泛研究和应用。

依据是否要对量化后的参数进行调整,我们可以将量化方法分为训练后量化(PTQ)和量化感知训练(QAT)。 这两种方法的操作区别如下图所示(图左为PTQ,图右为QAT):

../../../_images/qat_ptq_contrast.png

训练后量化PTQ是使用一批校准数据对训练好的模型进行校准,将训练过的FP32模型直接转换为定点计算的模型,过程中无需对原始模型进行任何训练,只需要对几个超参数进行调整就可以完成量化过程, 且过程简单快速,无需训练,因此该方法已被广泛地应用于大量的端侧和云侧部署场景。我们优先推荐您尝试PTQ方法来查看是否满足您的部署精度和性能要求。 有关PTQ方案的详细信息请阅读 训练后量化(PTQ) 章节内容。

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

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

../../../_images/toolchain_framework.png

其中:

Runtime SDK 提供了异构模型的运行库支持,运行库包含arm和x86两个部分,分别用于在地平线计算平台和X86仿真平台执行异构模型。 有关嵌入式应用开发请阅读 嵌入式应用开发指导 章节内容。

此外,工具链提供了丰富的开发工具、示例以及内置了大量算法模型的模型发布物,以便于您上手理解,并提高开发效率。

工具链的整体使用流程如下图所示,地平线推荐您先尝试PTQ方式来查看是否满足您的部署精度和性能要求。

../../../_images/usage_process.png