Skip to content

Latest commit

 

History

History
232 lines (209 loc) · 25.3 KB

NPU_performance_guide.md

File metadata and controls

232 lines (209 loc) · 25.3 KB

HIAI Foundation 深度用户指导手册

[TOC]

NPU IR算子性能指导

​ HIAI foundation致力于 AI on any devices。从易用性角度上来说,我们提供的算子功能基本不存在限制,但是从性能的使用角度上来说,我们会基于我们的算子实现方式给出对应IR的最优性能使用指导。

NN算子

IR算子 最优性能使用指导 推荐使用指数
Activation 当前性能硬件最优 ☆☆☆☆☆
HardSwish 当前性能硬件最优 ☆☆☆☆☆
PRelu 当前性能硬件最优 ☆☆☆☆☆
BNInference 当前性能硬件最优。
Conv(depthwise)+Bn组合使用时,会进行图融合优化抵消。
☆☆☆☆☆
Convolution (1)当Cin和Cout是16的倍数时性能最优,达到NPU最大规格算力。
(2)当Cin和Cout小于16时,硬件算力按照:
(Cin*Cout) / 256 * max computer power 折算
☆☆☆☆☆
QuantizedConvolution (1)当Cin和Cout是32的倍数时性能最优,达到NPU最大规格算力。
(2)当Cin和Cout小于32时,硬件算力按照:
(Cin*Cout) / 1024 * max computer power 折算
☆☆☆☆☆
ConvTranspose (1)当Cin和Cout是16的倍数时性能最优,达到NPU最大规格算力。
(2)当Cin和Cout小于16时,硬件算力按照:
(Cin*Cout) / 256 * max computer power 折算
(3)当前针对kennel 1X1,2X2,3X3,8X8有针对性优化性能最优。
☆☆☆☆☆
BiasAdd NA,当前性能硬件最优。
Conv(depthwise)+BiasAdd组合使用时,会进行图融合优化抵消。
☆☆☆☆☆
Eltwise NA,当前性能硬件最优 ☆☆☆☆☆
LRN 当前性能硬件较优
(1)计算过程中计算均值方差,计算量较大,性能差于batchNorm。
(2)主要用于图像增强,对精度计算较敏感,NPU使用FP16计算有些场景存在精度风险。
☆☆☆
ConvolutionDepthwise 当前性能硬件最优。 ☆☆☆☆☆
QuantizedConvolutionDepthwise 当前性能硬件最优。 ☆☆☆☆☆
FullyConnection 性能受DDR带宽bound,非算力受限算子,算法设计时合理配置权重大小。 ☆☆☆☆☆
QuantizedFullyConnection 性能受DDR带宽bound,非算力受限算子,算法设计时合理配置权重大小。 ☆☆☆☆☆
PoolingD 当前性能硬件最优。 ☆☆☆☆☆
FractionalPooling 性能较差;算子中存在随机数生成器,不是规则的vector运行,仅功能支持。
Scale NA,当前性能硬件最优。
Conv(depthwise)+Scale组合使用时,会进行图融合优化抵消。
☆☆☆☆☆
ShuffleChannel Mate40手机性较优,老手机无性能优化,仅支持功能。
ShuffleChannelV2 为了适配支持ANN场景算子,性能较差,仅支持功能。
Softmax 当前性能硬件最优。
4维输入,axis=1,基于C通道做softmax时性能最优。
☆☆☆☆☆
TopK 为了适配支持ANN场景算子,性能较差,仅支持功能。
LogSoftmax 当前性能硬件最优。 ☆☆☆☆☆
Rank shape推导类算子,模型构建时即可抵消。 ☆☆☆☆☆
ScatterNd 非规则数据搬移,性能较差,不建议模型过多使用。 ☆☆☆
FakeQuantWithMinMaxVarsPerChannel 当前性能硬件最优。 ☆☆☆☆☆
StopGradient shape推导类算子,模型构建时即可抵消。 ☆☆☆☆☆
LogicalXor 当前性能硬件最优。 ☆☆☆☆☆
Threshold 当前性能硬件最优。 ☆☆☆☆☆
AxisAlignedBboxTransform 当前性能硬件最优。 ☆☆☆☆☆
Clipboxes 当前性能硬件最优。 ☆☆☆☆☆
Normalize 当前性能硬件最优。 ☆☆☆☆☆
DecodeBBox 当前性能硬件最优。 ☆☆☆☆☆
PSROIPooling 当前性能硬件最优。 ☆☆☆☆☆
SVDF 当前性能硬件最优。 ☆☆☆☆☆
ReduceMean 当前性能硬件最优。 ☆☆☆☆☆
LayerNorm 当前性能硬件较优
(1)计算过程中计算均值方差,计算量较大,性能差于batchNorm。
(2)主要用于图像增强,对精度计算较敏感,NPU使用FP16计算有些场景存在精度风险。
☆☆☆
InstanceNorm 当前性能硬件较优
(1)计算过程中计算均值方差,计算量较大,性能差于batchNorm。
(2)主要用于图像增强,对精度计算较敏感,NPU使用FP16计算有些场景存在精度风险。
☆☆☆
ROIPooling 当前性能硬件最优。 ☆☆☆☆☆
PriorBox 当前性能硬件最优。 ☆☆☆☆☆
LSTM 当前性能硬件最优,功能支持较窄。
使用限制见IR注释和实际构建过程报错日志
☆☆☆☆
BidirectionLSTM 当前性能硬件最优,功能支持较窄。
使用限制见IR注释和实际构建过程报错日志
☆☆☆☆

