使用 RAPIDS 的 GPU 驱动的数据科学(非深度学习)

源节点: 997659

使用 RAPIDS 的 GPU 驱动的数据科学(非深度学习)

标签: 数据科学, GPU, 蟒蛇

即使您没有做很多深度学习工作,如何利用 GPU 的强大功能进行常规数据科学和机器学习。



标题图片
图片来源Pixabay (免费图片)

您在寻找“GPU 驱动的数据科学”吗?

 
 
想象一下自己是一名数据科学家,或业务分析师,或物理学/经济学/神经科学领域的学术研究员……

你做了很多 数据整理、清理、统计测试、可视化 定期。 你也修补了很多 线性模型 拟合数据,偶尔冒险进入 随机森林. 你也喜欢 集群 大型数据集。 听起来够熟悉吗?

但是,考虑到您处理的数据集的性质(主要是表格和结构化),您不会那么冒险进入深度学习。 你宁愿把你拥有的所有硬件资源投入到你每天实际做的事情上,而不是花在一些花哨的深度学习模型上。 又是熟悉?

你听说了令人敬畏的力量和超快的计算能力 GPU 系统,例如来自 NVidia 的用于各种工业和科学应用的系统。

而且,你一直在想——”我有什么用? 如何在我的特定工作流程中利用这些强大的半导体部件?“

您正在寻找基于 GPU 的数据科学。

评估此方法的最佳(也是最快)选项之一是使用以下组合 土星云 + 急流让我详细解释一下……

AI/ML 传说中的 GPU 主要用于深度学习

 
 
虽然 GPU 和分布式计算的使用在学术界和商业界被广泛讨论用于核心 AI/ML 任务(例如运行 1000层深度神经网络 用于图像分类或 十亿参数 BERT 语音合成模型),当涉及到常规数据科学和数据工程任务的效用时,他们发现覆盖面较少。

尽管如此, 与数据相关的任务是 AI 管道中任何 ML 工作负载的必要前提 它们通常构成 大部分时间和精力 由数据科学家甚至 ML 工程师花费。 近日,著名的 AI 先驱
Andrew Ng 讨论过 从以模型为中心转向以数据为中心的 AI 方法 工具开发。 这意味着在实际 AI 工作负载在您的管道上执行之前,花费更多时间处理原始数据并对其进行预处理。

所以,重要的问题是: 我们能否利用 GPU 和分布式计算的强大功能进行常规数据处理工作?



图片来源: 作者从免费图片创建拼贴 (Pixabay)

 

虽然 GPU 和分布式计算的使用在学术界和商业界被广泛讨论用于核心 AI/ML 任务,但他们发现它们在常规数据科学和数据工程任务中的实用性较少。

奇妙的 RAPIDS 生态系统

 
 
 RAPIDS 软件库和 API 套件 给你——一个普通的数据科学家(不一定是深度学习从业者)——执行的选项和灵活性 完全在 GPU 上的端到端数据科学和分析管道。

这个开源项目由 Nvidia 通过构建工具来利用 CUDA 原语进行孵化。 它特别关注 通过数据科学友好的 Python 语言公开 GPU 并行性和高带宽内存速度特性.

常见的数据准备和整理任务 在 RAPIDS 生态系统中受到高度重视。 它还提供了大量的 支持多节点、多 GPU 部署和分布式处理. 在可能的情况下,它与其他库集成 内存不足 (即数据集大小大于个人计算机 RAM)数据处理对于个人数据科学家来说很容易且易于访问。



图片来源:作者创建的拼贴

 

