XGBost模型分布化培训使用xgboost.spark
预览
特征显示公开预览.
Python包xgboost++1.7包含新模块xgboost.spark
.本模块包括xgboostPySpark估计器xgboost.spark.SparkXGBRegressor
,xgboost.spark.SparkXGBClassifier
并xgboost.spark.SparkXGBRanker
.新建类支持SparkML管道XGost估计器API细节见XGBostpythonsparkAPI doc.
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.autolog
XGBoost分布式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使用=真实性)
迁移指南过期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_storage
并external_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=管道模型.相位[-一号万事通)