7

我想了解 dask 和 rapids 有什么区别,rapids 提供了哪些 dask 没有的好处。

Rapids 内部是否使用 dask 代码?如果是这样,那么为什么我们有 dask,因为即使 dask 也可以与 GPU 交互。

4

2 回答 2

14

Dask是一个 Python 库,它支持核心并行性和一些流行的 Python 库以及自定义函数的分发。

熊猫为例。Pandas 是一个流行的库,用于在 Python 中处理数据帧。但是它是单线程的,您正在处理的数据帧必须适合内存。

Dask 有一个名为的子包dask.dataframe,它遵循与 Pandas 相同的大部分 API,但将您的 Dataframe 分解为可以并行操作的分区,并且可以换入和换出内存。Dask 在后台使用 Pandas,因此每个分区都是有效的 Pandas Dataframe。

整个 Dask Dataframe 可以横向扩展并使用多核或多台机器。


RAPIDS是一组 GPU 加速的 Python 库,它们遵循其他流行 Python 包的 API。

为了继续我们的 Pandas 主题,RAPIDS 有一个名为cuDF的包,它与 Pandas 有很多相同的 API。然而 cuDF 将数据帧存储在 GPU 内存中并使用 GPU 执行计算。

由于 GPU 可以加速计算,这可以为您的 Dataframe 操作带来性能优势,并使您能够扩展您的工作流程。


RAPIDS 和 Dask 也可以一起工作,因此 Dask 被认为是 RAPIDS 的一个组件。因此,您可以使用由 cuDF 数据框组成的 Dask 数据框,而不是由单个 Pandas 数据框组成。这是可能的,因为它们遵循相同的 API。

这样,您既可以使用 GPU 进行扩展,也可以使用多台机器上的多个 GPU 进行扩展。

于 2020-03-18T13:23:38.740 回答
5

Dask 提供了分配工作的能力。Dask 可以水平扩展(多台机器)和垂直扩展(同一台机器)。

RAPIDS 提供了一组 GPU 加速的 PyData API。Pandas (cuDF)、Scikit-learn (cuML)、NumPy (CuPy) 等是使用 RAPIDS 进行 GPU 加速的。这意味着您可以使用您已经针对这些 API 编写的代码,只需换入 RAPIDS 库并从 GPU 加速中受益。

当你将 Dask 和 RAPIDS 结合在一起时,你基本上会得到一个可以水平和垂直扩展的框架 (Dask),以及可以利用底层 GPU 的 PyData API (RAPIDS)。

如果您查看更广泛的解决方案,Dask 可以与 Kubernetes 和 SLURM 等编排工具集成,从而能够在大型环境中提供更好的资源利用率。

于 2020-03-18T13:15:46.053 回答