新闻动态
News
首页 > 新闻动态
返回

Rapids 加速数据科学的端到端



2019-2-27


    当今的数据科学问题要求数据的规模和处理它所需的计算能力急剧增加。不幸的是,摩尔定律的终结意味着在当今的数据科学生态系统中处理大数据量需要扩展到许多 CPU 节点,这会带来自身的通信瓶颈、能源和成本问题 (参见图 1)。


 2-210Q122295M62.jpg


图 1     GPU 加持的数据科学实现了更大的交互性,而且减少了咖啡时间。


    数据科学的一个关键部分是数据探索。要准备用于培训机器学习算法的数据集,需要了解数据集、清理和操作数据类型和格式、填充数据中的空白以及学习算法的工程功能。这些任务通常按术语提取、转换、加载 (ETL) 进行分组。ETL 通常是一个迭代的探索过程。随着数据集的增长,在 CPU上运行时,此过程的交互性会受到影响。


    为了应对现代数据科学 Pipeline 的挑战,今天在 GTC 欧洲 NVIDIA 宣布了 Rapids,一套开放源码软件库,用于完全在 GPU 上执行端到端数据科学和分析 Pipeline。Rapids 旨在加速整个数据科学 Pipeline,包括数据加载、ETL、模型培训和推断。这将启用更高效、交互式和探索性工作流。


    Rapids 是来自机器学习社区和 GPU 开放分析计划 (GOAI)合作伙伴的贡献的结果。GOAI 成立于  2017 年,旨在加速 GPU 上的端到端分析和数据科学 Pipeline,基于 Apache Arrow 数据结构创建 GPU 数据帧。GPU 数据帧支持 GPU 加速数据处理和机器学习库的集成,而不会产生典型的序列化和反序列化问题。Rapids 建立并扩展了早期的 GOAI 工作。


利用 Rapids 提高数据科学性能


    Rapids 在典型的端到端数据科学工作流中实现了 50 倍或更多的加速因子。Rapids 使用 NVIDIA CUDA 进行高性能 GPU 执行,通过用户友好的 Python 接口公开 GPU 并行性和高内存带宽。Rapids 专注于分析和数据科学的通用数据准备任务,提供强大且熟悉的数据帧 API。此 API 集成了各种机器学习算法,无需支付典型的序列化成本,从而实现了对端到端 Pipeline 的加速。Rapids 还包括对多节点、多 GPU 部署的支持,可在更大的数据集大小上实现扩展和缩小。


    Rapids 容器包括一个 NOTEBOOK 和代码,演示典型的端到端 ETL 和 ML 工作流。该示例使用 Fannie Mae 贷款绩效数据集的 2000 到 2016 年的所有贷款数据,在内存中包含大约 400 GB 的数据,对模型进行家庭贷款风险评估。图 2 显示了贷款风险分析的地理可视化.


 2-210Q1223013452.jpg


图 2     抵押贷款数据风险评估的可视化


    该示例使用 Rapids CSV 读取器将数据加载到 GPU 内存中。本示例中的 ETL 执行许多操作,包括从 datetime 字段提取月份和年份、数据框之间的多个列的联接以及功能工程的 groupby 聚合。然后转换生成的要素数据,并使用 XGBoost 在 GPU 上训练梯度提升决策树模型。


    此工作流端到端运行在单个 16 块特斯拉 V100 GPU 的 NVIDIA DGX-2 服务器上,比 100个 AWS r4.2xLarge 快 10 倍,如图 3 中的图表所示。将 GPU 与 CPU 性能进行一对一比较,这等同于 50 倍的加速。


 2-210Q12230242C.jpg


图 3  与典型数据科学工作流上的 CPU 集群相比,NVIDIA DGX-2 上的 Rapids 提供了超过 50 倍加速


需要端到端加速度


    传统机器学习算法 (如梯度提升) 的 GPU 加速已成为流行。但是,以前在 GPU 加速数据科学 PIPELINE 方面的努力主要集中在单独的机器学习库上,而不是 PIPELINE 的其他重要连接部分。这会造成问题。假设您的 PIPELINE 有三步:


1,加载数据

2,清理数据并执行功能工程

3,训练分类


    首先将数据加载到主机内存中。然后执行 ETL 任务,包括数据清理和功能工程步骤,如筛选、插补和生成新功能。今天的这些步骤大部分都是使用 CPU 完成的。之后,您必须将功能工程步骤的输出转换为 GPU 加速机器学习库的内部内存格式,然后将数据移动到 GPU 内存中。现在,你要做训练。你在训练中得到了巨大的加速,你很满意。最后,将数据移回主机内存并可视化或准备部署。


    最终,您将获得适度的总体加速,但复制和转换操作会由于序列化和反序列化操作而导致大量开销,最终导致可用的 GPU 处理能力不足。


    Rapids 通过设计解决这个问题。它提供了一个称为 GPU 数据帧的柱状数据结构,它实现了 GPU 上的 Apache Arrow 柱状数据格式。Rapids GPU 数据帧提供了一个类似 PANDAS 的 API,对数据科学家来说很熟悉,因此他们现在可以更轻松地构建 GPU 加速的工作流。


Rapids 软件库


    使用 Rapids 的数据科学家使用以下高级 python 包与之交互。


    cuDF:带有 PANDAS 类 API 的 GPU 数据帧库。cuDF 提供对数据列的操作,包括一元和二进制操作、筛选器、联接和 groupbys。cuDF 目前包括 Python 库 PyGDF,以及 libgdf 中的 c++/CUDA GPU 数据框实现。这两个库正在合并到 cuDF 中。有关详细信息和示例,请参阅文档。


    cuSKL:在 GPU 数据框上运行的机器学习算法的集合。cuSKL 使数据科学家、研究人员和软件工程师能够在 GPU 上运行传统的 ML 任务,而无需从 Python 编写 CUDA 编程的详细信息。


    XGBoost:XGBoost 是最受欢迎的机器学习包之一,用于训练梯度提升决策树。本机 cuDF 支持允许您在剩余的 GPU 内存中直接将数据传递给 XGBoost。


    cuML:一种 GPU 加速的机器学习算法库,包括奇异值分解 (SVD)、主分量分析 (PCA)、基于密度的噪声应用的空间聚类 (DBSCAN)。


    ml-prims:cuML 使用的低级数学和计算基元库。


2-210Q1223242R0.jpg

图 4     数据科学 Pipeline 与 GPU 和 Rapids

 

结论


    Rapids 加速完整的数据科学 Pipeline 从数据摄取和操作到机器学习培训。它通过:


1,在所有 GPU 加速库中采用 GPU 数据帧作为通用数据格式

2,加速数据科学构建块,如 PANDS 提供的数据操作例程,以及通过处理数据并将结果保留在 GPU 内存中的机器学习算法 (如 XGboost)。


欲进一步了解 RAPIDS 解决方案的具体细节,或者希望在您的系统中部署 RAPIDS。请联系我们,容天经过英伟达认证的技术团队将向您提供专业的技术支持。


咨询电话:4008-908-985,联系人:张宁,邮箱:zn@rthpc.com


上一篇:人工智能与高性能计算深入学习研讨会•成功举办
请您留言

感谢您的关注,当前客服人员不在线,请填写一下您的信息,我们会尽快和您联系。

提交