当前位置:首页 > 报告详情

使用 GPU 加速 XGBOOST 在 SPARK 集群上的分布式训练.pdf

上传人: li 编号:29490 2021-02-07 40页 24.95MB

1、NVIDIA使用GPU加速XGBOOST在SPARK集群上的分布式训练Jiaming Yuan BobbyWang 会#page#AGENDAJiaming Yuan介绍XGBoost高性能算法的实现BobbyWang介绍在Spark3.0+集群上利用GPU对XGBoost进行加速人#page#BACKGROUND人#page#XGBOOST梯度提升树模型训练支持regression,classification,ranking,survival以及用户自定义模型大量实际应用w#page#XGBOOST梯度提升随机森林Ranking树Regressiontree1tree2Classifica

2、tion20Survival60+091室)=2+0.9=2.9)=-1-0.9=-1.9Comingw#page#为什么需要高性能GPU运算Bias-variance tradeoff使用更多的树和较小的learningrate有助于降低bias和variance使用随机森林可以通过树的深度和数量降低bias和variance,但随机森林可能需要训练更深的树增大数据量有助于降低bias和variance。Thebackboneofmachinelearning无论通过哪一种方案来降低bias和variance,强大的计算能力都是必须的。而NVIDIAGPU则为XGBoost提供了所需要的计算

3、能力。Source:https./ SHAPw#page#XGBOOST技术栈SparkScalaCuDFXGBoostThrustCubCUDA LibrariesNCCLCUDAw#page#TRAINING#page#向上拓展梯度提升不是一个stochastic算法,在确保准确度的前提下难以直接通过batches进行训练完整的数据集难以加载进入内存aws#page#方案外存训练基于梯度采样分布式训练通过高效采样,在通过增加计算节点太慢!每一个树节保证准确度的前提提升训练性能以及数点都要遍历所有的据加载量下提升数据加载量数据块向上拓展结合外存训练#page#分布式训练GBT模型训练基于类M

4、PI框架(allreduce),需要较高的节点间通信性能。分布式框架(Spark,Dask)通常对数据进行分块处理。而GBT并非stochastic算法,训练前需要先把数据块进行合并,增加内存占用量ETL占用了pipeline的大部分时间。Sn4#page#通信高效的通信TCP套接字很慢!XGBOOST通过NCCL实现GPU间进程通信。(directP2P)根据节点/集群上的可用硬件,将为XGBoost提供最佳的通信性能数据训练Partition 0DMatrix0Partition 1梯度直方图Patition2训练DMatrix 1Partition 3#page#内存占用需要在训练开始前

5、把Spark的数据块进行合并。GPUHistogram算法XGBoost is memory hungryChunk 1Chunk Onom nomnom一数据复制ConcatenatedCSR matrix数据复制Compressed histogram index#page#优化我们对每一个数据块进行sketch,通过sketchmerge对summary进行合并,从而避开了数据的复制After320 batchesChunkoChunk 1100000 rows per batch32 millions rows in totalSketchSketchSummarySummary单节点

6、内存占用45421MBDMatrix:Summary18617MBQuantileDMatrixCompressed histogram indexaius#page#新增inplaceprediction实现。5038450040883500088825000208nnomnom1500区1000058004542118817awug#page#GPU TREE SHAP#page#GPU TREE SHAPMachine learning model explanation using SHAP.XGBoost原生支持SHAPvalue计算,虽然treeshap中featurecontri

word格式文档无特别注明外均可编辑修改,预览文件经过压缩,下载原文更清晰!
三个皮匠报告文库所有资源均是客户上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作商用。
本文主要探讨了如何在Spark集群上使用GPU加速XGBoost的分布式训练。XGBoost是一种高效的梯度提升树模型,广泛应用于回归、分类、排名和生存分析等领域。文章指出,为了降低模型的bias和variance,我们需要更多的树和较小的学习率,以及增加数据量。然而,这需要强大的计算能力,而NVIDIA GPU提供了XGBoost所需的计算能力。文章还介绍了XGBoost的高性能实现和Spark 3.0+集群上利用GPU对XGBoost进行加速的方法。此外,文章还讨论了XGBoost4j-Spark项目,该项目将XGBoost与Spark MLLIB无缝集成,利用Spark强大的数据处理引擎和XGBoost的高性能算法。最后,文章展望了未来在Spark 3.1中为XGBoost4j-Spark加入GPU Stage-Level scheduling的计划。
"GPU如何加速XGBoost在Spark集群上的分布式训练?" "XGBoost与Spark结合的GPU加速技术有哪些优势和挑战?" "如何在Spark集群上利用RAPIDS插件实现XGBoost的高性能训练?"
客服
商务合作
小程序
服务号
折叠