开发平台概述

地平线芯片开发平台产品产品名称为OpenExplorer天工开物 开发平台,它是地平线自研的芯片配套基础AI应用开发平台。

../_images/open-explorer-x.png

它由基础系统软件及驱动、AI芯片工具链组成。

1. 基础系统软件

XJ3 芯片的系统为 嵌入式Linux ,针对芯片内部的各个硬件,系统软件层面提供了相应的API供您去使用,其中主要包括以下内容:

  • 图像通路:包括MIPI,ISP,IPU等各个图像通路模块的API函数列表以及H264/265/JPEG编解码模块的API函数列表。

  • ION内存操作:内存操作相关函数。

  • BPU硬件相关:查询BPU AI加速器的状态。

  • 其他:包括GPIO,USB等外设的操作API函数以及Linux系统相关API函数。

除了API函数以外,系统软件层面也提供了一些工具集用于查询查询和调整系统OS层面相关配置。关于系统软件相关功能使用,请参考对应的产品手册。

2. AI芯片工具链

AI芯片工具链,又称AI Toolchain,它重点是解决如何在地平线芯片上完成深度神经网络模型的训练、转换以及模型部署问题。

地平线AI芯片工具链核心采用了模型量化技术来实现深度神经网络模型的计算加速。

Note

深度神经网络模型量化属于一种深度神经网络的性能优化技术,它通过降低权重和激活值的精度来减小存储&计算量,进而实现芯片级别的计算加速。 非量化场景下,模型权重和激活值都为Float 32bit,通过量化为16bit,8bit,4bit,可以成倍的减小计算量。

常见有16bit,8bit,4bit等量化方案,目前地平线XJ2/XJ3采用8bit量化方案。

地平线量化工具链主要包括两套:量化训练工具链浮点转定点工具链,分别对应社区的QAT(Quantification Aware Training)量化感知训练和PTQ(Post-Training Quantization)后量化转换,如下所示:

../_images/ai-toolchain.png

2.1 量化训练方案

量化训练方案即量化感知训练方案,支持在模型训练过程中,直接训练出量化模型。地平线量化训练方案是基于社区训练框架的基础上进行开发。 XJ3芯片支持Mxnet Gluon,Tensorflow两套框架,J5芯片支持Pytorch框架,预计2021年下半年也会针对XJ3芯片支持Pytorch框架。

针对每种框架,我们采用量化Plugin插件+Vision算法包+ModelZoo模型仓库的组合方案进行产品交付。以Tensorflow量化训练工具链为例:

../_images/tensorflow-plugin.png
  1. Horizon Plugin Tensorflow量化插件:以Tensorflow Plugin方式,新增量化算子和量化训练能力支持。

  2. Horizon Vision Tensorflow算法包:围绕嵌入式视觉场景,针对开源Tensorflow进行各种维度的增强,其中包括数据预处理,Loss函数,Metric指标,Callback功能,训练工具等功能增强, 内置了各种基础backboones/postprocess结构,可快速在算子开发过程中进行复用,提高算法开发效率。 同时我们在算法包中内置地平线优势的模型,基于这些优势模型,用户基于私有数据可以快速训练自己出自己的产品化模型。

  3. Horzion Model Zoo模型仓库:将地平线积累的各种pretrain模型和训练脚本进行开放,包括基础模型和参考模型。

经过量化训练工具链生成的模型还仅仅是量化模型,比如tensorflow量化训练工具训练后生成的是 PB格式 量化模型,在部署到地平线芯片之前,需要使用 HBDK芯片编译器工具链 对模型进行编译, 将PB格式模型转换为指令集模型(文件后缀名为.hbm)。

HBDK芯片编译器工具链是一套命令行工具集合,其中以hbdk-cc编译器为主,支持将量化训练的定点模型,编译成HBM指令集文件,进而可以在地平线AI芯片中进行部署。 同时提供了hbdk-pack模型打包工具链支持将多个HBM指令集文件进行打包,简化上板部署。另外围绕模型静态评测,模型X86仿真评估以及模型一致性验证工具,提供了hbdk-perf,hbdk-sim和hbdk-model-verfier工具集。

../_images/hbdk.png
  1. hbdk-cc:将模型(MXNet/TensorFlow)编译成模型库文件(.hbm)。

  2. hbdk-pack:将一个或多个模型库文件(.hbm)打包成一个模型库文件(.hbm)。

  3. hbdk-perf:评估模型库文件(.hbm)中的模型在X3/J3上运行的性能,生成性能分析报告。

  4. hbdk-model-verifier:验证模型库中的模型,确保在X3/J3上运行结果的正确性。

  5. hbdk-sim:运行模型库中的模型,得到预测结果。

  6. hbdk-model-check:按照指定BPU架构标准去检查算法模型是否满足要求。

Note

量化训练方案可以贴合地平线芯片的优势,构建出更加符合地平线芯片的量化模型,进而可以获取到更高的模型性能和量化精度。 但是对算法人员的模型设计以及模型量化训练都是有一定侵入性,具有一定的学习和上手成本

因此我们暂时默认不对外发布量化训练工具链,如果你有相关需求,可以联系我们销售和技术支持获取。

2.2 浮点转定点工具链

浮点转定点工具链即后量化转换方案,通过工具方式将原始浮点模型,利用少量校准数据集对模型做量化校准,并编译生成为可以在地平线芯片上运行的指令级模型。

使用流程如下:

../_images/hb_mapper.png

如上图所示,地平线模型量化转换方案不仅仅是传统概念上模型参数的Quantization定点化流程, 而是一个完整模型解析,模型结构优化,模型定点化,以及模型指令编译与优化过程,最后交付的是一个可以直接在地平线芯片上部署的异构混合模型。

浮点转换原生支持Caffe和ONNX模型,其中ONNX支持到最新的opset10,11,其他Pytorch,Tensorflow等框架都可以通过转换为ONNX模型来使用我们转换工具链。

与量化感知训练方案相比,浮点转定点方案使用起来更加简单,算子支持范围更完整,针对典型模型,量化工具可以很好的保持量化精度,因此优先推荐你使用浮点转换工具链。 但是如果您尝试了浮点转换工具链提供的各种量化精度技术手段都无法满足你的量化精度需求时,你可以尝试用量化训练方案进行解决。

Note

浮点转定点工具链生成物是异构混合模型bin文件,与量化训练方案中最后的定点模型hbm文件有概念上的差异。

其中HBM文件内部指令为在地平线BPU AI加速器进行计算,而BIN文件内部除了可以包含多个HBM段以外,还有一些会在CPU上执行的模型算子 比如Abs,Clip,Div,Elu,Exp等算子,它们会在CPU上按照FP32方式进行计算。

浮点转换工具链也是通过支持CPU算子和BPU算子的方式来提高模型适配能力,提升工具链的易用性。