XGBost模型分布化培训使用xgboost.spark

预览

特征显示公开预览.

Python包xgboost++1.7包含新模块xgboost.spark.本模块包括xgboostPySpark估计器xgboost.spark.SparkXGBRegressor,xgboost.spark.SparkXGBClassifierxgboost.spark.SparkXGBRanker.新建类支持SparkML管道XGost估计器API细节见XGBostpythonsparkAPI doc.

需求

databricks运行时间12.0ML

xgboost.spark参数类

估计符定义xgboost.spark模块支持标准XGoost使用的大部分相同参数和参数

  • 参数类构造器适配方法并预测方法基本与xgbost.sklearn模块化

  • 命名、值和默认大都与描述中相同XGBoost参数.

  • 异常数为少数非支持参数gpu_id,线程,样本重量,eval集)和yspark估计器特定参数添加特征Col,标签Col,gpu使用,validationIndicatorCol)细节见XGBost PythonsparkAPI文档.

分布式培训

PySpark估计器定义xgboost.spark模块支持分布式XGost培训Num_work参数化使用分布式培训,创建分类器或递归器并设置Num_work乘以分布式训练同时运行spark任务数

例举 :

发自xgboost.spark导入SparkXGBClassifier分类器=SparkXGBClassifier高山市Num_work=4)

注解

  • 无法使用mlflow.xgboost.autologXGBoost分布式xgbostspark模型使用ML流使用mlflow.spark.log_model(spark_xgb_model,人工路由).

  • 分布式XGoost无法使用已启动自动升级的集群启动弹性缩放范式的新工人节点无法接收新任务集并保持闲置指令禁止自标见启动自标.

启动稀有特征数据集培训优化

PySpark估计器定义xgboost.spark模块支持优化数据集稀疏特征培训实现稀疏特征集优化时,需要向数据集提供数据集适配方法内含特征列由类型值组成pyspark.ml.linalg.SparseVector并设置估计参数enable_sparse_data_optim真实性.此外,你需要设置缺失参数切换0.0.

例举 :

发自xgboost.spark导入SparkXGBClassifier分类器=SparkXGBClassifier高山市enable_sparse_data_optim=真实性,缺失=0.0)分类器.适配高山市dataset_with_sparse_features_col)

GPU培训

PySpark估计器定义xgboost.spark模块支持GPUs培训设置参数gpu使用真实性启动GPU培训

注解

XGBoost分布式培训中使用的每一spark任务,培训时只使用一GPUgpu使用参数设置真实性.Databricks推荐使用默认值一号Spark集群配置spark.task.resource.gpu.amount.反之,分配到spark任务的额外GPU闲置

例举 :

发自xgboost.spark导入SparkXGBClassifier分类器=SparkXGBClassifier高山市Num_work=2,gpu使用=真实性)

示例笔记本

本笔记本显示Python包使用xgboost.spark与sparkMLLIB

PySpark-XGoost笔记本

开笔记本新标签

迁移指南过期sparkl.xgboost模块化

  • 替换发自sparkl.xgboost导入XgboostRegressor发自xgboost.spark导入SparkXGBRegressor替换发自sparkl.xgboost导入XgboostClassifier发自xgboost.spark导入SparkXGBClassifier.

  • 估计器构造器中所有参数名称均从 shealCase样式修改为srain-case样式示例变换XgboostRegressor(featuresCol=XXX)SparkXGBRegressor(features_col=XXX).

  • 参数显示use_external_storageexternal_storage_precision已被删除 。xgboost.spark估计者使用DMATrix数据迭代API提高内存使用效率不再需要使用低效率外部存储模式极大数据集Databricks建议增加Num_work参数使每次训练任务分解数据为小数据分治

  • 估计定义xgboost.spark设置Num_works=1使用单spark任务执行模型训练使用spark集群配置设置指定的CPU核心数spark.task.c默认为一想要多使用CPU核心培训模型,可增加或增加Num_work或增量spark.task.c.无法设置线程n_作业参数估计定义xgboost.spark.这种行为不同于先前估计者行为sparkl.xgboost包化

转换sparkl.xgboost模型切入xgboost.spark模型化

sparkl.xgboost模型保存格式不同于xgboost.spark建模并存不同的参数设置.使用下列工具函数转换模型

defconvert_sparkdl_model_to_xgboost_spark_model高山市xgboost_spark_estimator_cls,sparkdl_xgboost_model,:...:param xgboost_spark_estimator_cls:Xgboostspark测量类,例如`xgboost.spark.SparkXGBRegressor`参数sparkl_xgboost模式sparkdl.xgbost模型实例实例`sparkdl.xgboost.XgboostRegressorModel` type.:返回Xgboost.spark模型实例...defconvert_param_key高山市密钥:发自xgboost.spark.core导入_inverse_pyspark_param_alias_mapif密钥汉城基础MginCol:返回"base_margin_col"if密钥_inverse_pyspark_param_alias_map:返回_inverse_pyspark_param_alias_map[密钥万事通if密钥['use_external_storage','external_storage_precision',线程,n_jobs,'base_margin_eval_set':返回返回密钥xgboost_spark_params_dict={}For参数解析sparkdl_xgboost_model.参数解析:if参数解析.名称汉城"arbitraryParamsDict":继续ifsparkdl_xgboost_model.定义化高山市参数解析:xgboost_spark_params_dict[参数解析.名称万事通=sparkdl_xgboost_model.获取Orde高山市参数解析)xgboost_spark_params_dict.更新高山市sparkdl_xgboost_model.获取Orde高山市"arbitraryParamsDict")xgboost_spark_params_dict={{convert_param_key高山市k:V级Fork,V级xgboost_spark_params_dict.项名(b)ifconvert_param_key高山市k)华府市不对}推送器=sparkdl_xgboost_model.获取boster(b)推送器字节=推送器.保存_raw高山市公元前)推送器配置=推送器.保存配置(b)估计器=xgboost_spark_estimator_cls高山市网际网际网际网路xgboost_spark_params_dict)sklearn模型=估计器._convert_to_sklearn_model高山市推送器字节,推送器配置)返回估计器.拷贝价位高山市估计器._create_pyspark_model高山市sklearn模型)#示例发自xgboost.spark导入SparkXGBRegressor新模式=convert_sparkdl_model_to_xgboost_spark_model高山市xgboost_spark_estimator_cls=SparkXGBRegressor,sparkdl_xgboost_model=模型化,)

if you haspyspark.ml.PipelineModel模型内含sparkl.xgboost模型作为最后阶段,可替换阶段sparkl.xgboost模型转换xgboost.spark模型化

管道模型.相位[-一号万事通=convert_sparkdl_model_to_xgboost_spark_model高山市xgboost_spark_estimator_cls=SparkXGBRegressor,sparkdl_xgboost_model=管道模型.相位[-一号万事通)