当今的数据科学问题要求数据规模以及处理数据所需的计算能力急剧增加。不幸的是,摩尔定律的终结意味着在当今的数据科学生态系统中处理大数据量需要扩展到许多CPU节点,这带来了通信瓶颈,能源和成本方面的问题。
基于GPU的数据科学可实现更大的交互性,但咖啡时间却更少。
数据科学的关键部分是数据探索。要准备用于训练机器学习算法的数据集,需要了解数据集,清理和处理数据类型和格式,填充数据中的空白以及学习算法的工程特征。这些任务通常归入术语“提取,转换,加载(ETL)”。ETL通常是一个迭代的探索性过程。随着数据集的增长,在CPU上运行时,此过程的交互性会受到影响。
为了应对现代数据科学管道的挑战,NVIDIA推出RAPIDS,这是一套开源软件库,用于完全在GPU上执行端到端数据科学和分析管道。RAPIDS旨在加速整个数据科学流程,包括数据加载,ETL,模型训练和推理。这将启用更具生产力,交互性和探索性的工作流程。
RAPIDS是机器学习社区和GPU开放分析倡议 (GOAI)合作伙伴做出贡献的结果。GOAI成立于2017年,旨在加速GPU上的端到端分析和数据科学流水线,它基于Apache Arrow 数据结构创建了GPU DataFrame 。GPU DataFrame支持集成GPU加速的数据处理和机器学习库,而不会产生典型的序列化和反序列化代价。RAPIDS建立并扩展了早期的GOAI工作。
端到端加速的需求
经典的机器学习算法(例如梯度提升)的 GPU加速已经流行。但是,以前在GPU上加速数据科学流水线的工作都集中在单个机器学习库上,而不是流水线的其他关键互连部分上。这产生了一个问题。假设您的管道包含三个步骤:
载入资料
清理数据并进行特征工程
训练分类器
首先,您将数据加载到主机内存中。然后执行ETL任务,包括数据清理和要素工程步骤,例如过滤,插补和生成新要素。今天,这些步骤大部分是使用CPU完成的。之后,您必须将要素工程步骤的输出转换为GPU加速的机器学习库的内部存储器格式,然后将数据移至GPU存储器。现在,您进行培训。您在训练步骤上获得了巨大的提速,并且感到高兴。最后,将数据移回主机内存并可视化或准备部署。
最后,您会获得适度的整体加速,但是由于序列化和反序列化操作,复制和转换操作会带来大量开销,并且最终会导致未充分利用可用的GPU处理能力。
RAPIDS通过设计解决了此问题。它提供了一种称为GPU DataFrame的列式数据结构,该结构在GPU上实现了Apache Arrow列式数据格式。RAPIDS GPU DataFrame提供了类似于熊猫的API,数据科学家会很熟悉,因此他们现在可以更轻松地构建GPU加速的工作流程。
RAPIDS软件库
使用RAPIDS的数据科学家使用以下高级python软件包与之交互。
cuDF:具有类似于熊猫API的GPU DataFrame库。cuDF提供对数据列的操作,包括一元和二进制操作,过滤器,联接和groupbys。cuDF当前包含Python库PyGDF和libgdf中的C ++ / CUDA GPU DataFrames实现。这两个库正在合并到cuDF中。
cuSKL:在GPU数据帧上运行的机器学习算法的集合。cuSKL使数据科学家,研究人员和软件工程师能够在GPU上运行传统的ML任务,而无需深入了解Python编写的CUDA编程的细节。
XGBoost:XGBoost是用于训练梯度增强决策树的最受欢迎的机器学习软件包之一。原生cuDF支持使您可以将数据直接传递到XGBoost,同时保留在GPU内存中。
cuML:GPU加速的机器学习算法库,包括奇异值分解(SVD),主成分分析(PCA),基于密度的带噪应用空间聚类(DBSCAN)。
ml-prims:cuML使用的低级数学和计算原语库。
带有GPU和RAPIDS的数据科学管道
往期精彩推荐: