当前位置: 首页 > 科技观察

一行代码让sklearn计算提速一千倍

时间:2023-03-14 14:21:08 科技观察

1介绍大家好,我是费老师。scikit-learn作为一个经典的机器学习框架,自诞生至今已经发展了十余年,但其计算速度却广受用户诟病。.熟悉scikit-learn的朋友应该知道scikit-learn内置的一些基于joblib等库的计算加速功能作用有限,不能充分利用计算能力。今天要给大家介绍的知识,可以帮助我们在不改动原代码的情况下,将scikit-learn的计算效率提高几十倍甚至上千倍,走起!2使用sklearnex加速scikit-learn为了达到加速计算的效果,我们只需要安装sklearnex扩展库,它可以帮助我们在intel处理器的设备上获得计算效率的大幅提升。抱着谨慎的态度,我们可以在单独的conda虚拟环境中做实验。所有命令如下。我们顺便安装jupyterlab作为IDE:condacreate-nscikit-learn-intelex-demopython=3.8-chttps://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main-ycondaactivatescikit-learn-intelex-demopipinstallscikit-learnscikit-learn-intelexjupyterlab-ihttps://pypi.douban.com/simple/done实验环境准备好后,我们在jupyterlab中编写测试代码,看看加速效果如何效果是。使用方法非常简单。我们只需要在代码中导入scikit-learn相关功能模块之前运行如下代码即可:fromsklearneximportpatch_sklearn,unpatch_sklearnpatch_sklearn()成功开启加速模式后会打印如下信息:其他要做的就是继续稍后执行您的原始scikit-learn代码。我通常编写和开发开源项目。我只是在我的笔记本上测试了一下。以线性回归为例,在百万样本、数百特征的样本数据集上,开启加速后,使用unpatch_sklearn()强制加速后,仅需0.21秒即可完成训练集的训练模式被关闭(注意scikit-learn相关模块需要重新导入),训练时间立马上升到11.28秒,这意味着我们通过sklearnex获得了50多倍的计算速度!按照官方的说法,CPU越强大,性能提升比例就越高。下图是官方在IntelXeonPlatinum8275CL处理器下测试一系列算法后的性能提升结果,不仅可以提升训练速度,还可以提升模型推理和预测速度,甚至可以实现上千倍的性能提升一些场景:官方也提供了一些ipynb示例(https://github.com/intel/scikit-learn-intelex/tree/master/examples/notebooks),展示了包括K-means、DBSCAN、随机森林、逻辑回归、岭回归等,有兴趣的读者可以自行下载学习。