(数据科学学习手札138)使用sklearnex大幅加速scikit-learn运算
本文示例代码已上传至我的
Github
仓库https://github.com/CNFeffery/DataScienceStudyNotes
1 简介
大家好我是费老师,scikit-learn
作为经典的机器学习框架,从诞生至今已发展了十余年,但其运算速度一直广受用户的诟病。熟悉scikit-learn
的朋友应该清楚,scikit-learn
中自带的一些基于joblib
等库的运算加速功能效果有限,并不能很充分地利用算力。
而今天我要给大家介绍的知识,可以帮助我们在不改变原有代码的基础上,获得数十倍甚至上千倍的scikit-learn
运算效率提升,let's go!
2 利用sklearnex加速scikit-learn
为了达到加速运算的效果,我们只需要额外安装sklearnex
这个拓展库,就可以帮助我们在拥有intel处理器的设备上,获得大幅度的运算效率提升。
抱着谨慎尝鲜的态度,我们可以在单独的conda
虚拟环境中做实验,全部命令如下,我们顺便安装jupyterlab
作为IDE:
conda create -n scikit-learn-intelex-demo python=3.8 -c https://mirrors.sjtug.sjtu.edu.cn/anaconda/pkgs/main -y
conda activate scikit-learn-intelex-demo
pip install scikit-learn scikit-learn-intelex jupyterlab -i https://pypi.douban.com/simple/
完成实验环境的准备后,我们在jupyter lab
中编写测试用代码来看看加速效果如何,使用方式很简单,我们只需要在代码中导入scikit-learn
相关功能模块之前,运行下列代码即可:
from sklearnex import patch_sklearn, unpatch_sklearn
patch_sklearn()
成功开启加速模式后会打印以下信息:
其他要做的仅仅是将你原本的scikit-learn
代码在后面继续执行即可,我在自己平时写作以及开发开源项目的老款拯救者笔记本上简单测试了一下。
以线性回归为例,在百万级别样本量以及上百个特征的示例数据集上,开启加速后仅耗时0.21秒就完成对训练集的训练,而使用unpatch_sklearn()
强制关闭加速模式后(注意scikit-learn
相关模块需要重新导入),训练耗时随即上升到11.28秒,意味着通过sklearnex
我们获得了50多倍的运算速度提升!
而按照官方的说法,越强劲的CPU可以获得的性能提升比例也会更高,下图是官方在Intel Xeon Platinum 8275CL
处理器下测试了一系列算法后得出的性能提升结果,不仅可以提升训练速度,还可以提升模型推理预测速度,在某些场景下甚至达到数千倍的性能提升:
官方也提供了一些ipynb
示例(https://github.com/intel/scikit-learn-intelex/tree/master/examples/notebooks
),展示了包含K-means
、DBSCAN
、随机森林
、逻辑回归
、岭回归
等多种常用算法示例,感兴趣的读者朋友们可以自行下载学习。
以上就是本文的全部内容,欢迎在评论区与我进行讨论~
最新文章
- memcache入门笔记
- dotNet下的一套解决方案
- 《CODE》读后笔记——第1~13章
- [vijos P1035] 贪婪的送礼者
- 有哪些 PHP 调试技巧?
- VS2005 VS2008 Manifest 配置问题总结
- hdu 4782 Beautiful Soupz
- html input密码显示为“*”
- Chapter 4. Working with Key/Value Pairs
- Jmeter新建用例图示
- adSage :2013年教育行业搜索引擎投放分析报告
- Selenium自动化 Xpath-元素定位
- idea部署Maven入门(一)——环境变量的配置和下载
- 案例情景--在一次Oracle 数据库导出时 EXP-00008;ORA-00904:EXP-00000: oracle不同版本导入导出规则
- 解决Android 7.0 App内切换语言不生效的问题
- 免费在线直播课,送给所有IT项目经理
- Swift 使用 LLDB 调试命令
- Flask系列(八)flask-session组件
- java.lang.IllegalArgumentException:Document base ……does not exist or is not a readable directory错误的解决方案
- git clone 提示输入git@xxx的密码
热门文章
- linux中查看端口号使用情况
- Spring Boot-切换嵌入式Servlet容器
- Web安全中的常见Session攻击(预测+劫持+固定)
- DevExpress控件与VS和.NET各个版本的支持情况
- 《手把手教你》系列基础篇(九十三)-java+ selenium自动化测试-框架设计基础-POM设计模式实现-上篇(详解教程)
- Vue3 setup详解
- 攻防世界-MISC:base64stego
- 双列集合Map接口 &; Collections工具类
- [洛谷] P1065 [NOIP2006 提高组] 作业调度方案
- R树判断点在多边形内-Java版本