RAPIDS 是一套开源软件库和 API,可完全在 GPU 上执行端到端数据科学和分析流程,能够实现大幅的速度提升,在大型数据集上尤是如此。用于 Apache Spark 的 RAPIDS 加速器基于 NVIDIA CUDA 和 UCX 构建,支持 GPU 加速的 SQL/DataFrame 操作和 Spark shuffle,且无需更改代码。
Apache Spark 加速的端到端 AI 平台堆栈。
加速 SQL/DataFrame
Spark 3.0 支持 SQL 优化器插件,使用列式批量(而非行式)处理数据。列式数据非常适合 GPU,并且 RAPIDS 加速器可插入此功能以加速 SQL 和 DataFrame 运算符。针对 RAPIDS 加速器,Catalyst 查询优化器进行了修改,可识别通过 RAPIDS API 加速的查询方案(主要是一对一映射)中的运算符,并可在执行查询方案时在 Spark 集群中的 GPU 上调度这些运算符。
加速 Shuffle
在阶段之间从现有 DataFrame 创建新 DataFrame 时,按值对数据进行排序、分组或合并的 Spark 操作必须移动分区之间的数据,此过程称为 shuffle,其中涉及磁盘 I/O、数据序列化和网络 I/O。新的 RAPIDS 加速器 shuffle 实施利用 UCX 优化 GPU 数据传输,尽可能在 GPU 上保留更多的数据,通过使用优质的可用硬件资源,找到在节点间移动数据的快速路径(包括绕过 CPU 执行 GPU 到 GPU 显存的节点内和节点间传输)。
加速器感知型调度
为推动旨在更好地统一深度学习和数据处理的重要 Spark 计划,GPU 在 Apache Spark 3.0 中现已成为可调度资源。这使得 Spark 能够使用特定数量的 GPU 来调度执行程序,并且用户可以指定每个任务所需的 GPU 数量。Spark 将这些资源请求传送至底层集群管理器、Kubernetes、YARN 或 Standalone。用户还可以配置发现脚本,检测集群管理器分配的 GPU。这大大简化了需要 GPU 的 ML 应用程序的运行,因为之前用户需要处理 Spark 应用程序中缺少 GPU 调度的问题。
加速 XGBoost
XGBoost 是一种可扩展的分布式梯度提升决策树 (GBDT) ML 库。
XGBoost 提供并行树提升功能,是应用于回归、分类和排序问题的出色 ML 库。RAPIDS 团队与 Distributed Machine Learning Common (DMLC) XGBoost 组织密切合作,而且 XGBoost 现已包含无缝嵌入式 GPU 加速。另外,Spark 3.0 XGBoost 现已与 Rapids 加速器集成,借助 Spark SQL/DataFrame 操作的 GPU 加速、XGBoost 训练时间的 GPU 加速,以及内存优化存储功能的高效 GPU 显存利用率,可改善性能、准确性和成本。
在 Spark 3.0 中,您现在可以有单个流程,从数据提取到数据准备,再到在 GPU 驱动的集群上训练模型,皆包含在内