机器学习模型太慢?来看看英特尔(R) 扩展加速 ⛵

(数据科学学习手札138)使用sklearnex大幅加速scikit-learn运算 大家好我是费老师,作为经典的机器学习框架,从诞生至今已发展了十余年,但其运算速度一直广受用户的诟病。熟悉的朋友应该清楚,中自带的一些基于等库的运算加速功能效果有限,并不能很充分地利用算力。而今天我要给大家介绍的知识,可以帮助我们在不改变原有代码的基础上,获得数十倍甚至上千倍的运算效率提升,let’s go!为了达到加速运算的效果,我们只需要额外安装这个拓展库,就可以帮助我们在拥有intel处理器的设备上,获得大幅度的运算效率提升。抱着谨慎尝鲜的态度,我们可以在单独的虚拟环境中做实验,全部命令如下,我们顺便安 阅读详情

💡 作者:韩信子@ShowMeAI
📘 机器学习实战系列:https://www.showmeai.tech/tutorials/41
📘 本文地址:https://www.showmeai.tech/article-detail/295
📢 声明:版权所有,转载请联系平台与作者并注明出处
📢 收藏ShowMeAI查看更多精彩内容

我们在应用机器学习模型时,除了最终效果,也非常关注它们的性能。而机器学习模型的性能,不仅仅取决于我们的应用方式(特征多少、模型复杂度),也和硬件息息相关。

在本篇内容中,ShowMeAI 要给大家介绍到的是 Intel 针对 Scikit-Learn 机器学习工具库做的加速不定,可以非常大程度加速我们的模型训练与预测速度。

在我们的机器学习应用案例中,使用intel拓展加速的方式,仅仅花费原始建模方式1/5的时间,可以完成一样的任务达到一致的效果。

💡 Scikit-Learn (SKlearn) 机器学习工具库

Scikit-Learn (Sklearn) 是 Python 中最有用和最强大的机器学习库。 它通过 Python 中的接口为机器学习和统计建模提供了一系列有效工具,包括分类、回归、聚类和降维。

