【最大降40%】CPU漏洞补丁对机器学习和深度学习性能影响实测

来源:Medium

作者:Mikel Bober-Irizar

编译:刘小芹

【新智元导读】上周爆出的英特尔CPU漏洞门受到很大关注,Linux内核针对Meltdown漏洞出了PIT补丁,但据报告该补丁对性能影响很大。那么它对机器学习任务的影响如何呢?本文作者对神经网络(TensorFlow&Keras)、Scikit-learn、XGBoost等进行了使用和不使用PTI补丁时的性能比较,发现该补丁对性能的影响非常依赖于任务——有些任务不受影响,有些任务的性能下降了40%。

就在上周,互联网爆出两个新的严重漏洞,分别是 Meltdown和Spectre,这两组漏洞几乎影响所有的主流CPU。这些漏洞都源于处理器的“推演执行”(speculative execution)的bug,它允许攻击者读取(并潜在地执行)其各自进程之外的内存位置,这意味着程序可以读取其他软件内存中的敏感数据。

为了解决这个问题,Linux内核合并了一个名为KAISER或PTI(页表隔离)的补丁,这个补丁有效地解决了Meltdown攻击。但是,这个补丁对性能造成了很大的影响,据报告CPU性能下降达到5%至35%(甚至一些综合benchmark性能下降超过50%)。

但是,PTI的性能问题在很大程度上取决于当前的任务,大幅度下降可能仅会出现在FSMark等综合benchmark中。因此,我们提出一个问题:在机器学习应用程序中,性能受到怎样的影响?

安装

为了比较使用和不使用PTI补丁的性能,我安装了一台新的安装了Intel microcode的Ubuntu 16.04机器,并将Ubuntu 16.04(4.10.0-42-generic)上自动安装的最新内核与最新的有PTI补丁的主线内核版本(4.15.0–041500rc6-generic)进行比较。我使用了Python 3.6(以及来自pip的额外软件包)的Anaconda来执行测试。

我用于测试的机组包括英特尔酷睿i7-5820K(Haswell-E,stock clocks)和64GB DDR4 @ 2400MHz。值得注意的是,AMD处理器没有启用PTI补丁,因为它们不受Meltdown攻击的影响——所以如果你使用AMD的话,性能不会受到任何影响。

结果

首先,所有的性能都出现了轻微的下降,但是卷积层模型的推断性能下降很大。特别是AlexNet,前向传播速度慢了大约5%,但反向传播速度几乎没变——训练性能受到的影响大约是推理的一半。

Keras的raw操作而言,全连接层和LSTM层的性能几乎没有受到影响,但卷积层的性能降了10%。

对于Alexnet和MNIST基准测试,我使用了TensorFlow教程模型,对于Keras,我使用了随机初始化模型和几个有问题的层,并测试了随机数据的推理速度。值得注意的是,这些基准测试完全在CPU上运行。

我在这里使用了Scikit-learn来衡量“经典”ML和数据科学算法的性能。从上图中可以看到,与神经网络相比,经典ML算法的性能下降更大,PCA和线性回归/逻辑回归受到的影响最严重。造成这么大的性能下降的原因可能是某些数学运算受到严重影响,我将在下文的NumPy benchmarks讨论这一点。

有意思的是,kNearestNeighbour完全不受PTI的影响,而且看起来在新内核上甚至表现更好。这可能只是在error的范围之内,但也有可能是其他一些内核的改进有助于提高速度。

我还从内存缓存的文件中提取了一个pandas.read_csv()的benchmark,目的是看看PTI对CSV的解析速度有多大的影响——在读取 Bosch Kaggle竞赛数据集的速度下降是6%。

所有scikit-learn benchmark也都在Bosch数据集上计算了——我发现通常对于ML benchmark表现较好,因为这个数据集具有规模大,标准化和格式良好的数据(虽然kNN和Kmeans是在一个子集上计算的,因为使用完整的数据需要的时间太长)。

