联系我们

CPU 比 GPU 训练神经网络快十几倍,别用矩阵运算了

2021-04-10

在深度学习与神经网络领域,研究人员通常离不开 GPU。得益于 GPU 极高内存带宽和较多核心数,研究人员可以更快地获得模型训练的结果。与此同时,CPU 受限于自身较少的核心数,计算运行需要较长的时间,因而不适用于深度学习模型以及神经网络的训练。

但近日,莱斯大学、蚂蚁集团和英特尔等机构的研究者发表了一篇论文,表明了在消费级 CPU 上运行的 AI 软件,其训练深度神经网络的速度是 GPU 15 倍。这篇论文已被 MLSys 2021 会议接收。

file

论文通讯作者、莱斯大学布朗工程学院的计算机科学助理教授 Anshumali Shrivastava 表示:「训练成本是 AI 发展的主要瓶颈,一些公司每周就要花费数百万美元来训练和微调 AI 工作负载。」他们的这项研究旨在解决 AI 发展中的训练成本瓶颈。

file

Anshumali Shrivastava

 

研究动机及进展

深度神经网络(DNN)是一种强大的人工智能,在某些任务上超越了人类。DNN 训练通常是一系列的矩阵乘法运算,是 GPU 理想的工作负载,速度大约是 CPU 3 倍。

如今,整个行业都专注于改进并实现更快的矩阵乘法运算。研究人员也都在寻找专门的硬件和架构来推动矩阵乘法,他们甚至在讨论用于特定深度学习的专用硬件 - 软件堆栈。

Shrivastava 领导的实验室在 2019 年做到了这一点,将 DNN 训练转换为可以用哈希表解决的搜索问题。他们设计的亚线性深度学习引擎(sub-linear deep learning engine, SLIDE)是专门为运行在消费级 CPU 上而设计的Shrivastava 和英特尔的合作伙伴在 MLSys 2020 会议上就公布了该技术。他们表示,该技术可以超越基于 GPU 的训练。

MLSys 2021 大会上,研究者探讨了在现代 CPU 中,使用矢量化和内存优化加速器是否可以提高 SLIDE 的性能。

论文一作、莱斯大学 ML 博士生 Shabnam Daghaghi 表示:「基于哈希表的加速已经超越了 GPU。我们利用这些创新进一步推动 SLIDE,结果表明即使不专注于矩阵运算,也可以利用 CPU 的能力,并且训练 AI 模型的速度是性能最佳专用 GPU 4 15 倍。」

file

Shabnam Daghaghi

此外,论文二作、莱斯大学计算机科学与数学本科生 Nicholas Meisburger 认为,CPU 仍然是计算领域最普遍的硬件,其对 AI 的贡献无可估量。

 

技术细节

在本论文中,该研究重新了解了在两个现代 Intel CPU 上的 SLIDE 系统,了解 CPU 在训练大型深度学习模型方面的真正潜力。该研究允许 SLIDE 利用现代 CPU 中的矢量化、量化和一些内存优化。与未优化的 SLIDE 相比,在相同的硬件上,该研究的优化工作带来了 2-7 倍的训练时间加速。

SLIDE 的工作流程包括:初始化、前向-反向传播和哈希表更新。下图 1 为前向-反向传播工作流程图:

file

前向和后向传播示意图。

该研究专注于大规模评估,其中所需的神经网络拥有数亿个参数。在两台 Intel  CPU 上比较了优化的 SLIDE,分别是 Cooper Laker 服务器(CPX)和 Cascade Lake 服务器(CLX),并与以下以下 5 个基准进行了对比:

1)V100 GPU 上的 full-softmax tensorflow 实现;
2) CPX 上的 full-softmax tensorflow 实现; 
3)CLX 上的 full-softmax tensorflow 实现;
4)CPX 上的 Naive SLIDE
5)CLX 上的 Naive SLIDE

其中,CPX 是英特尔第三代至强可扩展处理器,支持基于 AVX512 BF16 指令。CLX 版本更老,不支持 BF16 指令。

研究者在三个真实的公共数据集上评估了框架和其他基准。Amazon670K 是用于推荐系统的 Kaggle 数据集;WikiLSH-325K 数据集和 Text8 NLP 数据集。详细统计数据见下表 1

file

对于 Amazon-670K WikiLSH-325K,研究者使用了一个标准的全连接神经网络,隐藏层大小为 128,其中输入和输出都是多个热编码向量。对于 Text8,该研究使用标准 word2vec 语言模型,隐藏层大小为 200,其中输入和输出分别是一个热编码向量和多个热编码向量。

下图 6 第一行代表所有数据集的时间收敛图,结果显示了该研究提出的优化 SLIDE CPX CLX(深绿色和浅绿色)上训练时间优于其他基准 。图 6 的底部行显示了所有数据集的柱状图。

file

下表 2 给出了三个数据集上的详细数值结果:

file

下表 3 中,研究者展示了 BF16 指令对每个 epoch 平均训练时间的影响。结果表明,在 Amazon-670K WikiLSH325K 上,激活和权重中使用 BF16 指令分别将性能提升了 1.28 倍和 1.39 倍。但是,在 Text8 上使用 BF16 没有产生影响。

file

下表 4 展示了有无 AVX-512 时,优化 SLIDE 在三个数据集上的每个 epoch 平均训练时间对比。结果表明,AVX-512 的矢量化将平均训练时间减少了 1.2 倍。

file

 (转载自机器之心)

诚聘英才
友好链接
业务咨询及参观访问:0755-86576085    0755-86576086    地址:深圳市南山区笃学路9号
国家超级计算深圳中心(深圳云计算中心)  ©2014-2020  粤ICP备10220126号