工具链概览
地平线J6算法工具链(以下简称工具链)是一套完整的边缘计算平台算法落地解决方案,适配地平线 J6B、J6E、J6M、J6H、J6P系列边缘计算平台,可以帮助您把浮点模型量化为定点模型,并在地平线计算平台上快速部署自研算法模型。
地平线支持的 ONNX/Torch 算子范围,算子约束条件以及通用使用限制等相关内容,详见 工具链算子支持约束列表 章节。
目前在GPU上训练的模型大都是浮点模型,即参数和计算以float32类型为主。地平线BPU计算平台会适当采用更低bit的计算(例如int8、int16、fp16),从而达成更高的部署能效表现。
在保证模型推理正确性的前提下,将float32模型压缩为更低bit计算模型的过程,我们称之为量化。同时模型量化后能够有效减少模型大小,加速深度学习推理的速度,因此也在学术界和工业界被广泛研究和应用。
依据是否要对量化后的参数进行调整,我们可以将量化方法分为训练后量化(PTQ)和量化感知训练(QAT)。这两种方法的操作区别如下图所示(图左为PTQ,图右为QAT):
训练后量化PTQ是使用一批校准数据对训练好的模型进行校准,将训练过的FP32模型直接转换为定点计算的模型,过程中无需对原始模型进行任何训练,只需要对几个超参数进行调整就可以完成量化过程, 且过程简单快速,无需训练,因此该方法已被广泛地应用于大量的端侧和云侧部署场景。我们优先推荐您尝试PTQ方法来查看是否满足您的部署精度和性能要求。 有关PTQ方案的详细信息请阅读 训练后量化(PTQ) 章节内容。
量化感知训练QAT是将训练过的模型量化后又再进行重训练。由于定点数值无法用于反向梯度计算,实际操作过程是在某些OP前插入伪量化节点(fake quantization nodes),用于在训练时获取流经该OP的数据的截断值, 便于在部署量化模型时对节点进行量化时进行使用。我们需要在训练中通过不断优化精度来获取最佳的量化参数。由于它需要对模型进行训练,因此对操作人员技术要求较高。有关QAT方案的详细信息请阅读 量化感知训练 章节内容。
工具链由PTQ、QAT和嵌入式编译等部分组成,工具链组成示意图如下:
Runtime SDK提供了运行库支持,提供了模型部署、模型评测等相关功能,您可以使用SDK中的接口,将模型便捷地部署到地平线计算平台上。 有关嵌入式应用的开发请阅读 模型推理应用开发指导 章节。 在板端部署之外,Runtime SDK还提供了x86环境下的仿真部署功能,在无法部署到板端的场景下提供仿真推理验证的功能支持。 您可以参考 相关示例 来熟悉地平线计算平台的部署流程,从而快速理解并掌握模型部署相关的方法和技巧。
此外,工具链提供了丰富的开发工具、示例以及内置了大量算法模型的模型发布物,以便于您上手理解,并提高开发效率。
工具链的整体使用流程如下图所示,地平线推荐您先尝试PTQ方式来查看是否满足您的部署精度和性能要求。

