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

简介: 机器学习建模过程如何提速?本文提供 Intel 针对 Scikit-Learn 工具库做的加速补丁,是一种硬件层面的解决方案,支持多种算法,并可以将建模时间压缩为常规方式的 1/5

💡 作者: 韩信子@ 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(R) 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 的英特尔加速扩展补丁]( https://www.showmeai.tech/article-detail/295)creditcard 信用卡欺诈场景数据集

ShowMeAI官方GitHubhttps://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 训练和推理时间
  • 提供无缝体验(只需添加两行代码即可启用加速)

参考资料

目录
相关文章
|
1天前
|
机器学习/深度学习 数据挖掘 定位技术
多元线性回归:机器学习中的经典模型探讨
多元线性回归是统计学和机器学习中广泛应用的回归分析方法,通过分析多个自变量与因变量之间的关系,帮助理解和预测数据行为。本文深入探讨其理论背景、数学原理、模型构建及实际应用,涵盖房价预测、销售预测和医疗研究等领域。文章还讨论了多重共线性、过拟合等挑战,并展望了未来发展方向,如模型压缩与高效推理、跨模态学习和自监督学习。通过理解这些内容,读者可以更好地运用多元线性回归解决实际问题。
|
13天前
|
机器学习/深度学习 人工智能 自然语言处理
PAI Model Gallery 支持云上一键部署 DeepSeek-V3、DeepSeek-R1 系列模型
DeepSeek 系列模型以其卓越性能在全球范围内备受瞩目,多次评测中表现优异,性能接近甚至超越国际顶尖闭源模型(如OpenAI的GPT-4、Claude-3.5-Sonnet等)。企业用户和开发者可使用 PAI 平台一键部署 DeepSeek 系列模型,实现 DeepSeek 系列模型与现有业务的高效融合。
|
1月前
如何看PAI产品下训练(train)模型任务的费用细节
PAI产品下训练(train)模型任务的费用细节
85 6
|
1月前
|
机器学习/深度学习 安全 PyTorch
FastAPI + ONNX 部署机器学习模型最佳实践
本文介绍了如何结合FastAPI和ONNX实现机器学习模型的高效部署。面对模型兼容性、性能瓶颈、服务稳定性和安全性等挑战,FastAPI与ONNX提供了高性能、易于开发维护、跨框架支持和活跃社区的优势。通过将模型转换为ONNX格式、构建FastAPI应用、进行性能优化及考虑安全性,可以简化部署流程,提升推理性能,确保服务的可靠性与安全性。最后,以手写数字识别模型为例,展示了完整的部署过程,帮助读者更好地理解和应用这些技术。
97 20
|
1月前
|
机器学习/深度学习 人工智能 自然语言处理
云上一键部署 DeepSeek-V3 模型,阿里云 PAI-Model Gallery 最佳实践
本文介绍了如何在阿里云 PAI 平台上一键部署 DeepSeek-V3 模型,通过这一过程,用户能够轻松地利用 DeepSeek-V3 模型进行实时交互和 API 推理,从而加速 AI 应用的开发和部署。
|
1月前
|
机器学习/深度学习 存储 设计模式
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
本文探讨了数据基础设施设计中常见的一个问题:数据仓库或数据湖仓中的表格缺乏构建高性能机器学习模型所需的历史记录,导致模型性能受限。为解决这一问题,文章介绍了缓慢变化维度(SCD)技术,特别是Type II类型的应用。通过SCD,可以有效追踪维度表的历史变更,确保模型训练数据包含完整的时序信息,从而提升预测准确性。文章还从数据工程师、数据科学家和产品经理的不同视角提供了实施建议,强调历史数据追踪对提升模型性能和业务洞察的重要性,并建议采用渐进式策略逐步引入SCD设计模式。
103 8
特征时序化建模:基于特征缓慢变化维度历史追踪的机器学习模型性能优化方法
|
1月前
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
276 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
2月前
|
编解码 机器人 测试技术
技术实践 | 使用 PAI+LLaMA Factory 微调 Qwen2-VL 模型快速搭建专业领域知识问答机器人
Qwen2-VL是一款具备高级图像和视频理解能力的多模态模型,支持多种语言,适用于多模态应用开发。通过PAI和LLaMA Factory框架,用户可以轻松微调Qwen2-VL模型,快速构建文旅领域的知识问答机器人。本教程详细介绍了从模型部署、微调到对话测试的全过程,帮助开发者高效实现定制化多模态应用。
|
2月前
|
机器学习/深度学习 人工智能 算法
人工智能浪潮下的编程实践:构建你的第一个机器学习模型
在人工智能的巨浪中,每个人都有机会成为弄潮儿。本文将带你一探究竟,从零基础开始,用最易懂的语言和步骤,教你如何构建属于自己的第一个机器学习模型。不需要复杂的数学公式,也不必担心编程难题,只需跟随我们的步伐,一起探索这个充满魔力的AI世界。
74 12
|
3月前
|
人工智能 JSON 算法
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践
阿里云的人工智能平台 PAI,作为一站式、 AI Native 的大模型与 AIGC 工程平台,为开发者和企业客户提供了 Qwen2.5-Coder 系列模型的全链路最佳实践。本文以Qwen2.5-Coder-32B为例,详细介绍在 PAI-QuickStart 完成 Qwen2.5-Coder 的训练、评测和快速部署。
Qwen2.5-Coder 系列模型在 PAI-QuickStart 的训练、评测、压缩及部署实践

热门文章

最新文章