根据外媒报道,莱斯大学的计算机科学家们已经克服了人工智能产业迅速发展的一个主要障碍,他们证明了在不依赖于图形处理单元(GPU)等专业级加速硬件的情况下,也能够实现对深度学习技术的加速。这个名为 SLIDE 的算法是第一个在 CPU 上比 GPU 更快地训练深度神经网络的算法。
在奥斯汀召开的 2020 机器学习系统会议 MLSys 上,来自莱斯大学的计算机科学家们,在来自英特尔公司的合作伙伴的支持下,于 3 月 2 日在奥斯汀会议中心展示了他们的最新研究成果。
当下,为了实现深度学习,许多公司正大力投资于图形处理单元(GPU)和其他专业级硬件。深度学习是一种强大的人工智能,如今亚马逊 Alexa 和苹果 Siri 等智能助理、面部识别、产品推荐系统和其他技术都有深度学习在背后作为支撑。深度学习炙手可热的程度可以举一例说明,作为一手打造该行业金字招牌“特斯拉 V100 Tensor Core GPU”芯片的制造商,Nvidia 公司最近的财务报告显示,其 2019 第四季度收入同比增长了 41%。
而莱斯大学的研究人员创造了一种可替代 GPU 的节省成本的算法,称为“次线性深度学习引擎”(sub-linear deep learning engine,简称 SLIDE),这种算法只需使用一般通用的中央处理器(CPU),而无需专业级的加速硬件。
“我们的测试表明,SLIDE 是第一个基于 CPU 实现的深度学习智能算法,它的性能可以超越那些依照产业规模的建议采用大型全连接架构使用 GPU 硬件加速来实现数据集的方法”, Anshumali Shrivastava 这样说。这位莱斯大学布朗工程学院的助理教授与研究生 Beidi Chen 和 Tharun Medini 一起开发了该 SLIDE 算法。
SLIDE 不需要依赖于 GPU,因为这种算法从根本上采用了一种完全不同的深度学习方法。深度神经网络训练技术标准的“反向传播”算法需要矩阵乘法,如此繁重的计算量正是适合 GPU 发挥性能的理想场所。然而,通过 SLIDE 算法,Shrivastava、Chen 和 Medini 把神经网络训练转变成为一个可以用哈希表来解决的搜索问题。
与反向传播训练技术相比,这种 SLIDE 算法可以从根本上减少大量的计算开销。Shrivastava 举例说,如今诸如亚马逊、谷歌以及其他公司使用 GPU 打造的基于云的深度学习服务的顶级平台,一般会使用 8 块“特斯拉 V100”芯片,其费用约为 10 万美元。
莱斯大学计算机科学研究生 Beidi Chen 和 Tharun Medini 参与开发了 SLIDE,这是一种无需依赖图形处理单元对深度神经网络进行训练的算法。(图片来源:Jeff Fitlow/ 莱斯大学)
“我们有一个在实验室运行的测试用例,它完全能承载一块 V100 芯片的工作负荷,也即是一个适用于 GPU 内存的,运行在大型全连接网络中有超过 1 亿个参数的计算量”,Shrivastava 说,“我们用最先进的谷歌的 TensorFlow 软件包来训练该算法,它只花了 3 个半小时就完成了训练。”
“我们随后证明,我们的新算法甚至可以在一小时内完成该训练,而且并不是运行在 GPU 上,而是运行在 44 核的 xeon-class CPU 上,” Shrivastava 说。
深度学习网络的灵感来自生物学,其核心特征是人工神经元,这些神经元是一小段可以学习并执行特定的任务计算机代码。一个深度学习网络可能包含数百万甚至数十亿这种人工神经元,只要通过对海量数据的学习,这些神经元共同工作就有可能学习并做出与人类水平相当的专家决策。例如,如果一个深度神经网络被训练来识别照片中的物体,当识别一张猫的照片或是识别一辆校车时,它将使用不同的神经元来进行学习。
“你不需要对每个用例的所有神经元都进行训练,” Medini 解释说,“我们是这样想的,‘如果我们只去挑选出相关的神经元,那这就变成了一个搜索问题。’ 因此,从算法上讲,我们的想法就是使用局部敏感哈希算法来避免矩阵乘法的复杂性。”
哈希算法是 20 世纪 90 年代为互联网搜索发明的一种数据索引方法。它使用数字方法将大量信息,例如整个网站所有网页或一本书的所有章节,编码为一串称为哈希散列的数字。哈希表就是记录这些哈希散列值并可以实现快速搜索的列表。
“在 TensorFlow 或 PyTorch 上实现我们的算法是毫无意义的,因为这些软件执行的第一件事就是不管三七二十一先把你正在做的事情转换成一个矩阵乘法问题,” Chen 说。“而这正是我们的算法想要避免的。所以我们是从零开始写我们自己的 C++ 代码的。”
Shrivastava 说,SLIDE 相对于反向传播的最大优势在于它采用了数据并行的方式。
“我的意思是,通过数据并行,如果我想要训练两个数据实例,比方说一个是一只猫的形象,另一个是公共汽车,他们可能会激活不同的神经元,该 SLIDE 算法可以对这两个实例分别独立地进行更新或训练,” 他说,“这就大大地提高了 CPU 并行性的利用率。”
“另一方面,与 GPU 相比,我们需要更大的存储空间,” 他说,“在主存储器中有一个缓存层次结构,如果你使用时不够小心,可能会遇到一个叫做内存颠簸(cache thrashing)的问题,那样就会发生大量缺页中断。”
Shrivastava 说,他的团队第一次使用 SLIDE 进行实验时,就发生了严重的内存颠簸,但他们的训练时间仍然与 GPU 的训练时间相当,甚至更快。于是,他、Chen 和 Medini 于 2019 年 3 月在 arXiv 上发布了初步实验结果,并将他们的代码上传到 GitHub。几周后,英特尔公司主动联系了他们。
“来自英特尔的合作伙伴注意到了我们实验中的缓存问题,” 他说,“他们告诉我们,他们可以与我们进行合作,让这个算法更快地完成训练,之后的事实证明他们是正确的。在他们的帮助下,我们的实验性能又提高了约 50%。”
Shrivastava 说,SLIDE 还远远未达到其最大潜力。
“我们只能算是初尝甜头而已,” 他说,“我们还可以做很多事情来对这个算法进行优化。例如,我们还没有使用矢量化,也没有在 CPU 中使用内置的加速器,比如 Intel Deep Learning Boost 技术。我们还有很多其他的技巧可以让这个算法变得更快。”
Shrivastava 说,SLIDE 的重要性在于,它证明了还有其他方式来实现深度学习。
“我们想要传达的整个信息是,‘我们不要被矩阵乘法和 GPU 内存这两个瓶颈所限制住,’ ” Chen 说,“我们的算法可能是第一个击败 GPU 的算法,但我希望它不是最后一个。这个领域需要新的想法,而这正是这次 MLSys 机器学习系统会议的重要意义所在。”
该算法的其他共同作者包括 James Farwell、Sameh Gobriel 和 Charlie Tai,他们都是来自英特尔实验室的成员。
该研究还得到了美国国家科学基金会(NSF-1652131, NSF-BIGDATA 1838177)、空军科研办公室(FA9550-18-1-0152)、亚马逊和海军研究办公室的支持。