Math算子

IR算子 最优性能使用指导 推荐使用指数
Add 当前性能硬件最优。 ☆☆☆☆☆
Mul 当前性能硬件最优。 ☆☆☆☆☆
Expm1 当前性能硬件最优。 ☆☆☆☆☆
Ceil 当前性能硬件最优。 ☆☆☆☆☆
Sin 性能较差
Cos 性能较差
Floor 当前性能硬件最优。 ☆☆☆☆☆
Log1p 当前性能硬件最优。 ☆☆☆☆☆
LogicalAnd 当前性能硬件最优。 ☆☆☆☆☆
LogicalNot 当前性能硬件最优。 ☆☆☆☆☆
Maximum Mate40手机性较优,老手机无性能优化,仅支持功能。
Minimum Mate40手机性较优,老手机无性能优化,仅支持功能。
Acosh 当前性能硬件最优。 ☆☆☆☆☆
Asinh 当前性能硬件最优。 ☆☆☆☆☆
Equal 当前性能硬件最优。 ☆☆☆☆☆
Reciprocal 当前性能硬件最优。 ☆☆☆☆☆
Sqrt 当前性能硬件最优。 ☆☆☆☆☆
Square 当前性能硬件最优。 ☆☆☆☆☆
ReduceAllD 当前性能硬件最优。 ☆☆☆☆☆
CastT Mate40手机性较优,老手机无性能优化,仅支持功能。
Sign 当前性能硬件最优。 ☆☆☆☆☆
Cosh 当前性能硬件最优。 ☆☆☆☆☆
Exp 当前性能硬件最优。 ☆☆☆☆☆
FloorMod 当前性能硬件最优。 ☆☆☆☆☆
GreaterEqual 当前性能硬件最优。 ☆☆☆☆☆
Greater 当前性能硬件最优。 ☆☆☆☆☆
Less 当前性能硬件最优。 ☆☆☆☆☆
MatMul 当前性能硬件最优。 ☆☆☆☆☆
RealDiv 性能较差,建议等效成mul或者Reciprocal+mul
Rint Mate40手机性较优,老手机无性能优化,仅支持功能。
Round Mate40手机性较优,老手机无性能优化,仅支持功能。
Rsqrt Mate40手机性较优,老手机无性能优化,仅支持功能。
Sinh Mate40手机性较优,老手机无性能优化,仅支持功能。
Sub 当前性能硬件最优。 ☆☆☆☆☆
Range 模型构建时被优化掉。 ☆☆☆☆☆
Acos 当前性能硬件最优。 ☆☆☆☆☆
Asin 当前性能硬件最优。 ☆☆☆☆☆
Atanh 当前性能硬件最优。 ☆☆☆☆☆
Log 当前性能硬件最优。 ☆☆☆☆☆
LogicalOr 当前性能硬件最优。 ☆☆☆☆☆
Neg 当前性能硬件最优。 ☆☆☆☆☆
ReduceProdD Mate40手机性较优,老手机无性能优化,仅支持功能。
ReduceSum 当前性能硬件最优。 ☆☆☆☆☆
Tan 性能较差
Power 当前性能硬件最优。 ☆☆☆☆☆
Pow 性能较差
ArgMaxExt2 当前性能硬件最优。 ☆☆☆☆
FloorDiv 性能较差,不建议使用
NotEqual 当前性能硬件最优。 ☆☆☆☆☆
LessEqual 当前性能硬件最优。 ☆☆☆☆☆
ChannelAxpy 当前性能硬件最优。 ☆☆☆☆☆
SquaredDifference 当前性能硬件最优。 ☆☆☆☆☆
Atan 当前性能硬件最优。 ☆☆☆☆☆
SegmentMax 数据无序重组计算,性能较差
SegmentMin 数据无序重组计算,性能较差
SegmentMean 数据无序重组计算,性能较差
SegmentSum 数据无序重组计算,性能较差
SegmentProd 数据无序重组计算,性能较差
BatchMatMul 当前性能硬件最优。 ☆☆☆☆☆
ClipByValue 当前性能硬件最优。 ☆☆☆☆☆
L2Normalize 当前性能硬件最优。 ☆☆☆☆☆
ReduceMax Mate40手机性较优,老手机无性能优化,仅支持功能。
ReduceMin Mate40手机性较优,老手机无性能优化,仅支持功能。

