带你读《2022技术人的百宝黑皮书》——MNN 2.0 发布 ——移动端推理引擎到通用深度学习引擎(7) https://developer.aliyun.com/article/1248031?groupCode=taobaotech
结构/精度
图优化与模型量化
结构冗余与精度冗余的压制一般需要离线工具辅助,MNN 对应提供了图优化、模型压缩工具,在端上则提供了部分架构的低精度的计算支持。
1.图优化:基于一系列预先写好的模板,去除模型中的冗余计算,比如 Convolution 与 BatchNormal / Scale 的合并,Dropout 去除等。图优化能在特定场景下带来相当大的计算收益,但相当依赖根据先验知识编写的模板,相比于模型本身的复杂度而言注定是稀疏的,无法完全去除结构冗余
2.模型量化:通过把模型中的常量压缩成 FP16 或 Int8 ,可以降低模型大小,进一步地可以压缩模型中的变量(featuremap),亦即为模型中每层的输入输出寻找FP16/Int8 到 FP32 的映射关系,这样可以在模型运行时用低精度进行计算加速
3.低精度计算:MNN 在ARMv7a/ARMv8上实现了int8,BF16 的加速,分别约有30% / 10% 加速效果。ARMv8.2 架构上用 fp16 vec ,sdot ,分别有 100% 和 200 % 的加速效果。在支持VNNI指令集的x64架构下则有 200% 的性能提升。
稀疏计算加速
为了适配SIMD优化,MNN 通过权重矩阵稀疏化设计,训练合适的稀疏化分布,使权重矩阵呈现出“半结构化”稀疏的特性,而不是在行、列方向完全随机化稀疏,避免了向量vector用不满、数据复用低的弊端。如下图所示的BCSR(Block Compressed Sparse Row ) 格式:
图中白色代表的零元素,实际计算可以跳过,减少计算开销。
带你读《2022技术人的百宝黑皮书》——MNN 2.0 发布 ——移动端推理引擎到通用深度学习引擎(9) https://developer.aliyun.com/article/1248029?groupCode=taobaotech