gpu对于机器学习是必不可少的。可以通过AWS或谷歌cloud轻松地启动这些机器的集群。NVIDIA拥有业内领先的GPU,其张量核心为 V100和 A100加速哪种方法最适合你的神经网络?为了以最低的成本设计出最快的神经网络,机器学习架构师必须解决许多问题。此外,仅仅使用带有GPU和张量核心的机器并不能保证最高性能。那么,作为一个机器学习架构师,应该如何处理这个问题呢?当然,您不能是硬件不可知论者。您需要了解硬件的功能,以便以最低的成本获得最大的性能。
作为一个机器学习架构师,你应该如何设计神经网络来最大化GPU的性能?
在本文中,我们将深入了解机器学习架构师实现性能最大化的手段。我们将特别关注矩阵-矩阵乘法,因为它是机器学习中最常见和最繁重的数学操作。
让我们从一个简单的全连接的一个隐藏层神经网络开始:
图1:在神经网络的每一层进行矩阵乘法,每一步的矩阵乘法的形状如括号所示。例如(B, L1)是B行L1列的矩阵的形状。MM1, MM2,…MM5是各种矩阵-矩阵乘法。
从基本神经网络可以看出,在第L2层,我们进行了3次矩阵-矩阵乘法(1向前,2向后)。在第L1层,我们执行2个矩阵-矩阵乘法(1向前,1向后)。事实上,除了第一层(L1)之外,我们在每一层都执行了3次矩阵乘法。如果神经网络有n层,则需要进行3n-1个矩阵-矩阵乘法,即时,它随神经网络的大小线性增长。
一个快速观察方法是将批大小设置成1,我们看下B=1时的情况,即一次只学习一个数据点。在这种情况下,矩阵-矩阵退化为矩阵-向量的乘法。然而,在实践中,批大小从不为1。在梯度下降中,在每个学习步骤中考虑整个数据集,而在随机梯度下降中,在每个学习步骤中考虑一批B > 1(但比整个数据集要少得多)。
在本文中,让我们关注两个维数(M, K)和(K, N)的矩阵a和B之间的单个矩阵-矩阵乘法,分别得到维数(M, N)的矩阵C。
维数M, N, K由每层神经网络的结构决定。例如,在AlexNet中,批处理大小为128,有几个密集的层(4096个节点)和一个输出层(1000个节点)。这将导致(128,4096)和(409,1000)矩阵的乘法。这些是相当大的矩阵。
图2。平铺的矩阵乘法