Array算子

IR算子 最优性能使用指导 推荐使用指数
ConcatD 当前性能硬件最优。
当Cin是16的倍数且Cout是16的倍数时,做图融合抵消,性能最优。
☆☆☆☆☆
FakeQuantWithMinMaxVars 当前性能硬件最优。 ☆☆☆☆☆
Reshape 当前性能硬件最优。
有些场景算子会被融合抵消掉。
☆☆☆☆☆
SplitD 当前性能硬件最优。
当Cin是16的倍数且Cout是16的倍数时,做图融合抵消,性能最优。
☆☆☆☆☆
SplitV 由于是乱序的数据重排,性能较差。
Unpack 由于是乱序的数据重排,性能较差。
Flatten 由于是乱序的数据重排,性能较差。
Slice 由于是乱序的数据重排,性能较差。
ExpandDims shape推导类算子,模型构建时即可抵消。 ☆☆☆☆☆
GatherV2D 由于是乱序的数据重排,性能较差。
GatherNd 由于是乱序的数据重排,性能较差。
Pack 由于是乱序的数据重排,性能较差。
SpaceToDepth 由于是乱序的数据重排,性能较差。
DepthToSpace 由于是乱序的数据重排,大部分场景性能较差。
针对4宫格场景(Cin=4,block=1)有特殊优化,性能较优
☆☆
StridedSlice 由于是乱序的数据重排,性能较差。
SpaceToBatchND 由于是乱序的数据重排,性能较差。
BatchToSpaceND 由于是乱序的数据重排,性能较差。
Tile 由于是乱序的数据重排,性能较差。
Size shape推导类算子,模型构建时即可抵消。 ☆☆☆☆☆
Fill 由于是乱序的数据重排,性能较差。
InvertPermutation 由于是乱序的数据重排,性能较差。
Select 仅支持功能。 ☆☆
ReverseSequence 由于是乱序的数据重排,性能较差。
PadV2 针对HW方向补0的场景性能最优。
其他场景由于乱序的数据重排,性能较差。
☆☆☆
Squeeze shape推导类算子,模型构建时即可抵消。 ☆☆☆☆☆
BatchReindex 当前性能硬件最优。 ☆☆☆☆☆
Pad 针对HW方向补0的场景性能最优。
其他场景由于乱序的数据重排,性能较差。
☆☆☆
MirrorPad 其他场景由于乱序的数据重排,性能较差。
OneHot 其他场景由于乱序的数据重排,性能较差。
Shape shape推导类算子,模型构建时即可抵消。 ☆☆☆☆☆
Dequantize 当前性能硬件最优。 ☆☆☆☆☆
Quantize 当前性能硬件最优。 ☆☆☆☆☆

Detection算子

IR算子 最优性能使用指导 推荐使用指数
Permute 由于乱序的数据重排,虽然做了相关优化,但是硬件不适合过多此类操作。 ☆☆☆
FSRDetectionOutput 当前性能最优。 ☆☆☆☆☆
DetectionPostprocessing 当前性能最优。 ☆☆☆☆☆
SSDDetectionOutput 当前性能最优。 ☆☆☆☆☆

Image算子

IR算子 最优性能使用指导 推进使用指数
ImageData
DynamicImageData
ImageCrop
ImageChannelSwap
ImageColorSpaceConvertion
ImageResize
ImageDataTypeConversion
ImagePadding
AIPP相关图形处理算子,性能硬件最优。 ☆☆☆☆☆
CropAndResize 仅功能支持,性能较差。
ResizeBilinear
ResizeBilinearV2
Interp
大部分场景性能硬件最优,个别场景待优化。 ☆☆☆☆☆
ResizeNearestNeighbor
Upsample
大部分场景性能硬件最优,个别场景待优化。 ☆☆☆☆☆
Crop 仅功能支持,性能较差。
NonMaxSuppressionV3D 仅功能支持,性能较差。

