本文将详细解释Spark 3.0中内置支持GPU调度的示例分析。这篇文章的内容质量很高,所以边肖会分享给大家参考。希望你看完这篇文章后有所了解。
如今,大数据和机器学习已经大大结合。在机器学习中,由于计算迭代时间可能很长,开发人员一般会选择使用GPU、FPGA或TPU来加快计算速度。在Apache Hadoop版本中,已经内置了本机支持GPU和FPGA。
Spark作为一个通用计算引擎,当然也不会落后太多。来自Databricks、NVIDIA、谷歌和阿里巴巴的工程师正在为ApacheSpark添加本机GPU调度支持。该解决方案填补了Spark在GPU资源任务调度方面的空白,将大数据处理和AI应用有机融合,拓展了Spark在深度学习、信号处理和重大数据应用方面的应用场景。
这项工作的问题可以在SPARK-24615中查看。
相关spip (spark项目改进建议)文件可在spip:加速器感知调度中找到。
目前,Apache Spark支持的资源管理器shate和Kubernetes已经支持GPU。为了让Spark也支持GPU,需要在技术层面进行两项重大改变:
在集群管理器层面,集群管理器需要升级以支持GPU。并为用户提供相关的API,让用户可以控制GPU资源的使用和分配。
在Spark内部,需要在调度器层面进行修改,使调度器能够识别用户任务请求中对GPU的需求,然后根据执行器上的GPU供给完成资源分配。
因为让Apache Spark支持GPU是一大特色,所以项目分为几个阶段。在Apache Spark版本中,独立、纱和Kubernetes资源管理器下将支持GPU,现有的正常作业基本不受影响。对TPU的支持、对Mesos Explorer中GPU的支持以及对Windows平台的GPU支持将不是本次发布的目标。而且,这个版本不支持GPU卡中的细粒度调度;Apache Spark版本将把一个GPU卡和它的内存作为一个不可分割的单元。
1、Spark Scheduling
在这个级别,我们必须允许指定来自RDD/PandasUDF API的资源请求,这应该在DAGScheduler中进行总结。TaskSetManager管理每个阶段的未完成任务,我们需要用GPU请求来处理那些任务。对于不需要GPU的作业,调度行为和效率应该和以前一样。
目前,CPUS_PER_TASK(spark.task.cpus)是一种int类型的全局配置,用于指定每个任务应该分配的核心。为了支持GPU配置,引入了spark . task . GPU参数来指定每个任务需要申请的GPU数量。如果用户没有指定Spark . task . CPU或spark.task.gpus,spark程序将使用默认值;因为需要向后兼容,所以如果用户没有指定spark . task . CPU或spark.task.gpus,这两个参数的默认值分别是1和null。
对于执行器后端来说,它需要能够识别和管理GPU,并将这些信息(如修改现有的RegisterExecutor类)同步到schedulerback band,然后schedulerback band可以根据这些GPU信息为那些需要GPU资源的任务分配资源。
00-1010的第一阶段将支持独立,纱和库本内特GPU。Spark需要在这三种资源管理上做一些工作。
2、Resource Manager
Standalone是Spark内置的资源管理模式,但目前的Standalone部署模式无法支持GPU等资源。为了识别GPU信息,一种可行的方法是在配置文件中配置GPU资源。通过读取配置信息,工作者维护内存结构中的可用资源,如图形处理器和中央处理器。同时,执行器所应用的资源(包括GPU)是通过allocateworkerresourcetoxecutors方法在主机上分配的。
00-1010为了在YARN上支持GPU,我们需要使用YARN 3 . 1 . 2版本;同时,我们需要对纱簇进行相关配置,使纱簇能够开始支持GPU资源。请看这里如何配置纱上的GPU资源。
为执行器申请纱容器时,Spark需要将执行器所需的GPU数量映射到纱容器请求中的yarn.io/gpu资源。纱有GPU隔离机制,所以无论是否使用Docker容器,未分配给纱容器的GPU资源的使用都会被阻塞。
需要注意的是,到目前为止,纱只支持Nvidia GPU。
00-1010从Kubernetes 1.8版本开始,Kubernetes采用设备插件模型,支持GPU、高性能NIC、FPGA等设备。Kubernetes目前支持英伟达、AMD和英特尔GPU设备。在独立模式或纱模式下,指定火花k8s中任务的图形处理器数量。它还支持spark . task . GPU和spark . executor . GPU的全局配置,并且还支持RDD阶段每个任务的设置。
这里将分享对Spark 3.0中内置GPU调度支持的示例分析。希望
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/148959.html