MegEngine「训练推理一体化」的独特范式,通过静态图优化保证模型精度与训练时一致,无缝导入推理侧,再借助工业验证的高效卷积优化技术,打造深度学习推理侧极致加速方案,实现当前业界最快运行速度。本文从推理侧的数据排布(Inference Layout)讲起,接着介绍MegEngine的Im2col+MatMul、Winograd、Fast-Run工程优化实践。经典的轻量卷积神经网络实验表明,经过MegEngine加速,ResNet18和ResNet50最高加速比可达2x以上,ShuffleNet V2和MobileNet V2执行效率也得到显著提升,实现了业界当前最佳推理性能。
深度学习是一个端到端的自动化系统,在数据驱动之下,算法历经训练测试、工程部署、推理实现三个环节。深度学习技术能否最终落地为产品,细粒度满足不同场景需求,深度学习框架的推理性能优化是一个关键变量。
针对不同硬件设备对性能的苛刻要求,业界一般做法是开发一套推理专用框架,不足是造成了训练与推理的分裂。MegEngine(中文名:天元)「训练推理一体化」的独特范式,可以实现训练与推理的精确等价性,避免转换可能带来的精度损失。
MegEngine的推理性能优化有两个阶段,1)工程部署时的静态图优化,保证模型精度和训练时一致,2)推理实现时的卷积优化,保证模型运算的最快速度。两者最终的优化目标是实现模型推理又「好」又「快」。
深度学习中,卷积种类众多,计算也最为耗时,成为首要优化对象,而推理侧卷积优化更是重中之重。如何让深度学习模型鲁棒运行和推理,即在不同硬件平台(比如CPU)上,针对目标架构(比如X86/ARM)做计算优化,实现最快运行速度,是一个长久存在的挑战。
MegEngine秉持极致的「工程之道」,针对CPU推理的卷积优化,做了细致而系统的工程创新,不断逼近加速极限。本文是MegEngine卷积优化技术的「综述篇」,基于已有工作,做了多项技术的工程优化,包括Inference Layout、Im2col+MatMul、Winograd、Fast-Run。后续会有相关技术的详解篇。
Inference Layout
推理侧卷积计算优化方面,首先面临的问题是feature map的数据排布(Tensor Layout),选择合适的数据排布不仅会使卷积优化事半功倍,还可作为其他优化方法的基础,比如Im2col、Winograd、Fast-Run。
目前,深度学习框架中常见的数据排布格式有3种:
- NHWC:[Batch, Height, Width, Channels]
- NCHW:[Batch, Channels, Height, Width]
- NCHWX:[Batch, Channels/X, Height, Width, X=4/8]
数据的排布对卷积计算有着整体性的直接影响。NHWC和NCHW的空间复杂度相同,区别在于访存行为,NCHWX介于两者之间,但是有其他优点。
NCHWX
NCHWX在N