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

简介: 上周爆出的英特尔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的话,性能不会受到任何影响。

结果

df58c1d12c1b77fc20b824e59d77c7b80d98582a

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

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

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

68e2bb7a6fbacfccb2598851840a490c97bd67f6

我在这里使用了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是在一个子集上计算的,因为使用完整的数据需要的时间太长)。

d306a073fcc27d04658e945236db34ddf9b356bd

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

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

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

41bb37cedcd86ccc695332a85f0c23a84d747df7

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

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

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

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


原文发布时间为:2018-01-07

本文作者:Mikel Bober-Irizar  

本文来自云栖社区合作伙伴新智元,了解相关信息可以关注“AI_era”微信公众号

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

相关文章
|
3天前
|
机器学习/深度学习 算法 算法框架/工具
Python深度学习基于Tensorflow(5)机器学习基础
Python深度学习基于Tensorflow(5)机器学习基础
14 2
|
9天前
|
机器学习/深度学习 数据采集 搜索推荐
机器学习中的特征工程:提升模型性能的关键步骤
【5月更文挑战第3天】特征工程是提升机器学习模型性能的关键,涉及从原始数据中提取、选择和创造特征。它能提高模型预测准确率,简化模型复杂度,增强泛化能力。常用技术包括特征选择(Filter、Wrapper、Embedded方法)、特征构造(组合、多项式、文本特征提取)和特征变换(标准化、归一化、离散化)。通过优化特征工程,可找到最佳特征组合,提升模型性能。
|
9天前
|
机器学习/深度学习 人工智能 算法
【AI 初识】讨论深度学习和机器学习之间的区别
【5月更文挑战第3天】【AI 初识】讨论深度学习和机器学习之间的区别
|
12天前
|
机器学习/深度学习 人工智能 自然语言处理
深度学习在图像识别中的应用与挑战探索机器学习中的自然语言处理技术
【4月更文挑战第30天】 随着人工智能技术的飞速发展,深度学习已经成为计算机视觉领域的核心动力。本文将探讨深度学习在图像识别任务中的关键技术、应用实例以及面临的主要挑战。我们将重点讨论卷积神经网络(CNN)的架构优化、数据增强技术以及迁移学习的策略,并通过具体案例分析其在医疗影像、自动驾驶和面部识别等领域的应用成效。同时,我们也将指出当前模型泛化能力不足、对抗性攻击以及算力资源需求等挑战,并提出潜在的解决方向。 【4月更文挑战第30天】 在人工智能领域,自然语言处理(NLP)是赋予机器理解和响应人类语言能力的关键技术。本文将深入探讨NLP的发展历程、核心技术及其在不同领域的应用案例。我们将从
|
12天前
|
机器学习/深度学习 传感器 自动驾驶
【Python机器学习专栏】深度学习在自动驾驶中的应用
【4月更文挑战第30天】本文探讨了深度学习在自动驾驶汽车中的应用及其对技术发展的推动。深度学习通过模拟神经网络处理数据,用于环境感知、决策规划和控制执行。在环境感知中,深度学习识别图像和雷达数据;在决策规划上,学习人类驾驶行为;在控制执行上,实现精确的车辆控制。尽管面临数据需求、可解释性和实时性挑战,但通过数据增强、规则集成和硬件加速等方法,深度学习将持续优化自动驾驶性能,并在安全性和可解释性上取得进步。
|
12天前
|
机器学习/深度学习 自然语言处理 PyTorch
【Python 机器学习专栏】自然语言处理中的深度学习应用
【4月更文挑战第30天】本文探讨了深度学习在自然语言处理(NLP)中的应用,包括文本分类、情感分析和机器翻译等任务。深度学习的优势在于自动特征学习、强大的表达能力和处理大规模数据的能力。常见模型如RNN、LSTM、GRU、CNN和注意力机制在NLP中发挥作用。Python的TensorFlow、PyTorch、NLTK和SpaCy等工具支持NLP研究。然而,数据稀缺、模型解释性和计算资源需求高等挑战仍待解决。随着技术进步,未来深度学习将进一步推动NLP发展,实现更智能的语言交互。
|
12天前
|
机器学习/深度学习 算法 算法框架/工具
【Python机器学习专栏】深度学习中的正则化与优化技术
【4月更文挑战第30天】本文探讨了深度学习中的正则化和优化技术,以提升模型的泛化能力和训练效率。正则化包括L1和L2正则化以及Dropout,防止过拟合。优化技术涵盖梯度下降法、动量法和Adam优化器,加速模型收敛。Python示例展示了如何在Keras中应用这些技术,如L2正则化、Dropout及Adam优化器。
|
12天前
|
机器学习/深度学习 PyTorch 算法框架/工具
【Python机器学习专栏】PyTorch在深度学习中的应用
【4月更文挑战第30天】PyTorch是流行的开源深度学习框架,基于动态计算图,易于使用且灵活。它支持张量操作、自动求导、优化器和神经网络模块,适合快速实验和模型训练。PyTorch的优势在于易用性、灵活性、社区支持和高性能(利用GPU加速)。通过Python示例展示了如何构建和训练神经网络。作为一个强大且不断发展的工具,PyTorch适用于各种深度学习任务。
|
16天前
|
Linux
Linux rsyslog占用内存CPU过高解决办法
该文档描述了`rsyslog`占用内存过高的问题及其解决方案。
40 4
|
1月前
|
移动开发 运维 监控
掌握Linux运维利器:查看CPU和内存占用,轻松解决性能问题!
掌握Linux运维利器:查看CPU和内存占用,轻松解决性能问题!