【问题标题】:Dask Vs Rapids. What does rapids provide which dask doesn't have?达斯克与急流。急流提供什么 dask 没有?
【发布时间】:2020-03-18 11:44:19
【问题描述】:

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

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

【问题讨论】:

    标签: machine-learning parallel-processing gpu dask rapids


    【解决方案1】:

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

    Pandas 为例。 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 的一个组件。因此,与其让一个由单个 Pandas 数据帧组成的 Dask 数据帧,不如让一个由 cuDF 数据帧组成的数据帧。这是可能的,因为它们遵循相同的 API。

    通过这种方式,您既可以使用 GPU 纵向扩展,也可以横向扩展在多台机器上使用多个 GPU。

    【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-20
      • 1970-01-01
      相关资源
      最近更新 更多