迁移指南:如何迁移到 XGBoost4j-Spark jvm 3.x
XGBoost4j-Spark jvm 包在 3.0 版本中经历了重大修改,这可能会导致与现有用户代码的兼容性问题。
本指南将引导您完成更新代码的过程,以确保它与 XGBoost4j-Spark 3.0 及更高版本兼容。
XGBoost4j Spark 包
XGBoost4j-Spark 3.0 已将 xgboost4j 包集成到 xgboost4j-spark_2.12-3.0.0.jar 中,这意味着您现在可以直接在应用程序中使用 xgboost4j-spark。
对于 CPU
<dependency> <groupId>ml.dmlc</groupId> <artifactId>xgboost4j-spark_${scala.binary.version}</artifactId> <version>3.0.0</version> </dependency>
对于 GPU
<dependency> <groupId>ml.dmlc</groupId> <artifactId>xgboost4j-spark-gpu_${scala.binary.version}</artifactId> <version>3.0.0</version> </dependency>
将 XGBoost 应用程序提交到 Spark 集群时,您只需指定单个 xgboost4j-spark 包即可。
对于 CPU
spark-submit \ --jars xgboost4j-spark_2.12-3.0.0.jar \ ... \
对于 GPU
spark-submit \ --jars xgboost4j-spark-gpu_2.12-3.0.0.jar \ ... \
XGBoost 排序
使用 XGBoostRegressor 进行排序学习已被专门的 XGBoostRanker 取代,该类专门设计用于支持排序算法。
// before xgboost4j-spark 3.0
val regressor = new XGBoostRegressor().setObjective("rank:ndcg")
// after xgboost4j-spark 3.0
val ranker = new XGBoostRanker()
已移除的参数
从 xgboost4j-spark 3.0 开始,以下参数已被移除。
cacheTrainingSet
如果您希望缓存训练数据集,可以选择在将数据拟合到估计器之前在代码中实现缓存。
val df = input.cache() val model = new XGBoostClassifier().fit(df)
trainTestRatio
可以使用以下方法进行评估。
val Array(train, eval) = trainDf.randomSplit(Array(0.7, 0.3)) val classifier = new XGBoostClassifer().setEvalDataset(eval) val model = classifier.fit(train)
tracker_conf
可以使用以下方法配置 RabitTracker。
val classifier = new XGBoostClassifer() .setRabitTrackerTimeout(100) .setRabitTrackerHostIp("192.168.0.2") .setRabitTrackerPort(19203)
rabitRingReduceThreshold
rabitTimeout
rabitConnectRetry
singlePrecisionHistogram
lambdaBias
objectiveType