大家好!这段时间一哥在钻研矩阵乘法,取得实质性突破,给大家简单介绍一下。
首先大家可能要问什么是矩阵?大家可能看过或者听说过一部叫《黑客帝国》的电影,它可以翻译成《矩阵帝国》。它讲的是未来AI崛起,使用计算机算法为人类构建了一个虚拟世界的故事。从这个例子我们只要大体知道矩阵是人工智能的核心概念,而矩阵乘法则是人工智能的核心运算。矩阵乘法算的快不快,决定了AI快不快,甚至强不强。现在业界都在争先恐后的堆积算力,其实都是用于矩阵乘法的。
既然矩阵乘法这么重要,人类当然已经研究了近百年。目前矩阵运算最快的三个顶尖算法分别是:OpenBLAS, Eigen3,MKL。其中MKL据说是最快的,但是不开源,其余两个是开源免费的。虽说是顶尖算法,但是在我实际使用过程中,我发现OpenBLAS和Eigen3并没有达到CPU的最大速度,而且差的不是一点点。
由此,我开始自己写矩阵乘法。取经的路当然很长很远,Bla,Bla。。。技术细节一则保密,二则围观群众也不关心,反正一哥废寝忘食一周下来搞定了,直接上结果。首先申明一下我的机器是单个Intel(R) Xeon(R) Gold 6252 CPU @ 2.10GHz,24核心,48线程。
首先我们看最特殊的一种情况,就是参与运算的矩阵长宽差很多的情况。
我们可以看到矩阵乘法怎么算,在所有的情况下,一哥的矩阵乘法wysgemm比OpenBLAS都要快,经常达到10倍以上,甚至能达到46倍!这意味着什么?意味着买一台电脑能抵10台、46台同样的电脑,而且有些事情不是买电脑就可以简单加速的。。。
接下去我们看一下矩阵长宽比接近的中小型情况:
我们可以看到,wysgemm还是比OpenBLAS快了几倍,最多可以达到13倍。由此我们可以得出结论,在中小型矩阵(有一个维度
接下来我们看一下大型矩阵的情况,这种情况是传统矩阵库设计者主要考虑的情况。
可以看到,在大型矩阵上,wysgemm和OpenBLAS不相上下,但是wysgemm表现比较稳定。这也说明了双方的比较是一个公平的比较矩阵乘法怎么算,各方面设置都一样。我们观察到在大型矩阵上,wysgemm达到了2T的CPU运算力,接近GPU算力。
综上所述,在中小型矩阵特别是长宽比差别较大的情况下,wysgemm可以超越目前顶尖算法一个数量级。这是一个重要的突破,其意义在于使得服务器CPU也可以进行深度学习,以及普适性的数值运算加速。我实测使用wysgemm代替Eigen3之后,深度学习(隐层节点数=1024)得到了4-5倍的提速。
现在我最关心的不是技术问题了,而是这个算法何去何从?我认为这个算法应该是首先服务于我国高科技,而非开源或者卖给Intel。我个人思路有限项目加盟,具体怎么让它发挥价值还需读者建议和帮助。