S100 OpenExplorer

# #工具链概览

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

目前在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提供了运行库支持，运行库包含arm和x86两个部分，分别用于在地平线计算平台和X86仿真平台执行模型。 有关嵌入式应用开发请阅读 模型推理应用开发指导 章节内容。

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

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

页面目录