3. 关键概念

本章节为您提供一些可能会在下方文内经常出现的概念以及一些常用到的背景知识。

  • 原始浮点模型

    指您通过 TensorFlow/PyTorch 等等 DL 框架训练得到的可用模型,这个模型的计算精度为 float32。

  • 混合异构模型

    是一种适合在地瓜机器人计算平台上运行的模型格式,之所以被称为异构模型是因为它能够支持模型同时在 ARM CPU 和 BPU 上执行。 由于在 BPU 上的运算速度会远大于 CPU 上的速度,因此会尽可能的将算子放在 BPU 上运算。对于 BPU 上暂时不支持的算子,则会放在 CPU 上进行运算。

  • hbm 文件

    即 D-Robotics BPU Model,HBDK 编译器生成的模型文件,hbm 包含 BPU 指令、模型参数、输入输出描述等信息。

  • 算子

    深度学习算法由计算单元组成,我们称这些计算单元为算子(Operator,也称 op)。 算子是一个函数空间到函数空间上的映射,同一模型中算子名称是唯一的,但是同一类型的算子可以存在多个。 如:Conv1、Conv2,是两个算子类型相同的不同算子。

  • 模型转换

    指的是将原始浮点模型或符合要求的 onnx 模型转换为地瓜机器人混合异构模型的过程。

  • 模型量化

    目前工业界最有效的模型优化方法之一,量化是指定点与浮点等数据之间建立一种数据映射关系,使得以较小的精度损失代价获得了推理性能收益,可简单理解为用“低比特”数字表示 FP32 等数值,如 FP32–>INT8 可以实现 4 倍的参数压缩,在压缩内存的同时可以实现更快速的计算。

  • PTQ

    即训练后量化方案,先训练浮点模型,然后使用校准图片计算量化参数,将浮点模型转为量化模型的量化方法。更详细的介绍可参考 PTQ、QAT 简介 章节。

  • QAT

    即量化感知训练方案,在浮点训练的时候,就先对浮点模型结构进行干预,使得模型能够感知到量化带来的损失,减少量化损失精度的方案。更详细的介绍可参考 PTQ、QAT 简介 章节。

  • 张量

    张量,也称 Tensor,具备统一数据类型的多维数组,作为算子计算数据的容器,包含输入输出数据。 张量具体信息的载体,包含张量数据的名称、shape、数据排布、数据类型等内容。

  • 数据排布

    深度学习中,多维数据通过多维数组(张量)进行存储,通用的神经网络特征图通常使用四维数组(即 4D)格式进行保存,即以下四个维度:

    • N:Batch 数量,如图片的数量。

    • H:Height,图片的高度。

    • W:Width,图片的宽度。

    • C:Channel,图片的通道数。

    但是数据只能线性存储,因此四个维度有对应的顺序,不同的数据排布(format)方式,会显著影响计算性能。 常见的数据存储格式有 NCHW 和 NHWC 两种:

    • NCHW:将同一通道的所有像素值按顺序进行存储。

    • NHWC:将不同通道的同一位置的像素值按顺序进行存储。

    如下图所示:

    ../../_images/data_format.png
  • 数据类型

    下文常用到的图片数据类型包括 rgb、bgr、gray、yuv444、nv12、featuremap。

    • rgb、bgr 和 gray 都是比较常见的图像格式,每个数值都采用 UINT8 表示。

    • yuv444 也是一种常见的图像格式,它的每个数值都采用 UINT8 表示。

    • nv12 是常见的 yuv420 图像格式,每个数值都采用 UINT8 表示。

    • featuremap 适用于以上列举格式不满足您需求的情况,此 type 每个数值采用 float32 表示。例如雷达和语音等模型处理就常用这个格式。

还有更多针对文档中缩略词的介绍,请您参考 常用缩略语 章节的介绍。