带你读《2022技术人的百宝黑皮书》——MNN 2.0 发布 ——移动端推理引擎到通用深度学习引擎(8) https://developer.aliyun.com/article/1248030?groupCode=taobaotech
MNN实现了对稠密模型权重稀疏化训练的功能,导入MNN Python压缩工具包(mnncompress),设定mnncompress需要的参数,运行将原模型中权重部分数值稀疏化为0。需要注意的是稀疏化0元素的分布模式需要符合分块形态,才能最大化发挥加速性能。
在常规的CPU GPU中并没有稀疏指令支持,我们须用常规向量指令实现计算加速,在MNN中我们设计实现了稀疏算子,最大化提取复用代码、扩展差异化后端。并且稀疏化算子对用户无感知,无需增加认知成本。在后端方面,为最大化向量并行加速,设计了灵活的“半结构化”分块大小,例如对于AVX2可以用float32 x 8 的分块大小,同时为ARM NEON 和x86 AVX2/AVX512 指令实现了多种稀疏后端内核汇编代码。
第一点,CV模型在ARM端获得3.16x-4.13x加速比(0.9稀疏度),跨机型、跨模型加速效果都比较显著,详见参考资料大图。
第二点,在实际业务模型中验证了业务精度指标,损失有限、可接受。
第三点,推理耗时随稀疏度增加线性下降,跨模型、cpu 一致;在小米6上,稀疏分块1x4加速临界值优化到0.3,中高端机型甚至稀疏度0.1的时候可达临界值。
带你读《2022技术人的百宝黑皮书》——MNN 2.0 发布 ——移动端推理引擎到通用深度学习引擎(10) https://developer.aliyun.com/article/1248026?groupCode=taobaotech