SKLearn 的快速使用方法也推荐大家查看[ShowMeAI](https://www.showmeai.tech/)的文章和速查手册:

💡 面向 Scikit-Learn 的英特尔扩展

Scikit-Learn是一个大而全的工具库,但它的性能并不总是最佳的,有时候一些 ML 算法可能需要数小时才能运行,时间成本很高。

面向 Scikit-Learn 的英特尔扩展(Intel® Extension for Scikit-learn)只需在大家熟悉的建模方法基础上,添加几行代码,就能显着提升性能,而且它也是开源的。

📌 scikit-learn-intelex 提速效果

通过 📘 scikit-learn-intelex 优化算法运行方式,可以获得 1-3 个数量级的效率改进,最终取决于使用到的数据集和算法。

  • Intel Extension for Scikit-Learn 提供了许多 Scikit-Learn 算法(下表)的优化实现,这些算法与原始版本一致,有一样的最终结果。
  • 即使大家使用到了当前拓展不支持的算法或参数,工具包也会自动退回到原始 Scikit-Learn,保证大家无缝衔接,大部分代码可以维持原来的形式,无需重写代码。

应用英特尔® Extension for Scikit-learn 可以对上述 Scikit-Learn 算法效率优化,具体的可以参考官网介绍。

💡 工具库安装&配置

Intel Extension for Scikit-Learn 支持 x86 架构上的 Linux、Windows 和 Mac 系统。 它可以使用 PyPI 或 Anaconda Cloud 下载:

📌 从 PyPI 安装

只需在命令行运行 pip 命令进行安装:

pip install scikit-learn-intelex 

📌 从 Anaconda 安装

◉ Conda-Forge方式:

сonda install scikit-learn-intelex -c conda-forge 

◉ 英特尔渠道:

conda install scikit-learn-intelex -c intel 

◉ 默认方式:

conda install scikit-learn-intelex 

📌 从容器安装

请注意,正确访问链接需要 DockerHub 帐户。

大家可以通过以下命令,将最新的英特尔® Scikit-Learn 扩展安装为 Docker 容器:

docker pull intel/intel-optimized-ml:scikit-learn 

💡 英特尔® Scikit-Learn 扩展使用方法:

📌 打补丁 patch_sklearn

◉ patch是一种保留 Scikit-Learn 库存版本以供使用的方法,大家可以在代码开头添加它( patch_sklearn()函数调用),如下所示:

############### 在此处插入补丁########################## 
from sklearnex import patch_sklearn
patch_sklearn()
################################################################## 

◉ 这个补丁之后的所有import语句导入的来自sklearn的算法,都会优先导入Scikit-Learn优化版本

# Importing sklearn optimised version of LogisticRegression
from sklearn.linear_model import LogisticRegression

# Creating an object for model and fitting it on training data set
logmodel =  LogisticRegression()
logmodel.fit(X_train_sm, y_train_sm) 
  
# Predicting the Target variable                 
predicted = logmodel.predict(X_test)# Classification Report
report = metrics.classification_report(y_test, predicted)

🕯️ 注意:导入顺序非常重要,请大家一定记得在导入Scikit-Learn工具库之前打补丁!

如果大家不想使用补丁,可以随时通过sklearnex.unpatch_sklearn()取消intel的补丁。

📌 其他替代方案

大家有很多替代方案,同样可以启用英特尔® Extension for Scikit-Learn优化:

◉ 在命令行直接使用拓展运行原始 Scikit-Learn 应用程序代码获取加速:

python -m sklearnex my_application.py 

◉ 指定算法导入加速:

# 指定某个算法加速
from sklearnex import patch_sklearn
patch_sklearn("SVC")

# 指定若干个算法加速
patch_sklearn(["SVC", "PCA"])

# 撤销对于算法的加速补丁
from sklearnex import unpatch_sklearn 
unpatch_sklearn("SVC")

📌 查看优化算法列表

# 可以直接查看可加速算法列表
from sklearnex import get_patch_names
get_patch_names()

>>
['pca','kmeans','dbscan', 'distances','linear','ridge','elasticnet','lasso',
 'logistic','log_reg','knn_classifier','nearest_neighbors',
'knn_regressor', 'random_forest_classifier','random_forest_regressor',
 'train_test_split', 'fin_check','roc_auc_score', 'tsne', 'logisticregression',
 'kneighborsclassifier', 'nearestneighbors','kneighborsregressor',
 'randomrorestclassifier', 'randomforestregressor','svr', 'svc', 'nusvr',
 'nusvc','set_config', 'get_config','config_context']

📌 全局补丁

如果大家想使用全局补丁来优化所有 Scikit-Learn 应用程序,无需任何额外操作,只需要在命令行运行:

python sklearnex.glob patch_sklearn 

💡 案例

我们用一个案例来说明一下,使用英特尔® Extension for Scikit-Learn,相比原始版本,有多大程度的提升,这里使用到的业务场景是信用卡欺诈识别场景。

数据可以在 🏆 Kaggle场景数据 下载,也可以在ShowMeAI 的百度网盘地址直接下载。

🏆 实战数据集下载(百度网盘):公众号『ShowMeAI研究中心』回复『实战』,或者点击 这里 获取本文 [8] 面向 Scikit-Learn 的英特尔加速扩展补丁 『creditcard 信用卡欺诈场景数据集』

⭐ ShowMeAI官方GitHub:https://github.com/ShowMeAI-Hub

📌 取消补丁的原始版本

因为我们的电脑上进行了配置,intel优化的算法会全局生效,为了对比原始版本的sklearn速度,我们这里使用unpatch_sklearn()函数取消补丁,整个逻辑回归模型训练与测试花费了 35.5 秒。

################ Insert Patch here ############################
from sklearnex import unpatch_sklearn
unpatch_sklearn()
##########################################################
# 导入
from sklearn.linear_model import LogisticRegression

# 开始时间
start_time = time.time()

# 初始化模型并你和数据集
logmodel = LogisticRegression()
logmodel.fit(X_train_sm, y_train_sm)   

# 测试集预估                 
predicted = logmodel.predict(X_test)
patched_time = time.time() - start_time
print("Time to calculate \033[1m logmodel.predict in Unpatched scikit-learn {:4.1f}\033[0m seconds".format(patched_time))

# 效果评估
report = metrics.classification_report(y_test, predicted)
print(f"Classification report for Logistic Regression with SMOTE:\n{report}\n")

运行结果截图如下所示:

📌 添加补丁的加速版本

下面是我们测试Intel优化版Logistic Regression算法, 代码使用patch_sklearn()添加补丁,最后 执行时间 7.1秒,可以看到,只花费了原始版本20%的时间,却取得了完全一样的效果!

💡 总结

本文介绍了英特尔针对Scikit-Learn的加速扩展,它的一些特点包括:

  • 优化常见 ML 算法的性能
  • 减少 ML 训练和推理时间
  • 提供无缝体验(只需添加两行代码即可启用加速)

参考资料

tensorflow 多个模型测试阶段速度越来越慢问题的解决方法 0. 写作目的 好记性不如烂笔头。 1. 问题描述 tensorflow中多个模型在测试阶段,出现测试速度越来越慢的情况,通过查阅资料发现,由于tensorflow的图是静态图,但是如果直接加在不同的图(即不同的模型),应该都会存在内存中,因此造成了测试速度越来越慢,甚至导致机器卡顿(博主在测试100个模型时,一般测试20个模型左右出现卡顿),因此有必要探究更快的测试速度方法。 2. 方法... 阅读详情

相关推荐

如何在GPU上运行pandas和sklearn?

当涉及大量数据时,Pandas 可以有效地处理数据。但是它使用CPU 进行计算操作。该过程可以通过并行处理加快,但处理大量数据仍然效率不高。

y1282037271的博客 2079

速度杠杠的,部署机器学习模型的这7个要点要谨记

在模型部署时,模型的性能和耗时都非常重要。但是我们在构建模型时,往往没有考虑模型的预测速度。虽然性能优化会损害预测准确性,但更简单的模型通常运行得更快,也不容易过拟合。预测延迟被测量为进行预测所需的经过时间。延迟通常被视为一个分布,而运维工程师通常关注此分布的给定百分位数的延迟,如50%或99%情况下的耗时。

m0_59596937的博客 786

释放计算潜力:SKlearn模型并行训练指南

然而,通过一些技巧和工具,我们仍然可以在sklearn中实现模型的并行训练。本文详细介绍了使用sklearn进行模型并行训练的方法,并提供了实际的代码示例。随着数据量的不断增长和计算资源的日益丰富,掌握并行训练技能将成为数据科学家和机器学习工程师的重要竞争力。虽然sklearn本身并不直接支持并行训练,但通过Joblib、Dask和Spark等工具,我们可以实现sklearn模型的并行训练。Joblib是一个用于提供轻量级并行化的Python库,它可以用来并行化sklearn中的一些算法。

2401_85760095的博客 1229

keras里predict函数预测速度慢的优化方法

需求分析:在keras模型中,使用predict函数对1.9kw个样本进行预测,但是速度较慢 (1)tensorflow版本: import tensorflow as tf from tensorflow import keras print(tf.__version__) 2.0.0 (2)导入模型及数据: model = keras.models.load_model('../../CLDNN/save_model/**') test_input = np.array(st_f[0:0+10000

code12ab的博客 3078

加速Scikit-Learn参数学习速度的方法

在使用Scikit-Learn进行参数学习之前,对数据进行特征缩放是一种常见的预处理步骤。在某些情况下,使用一个更高效的优化算法可以显著加快参数学习的速度。例如,如果你的数据集非常大,可以尝试使用SGD算法,它对大规模数据集的处理更高效。通过使用更高效的优化算法、特征缩放、降低数据维度和并行化计算,可以将Scikit-Learn参数学习的速度提高5倍。Scikit-Learn中的一些算法支持并行化计算,可以利用多个CPU核心同时进行计算,从而加速参数学习过程。参数来指定并行计算的数量。

FdmPatch的博客 487

keil5编程前的工程文件配置,芯片型号支持包配置,用户文件配置,启动文件配置和库函数配置-江科大stm32学习 第一天

1.start文件夹中头文件需要配置路径path,另外user和library也需要,都是同样的操作。如图,在option界面c/c++中,在倒数第二空行的三个点处添加。2.需要设置一个宏,作用是使主函数头文件包含标准库函数,操作如图:复制头文件中8296行的字符串,在option界面的c/c++中第一行define粘贴这个字符串即可。一、首先,下载芯片支持包,选择你自己的器件型号,不懂的可以看我这篇选器件的方法(默认已经注册好用户)点击编译按钮,编译成功后即可在user文件夹里添加main.c正常使用。

weixin_50682964的博客 1952

加快tensorflow模型预测速度

1.用更高性能的GPU服务器(最砸钱最省力的结果) 2.用flask或tensorflowserving做模型线上部署,可以省却读model的时间

NJU phd 在读。 2998

ATM火控电容改造实战:提升速凌无刷电机动力与系统稳定性

在嵌入式系统与电机驱动领域,电源完整性是保障电路稳定运行的核心基础。其核心原理在于通过合理的电容网络设计,为负载提供瞬时大电流并滤除高频噪声,从而维持电压稳定。这项技术的核心价值在于能显著提升系统的动态响应能力与可靠性,避免因电压跌落导致微控制器复位或功率器件过应力。典型的应用场景包括无人机电调、机器人关节驱动以及各类需要快速响应的伺服系统。本文聚焦于水弹发射器ATM火控系统的硬件迭代,通过详解电容的选型、布局与焊接流程,特别是针对速凌五代无刷电机的高启动电流特性,系统性地阐述了如何通过强化电源储能与芯片去

weixin_33868027的博客 556

循环构建 Keras 模型,越来越慢的问题

Keras运行迭代一定次数以后,速度越来越慢,甚至有可能出现MemoryError。这很可能是因为在循环迭代过程中增加了新的计算节点,导致计算节点越来越多,内存被占用完,速度变慢。 判断是否在循环迭代过程中增加了新的计算节点,可以用下面的语句: import tensorflow as tf tf.Graph.finalize() # or tf.get_default_graph().finalize() 如果增加了新的计算节点,就会报错,如果没有报错,说明没有增加计算节点。 每次keras运行后

winter_python的博客 1689

20道SpringSecurity常见面试题汇总(超详细回答 !!!)

本文中,我们将探讨一些与 Spring Security 相关的面试问题。Spring Security 是一款流行的 Java 应用程序安全框架,它提供了一套全面且易于使用的安全解决方案。

小斜同学的博客 3076

《解锁GCC版本选择的奥秘:从入门到精通》

GCC 版本的选择是一项复杂而关键的决策,犹如一场精心策划的战略布局,贯穿于软件开发的整个生命周期。从项目需求与兼容性的深度考量,到性能与稳定性的权衡抉择,再到硬件与系统适配的精准对接,每一个环节都紧密相连,相互影响。在游戏开发行业,对性能的极致追求促使开发者青睐较新的 GCC 版本,以实现更流畅的游戏体验和更震撼的视觉效果;科学计算领域则依赖于 GCC 版本对复杂数学运算的高效优化,以应对大规模数据处理的挑战;嵌入式开发行业因硬件资源的限制和对稳定性的严苛要求,通常选择经过长期验证的稳定版本;

zheng_ruiguo的专栏 1418

机器学习(十):机器学习训练速度的提升技巧

这是一篇机器学习的介绍,本文不会涉及公式推导,主要是一些算法思想的随笔记录。 适用人群:机器学习初学者,转AI的开发人员。 编程语言:Python 操作系统:Windows 机器学习中最耗时也是最核心的两个阶段,一个就是特征工程,另一个就是训练过程了,训练过程,少则几个小时,多则几天,这个总是会占用不少时间,如果赶在向领导汇报或者业务方需要结果的是,这个真的是时间就是金钱。 我在机器学习过程中一直...

hzk1562110692的专栏 6271

Experion PKS系列开发:I_O模块_ExperionPKS与第三方I-O模块的集成

通过上述步骤,可以成功将第三方I/O模块集成到Honeywell Experion PKS系统中,实现对现场设备的监视和控制。集成过程中需要注意选择合适的第三方模块,配置正确的通信参数,编写正确的控制逻辑,并进行充分的测试,以确保系统的稳定性和可靠性。不同的通信协议(如Modbus、Profibus、Ethernet/IP、CANopen、OPC UA)有其独特的配置和编程方法,但总体流程相似。在实际应用中,根据项目需求选择合适的协议和模块,可以有效提高系统的灵活性和适应性。

zhubeibei168的博客 1102

机器都会学习了,你的神经网络还跑不动?来看看这些建议

在很多机器学习的实验室中,机器已经进行了上万小时的训练。在这个过程中,研究者们往往会走很多弯路,也会修复很多bug,但可以肯定的是,在机器学习的研究过程中,学到经验和知识的并不仅仅是机器,我们人类也积累的丰富的经验,本文就将给你几条最实用的研究建议。 接下来本文将介绍一些训练深度神经网络时的经验(主要基于TensorFlow平台)。有些建议可能对你来说很显而易见,但对其他人来说可能很重要。有些建...

weixin_NineDays66 2087

ROS从入门到精通0-1:教程导读

ROS概念太多太复杂?ROS从入门到精通系列订阅必看

FRIGIDWINTER的博客 1万+

uniapp - 实现安卓App打包上架应用商店详细教程,详解Hbuilder打包编译apk发布上传到应用市场全流程,提供uniApp云打包、离线打包app、原生本地打包,附带APP备案和安卓证书申请

uni-app,安卓,APP,应用商店,打包编译apk,上架到应用市场,如何打包app并发布到主流应用市场,发布为AndroidApp流程,应用备案,如何申请安卓证书,hbuilder发布安卓apk后怎么上传到各家软件商店,创建app证书,uniapp发行原生APP本地打包安卓APK,详细最全的步骤教程,项目打包成apk,云打包,安心打包,安卓app离线打包,一直审核不通过,被拒绝,不符合规范,上架发布失败,申请安卓证书和获取证书信息,uni-app打包发布安卓Android软件到各大应用商店,腾讯应用

🏆 前端领域优质创作者 1万+

sklearnex 让你的 sklearn 机器学习模型训练快得飞起?

sklearnex 让你的 sklearn 机器学习模型训练快得飞起?

叶庭云 成为自己的光 5477

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

针对Scikit-learn的Intel®扩展进行基准测试:它的速度有多快?

Scikit-learn是用于机器学习(ML)的最强大的Python库之一。它配备了许多机器学习工具,包括数学、统计和通用算法。虽然Scikit-learn速度很快,但总有改进的余地,以实现更大的优化并减少执行时间。此外,Scikit-learn本身不支持在GPU上运行。

寒冰屋的专栏 1058

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

sklearnex | scikit-learn-intelex

ModuleNotFoundError: No module named 'sklearnex' 1.介绍 这是一个面向 Scikit-learn 的英特尔扩展包,是加速 Scikit-learn 应用的无缝方式 官方doc:scikit-learn-intelex ·PyPI 2.安装 pip install scikit-learn-intelex conda install scikit-learn-intelex -c conda-forge conda install sc

VIEO 4382

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

scikit-learn-intelex

文章目录scikit-learn-intelex scikit-learn-intelex sklearn加速包 ref: 官方doc 概述: Intel® Extension for Scikit-learn 是一种加速 Scikit-learn 应用程序的无缝方式。加速是通过使用英特尔® oneAPI 数据分析库 ( oneDAL ) 实现的。修补 scikit-learn 使其成为处理现实生活问题的非常适合的机器学习框架。 用法: from sklearnex import patch_sklea

纸上得来终觉浅,绝知此事要躬行! 2065

sklearnex-两行代码百倍加速你的机器学习代码

sklearnex库 | 两行代码百倍加速你的机器学习代码

toby001111的博客 941

SmolChat-Android:移动端本地AI推理的完整实战方案

在移动AI应用快速发展的今天,如何在资源受限的安卓设备上实现高效的语言模型推理成为了技术挑战。SmolChat-Android项目提供了一个创新的解决方案,通过llama.cpp框架和GGUF模型格式,让开发者能够在安卓设备上部署和运行小型语言模型,实现真正的本地化AI推理。本文将深入解析该项目的技术架构、实战应用和性能表现,为移动AI开发提供完整指南。 ## 项目定位与价值:解决移动AI的隐私

gitblog_00005的博客 682

基于英特尔oneAPI工具的深度学习与机器学习解决方案开发

本项目利用英特尔oneAPI工具中的深度学习和机器学习工具,通过Intel Optimization for PyTorch和Intel Extension for Scikit-learn,开发了一个基于鸢尾花数据集的深度学习和机器学习解决方案。首先,使用Intel Optimization for PyTorch进行深度学习模型的训练和推理,以实现对鸢尾花数据集的分类任务。然后,利用Intel Extension for Scikit-learn进行传统机器学习算法的训练和测试,包括逻辑回归、决策树和随

m0_55735325的博客 154

Intel Scikit-learn扩展使用以及优化效果展示

设置决策树的数目为5000,实际上并不需要这么多,当决策树数量到达一定值后,决策树数量的提升对分类效果的提升就会变得很有限(此前使用该模型时的决策树数目设置为50)。这个操作的主要目的是提供足够长的模型训练时间以供参考。本应用案例的母题来自2022年数维杯数学建模竞赛,题目提供了针对阿尔兹海默症的潜在或已患病人群的调查信息数据集,要求实现对患者患病程度的分类。本文尝试了Scikit-learn扩展的接口调用方法,并将该扩展应用在一个随机森林分类项目上,对比了使用前后的速度以及准确率表现。

Ayalyt的博客 556

Python之Sklearn使用教程

文章目录1.Sklearn简介2.Sklearn安装3.Sklearn通用学习模式4.Sklearn datasets5.Sklearn Model的属性和功能6.Sklearn数据预处理7.交叉验证8.过拟合问题9.保存模型 1.Sklearn简介 Scikit-learn(sklearn)是机器学习中常用的第三方模块,对常用的机器学习方法进行了封装,包括回归(Regression)、降维(Dimensionality Reduction)、分类(Classfication)、聚类(Clustering)

qq_36182852的博客 1万+
上一篇: 客户流失?来看看大厂如何基于spark+机器学习构建千万数据规模上的用户留存模型 ⛵
下一篇: VISTA无人驾驶模拟器;FinRL量化金融深度强化学习库;『深度神经网络应用』电子书;CUDA/TensorRT案例集锦;前沿论文 | ShowMeAI资讯日报
ShowMeAI
博客等级 码龄5年 6514粉丝 672原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ShowMeAI

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值