加入收藏 | 设为首页 | 会员中心 | 我要投稿 湖南网 (https://www.hunanwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 教程 > 正文

如何在GPU上加速数据科学

发布时间:2019-08-07 23:08:27 所属栏目:教程 来源:skura
导读:笔者按,数据科学家必要算力。无论您是用 pandas 处理赏罚一个大数据集,照旧用 Numpy 在一个大矩阵上运行一些计较,您都必要一台强盛的呆板,以便在公道的时刻内完成这项事变。 在已往的几年中,数据科学家常用的 Python 库已经很是善于操作 CPU 手段。 Panda
副问题[/!--empirenews.page--]

笔者按,数据科学家必要算力。无论您是用 pandas 处理赏罚一个大数据集,照旧用 Numpy 在一个大矩阵上运行一些计较,您都必要一台强盛的呆板,以便在公道的时刻内完成这项事变。

在已往的几年中,数据科学家常用的 Python 库已经很是善于操作 CPU 手段。

Pandas 的基本代码是用 C 说话编写的,它可以很好地处理赏罚巨细高出 100GB 的数据集。假如您没有足够的 RAM 来容纳这样的数据集,那么您可以行使分块成果,它很利便,可以一次处理赏罚一个数据块。

GPUs vs CPUs:并行处理赏罚

有了大量的数据,CPU 就不会割断它了。

一个高出 100GB 的数据集将有许大都据点,数据点的数值在数百万乃至数十亿的范畴内。有了这么多的数据点要处理赏罚,不管你的 CPU 有多快,它都没有足够的内核来举办有用的并行处理赏罚。假如你的 CPU 有 20 个内核(这将是相等昂贵的 CPU),你一次只能处理赏罚 20 个数据点!

CPU 在时钟频率更重要的使命中会更好——可能基础没有 GPU 实现。假如你实行执行的流程有一个 GPU 实现,且该使命可以从并行处理赏罚中受益,那么 GPU 将越发有用。

如安在GPU上加快数据科学

多核体系怎样更快地处理赏罚数据。对付单核体系(左),全部 10 个使命都转到一个节点。对付双核体系(右),每个节点包袱 5 个使命,从而使处理赏罚速率更加

深度进修已经在操作 GPU 方面施展了相等大的浸染。很多在深度进修中完成的卷积操纵是一再的,因此在 GPU 上可以大大加快,乃至可以到达 100 次。

本日的数据科学没有什么差异,由于很多一再的操纵都是在大数据集上执行的,库中有 pandas、Numpy 和 scikit-learn。这些操纵也不太伟大,无法在 GPU 上实现。

最后,尚有一个办理方案。

用 Rapids 加快 GPU

Rapids 是一套软件库,旨在操作 GPU 加快数据科学。它行使初级此外 CUDA 代码实现快速的、GPU 优化的算法,同时它上面尚有一个易于行使的 Python 层。

Rapids 的美好之处在于它与数据科学库的集成很是顺遂,好比 pandas 数据帧就很轻易通过 Rapids 实现 GPU 加快。下图声名白 Rapids 如安在保持顶层易用性的同时实现低层的加快。

如安在GPU上加快数据科学

Rapids 操作了几个 Python 库:

  • cuDF-Python GPU 数据帧。它险些可以做 pandas 在数据处理赏罚和操纵方面所能做的统统。
  • cuML-cuGraph 呆板进修库。它包括了 Scikit-Learn 拥有的很多 ML 算法,全部算法的名目都很是相似。
  • cuGraph-cuGraph 图处理赏罚库。它包括很多常见的图说明算法,包罗 PageRank 和各类相似性怀抱。

怎样行使 Rapids

安装

此刻你将看到怎样行使 Rapids!

要安装它,请会见这个网站,在这里你将看到怎样安装 Rapids。你可以通过 Conda 将其直接安装到你的呆板上,可能简朴地行使 Docker 容器。

安装时,可以配置体系类型,如 CUDA 版本和要安装的库。譬喻,我有 CUDA 10.0,想要安装全部库,以是我的安装呼吁是:

  1. conda install -c nvidia -c rapidsai -c numba -c conda-forge -c pytorch -c defaults cudf=0.8 cuml=0.8 cugraph=0.8 python=3.6 cudatoolkit=10.0 

一旦呼吁完成运行,就可以开始用 GPU 加快数据科学了。

配置我们的数据

对付本教程,我们将先容 DBSCAN demo 的修改版本。我将行使 Nvidia 数据科学事变站和 2 个 GPU 运行这个测试。

DBSCAN 是一种基于密度的聚类算法,可以自动对数据举办分类,而无需用户指定有几多组数据。在 Scikit-Learn 中有它的实现。

我们将从获取全部导入配置开始。先导入用于加载数据、可视化数据和应用 ML 模子的库。

  1. import os  
  2. import matplotlib.pyplot as plt  
  3. from matplotlib.colors import ListedColormap  
  4. from sklearn.datasets import make_circles 

make_circles 函数将自动建设一个伟大的数据漫衍,相同于我们将应用于 DBSCAN 的两个圆。

让我们从建设 100000 点的数据集开始,并在图中可视化:

  1. X, y = make_circles(n_samples=int(1e5), factor=.35, noise=.05)  
  2. X[:, 0] = 3*X[:, 0]  
  3. X[:, 1] = 3*X[:, 1]  
  4. plt.scatter(X[:, 0], X[:, 1])  
  5. plt.show()

如安在GPU上加快数据科学

CPU 上的 DBSCAN

行使 Scikit-Learn 在 CPU 上运行 DBSCAN 很轻易。我们将导入我们的算法并配置一些参数。

  1. from sklearn.cluster import DBSCAN  
  2. db = DBSCAN(eps=0.6, min_samples=2) 

我们此刻可以通过挪用 Scikit-Learn 中的一个函数对轮回数据行使 DBSCAN。在函数前面加上一个「%」,就可以让 Jupyter Notebook 丈量它的运行时刻。

  1. %%time  
  2. y_db = db.fit_predict(X) 

(编辑:湖南网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读