深度学习技术在图像识别、搜索推荐等领域得到了广泛应用。近年来各大 CPU 厂商也逐渐把 AI 算力纳入了重点发展方向,通过《Arm 芯片 Python-AI 算力优化》我们将看到龙蜥社区 Arm 架构 SIG(Special Interest Group) 利用最新的 Arm 指令集优化 Python-AI 推理 workload 的性能。
倚天ECS实例的AI推理软件优化
阿里云推出的倚天Arm ECS实例,拥有针对AI场景的推理加速能力,我们将了解加速的原理以及以及相关的软件生态适配。
卷积神经网络(CNN)在图像和语音领域使用广泛,神经网络算法相比传统的算法消耗了更多算力。为了探索对计算的优化,我们进一步看到AlexNet模型(一种CNN)的推理过程的各个层的计算资源消耗占比。
可以看到名为conv[1-5]
的5个卷积层消耗了90%的计算资源,因此优化CNN推理的关键就是优化卷积层的计算。
我们进一步来看如何对图像应用卷积核:
- 使用
im2col
根据卷积核尺寸,将图像转化为若干块(patch
) - 将多个卷积核展开成若干向量
- 对由图像块组成的矩阵和由多个卷积核展开组成的矩阵应用矩阵乘法
上面一页的计算应用了矩阵乘法操作,为什么我们不采用更加直接的迭代计算方式,而是采用需要额外内存的矩阵乘法呢?这里有两个关键因素:
- 深度学习的卷积计算量很大,典型计算需要涉及5000万次乘法和加法操作,因此对计算的优化十分重要
- 计算机科学家们已经深入探索了矩阵乘法操作,矩阵乘法操作可以被优化得非常快。
在fortran
世界中,GEMM(general matrix multiplication)已经成为一个通用操作:
该操作通过对数据重新排列,精心设计计算过程,利用多线程和向量指令,可以比自己实现的朴素版本快十倍以上。因此使用矩阵运算带来的收益相比额外的开销是值得的。