三个最突出(和 Pythonic)的组件——普通数据科学家特别感兴趣——是,

  • :一个 CUDA 驱动的数组库,外观和感觉都像 Numpy,同时使用各种 CUDA 库,例如 cuBLAS、cuDNN、cuRand、cuSolver、cuSPARSE、cuFFT 和 NCCL,以充分利用底层的 GPU 架构。
  • 铜排:这是一个 GPU DataFrame 库,用于加载、聚合、连接、过滤和操作数据 类似熊猫的 API。 数据工程师和数据科学家可以使用它使用强大的 GPU 轻松加速他们的任务流,而无需学习 CUDA 编程的具体细节。
  • 铜线:该库使数据科学家、分析师和研究人员能够充分利用 GPU 的强大功能运行传统/经典 ML 算法和相关处理任务。 自然,这主要用于表格数据集。 想想 Scikit-learn 以及它可以用你 GPU 卡上的所有数百个 Cuda 和 Tensor 核心做什么! 因此,在大多数情况下,cuML 的 Python API 与 Scikit-learn 相匹配。 此外,它试图提供 多 GPU 和多节点 GPU 支持 by 优雅地与 达斯克,尽可能利用真正的分布式处理/集群计算。


我们能否利用 GPU 和分布式计算的强大功能进行常规数据处理作业和使用结构化数据进行机器学习?

它与使用 Apache Spark 有什么不同吗?

 
 
您可能会问,这种基于 GPU 的数据处理与使用 Apache Spark 有何不同。 实际上,存在一些细微差别,而且直到最近,在 Spark 3.0 中,GPU 才成为 Spark 工作负载的主流资源。

使用 GPU 和 RAPIDS 加速 Apache Spark 3.0 | NVIDIA 开发者博客
 

我们没有时间或空间来讨论这种基于 GPU 的数据科学方法与特别适合 Apache Spark 的大数据任务的独特差异。 但是问自己这些问题,你可能会明白其中的细微差别,

作为一名为经济交易和投资组合管理建模的数据科学家,我想解决一个 线性方程组 有 100,000 个变量。 我是使用纯线性代数库还是 Apache Spark?“

作为图像压缩管道的一部分,我想使用 奇异值分解 在包含数百万个条目的大型矩阵上。 Apache Spark 是一个不错的选择吗?“

大问题规模并不总是意味着 Apache Spark 或 Hadoop 生态系统。 大计算不等同于大数据。 作为一名全面的数据科学家,您需要了解两者才能解决各种问题。

RAPIDS 特别关注 通过 Python API 公开 GPU 并行性和高带宽内存速度特性。

我们在这篇文章中展示了什么?

 
 

仅限 CuPy 和 CuML 的简单示例

 
因此,在本文中,我们将仅演示 CuPy 和 CuML 的简洁示例,

  • 他们如何(在速度上)与相应的 Numpy 和 Scikit-learn 函数/估计器进行比较
  • 数据/问题大小在此速度比较中的重要性。

稍后文章中的 CuDF 示例

 
尽管许多数据科学家对类似于 Pandas 数据处理的数据工程示例非常感兴趣,但我们将在后面的文章中介绍 CuDF 示例。

我的基于 GPU 的硬件平台是什么?

 
我正在使用 土星云 Tesla T4 GPU 实例,因为它实际上是 5 分钟的工作来启动一个 云上功能齐全且已加载(带有 DS 和 AI 库)的计算资源 为我所有的数据科学工作与他们的服务。 只要我每月使用 Jupyter Notebook 不超过 10 小时,它就是免费的! 如果您想了解更多关于他们的服务,

土星云托管已启动:人人可用的 GPU 数据科学!

GPU 计算是数据科学的未来。 RAPIDS、TensorFlow 和 PyTorch 等软件包可实现闪电般的速度……

除了拥有 特斯拉 T4 GPU,它是 4 核 Intel(R) Xeon(R) Platinum 8259CL CPU @ 2.50GHz 机器,具有 16 GB RAM 和 10 GB 永久磁盘。 因此,从硬件配置的角度来看,这是一个非常正常的设置(由于免费层而限制了硬盘驱动器),即任何数据科学家都可能拥有这种硬件。 唯一的区别因素是 GPU 的存在并以正确的方式设置所有 CUDA 和 Python 库,以便 RAPIDS 套件可以正常工作。


