达斯克与急流。急流提供了哪些 dask 没有的东西?

Dask Vs Rapids. What does rapids provide which dask doesn't have?

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

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

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 等编排工具集成,从而能够在大型环境中提供更好的资源利用率。

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

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

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

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


RAPIDS 是 GPU 加速 Python 库的集合,它遵循其他流行 Python 包的 API。

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

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


RAPIDS 和 Dask 也一起工作,因此 Dask 被认为是 RAPIDS 的一个组件。因此,与其让 Dask Dataframe 由单个 Pandas Dataframes 组成,不如让 Dask Dataframe 由 cuDF Dataframes 组成。这是可能的,因为它们遵循相同的 API.

这样您既可以使用 GPU 向上扩展,也可以在多台机器上使用多个 GPU 向外扩展