如何像conda Numpy一样加速scikit学习


最近,关于用conda输入的Numpy的速度要比使用pip输入的Numpy快一些(尽管原始文章不是最近的),对此已有一些讨论。在本文中,我将说明如果您设计安装程序,scikit-learn也可以更快地工作。

简介

文章," Anaconda的NumPy看起来很快,所以我尝试了。"
https://tech.morikatron.ai/entry/2020/03/27/100000

我最近在Twitter时间轴上见过

多次(尽管原始文章写于2008年3月)。

据说conda安装的Numpy比pip安装的Numpy快。

为什么这么快?

在以上文章中," Intel Core i7-9750H"用于CPU。

该CPU的规格如下。
https://www.intel.co.jp/content/www/jp/ja/products/processors/core/i7-processors/i7-9750h.html

在本规范的"指令集扩展"中描述了" Intel?SSE4.1,Intel?SSE4.2,Intel?AVX2"是一种味mis。

AVX2安装在指令集扩展中。

此外,AVX-512还安装在相对较新的高性能Intel CPU中。

对于AVX,详细页面如下,但它是流式SIMD扩展指令的后继页面。

"关键是它是一个功能,可以用一条指令执行多项操作。"

https://ja.wikipedia.org/wiki/流式SIMD扩展

Intel MKL(数学内核库)是Intel CPU的一项功能,通过使用该AVX2或更高版本的AVX2可以加快数学运算。
https://www.xlsoft.com/jp/products/intel/perflib/mkl/index.html

通过使用AVX2或AVX-512执行各种计算,它可以加快速度。

如果CPU与AVX兼容,则将使用此Intel MKL计算安装了

conda的Numpy,因此处理速度会更快。

英特尔的努力

在GPU时代,英特尔也在2017年左右努力工作,
我们已经发布了Numpy和sckit-learn库,它们支持Intel CPU(例如Intel MKL)上的加速。

pip install intel-scikit-learn
https://pypi.org/project/intel-scikit-learn/

pip install intel-numpy
https://pypi.org/project/intel-numpy/

通过这些,即使从pip安装,也可以从一开始就使用高速版本。

英特尔很早以前就发布了这样的版本,但是
该版本尚未赶上原始的Numpy和sklearn,并且尚未维护,因此
我们不建议使用这些。

加速scikit学习

我介绍的第一篇文章" Anaconda的NumPy看起来很快,所以我尝试了。"
https://tech.morikatron.ai/entry/2020/03/27/100000

即使在

的句子中

其他各种模块都采用了英特尔MKL。大!
NumPy
NumExpr
SciPy
Scikit-Learn
Tensorflow…在Windows中,它是一个单独的软件包,称为tensorflow-mkl
PyTorch…似乎还通过pip

使用了英特尔MKL

中可以看到,使用conda安装时,未经许可即安装了使用Intel MKL的快速版本。

但是,如果要使其最快地工作,请按照scikit-learn安装页面上的说明进行操作。
https://scikit-learn.org/stable/install.html

在此页面上
" scikit-learn的第三方分发"
写在

"英特尔conda频道"
英特尔conda频道
英特尔维护一个专用的conda通道,该通道提供了scikit-learn:

$ conda install -c intel scikit-learn
此版本的scikit-learn带有一些通用估计器的替代求解器,这些求解器来自DAAL C库,并针对多核Intel CPU进行了优化。

请注意,默认情况下未启用这些求解器,请参阅daal4py文档以获取更多详细信息。

通过自动连续集成运行完整的scikit-learn测试套件,检查与标准scikit-learn解算器的兼容性,如https://github.com/IntelPython/daal4py上所述。

如果将sckit-learn放在

的Intel conda通道上,则不仅是Intel MKL,而且是
某些scikit-learn处理已被Intel多核优化功能处理所取代。

它是

,因此,如果要使用最快版本的scikit-learn,请使用

$ conda安装scikit-learn

代替

$ conda install -c intel scikit-learn

我们建议使用

进行安装(在支持Intel AVX2或更高版本的CPU环境中)。

终于

AWS,深度学习图像和Azure DSVM(数据科学虚拟机)基于conda进行管理。

并且scikit-learn与conda一起安装。

我不知道它们是否是英特尔优化版本(如果有人知道,请告诉我)。

如果使用conda重新创建虚拟环境,则可以安装上述高速版本???
(您需要检查IaaS机器的CPU,以查看其是否支持AVX2。如果它是简易机器,则可能仅支持AVX)。

如上所述,这是一种加速Ccikit学习的方法,例如Conda Numpy。
(我在CPU方面不是很强壮,所以如果您输入有误,请发表评论)

备注

[信息传输]
最近,我在Twitter上发布了有关AI,业务和管理的信息,例如我发现有趣的文章和网站,以及对我阅读的书的印象。

小川裕太郎@ISID_AI_team
https://twitter.com/ISID_AI_team

我看到的信息既有趣又重要!我正在分享我的想法。

[其他]我领导的AI技术部开发团队正在寻找成员。如果您有兴趣,请单击此处

[免责声明]本文内容仅是作者的观点/传播方式,而不是作者所属公司的正式意见。