NPU性能友好计算结构

​ 当前NPU友好结构和推荐指数如下

以下推荐数据为OMG转换后模型运行得出;如果IR对接场景,需要确认无额外reshape或者permute冗余算子。

注意:这里的评价推进标准是基于NPU内部硬件利用率评价得出的,但是相对于其他计算架构(CPU、GPU)可能在同样不推荐的网络在GPU和CPU下也会有类似问题,所以这里推荐指标仅仅是自我对比,不一定是横向对比。

应用场景 网络类型 推荐指数 推荐说明
分类网络 AlexNet ☆☆☆☆ 全连接层权重较大,推理过程带宽受限。
VGG16 ☆☆☆☆ 全连接层权重较大,推理过程带宽受限。
VGG19 ☆☆☆ 全连接层权重较大,推理过程带宽受限。
ResNet18/34/50/101/152 ☆☆☆☆☆ 模型权重大小适中,硬件算力利用率接近100%
GoogleNet ☆☆☆☆ 硬件算力利用率接近75%
InceptionV3 ☆☆☆☆ 硬件算力利用率接近85%
InceptionV4 ☆☆☆☆ 硬件算力利用率接近85%
Inception_Resnet_v2 ☆☆☆☆ 硬件算力利用率接近90%
Xception ☆☆☆☆ 硬件算力利用率接近85%
MobileNet_v1 ☆☆☆☆☆ 模型权重大小适中,硬件算力利用率接近95%
MobileNet_v2 ☆☆☆☆☆ 模型权重大小适中,硬件算力利用率接近95%
MobileNet_v3 ☆☆☆☆☆ 模型权重大小适中,硬件算力利用率接近95%
DenseNet ☆☆☆☆☆ 模型权重大小适中,硬件算力利用率接近95%
SqueezeNet ☆☆☆☆☆ 模型权重大小适中,硬件算力利用率接近95%
ShuffleNet_v1
ShuffleNet_v2
存在大量shuffleChannel操作,本身是内存搬移操作,非计算受限。
此网络为带宽受限网络,shuffleChannel支持仅功能,性能不保证最优。
Resnext ☆☆☆☆ 硬件算力利用率接近85%
EfficientNet ☆☆☆☆☆ 模型权重大小适中,硬件算力利用率接近95%
SENet ☆☆☆☆ 硬件算力利用率接近75%
物体检测 Faster_RCNN ☆☆☆☆☆ 硬件算力利用率接近85%
SSD ☆☆☆☆ 硬件算力利用率接近85%,当前仅支持通过omg流程生成。
FPN ☆☆☆☆☆ 硬件算力利用率接近90%,后处理不在模型中,又算法单独完成。
语音分割 FCN ☆☆☆☆☆ 硬件算力利用率接近85%,由于模型计算量较大,实际部署时要做参数裁剪。
Unet ☆☆☆ 硬件算力利用率接近60%。
MarskRcnn ☆☆ 硬件算力利用率接近80%(仅限tf->om版本,IR对接方式不支持)。
PSPNet ☆☆☆ 不支持pyramid pooling算子,可以通过多个pool等效,性能一般。
DeeplabV3 ☆☆☆ 硬件算力利用率接近60%。
超分 VDSR ☆☆☆☆☆ 硬件算力利用率接近85%,可以达到实时超分要求。
SRCNN ☆☆☆☆ 硬件算力利用率接近70%,可以达到部分实时超分要求。
DnCNN ☆☆☆☆ 硬件算力利用率接近65%,计算量较大,可以达到部分实时超分要求。
DRCN ☆☆☆☆ 硬件算力利用率接近65%,计算量较大,可以达到部分实时超分要求。
DRRN ☆☆☆ 硬件算力利用率接近60%,计算量较大,可以达到部分实时超分要求。
EnhanceNet ☆☆☆ 硬件算力利用率接近60%,计算量较大,可以达到部分实时超分要求。
FSRCNN ☆☆☆☆ 硬件算力利用率接近70%,可以达到部分实时超分要求。
语音语义 RNN ☆☆ 功能支持较为单一,场景有限。
LSTM ☆☆ 功能支持较为单一,场景有限。
Transformer ☆☆☆☆ 硬件算力利用率接近70%,可以达到部分实时超分要求。
Bert ☆☆☆☆ 硬件算力利用率接近70%,可以达到部分实时超分要求。