介绍
随着人工智能(AI)的不断发展,对更快、更高效的计算能力的需求也在增加。机器学习(ML)模型可能需要很大的计算量,并且训练模型可能需要更长的时间。然而,通过使用GPU并行处理能力,可以显著加快训练过程。数据科学家可以更快地迭代,尝试更多的模型,并在更短的时间内构建性能更好的模型。
有几个可供使用的库。今天我们将学习RAPIDS,这是一个简单的解决方案,可以在不需要任何GPU编程知识的情况下使用GPU加速机器学习模型。
学习目标
在本文中,我们将学习:
- RAPIDS.ai的高级概述
- RAPIDS.ai中的库
- 使用这些库
- 安装和系统要求
本文是Data Science Blogathon的一部分。
RAPIDS.AI
RAPIDS是一套开源软件库和API,用于完全在GPU上执行数据科学流程。RAPIDS提供了出色的性能和速度,使用了与最流行的PyData库相匹配的熟悉的API。它是基于NVIDIA CUDA和Apache Arrow开发的,这是其卓越性能的原因。
RAPIDS.AI如何工作?
RAPIDS使用GPU加速机器学习来加快数据科学和分析工作流程。它具有经过优化的GPU核心数据框架,有助于构建数据库和机器学习应用程序,并且设计与Python类似。RAPIDS提供了一套完全在GPU上运行数据科学流程的库。它于2017年由GPU Open Analytics Initiative(GoAI)和机器学习社区的合作伙伴创建,旨在使用基于Apache Arrow的GPU Dataframe加速端到端数据科学和分析流程。RAPIDS还包括与机器学习算法集成的Dataframe API。
更快的数据访问,更少的数据移动
Hadoop在处理复杂的数据流水线时存在一些限制。Apache Spark通过将所有数据保存在内存中来解决了这个问题,从而允许更灵活和复杂的数据流水线。然而,这也引入了新的瓶颈,即在具有数百个CPU节点的Spark集群上分析甚至几百GB的数据可能需要很长时间。为了充分发挥数据科学的潜力,GPU必须成为数据中心设计的核心,包括计算、网络、存储、部署和软件等五个要素。总的来说,基于GPU的端到端数据科学工作流程比基于CPU的工作流程快10倍。
库
我们将学习RAPIDS生态系统中的3个库。
- cuDF
- cuML
- cuGraph
cuDF:更快的Pandas替代品
cuDF是一个GPU数据框架库,用于替代pandas的数据框架。它构建在Apache Arrow列式内存格式之上,并提供了与pandas类似的API,用于在GPU上操作数据。cuDF可以通过利用GPU的并行计算能力加速pandas的工作流程。它可用于加载、连接、聚合、过滤和操作数据等任务。
在编程方面,cuDF是Pandas DataFrame的一种简单替代品。
import cudf
# 创建一个cuDF DataFrame
df = cudf.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
# 执行一些基本操作
df['c'] = df['a'] + df['b']
df = df.query('c > 4')
# 转换为Pandas DataFrame
pdf = df.to_pandas()
使用cuDF也很简单,只需将Pandas DataFrame对象替换为cuDF对象即可。要使用它,我们只需要将“pandas”替换为“cudf”,就这样。以下是一个示例,演示如何使用cuDF创建DataFrame对象并对其执行一些操作:
cuML:更快的Scikit Learn替代品
cuML是一套由GPU加速的快速机器学习算法集合,专为数据科学和分析任务而设计。它提供了与sci-kit-learn类似的API,使用户可以使用熟悉的拟合-预测-转换方法,而无需了解如何编程GPU。
与cuDF一样,使用cuML也非常容易理解。以下是一个代码片段的示例。
import cudf
from cuml import LinearRegression
# 创建一些示例数据
X = cudf.DataFrame({'x': [1, 2, 3, 4, 5]})
y = cudf.Series([2, 4, 6, 8, 10])
# 初始化并拟合模型
model = LinearRegression()
model.fit(X, y)
# 进行预测
predictions = model.predict(X)
print(predictions)
你可以看到,我将“sklearn”替换为“cuml”,将“pandas”替换为“cudf”,就这样。现在这段代码将使用GPU,操作速度会更快。
cuGRAPH:更快的Networkx替代品
cuGraph是一个无缝集成到RAPIDS数据科学生态系统中的图算法库。它允许我们使用存储在GPU数据帧、NetworkX图甚至CuPy或SciPy稀疏矩阵中的数据轻松调用图算法。它提供了30多种标准算法的可扩展性能,例如PageRank、广度优先搜索和均匀邻居采样。
与cuDF和cuML一样,cuGraph也非常容易使用。
import cugraph
import cudf
# 使用边缘信息创建一个数据帧
edge_data = cudf.DataFrame({
'src': [0, 1, 2, 2, 3],
'dst': [1, 2, 0, 3, 0]
})
# 使用边缘数据创建一个图
G = cugraph.Graph()
G.from_cudf_edgelist(edge_data, source='src', destination='dst')
# 计算图的PageRank
pagerank_df = cugraph.pagerank(G)
# 打印结果
print(pagerank_df)
是的,使用cuGraph就是这么简单。只需将“networkx”替换为“cugraph”就可以了。
系统要求
使用RAPIDS的最大优点是,您不需要拥有专业的GPU。只要您的游戏或笔记本电脑GPU符合系统要求,就可以使用它。
使用RAPIDS需要满足以下最低系统要求:
- NVIDIA Pascal™或更高级别的GPU,计算能力为6.0及以上
- Ubuntu 20.04或22.04,CentOS 7,Rocky Linux 8或Windows 11上的WSL2
- 最新的CUDA版本和NVIDIA驱动程序
安装
现在,来谈谈安装问题,请检查系统要求,如果符合要求,就可以开始了。
请访问以下链接,选择您的系统,选择您的配置,并进行安装。
下载链接:https://docs.rapids.ai/install
性能基准
下面的图片显示了对“加利福尼亚道路网络数据集”的数据加载和操作进行性能基准测试的cuDF和Pandas的结果。您可以从此网站了解有关代码的更多信息:https://arshovon.com/blog/cudf-vs-df
您可以通过访问官方网站https://rapids.ai来查看所有基准测试。
在在线笔记本中体验Rapids
Rapids提供了几个在线笔记本,供您查看这些库。请访问https://rapids.ai查看所有这些笔记本。
优势
RAPIDS的一些优点包括:
- 最小的代码更改
- 使用GPU加速
- 更快的模型部署
- 迭代以提高机器学习模型的准确性
- 提高数据科学生产力
结论
RAPIDS是一套开源软件库和API的集合,它允许您完全在NVIDIA GPU上使用熟悉的PyData API执行端到端的数据科学和分析流程。它可以在没有任何麻烦或需要GPU编程的情况下使用,使得操作更加简单和快速。
以下是我们到目前为止所学到的总结:
- 如何在没有GPU编程的情况下,显著利用GPU加速ML模型?
- 它是各种广泛可用的库(如Pandas、Scikit-Learn等)的完美替代品。
- 要使用RAPIDS.ai,我们只需要做一些最小的代码更改。
- 它比传统基于CPU的ML模型训练更快。
- 如何在我们的系统中安装RAPIDS.ai。
如果有任何问题或反馈,请发送电子邮件至:[email protected]
常见问题
本文中显示的媒体不归Analytics Vidhya所有,仅由作者自行决定使用。