python使用cuML训练机器学习模型
有没有一种方法可以使机器学习模型的训练速度比使用Sklearn的速度快150倍?答案就是你可以使用cuML。
下面的图表比较了使用Sklearn的RandomForestClassifier和cuML的RandomForestClassifier训练同一模型所需的时间。
cuML是一套快速的,GPU加速的机器学习算法,设计用于数据科学和分析任务。它的API类似于Sklearn的,这意味着你可以使用训练Sklearn模型的代码来训练cuML的模型。
from cuml.ensemble import RandomForestClassifier
clf = KNeighborsClassifier(n_neighbors=10)
clf.fit(X, y)
在本文中,我将比较使用不同模型的这两个库的性能。我还将演示如何增加显卡,使得速度提高10倍。
安装cuML
要安装cuML,请按照Rapids页面上的说明进行安装。请确保在安装库之前检查先决条件。你可以安装所有软件包,也可以只安装cuML。如果你的计算机空间有限,我建议安装cuDF和cuML。
虽然在很多情况下,不需要安装cuDF来使用cuML,但是cuDF是cuML的一个很好的补充,因为它是一个GPU数据帧。
确保选择适合你计算机的选项。
创建数据
因为当有大量数据时,cuML通常比Sklearn更好,因此我们将使用sklearn.datasets.
从sklearn导入数据集
from sklearn import datasets
X, y = datasets.make_classification(n_samples=40000)
将数据类型转换为np.float32因为有些cuML模型要求输入是np.float32.
X = X.astype(np.float32)
y = y.astype(np.float32)
支持向量机
我们将创建用于训练模型的函数。使用此函数将使我们更容易比较不同的模型。
def train_data(model, X=X, y=y):
clf = model
clf.fit(X, y)
我们使用iPython的magic命令%timeit运行每个函数7次,取所有实验的平均值。
from sklearn.svm import SVC
from cuml.svm import SVC as SVC_gpu
clf_svc = SVC(kernel='poly', degree=2, gamma='auto', C=1)
sklearn_time_svc = %timeit -o train_data(clf_svc)
clf_svc = SVC_gpu(kernel='poly', degree=2, gamma='auto', C=1)
cuml_time_svc = %timeit -o train_data(clf_svc)
print(f"""Average time of sklearn's {clf_svc.__class__.__name__}""", sklearn_time_svc.average, 's')
print(f"""Average time of cuml's {clf_svc.__class__.__name__}""", cuml_time_svc.average, 's')
print('Ratio between sklearn and cuml is', sklearn_time_svc.average/cuml_time_svc.average)
Average time of sklearn's SVC 48.56009825014287 s
Average time of cuml's SVC 19.611496431714304 s
Ratio between sklearn and cuml is 2.476103668030909
cuML的SVC比sklearn的SVC快2.5倍!
让我们通过图片来可视化它。我们创建一个函数来绘制模型的速度。
!pip install cutecharts
import cutecharts.charts as ctc
def plot(sklearn_time, cuml_time):
chart = ctc.Bar('Sklearn vs cuml')
chart.set_options(
labels=['sklearn', 'cuml'],
x_label='library',
y_label='time (s)',
)
chart.add_series('time', data=[round(sklearn_time.average,2), round(cuml_time.average,2)])
return chart
plot(sklearn_time_svc, cuml_time_svc).render_notebook()
更好的显卡
由于cuML的模型在运行大数据时比Sklearn的模型快,因为它们是用GPU训练的,如果我们将GPU的内存增加三倍会发生什么?
在前面的比较中,我使用的是一台搭载geforce2060的Alienware M15笔记本电脑和6.3gb的显卡内存。
同类资源
- 易语言python交互源码,不需要把易语言编译成静态库
易语言python交互源码,不需要把易语言编译成静态库例子源代码,希望对大家有帮助。...
- 批量修改游戏模型贴图路径
易语言批量修改游戏模型贴图路径例子源代码,此工具是能够批量修改MDX模型里面包含的贴图路径。...
- python多版本辅助工具
易语言python多版本辅助工具例子源代码,功能实现多版本运行python及pip工具。...
- 微信和企业微信自动清理缓存python语言编写
微信和企业微信缓存自动清理缓存python语言编写绿色版,自动通过判断注册表、微信配置文件和手动输入判断企...
- python工作辅助工具箱v1.8新增通讯录
python工作辅助工具箱v1.8新增通讯录绿色版,重要人物通讯录功能,原因是记不得重要的人的生日做的工作辅助工...
- Python抖音直播录制工具
Python抖音直播录制工具绿色版,此版本需要ffmpeg支持,文件里带了一个ffmpeg电脑本身有ffmpeg变量可以删掉里...
- python脚本编译运行工具
python脚本编译运行工具绿色版,全新升级python脚本编译运行工具,放弃delphi开发,使用lazarusIDE进行开发。...
- python写的自定义快捷键全屏截图
易语言python写的自定义快捷键全屏截图绿色版,因为最近工作需要,需要在各个不同的电脑里跳来跳去的截图。...
- python考试复习题库完整版
python考试复习题库完整版本文件感兴趣的可以参考一下,Python安装扩展库常用的是工具。...
- python工具之一键添加引号
python工具之一键添加引号绿色版,如果觉得过程很繁琐,这个工具可以帮到你。...
- 文件清单生成器Python小工具
文件清单生成器Python小工具绿色版,放出V2.1版本的源代码,用到的模块的安装方法也给出了。...
- Python本地GIF图生成网页预览,图生网页v1.0
Python本地GIF图生成网页预览绿色版,这次做了一个好玩的!可以将文件夹里的图片生成一个网页预览。...