机器学习是人工智能的分支,主要是对能通过经验自动改进的计算机算法的研究。
据国外媒体报道,美国IBM公司近日宣称,其旗下的POWER服务器的机器学习不单单比谷歌云所用的TensorFlow快,而且是快了整整46倍。
今年2月,谷歌公司的软件工程师安德烈亚斯·斯特本兹(Andreas Sterbenz)撰文描述了如何利用谷歌云机器学习和TensorFlow为大规模广告和推荐场景进行点击预测。他训练了一个用来预测“Criteo Labs点击日志”上广告点击次数的模型。该网站的内容超过1TB,包含了来自数百万条广告的特征值和点击反馈数据。
数据在经过60分钟的预处理之后进行实际学习,利用60台工作机器和29台参数机器进行训练。该模型的训练时间为70分钟,评估损失为0.1293。可以将这一数值视为结果准确性的粗略指标。
接下来,斯特本兹利用不同的建模技术来获得更好的结果并减少评估损失,这么做花了更多时间;最终模型利用了一个三期(three epochs,一个epoch指所有训练矢量更新权重的次数)深度神经网络,这又耗费了78个小时。
然而,IBM对此并不感兴趣,他们希望证明自己的训练框架在POWER9服务器和GPU上运行时,在基本初始训练上的表现能超过谷歌云平台的89台机器。
在瑞士苏黎世的IBM研究中心,研究人员托马斯·帕雷尔(Thomas Parnell)和塞莱斯廷·邓纳(Celestine Dünner)利用了来自Criteo Terabyte点击日志的相同源数据,以及42亿个训练样本,100万个特征——相同的机器学习模型和逻辑回归,但机器学习库不同。他们所用的是Snap机器学习库(Snap Machine Learning)。
帕雷尔和邓纳在4台Power System AC922服务器(包含8个POWER9 CPU和16个Nvidia Tesla V100 GPU)上用Snap机器学习库对模型进行训练,结果只用了91.5秒,比70分钟快了46倍。
他们还做了一张表,对Snap机器学习库、谷歌TensorFlow和另外三个学习库的结果进行了比较。
▲IBM研究人员做了一张表,对Snap机器学习库、谷歌TensorFlow和另外三个学习库的结果进行了比较
比TensorFlow快46倍是不可小视的超越,其中的原因何在?两位研究者表示,Snap机器学习库具有多层次并行的特点,能在集群中不同节点之间分配工作负载,从而利用加速器单元,并发掘各个计算单元多核并行性的优势。这一过程可以总结如下。
1、首先,数据分布到集群中的各个工作节点上。
2、节点上的数据在主CPU和加速的GPU(CPU和GPU并行运行)之间进行分配。
3、数据被发往GPU的多个内核,而GPU的工作负载采用多线程形式。
Snap机器学习库对分层算法进行嵌套,从而利用这三个层级上的并行性。两位IBM研究员并没有说TensorFlow没利用并行性,也没有在这方面对Snap机器学习库和TensorFlow进行比较,但他们确实表示:“我们采用了特殊的解决方案,目的是利用GPU的大规模并行架构,同时顾及数据在GPU内存中的局部性,以避免大量的数据传输开销。”
他们的文章称,用NVLink 2.0接口的AC922服务器比用PCIe接口连接Tesla GPU的至强(Xeon)服务器(至强黄金版6150 CPU @ 2.70GHz)要快。文章写道:“对于基于PCIe的设置,我们测到了11.8GB/秒的有效带宽,而对于基于NVLink的设置,我们测到的有效带宽是68.1GB/秒。”
训练数据在被传送到GPU之后,就在那里进行处理。NVLink系统发送数据块的速度(55毫秒)远快于PCIe系统(318毫秒)。IBM团队还表示:“在运用于稀疏数据结构时,我们对系统中用到的算法进行了一些新的优化。”
综上所述,Snap机器学习库能更充分地利用Nvidia GPU。在传输数据到GPU的过程中,通过NVLink要比通过x86服务器的PCIe链接更快。我们并不知道POWER9服务器的CPU速度与至强服务器的CPU相比如何;就目前所知,IBM还未公开发布任何POWER9和Xeon SP直接比较的结果。
目前我们也不能肯定Snap机器学习库比TensorFlow好多少,只有在相同硬件配置上运行之后,我们才能对二者进行比较。
无论如何,时间缩短46倍确实令人印象深刻。这样的表现也让IBM有了更多空间来推动POWER9服务器,使其作为加插Nvidia GPU,运行Snap机器学习库即进行机器学习的场所。
来源:新浪科技
领取专属 10元无门槛券
私享最新 技术干货