大问题规模并不总是意味着 Apache Spark 或 Hadoop 生态系统。 大计算不等同于大数据。 作为一名全面的数据科学家,您需要了解两者才能解决各种问题。

求解线性方程组

 
我们创建不同大小的线性方程组并使用 Numpy(和 CuPy) linalg.solve例程使用以下代码解决该问题,



并且,CuPy 实现的代码更改为单个字母(在多次调用中)!



另请注意,我们如何从 Numpy 数组创建 CuPy 数组作为参数。

结果是戏剧性的。 CuPy 起步较慢或与 Numpy 的速度相似,但对于较大的问题规模(方程数量)则优于它。



奇异值分解

 
接下来,我们使用随机生成的不同大小的方阵(从正态分布中得出)来解决奇异值分解问题。 我们在这里不重复代码块,只是为了简洁显示结果。



值得注意的是,CuPy 算法在这个问题类别中没有表现出明显优于 Numpy 算法的性能。 也许,这是 CuPy 开发人员需要改进的地方。

回归基础:矩阵求逆

 
最后,我们回到基础并考虑矩阵求逆的基本问题(用于几乎所有机器学习算法)。 结果再次表明,CuPy 算法比 Numpy 包的性能获得了非常有利的性能提升。



解决 K-means 聚类问题

 
接下来,我们考虑使用非常熟悉的 k-means 算法进行聚类的无监督学习问题。 在这里,我们将 CuML 函数与 Scikit-learn 包中的等效估计器进行比较。

仅供参考,这里是这两个估算器之间的 API 比较。



图片来源Scikit学习 和 CuML 网站 (开源项目)

 

这是具有 10 个特征/维度的数据集的结果。



而且,这是另一个使用 100 个特征数据集的实验的结果。



显然,样本大小(行数)和维度(列数)对于基于 GPU 的加速性能如何表现出色都很重要。

再熟悉不过的线性回归问题

 
在处理表格数据集时,谁能忽略线性回归问题以进行速度比较? 按照之前的节奏,我们改变问题的大小——这次是样本数量和维度同时变化——并比较 CuML 的性能 LinearRegression 从 Scikit-learn stable 获得的估计器。

下图中的 X 轴代表问题规模——从 1,000 个样本/50 个特征到 20,000 个样本/1000 个特征。

同样,随着问题复杂性(样本大小和维度)的增长,CuML 估计器的性能要好得多。



总结

 
 
我们专注于 RAPIDS 框架的两个最基本的组件,旨在将 GPU 的强大功能带到数据分析和机器学习的日常任务中,即使数据科学家不执行任何深度学习任务。



图片来源: 由作者制作,带有免费的 Pixabay上的图片 (链路1链路2链路3)

 

我们用了一个 土星云 基于 Tesla T4 的实例 简单、免费、快速的设置 并展示了 CuPy 和 CuML 库的一些特性以及广泛使用的算法的性能比较。

  • 并非 RAPIDS 库中的所有算法都非常出色,但大多数算法都是如此。
  • 一般来说,性能增益会随着问题复杂性(样本大小和维度)的增加而迅速增加
  • 如果您有 GPU,请始终尝试 RAPIDS,比较和测试您是否获得了任何性能,并使其成为您数据科学管道中值得信赖的主力。
  • 代码更改很少,几乎不存在切换。

让 GPU 的强大功能快速启动您的分析和数据科学工作流程.

你可以查看作者的 GitHub上 资料库 机器学习和数据科学中的代码,思想和资源。 如果您像我一样对AI /机器学习/数据科学充满热情,请随时 在领英上加我 or 在推特上关注我.

感谢梅尔。

 
原版。 经许可重新发布。

相关新闻:

来源:https://www.kdnuggets.com/2021/08/gpu-powered-data-science-deep-learning-rapids.html

时间戳记:

更多来自 掘金队