这些benchmark可能是这里最综合的,测试的是一个单一的scipy操作的速度。但是,上图的结果显示,PTI的性能受到的影响是极端任务依赖性( task-dependent)的。我们可以看到,大多数操作只受到很小的影响,点积(dot product)和FFT对性能影响很小。

当PTI启用时,SVD,LU分解和QR分解都会大幅度影响性能,QR分解从190GFLOPS降低到110GFLOPS,降低了37%。这可能有助于解释PCA(主要依赖于SVD)和线性回归(主要依赖于QR分解)的性能下降。

这些 benchmark是使用英特尔自己的ibench软件包完成的,只使用了Anaconda而不是英特尔的python发行版。

XGBoost的结果有点意思。大多数情况下,使用较少的线程数时,无论使用慢的Exact方法还是快的直方图方法,PTI对XGBoost的性能影响都可以忽略不计。

但是,当使用的线程非常多时,CPU同时处理更多的column,使用PTI的处理速度就下降了。

这并不是XGBoost如何在大量内核上执行的一个完美展示(因为这是在12个逻辑内核上运行了40个线程),但是它表明PTI对CPU同时处理很多线程时的影响更大。不过,我没法访问任何可以修改内核的多内核数量的服务器,所以没法得到更深入的结果。

与scikit-learn一样,这些基准是在Bosch数据集上进行的。

结论

最主要的结论是,PTI对性能的影响非常依赖于任务——有些任务不受影响,有些任务的性能下降了40%。总体而言,我认为这种影响比我预期的要小,因为只有少数应用程序受到严重影响。

原文:https://medium.com/implodinggradients/meltdown-c24a9d5e254e

本文分享自微信公众号 - 新智元(AI_era)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-01-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏潇涧技术专栏

Head First PageRank

PageRank算法是谷歌曾经独步天下的“倚天剑”,该算法由Larry Page和Sergey Brin在斯坦福大学读研时发明的,论文点击下载: The Pag...

16820
来自专栏AI科技大本营的专栏

如何在浏览器上跑深度学习模型?并且一行JS代码都不用写

翻译 | 林椿眄 编辑 | 周翔 2017 年 8 月,华盛顿大学的陈天奇团队发布了 TVM,和 NNVM 一起组成深度学习到各种硬件的完整优化工具链,支持手机...

41150
来自专栏机器之心

深度 | PyTorch和TensorFlow哪家强:九项对比读懂各自长项短板

选自GitHub 作者:Awni Hannun 机器之心编译 参与:Panda 现在是各种机器学习框架群雄争霸的时代,各种各样的比较文章也层出不穷。近日,斯坦福...

35760
来自专栏DHUtoBUAA

arXiv 上传文章过程

  arXiv属于预印本服务的一种,是指科研工作者的研究成果还未在正式出版物上发表,而出于和同行交流目的自愿先在学术会议上或通过互联网发布的科研论文、科技报告等...

1.7K60
来自专栏大数据文摘

手把手 | 如何在你的iPhone上建立第一个机器学习模型(Apple最新CoreML框架入门)

44750
来自专栏机器之心

教程 | 从硬件配置、软件安装到基准测试,1700美元深度学习机器构建指南

选自Medium 作者:Slav 机器之心编译 参与:Quantum Cheese、Lj Linjing、蒋思源 在用了十年的 MacBook Airs 和云...

34350
来自专栏大数据文摘

手把手教你搭建自己的深度学习机器

80440
来自专栏人工智能头条

DMLC深盟分布式深度机器学习开源平台解析

25860
来自专栏PPV课数据科学社区

PyTorch和TensorFlow哪家强:九项对比读懂各自长项短板

近日,斯坦福大学计算机科学系博士生 Awni Hannun 也发表了一篇文章,谈了自己对 PyTorch 和 TensorFlow 这两大明星框架的心得体验,并...

50460
来自专栏嵌入式程序猿

温故而知新

做嵌入式开发控制系统,应该经常会用到PID(比例,积分,微分,proportional,integral,derivative)算法,PID 控制器以各种形...

443130

扫码关注云+社区

领取腾讯云代金券