Spark 3.0怎么使用GPU加速

今天就跟大家聊聊有关Spark 3.0怎么使用GPU加速,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

概览

RAPIDS Accelerator for Apache Spark 使用 GPUs数据加速处理,通过 RAPIDS libraries来实现。

当数据科学家从传统数据分析转向 AI applications以满足复杂市场需求的时候,传统的CPU-based 处理不再满足速度与成本的需求。快速增长的 AI 分析需要新的框架来快速处理数据和节约成本,通过 GPUs来达到这个目标。

RAPIDS Accelerator for Apache Spark整合了 RAPIDS cuDF 库和 Spark 分布式计算框架。该RAPIDS Accelerator library又一个内置的加速 shuffle 基于 UCX ,可以配置为 GPU-to-GPU 通讯和RDMA能力。

Spark RAPIDS 下载 v0.4.1
  • RAPIDS Spark Package

  • cuDF 11.0 Package

  • cuDF 10.2 Package

  • cuDF 10.1 Package

RAPIDS Notebooks

  • cuML Notebooks

  • cuGraph Notebooks

  • CLX Notebooks

  • cuSpatial Notebooks

  • cuxfilter Notebooks

  • XGBoost Notebooks

介绍

这些 notebooks 提供了使用 RAPIDS的例子。设计为自包含 runtime version of the RAPIDS Docker Container 和 RAPIDS Nightly Docker Containers and can run on air-gapped systems。可以快速获得容器然后按照 RAPIDS.ai Getting Started page 进行安装和使用。

用法

获取最新的notebook repo 更新,运行 ./update.sh 或者使用命令:

git submodule update --init --remote --no-single-branch --depth 1

下载 CUDA Installer for Linux Ubuntu 20.04 x86_64

基础安装如下:

基本安装程序  
安装说明:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-ubuntu2004.pinsudo mv cuda-ubuntu2004.pin /etc/apt/preferences.d/cuda-repository-pin-600wget https://developer.download.nvidia.com/compute/cuda/11.1.0/local_installers/cuda-repo-ubuntu2004-11-1-local_11.1.0-455.23.05-1_amd64.debsudo dpkg -i cuda-repo-ubuntu2004-11-1-local_11.1.0-455.23.05-1_amd64.debsudo apt-key add /var/cuda-repo-ubuntu2004-11-1-local/7fa2af80.pubsudo apt-get updatesudo apt-get -y install cuda

 
该CUDA Toolkit 包含开源项目软件,可以在 here 找到。

可以在
Installer Checksums 中找到安装程序和补丁的校验和。

性能 & 成本与收益

Rapids Accelerator for Apache Spark 得益于 GPU 性能的同时降低了成本。如下:Spark 3.0怎么使用GPU加速 *ETL for FannieMae Mortgage Dataset (~200GB) as shown in our demo. Costs based on Cloud T4 GPU instance market price & V100 GPU price on Databricks Standard edition。

易于使用

运行以前的 Apache Spark 应用不需要改变代码。启动 Spark with the RAPIDS Accelerator for Apache Spark plugin jar然后打开配置,如下:

spark.conf.set('spark.rapids.sql.enabled','true')

physical plan with operators运行在GPU

一个统一的 AI framework for ETL + ML/DL

单一流水线 ,从数据准备到模型训练:

Spark 3.0怎么使用GPU加速

开始使用RAPIDS Accelerator for Apache Spark

Apache Spark 3.0+ 为用户提供了 plugin可以替换 SQL 和 DataFrame 操作。不需要对API做出改变,该 plugin替换 SQL operations为 GPU 加速版本。如果该操作不支持GPU加速将转而用 Spark CPU 版本。

⚠️注意plugin不能加速直接对RDDs的操作。

该 accelerator library 同时提供了Spark’s shuffle的实现,可以利用 UCX 优化 GPU data transfers,keeping as much data on the GPU as possible and bypassing the CPU to do GPU to GPU transfers。

该 GPU 加速处理 plugin 不要求加速的 shuffle 实现。但是,如果加速 SQL processing未开启,该shuffle implementation 将使用缺省的SortShuffleManager

开启 GPU 处理加速,需要:

  • Apache Spark 3.0+

  • A spark cluster configured with GPUs that comply with the requirements for the version of cudf.

    • One GPU per executor.

  • The following jars:

    • A cudf jar that corresponds to the version of CUDA available on your cluster.

    • RAPIDS Spark accelerator plugin jar.

  • To set the config spark.plugins to com.nvidia.spark.SQLPlugin

Spark GPU 调度概览

Apache Spark 3.0 现在支持 GPU 调度与 cluster manager 一样。你可以让 Spark 请求 GPUs 然后赋予tasks。精确的配置取决于 cluster manager的配置。下面是一些例子:

  • Request your executor to have GPUs:

    • --conf spark.executor.resource.gpu.amount=1

  • Specify the number of GPUs per task:

    • --conf spark.task.resource.gpu.amount=1

  • Specify a GPU discovery script (required on YARN and K8S):

    • --conf spark.executor.resource.gpu.discoveryScript=./getGpusResources.sh

查看部署的详细信息确定其方法和限制。

注意 spark.task.resource.gpu.amount 可以是小数,如果想要 multiple tasks to be run on an executor at the same time and assigned to the same GPU,可以设置为小于1的小数。要与 spark.executor.cores 设置相对应。例如,spark.executor.cores=2 将允许 2 tasks 在每一个 executor,并且希望 2 tasks 运行在同一个 GPU,将设置spark.task.resource.gpu.amount=0.5

看完上述内容,你们对Spark 3.0怎么使用GPU加速有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

原创文章,作者:Maggie-Hunter,如若转载,请注明出处:https://blog.ytso.com/220389.html

(0)
上一篇 2022年1月2日
下一篇 2022年1月2日

相关推荐

发表回复

登录后才能评论