关键概念
- AIPP
AIPP(Artificial Intelligence Pre-Processing)AI预处理,是昇腾AI处理器提供的硬件图像预处理模块,包括色域转换,图像归一化(减均值/乘系数)和抠图(指定抠图起始点,抠出神经网络需要大小的图片)等功能。
Atlas 200/300/500 推理产品、Atlas 训练系列产品场景:DVPP模块输出的图片多为对齐后的YUV420SP类型,不支持输出RGB图片;如果模型需要RGB格式的图片,业务流需要使用AIPP模块转换对齐后YUV420SP类型图片的格式,并抠出模型需要的输入图片。
- YUV420SP
- 知识库
- cost model
评估器,调优过程中如果没有命中知识库,则通过cost model评估tiling空间中tiling的优劣,选择最优tiling数据。
- 数据排布格式(Format)
Format为数据的物理排布格式,定义了解读数据的维度,比如1D、2D、3D、4D、5D等。
- NCHW和NHWC
在深度学习框架中,多维数据通过多维数组存储,比如卷积神经网络的特征图(Feature Map)通常用四维数组保存,即4D,4D格式解释如下:
- N:Batch数量,例如图像的数目。
- H:Height,特征图高度,即垂直高度方向的像素个数。
- W:Width,特征图宽度,即水平宽度方向的像素个数。
- C:Channels,特征图通道,例如彩色RGB图像的Channels为3。
由于数据只能线性存储,因此这四个维度有对应的顺序。不同深度学习框架会按照不同的顺序存储特征图数据,比如Caffe,排列顺序为[Batch, Channels, Height, Width],即NCHW;TensorFlow中,排列顺序为[Batch, Height, Width, Channels],即NHWC。
如图1所示,以一张格式为RGB的图片为例,NCHW中,C排列在外层,每个通道内,像素紧挨在一起,实际存储的是“RRRRRRGGGGGGBBBBBB”,即同一通道的所有像素值顺序存储在一起;而NHWC中C排列在最内层,每个通道内,像素间隔挨在一起,实际存储的则是“RGBRGBRGBRGBRGBRGB”,即多个通道的同一位置的像素值顺序存储在一起。
- NC1HWC0
昇腾AI处理器中,为了提高通用矩阵乘法(GEMM)运算数据块的访问效率,所有张量数据统一采用NC1HWC0的五维数据格式,如下图所示。
图2 NC1HWC0
其中C0与微架构强相关,等于AI Core中矩阵计算单元的大小;C1=(C+C0-1)/C0,如果结果不整除,向上取整。
例如:NHWC -> NC1HWC0的转换过程为:- 将NHWC数据在C维度进行分割,变成C1份NHWC0。
- 将C1份NHWC0在内存中连续排列,由此变成NC1HWC0。
NHWC->NC1HWC0的转换场景示例:- 首层RGB图像通过AIPP转换为NC1HWC0格式。
- 中间层Feature Map每层输出为NC1HWC0格式,在搬运过程中需要重排。
- NCHW和NHWC